2017-12-31 47 views
0

Ich möchte die Konsistenz einer Reihe von Tripel überprüfen, indem Sie einen Reasoner verwenden. Es gibt ungefähr 700k Tripel zu überprüfen, so dass ich für jede von ihnen eine Datei mit dem Triple und den direkten Typen von Thema und Objekt erstellt habe.Importe in OWLAPI hinzufügen

Mein Problem ist, dass, wenn ich nicht alle Eigenschaften jedes Mal, wenn ich eine der kleinen Datei zu laden, alle ObjectProperty-Anweisungen als AnnotationAxioms behandelt werden, die keine Inkonsistenz erkennen können. Wie kann ich alle Eigenschaften nur einmal importieren und sie mit jedem Triple in die Datei einfügen?

Vielen Dank im Voraus!

Bearbeiten Ich füge hier ein Beispiel für die kleinen Dateien, die ich analysiere.

<?xml version="1.0" encoding="UTF-8"?> 
<rdf:RDF 
xmlns:wdt="http://www.wikidata.org/prop/direct/" 
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> 
<rdf:Description rdf:about="http://www.wikidata.org/entity/Q295376"> 
<rdf:type rdf:resource="http://www.wikidata.org/entity/Q5"/> 
</rdf:Description> 
<rdf:Description rdf:about="http://www.wikidata.org/entity/Q21077119"> 
<rdf:type rdf:resource="http://www.wikidata.org/entity/Q17299750"/> 
<wdt:P1346 rdf:resource="http://www.wikidata.org/entity/Q295376"/> 
<rdf:type rdf:resource="http://www.wikidata.org/entity/Q4993329"/> 
</rdf:Description> 
</rdf:RDF> 

Die obigen Zeilen enthalten keine Importaxiome. Danke!

+0

"Ich importiere alle Eigenschaften" -> Ich denke, du meinst das Schema zu importieren, das die Axiome über die Eigenschaften enthält, die in den Tripeln verwendet werden. Ich bin mir nicht sicher, ob ich es richtig verstanden habe, aber es klingt so, als ob Sie die Konsistenz für jede Datei überprüfen möchten, die einige Tripel enthält. Sie müssen die Datei ändern, bevor sie in den Parser geht. Eine Möglichkeit wäre, die Tripel zuerst als Zeichenfolge zu laden und dann die Schema-Tripel voranzustellen, vorausgesetzt, dass Sie die N-Tripel-Syntax verwenden. – AKSW

+0

Ein Beispiel für den Inhalt einer einzelnen Datei wäre hilfreich. Beachten Sie, für Inkonsistenz benötigen Sie bestimmte Axiomtypen wie Disjunktion – AKSW

+0

Hallo @AKSW danke für Ihre Antwort! Ich habe oben ein Beispiel für diese kleinen Dateien hinzugefügt. – Aliossandro

Antwort

0

Es wird viel schneller sein, das Triple nicht auf Festplatte zu schreiben. Erstellen Sie eine T-Ontologie mit Deklarationen für die Eigenschaften und fügen Sie dann das Axiom hinzu, das Sie testen möchten. Sie können dann den Reasoner erstellen, auf Konsistenz prüfen, den Reasoner verwerfen und das Axiom entfernen, das Sie gerade getestet haben. Die Ontologie ist dann verfügbar, um mit einem anderen Axiom und einem neuen Denker verwendet zu werden.

Sie überprüfen jedoch jedes Axiom isoliert; während die Axiome für sich allein konsistent sind, gibt dies keine Zusicherung, was die Axiome gemeinsam tun werden - vorausgesetzt, dass sie nach Abschluss des Tests in der gleichen Ontologie erscheinen.

+0

Hallo @Ignazio danke für deine Antwort. Ich habe das eigentlich versucht, aber mein Problem ist, dass ich der Axologie ein Axiom plus die direkten Typen hinzufügen muss, um das zu tun. Die Dateien mit den Axiomen und die mit den Axiomen sind ziemlich groß (ein paar Gb), also hatte ich Probleme mit dem Import. Ich werde es noch einmal versuchen und Sie wissen lassen. – Aliossandro

+0

Das wirft ein größeres Problem auf: Es gibt sehr wenige Denker, die arbeiten können, ohne die Ontologie in den Speicher zu laden, und ich kenne keine solche Schnittstelle mit dem owlapi.Die Konsistenzprüfung unter diesen Einschränkungen könnte sich als undurchführbar erweisen. – Ignazio

0

Insbesondere, wie ein Import in eine Ontologie hinzuzufügen, finden Sie in der Dokumentation OWLAPI bei https://github.com/owlcs/owlapi/wiki/Add-an-import-directive-to-an-ontology

Ich glaube nicht, das ist die beste Lösung für Ihr Szenario, aber es wird die Frage gestellt Sie :-)

+0

Ich habe das versucht, aber ObjectProperty-Axiome wurden nicht durch Importieren der Eigenschaftendatei erkannt. – Aliossandro

+0

Alles muss getan werden, ** bevor ** die Ontologie analysiert. – AKSW