2016-05-24 6 views
0

CODE erstellen:kann nicht DataPropertyAssertion mit OWL API

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; 

erstellt:

Protege SS und enter image description here

Aber erwartete Ergebnis wird (manuell erstellt):

Protege SS2

Ich versuche, OWLNegativeDataPropertyAssertionAxiom zu erstellen, und es funktioniert einwandfrei. Auch wenn ich zuerst getOWLNegativeDataPropertyAssertionAxiom und dann OWLDataPropertyAssertionAxiom erstelle - funktioniert es.

OWLAPI: owlapi Verteilungs 4.1.4.jar

EDIT:

Erstellt Ontologien:

<?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> 

+0

In diesem Fall speichere ich Ontologie als RDF/XML. Vielleicht scheitert es nur Protege. Wenn ich Ontologie als OWL/XML speichere, ist es wieder OK. –

Antwort

1

Sieht aus wie verpasste Deklarationen. Kannst du das mit 4.2.5 versuchen? In den letzten Versionen wurden Fehler in diesem Bereich behoben.

Edit: nach Überprüfung des Codes in der OWLAPI issue tracker, stellt sich heraus, das Problem ist die Ontologie IRI, die absolut sein muss. Die relative IRI bedeutet, dass beim Speichern in einer Datei der Speicherort der Datei zur Deklaration der Deklarations-IRIs verwendet wird. Dies wird jedoch nicht einheitlich durchgeführt, was verpasste Deklarationen zur Folge hat - was das Grundproblem ist.

Als Workaround, während der Fehler behoben ist, verwenden Sie absolute IRIs für die Ontologie IRI.

+0

Ich aktualisierte zu Verteilung 5.0.2 mit demselben Ergebnis. –

+0

Ich habe erstellte Ontologien hinzugefügt, sie verwendeten eine völlig andere Notation. –