问题描述
我正在尝试编写一个本体,它将在连接的节点之间传播某些类。这种连接可以由任何属性完成。传播应该在这些属性的域的方向上。
例如:
Node A -(any property)-> Node B
Node B -(rdfs:type)-> Sensitive Element
在这里我们可以看到两个节点 Node A
和 Node B
由某个属性 any property
连接。 Node B
是 Sensitive Element
。通过连接到敏感元素 Node B
,我想推断 Node A
也是敏感元素:
Node A -(rdfs:type)-> Sensitive Element
那个三元组就是我要推断的那个三元组。你可以看到我已经在 Sensitive Element
的域的方向上传播了 any property
类。
是否有可能编写一个能够实现这种三元推理的 OWL 本体?
额外信息:
解决方法
如果您的知识库中有一对个体 tsconfig.json
和 :NodeA
,那么您可以推断:
:NodeB
假设你的规则成立,并且存在敏感元素,那么每件事都是敏感元素。这可能不是您想要的。
OWL 本体告诉您有关它所描述的宇宙的一些信息,但它没有定义宇宙。这意味着,如果您不描述 A 和 B 之间的关系,并不意味着它们之间没有关系。事实上,根据 OWL 语义的定义方式,任何 2 个实体之间总是存在关系。即使 :NodeA owl:topObjectProperty :NodeB .
在 OWL 中不存在(在 OWL 1 中就是这种情况),A 和 B 之间也可能存在未命名的关系。
您最可能想要的是表达仅使用命名属性的规则。为此,您可以使用 SPARQL 构造,或基于 RDFS 的规则语言。
另一种选择是为每个命名属性定义一个公理。这些公理可以很容易地以编程方式添加。准确地说,对于每个命名属性 owl:topObjectProperty
,添加:
ppp
这样做的好处是您可以调整哪个属性使事物敏感。