首页 > 解决方案 > 使用 OWL 本体通过推理进行类传播

问题描述

我正在尝试编写一个本体,它将在连接的节点之间传播某些类。这种连接可以通过任何属性来完成。传播应该在这些属性的域的方向上。

例如:

Node A -(any property)-> Node B
Node B -(rdfs:type)-> Sensitive Element

在这里我们可以看到两个节点Node ANode B通过一些属性连接any propertyNode B是一个Sensitive Element。通过连接到Node B哪个是敏感元素,我想推断它也是一个敏感元素Node A

Node A -(rdfs:type)-> Sensitive Element

这个三元组是我试图推断的那个。你可以看到我已经Sensitive Elementany property.

是否有可能编写一个可以实现这种三元推理的 OWL 本体?

额外信息:

标签: rdfowlontologyinferencerdfs

解决方案


如果您是一对个人:NodeA并且:NodeB在您的知识库中,那么您可以推断:

:NodeA  owl:topObjectProperty  :NodeB .

假设你的规则成立,并且存在敏感元素,那么每件事都是敏感元素。这可能不是你想要的。

OWL 本体告诉你一些关于它所描述的宇宙的信息,但它并没有定义宇宙。这意味着,如果您不描述 A 和 B 之间的关系,并不意味着它们之间没有关系。事实上,OWL 语义的定义方式,总是存在任意 2 个实体之间的关系。即使owl:topObjectProperty在 OWL 中不存在(在 OWL 1 中就是这种情况),A 和 B 之间也会存在(可能未命名)关系。

您最可能想要的是表达仅使用命名属性的规则。为此,您可以使用 SPARQL 构造,或 RDFS 之上的规则语言,例如。

另一种选择可能是为每个命名属性定义一个公理。这些公理可以很容易地以编程方式添加。准确地说,对于每个命名的属性ppp,添加:

[]  a  owl:Restriction;
   owl:onProperty  ppp
   owl:someValuesFrom  :SensitiveElement;
   rdfs:subClassOf  :SensitiveElement .

这样做的好处是您可以调整哪个属性使事物敏感或不敏感。


推荐阅读