Jena Wirkungen verschiedenen Entailment Regime
Frage
Ich versuche, SPARQL und die Verwendung von entailment.
Als Beispiel i verwendet http: // www .w3.org / TR / 2010 / WD-sparql11-entailment-20.100.126 / # t112
ich versuche, sie in jena zu setzen.
OntClass book1= model.createClass(NS+"book1");
OntClass book2=model.createClass(NS+"book2");
OntClass book3=model.createClass(NS+"book3");
OntClass publication=model.createClass(NS+"publication");
OntClass article=model.createClass(NS+"article");
OntClass mit=model.createClass(NS+"MIT");
ObjectProperty a = model.createObjectProperty(NS+"a");
ObjectProperty publishes = model.createObjectProperty(NS+"publishes");
book1.addProperty(a, publication);
book2.addProperty(a, article);
publication.addSubClass(article);
publishes.addRange(publication);
mit.addProperty(publishes, book3);
, wo Modell ist OntModel geben.
, und ich verwenden, um die Abfrage ähnlich das Problem
"PREFIX table: "I have correct namespace here"+
"SELECT *"+
"WHERE"+
"{"+
" ?x ?y table:publication ."+
"}";
Das Modell wurde wie folgt erstellt. Hoffnung OntModelSpec ist in Ordnung.
OntModel m = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM_RDFS_INF, null);
i erhalten als Ergebnisse von Abfrage
x y
| http://www.example.com/ontologies/sample.owl#publishes | rdfs:range |
| http://www.example.com/ontologies/sample.owl#article | rdfs:subClassOf |
| http://www.example.com/ontologies/sample.owl#book1 | http://www.example.com/ontologies/sample.owl#a |
| http://www.example.com/ontologies/sample.owl#publication | rdfs:subClassOf |
| http://www.example.com/ontologies/sample.owl#book3 | rdf:type |
Kann jemand geben Sie mir ein Beispiel, mit und ohne Implikation, so eine Überhöhung try-Code, Recht, die Ergebnisse erhalten.
Lösung
Ihre Ontologie sieht ein bisschen faul.
book1
, book2
, book3
und mit
sind keine Klassen, sie Individuen sind. Sie sollten model.createIndividual(NS + "bookX", publication)
für die Bücher, verwenden und eine Klasse für „Organisation“ oder ähnliches erstellen, und dann mit
als Individuum dieser Klasse erstellen. Beachten Sie, dass createIndividual
nimmt bereits um die Art der individuellen Zuordnung, so dass Sie zu verwirren nicht brauchen, um mit Ihrem „a
“ Eigenschaft. Sie sollen diese Dinge beheben und dann erneut versuchen und Ihre Frage zu aktualisieren.
Über entailment: Sehen Sie in der letzten Zeile des Abfrageergebnisses. Sie haben nicht überall sagen, dass book3
ein Buch, aber die Aussage ist es sowieso. Das ist, weil es von den anderen Aussagen zur Folge war, und das ist, warum die RDFS Inferenzmaschine die Aussage sichtbar macht, wenn Sie das Modell abfragen. Die Anweisung wird wegen des Bereichs auf publishes
zur Folge. Alles, was vom Typ publication
sein wird zur Folge veröffentlicht werden wird