【问题标题】:Jena Effects of Different Entailment Regimes不同蕴涵制度的耶拿效应
【发布时间】:2010-06-09 16:20:26
【问题描述】:

我正在尝试 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                                         |   

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

【问题讨论】:

    标签: sparql jena inference


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢,效果很好。我改变了模型,按照你的想法。没有推理返回 book1(加上出版和文章),推理返回 3 本书。谢谢。 y 将书籍作为课程是一个严重的错误,但我很生气我没有得到相同的结果,我什至没有检查 book3
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多