Rdf 我如何在Marklogic中推断?

Rdf 我如何在Marklogic中推断?,rdf,marklogic,type-inference,ontology,Rdf,Marklogic,Type Inference,Ontology,我在Marklogic中存储了三元组。我想通过使用具有如下haskey限制的本体来推断它们,从而得到一个事实,在这个事实中,描述了与其他实例具有owl:sameAs关系的实例 [要推断的存储三元组] ex:01 rdf:type ex:Student; foaf:name "Bill Clinton"; ex:hasID "042". ex:02 rdf:type ex:Student; foaf:n

我在Marklogic中存储了三元组。我想通过使用具有如下haskey限制的本体来推断它们,从而得到一个事实,在这个事实中,描述了与其他实例具有owl:sameAs关系的实例

[要推断的存储三元组]

ex:01   rdf:type ex:Student;
        foaf:name "Bill Clinton";
        ex:hasID "042".
ex:02   rdf:type ex:Student;
        foaf:name "George Walker Bush";
        ex:hasID "043".
ex:03   rdf:type ex:Student;
        foaf:name "Donald John Trump";
        ex:hasID "045".
ex:04   rdf:type ex:Student;
        foaf:name "Barack Hussein Obama II";
        ex:hasID "044".
ex:05   rdf:type ex:Student;
        foaf:name "William Jefferson Clinton";
        ex:hasID "042".
ex:06   rdf:type ex:Student;
        foaf:name "Don Trump";
        ex:hasID "045".
[本体论]

foaf:name rdf:type owl:DatatypeProperty.
ex:hasId rdf:type owl:DatatypeProperty.
ex:Student rdf:type owl:Class ;
           owl:hasKey ( ex:hasId
                      ) .
[事实-推断的预期结果]

ex:01 owl:sameAs ex:05.
ex:03 owl:sameAs ex:06.
ex:05 owl:sameAs ex:01.
ex:06 owl:sameAs ex:03.

我如何让Marklogic进行推理?顺便说一句,我的Marklogic的版本是10。

owl:hasKey
是在OWL2中引入的。MarkLogic还没有为OWL2提供开箱即用的规则。你可以自己创造它。推理指南解释了规则在MarkLogic中的工作原理:


谢谢!我读了你展示的那一页,明白了。是否可以将Marklogic与任何resoner(例如小球)结合起来?你知道Marklogic的推理机的最佳选择是什么吗?如果是这样的话,我认为如果你尝试的话,你不会得到多少好处。Pellet在Java中运行,因此必须在MarkLogic之外运行,这意味着您将在SPARQL查询中失去很多性能。我建议寻找现有的OWL 2规则集,并将它们重写到MarkLogic规则文件中,或者自己编写所需的规则文件。另一种选择可能是在加载到MarkLogic之前进行推断,并在MarkLogic中将推断出的三元组具体化为实三元组。这将提供最佳性能,但需要一些灵活性。谢谢!我明白,使用一个推理机来解决Marklogic之外的问题不是一个好选择。我将尝试寻找OWL2规则集或根据您的建议编写它。