【问题标题】:Infer data with SPARQL in Protege在 Protege 中使用 SPARQL 推断数据
【发布时间】:2019-01-08 13:37:30
【问题描述】:

我正在努力思考如何推断 RDF 数据。假设我有这些三元组(RDF Turtle),是我使用 Protege 创建的:

@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .

:hasSpouse rdf:type owl:ObjectProperty ,
                    owl:SymmetricProperty ;
           rdfs:domain :People ;
           rdfs:range :People .

:People rdf:type owl:Class .

:Jane_Doe rdf:type owl:NamedIndividual ,
                   :People .

:John_Doe rdf:type owl:NamedIndividual ,
                   :People ;
          :hasSpouse :Jane_Doe .

Protege 中的推理器将突出显示预期的推理,即:Jane_Doe :hasSpouse :John_Doe

如何使用 SPARQL 查看该推断?如果我在 Protege(SPARQL 选项卡)中运行此查询:

SELECT ?subject
    WHERE {?subject hasSpouse ?object .}

它显示了断言的三元组,而不是推断的三元组。我了解如何手动操作,例如:

CONSTRUCT {?object ?prop ?subject }
    WHERE { ?prop rdf:type owl:SymmetricProperty .
            ?subject ?prop ?object .}

我现在会看到我期望的推断数据,但是 1) 恕我直言(即重新发明轮子)2) 我不能在此选项卡中有 2 个查询(构造,然后选择)。必须有一种方法可以自动执行此操作,就像推理者所做的那样。

我在 Stack Overflow 中读到一篇文章,说要在 Protege 中使用“Snap SPARQL”插件。我试过但简单的查询不起作用(如上面的第一个)。好像是另一种语言。它是如何工作的?

那么,我怎样才能通过 SPARQL 获得这些 owl 属性的好处呢?如何在 Protege 中拥有支持 OWL 的 SPARQL?我是不是走错路了?正确的方法是什么?

感谢您的帮助。 尼古拉斯

【问题讨论】:

  • 在 Snap SPARQL 视图中执行查询之前,您必须启用并启动推理器。而且我不知道为什么,但是您忘记在 Turtle 示例中定义前缀 :。无论如何,您应该定义自己的命名空间,否则它将在加载时自动生成。查询必须是SELECT * WHERE {?subject &lt;http://www.semanticweb.org/owl/owlapi/turtle#hasSpouse&gt; ?object }
  • 成功了。我想我没有启用推理器...非常感谢您的帮助,不胜感激!

标签: sparql rdf owl protege


【解决方案1】:

你需要让你的推论成为你知识的一部分。

为此,请转到 SWRL 选项卡并连续单击按钮

在该选项卡的底部,从左到右开始。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-19
    • 1970-01-01
    • 2016-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多