不同蕴涵制度的耶拿效应

时间:2010-06-09 16:20:26

标签: sparql jena inference

我正在尝试使用sparql和使用蕴涵。

作为一个例子,我使用了http://www.w3.org/TR/2010/WD-sparql11-entailment-20100126/#t112

我试着把它们放进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);

其中model是OntModel类型。

我使用类似问题的查询

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

模型是这样创建的。希望OntModelSpec没问题。

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

我从查询

获得结果

 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                                         |   

任何人都可以给我一个例子,有无蕴涵,所以无法尝试代码,可以得到正确的结果。

1 个答案:

答案 0 :(得分:2)

你的本体看起来有点可疑。

book1book2book3mit不是课程,而是个人。您应该使用model.createIndividual(NS + "bookX", publication)作为书籍,并为“组织”或类似项创建一个类,然后创建mit作为该类的个人。请注意,createIndividual已经负责将类型分配给个人,因此您无需使用“a”属性。您应该先修复这些内容,然后再试一次并更新您的问题。

关于蕴涵:查看查询结果的最后一行。你没有说book3是一本书的任何地方,但无论如何声明都在那里。这是因为它是由其他语句引起的,这就是为什么RDFS推理引擎在查询模型时使语句可见。由于publishes上的范围,因此需要声明:发布的所有内容都必须属于publication类型。