Domanda

sto cercando SPARQL e l'uso di implicazione.

Come esempio ho usato http: // www .w3.org / TR / 2010 / WD-sparql11-implicazione-20.100.126 / # T112

cerco di metterli a Jena.

     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);

dove il modello è di tipo OntModel.

E ho usato la query simile al problema

     "PREFIX table: "I have correct namespace here"+
     "SELECT *"+
    "WHERE"+
    "{"+
    " ?x ?y table:publication  ."+
    "}";

Il modello è stato creato in questo modo. La speranza OntModelSpec è ok.

OntModel m = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM_RDFS_INF, null);

ottengo come risulta da interrogazione


 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                                         |   

qualcuno può darmi un esempio, con e senza implicazione, quindi un codice try sopraelevazione, in grado di ottenere i risultati a destra.

È stato utile?

Soluzione

Il tuo ontologia sembra un po 'di pesce.

book1, book2, book3 e mit non sono classi, sono individui. Si dovrebbe usare model.createIndividual(NS + "bookX", publication) per i libri, e creare una classe per “organizzazione” o simili, e quindi creare mit come un individuo di quella classe. Si noti che createIndividual prende già cura di assegnare il tipo per l'individuo, per cui non c'è bisogno di pasticciare con la vostra proprietà “a”. Si dovrebbe risolvere queste cose e poi provare di nuovo e aggiornare la tua domanda.

A proposito di implicazione: Guardate l'ultima riga del risultato della query. Non hai detto da nessuna parte che book3 è un libro, ma l'affermazione è lì comunque. Questo perché è stato derivanti da altre dichiarazioni, e questo è il motivo per cui il motore di inferenza RDFS rende la dichiarazione visibile quando si esegue una query del modello. La dichiarazione è comportato a causa della gamma su publishes:. Tutto ciò che viene pubblicato è comportato essere di tipo publication

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top