Pergunta

Estou tentando SPARQL e o uso de falta.

Como exemplo eu usei http://www.w3.org/tr/2010/wd-sparql11-entailment-20100126/#t112

Eu tento colocá -los em 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);

onde o modelo é tipo ontmodel.

e eu usei a consulta semelhante ao problema

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

O modelo foi criado assim. Hope Ontmodelspec está ok.

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

Eu recebo como resultados da 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                                         |   

Alguém pode me dar um exemplo, com e sem interrupção, então um código não pode tentar, pode obter os resultados corretos.

Foi útil?

Solução

Sua ontologia parece um pouco suspeita.

book1, book2, book3 e mit não são aulas, são indivíduos. Você deveria usar model.createIndividual(NS + "bookX", publication) para os livros e crie uma classe para "organização" ou similar e depois criar mit como um indivíduo dessa classe. Observe que createIndividual já cuida de atribuir o tipo ao indivíduo, então você não precisa mexer com o seu “a" propriedade. Você deve consertar essas coisas primeiro e depois tentar novamente e atualizar sua pergunta.

Sobre o Irailment: Olhe para a última linha do seu resultado de consulta. Você não disse em lugar nenhum que book3 é um livro, mas a afirmação existe de qualquer maneira. Isso ocorre porque isso ocorreu com as outras declarações, e é por isso que o mecanismo de inferência RDFS torna a declaração visível quando você consulta o modelo. A declaração é envolvida por causa do intervalo em publishes: Tudo o que está sendo publicado é implicado para ser do tipo publication.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top