我正在尝试推断 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?我是否采取了错误的方式?正确的方法是什么?
感谢您的帮助。
尼古拉斯