我想在我自己的本体中扩展SOMA中定义的
Hand
类,并用命名空间定义http://example.org/test.owl
<owl:Class rdf:about="http://www.ease-crc.org/ont/SOMA.owl#Hand">
<rdfs:subClassOf rdf:resource="http://www.ease-crc.org/ont/SOMA.owl#PrehensileEffector"/>
<rdfs:comment>A prehensile effector including palm, fingers, and thumb.</rdfs:comment>
<rdfs:isDefinedBy rdf:resource="http://www.ease-crc.org/ont/SOMA-OBJ.owl"/>
</owl:Class>
看起来像这样
<rdf:Description rdf:about="http://www.ease-crc.org/ont/SOMA.owl#Hand">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.ontologydesignpatterns.org/ont/dul/DUL.owl#isRegionFor"/>
<owl:minCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">1</owl:minCardinality>
<owl:allValuesFrom rdf:resource="http://example.org/test.owl#Span"/>
</owl:Restriction>
</rdfs:subClassOf>
</rdf:Description>
首先,这是否正确定义了
Hand
的每个实例都必须通过 Span
属性与 isRegionFor
至少有一个关联?
现在为了测试它,我创建了一个 Hand 实例(具有 SOMA 命名空间),与 Span 没有任何关联,并运行 Pellet 推理机,但推理机没有抱怨。这与 Hand 的命名空间(因为我已经在本体中用新的命名空间扩展了它)或 Pellet 的某些配置有关吗?
OWL 遵循“开放世界假设”——为了报告不一致,仅仅图表“缺失”事实是不够的——你必须明确地反驳它们;换句话说,删除三元组永远不会产生矛盾。你的本体论告诉推理者,一个 Hand
与至少一个 Span
存在关系,并且不存在与此相矛盾的三元组。
rdfs:subClassOf
,然后与推理器检查 Hand
的每个成员也是您的
owl:Restriction
的成员。但是,这不需要“直接”证明,因为您可以明确断言此成员资格,即“恶意”图可能暗示特定的 Hand
与某些 Span
相关联,但它没有义务识别该成员资格明确特定的个人。OWL 不是适合这项工作的工具,如果您想验证图表 – SHACL更好。