1

我正在尝试 sparql 和蕴含的使用。

例如,我使用了http://www.w3.org/TR/2010/WD-sparql11-entailment-20100126/#t112

我试着把它们放在耶拿。

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

其中模型是 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                                         |   

谁能给我一个例子,有和没有蕴涵,所以不能尝试代码,可以得到正确的结果。

4

1 回答 1

2

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

book1, book2,book3mit不是类,它们是个体。您应该使用model.createIndividual(NS + "bookX", publication)书籍,并为“组织”或类似内容创建一个类,然后mit作为该类的个人创建。请注意,createIndividual已经负责将类型分配给个人,因此您无需弄乱您的“<code>a”属性。您应该先解决这些问题,然后再试一次并更新您的问题。

关于蕴涵:查看查询结果的最后一行。你没有说任何地方book3是一本书,但无论如何声明都在那里。那是因为它被其他语句所包含,这就是为什么 RDFS 推理引擎在您查询模型时使语句可见的原因。由于以下范围,该语句被包含publishes:正在发布的所有内容都被包含为 type publication

于 2010-06-09T16:40:30.673 回答