Question

Je suis en train sparql et l'utilisation de entailment.

Par exemple je l'ai utilisé http: // www .w3.org / TR / 2010 / WD-sparql11-entailment-20100126 / # T112

J'essaie de les mettre en 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);

où le modèle est de type OntModel.

et je l'ai utilisé la requête similaire au problème

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

Le modèle a été créé comme celui-ci. L'espoir OntModelSpec est ok.

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

i obtenir que les résultats de recherche


 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                                         |   

Quelqu'un peut-il me donner un exemple, avec et sans entailment, donc un code try cative, peut obtenir les bons résultats.

Était-ce utile?

La solution

Votre ontologie ressemble un peu louche.

book1, book2, book3 et mit ne sont pas des classes, ce sont des individus. Vous devez utiliser model.createIndividual(NS + "bookX", publication) pour les livres et créer une classe pour « organisation » ou similaire, puis créez mit en tant qu'individu de cette classe. Notez que createIndividual prend déjà en charge l'attribution du genre à l'individu, de sorte que vous ne propriété pas besoin de mess avec votre « de a ». Vous devez corriger ces choses d'abord, puis à nouveau essayer de mettre à jour votre question.

A propos entailment: Regardez la dernière ligne de votre résultat de la requête. Vous n'avez pas dit nulle part que book3 est un livre, mais la déclaration est là de toute façon. C'est parce qu'il a été entraîné par les autres déclarations, et c'est la raison pour laquelle le moteur d'inférence RDFS fait la déclaration visible lorsque vous interrogez le modèle. La déclaration est impliqué en raison de la gamme sur publishes. Tout ce qui est publié est entraîné à être de type publication

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top