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.

War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top