Pregunta

Estoy probando sparql y el uso de vinculación.

Como ejemplo usé http://www.w3.org/TR/2010/WD-sparql11-entailment-20100126/#t112

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

donde modelo es el tipo OntModel.

y utilicé la consulta similar al problema

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

El modelo fue creado así.Espero que OntModelSpec esté bien.

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

obtengo como resultados de la consulta


 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                                         |   

¿Alguien puede darme un ejemplo, con y sin vinculación, para que quien no pueda probar el código pueda obtener los resultados correctos?

¿Fue útil?

Solución

Su ontología se parece un poco a pescado.

book1, book2, book3 y mit no son clases, que son las personas. Debe utilizar model.createIndividual(NS + "bookX", publication) de los libros, y crear una clase de “organización” o similar, y luego crear mit como un individuo de esa clase. Tenga en cuenta que createIndividual ya se encarga de asignar el tipo de la persona, por lo que no es necesario perder el tiempo con su propiedad “a”. Usted debe fijar estas cosas primero y luego tratar de nuevo y actualizar su pregunta.

Acerca de vinculación: Mira la última línea de su resultado de la consulta. Usted no ha dicho en cualquier lugar que book3 es un libro, pero la declaración es allí de todos modos. Esto se debe a que fue implicado por los restantes estados, y es por eso que el motor de inferencia RDFS hace la declaración visibles cuando se consulta el modelo. La declaración se implicó a causa de la gama de publishes:. Todo lo que está siendo publicado está implicado a ser de tipo publication

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top