Efectos de Jena de diferentes regímenes de vinculación
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?
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