无法使用OWL API创建DataPropertyAssertion

时间:2016-05-24 07:41:56

标签: owl-api

CODE:

OWLDataProperty prop = factory.getOWLDataProperty(IRI.create(getOntologyIRI()  + "#" +  owlDataProp));
OWLNamedIndividual ind = factory.getOWLNamedIndividual(IRI.create(getOntologyIRI()  + "#" +  owlNamedIndividual));
OWLLiteral lit = factory.getOWLLiteral(val);

OWLDataPropertyAssertionAxiom axiom = factory.getOWLDataPropertyAssertionAxiom(prop, ind, lit);
if(manager.addAxiom(this.ontology, axiom) == ChangeApplied.SUCCESSFULLY)
    return saveOntology();
return false;

创建:

Protege SSenter image description here

但预期结果是(手动创建):

Protege SS2

我尝试创建OWLNegativeDataPropertyAssertionAxiom并且它工作正常。此外,如果我首先创建getOWLNegativeDataPropertyAssertionAxiom然后创建OWLDataPropertyAssertionAxiom - 它可以工作。

OWLAPI: owlapi-distribution-4.1.4.jar

修改

创建本体:

<?xml version="1.0"?>
<rdf:RDF xmlns="gunkoFB.owl#"
 xml:base="gunkoFB.owl"
 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 xmlns:owl="http://www.w3.org/2002/07/owl#"
 xmlns:xml="http://www.w3.org/XML/1998/namespace"
 xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
 xmlns:gunkoFB="gunkoFB.owl#"
 xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
<owl:Ontology rdf:about="gunkoFB.owl"/>

<owl:DatatypeProperty rdf:about="gunkoFB.owl#hasFirstName"/>

<owl:NamedIndividual rdf:about="gunkoFB.owl#Michal_Joštiak">
    <hasFirstName rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Michal</hasFirstName>
</owl:NamedIndividual>

<?xml version="1.0"?>

<rdf:RDF xmlns="gunkoFB.owl#"
 xml:base="gunkoFB.owl"
 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 xmlns:owl="http://www.w3.org/2002/07/owl#"
 xmlns:xml="http://www.w3.org/XML/1998/namespace"
 xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
 xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
<owl:Ontology rdf:about="gunkoFB.owl"/>

<owl:DatatypeProperty rdf:about="gunkoFB.owl#hasFirstName"/>

<owl:NamedIndividual rdf:about="gunkoFB.owl#Michal_Joštiak"/>
<rdf:Description>
    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#NegativePropertyAssertion"/>
    <owl:sourceIndividual rdf:resource="gunkoFB.owl#Michal_Joštiak"/>
    <owl:assertionProperty rdf:resource="gunkoFB.owl#hasFirstName"/>
    <owl:targetValue rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Michal</owl:targetValue>
</rdf:Description>

1 个答案:

答案 0 :(得分:1)

看起来像是错过了声明。你能用4.2.5试试吗?在最近几个版本中,这个区域已经修复了错误。

编辑:在检查OWLAPI issue tracker中的代码后,事实证明问题是本体IRI,它需要是绝对的。相对IRI意味着,当保存到文件时,文件位置用于消除声明IRI的歧义;但是这不是统一的,导致错过声明 - 这是根本问题。

作为修复错误的解决方法,使用绝对IRI作为本体IRI。