【问题标题】:Class propagation via inference using OWL ontology使用 OWL 本体通过推理进行类传播
【发布时间】:2021-06-19 18:08:23
【问题描述】:

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

例如:

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

在这里我们可以看到两个节点Node ANode B 由某个属性any property 连接。 Node BSensitive Element。通过连接到敏感元素Node B,我想推断Node A也是敏感元素:

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

那个三元组是我试图推断的那个。可以看到我已经在any property的域的方向传播了Sensitive Element类。

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

额外信息:

  • 作为推理引擎,我使用 Apache Jena 及其所有默认值
  • 为方便起见,我希望通过推理而不是 SPARQL 查询获得此类结果

【问题讨论】:

  • 我怀疑这是可能的。至少不使用 JENA 规则,因为必须定义谓词,因此不可能做出关于“任何属性”的陈述。

标签: rdf owl ontology inference rdfs


【解决方案1】:

如果您的知识库中有一对个人: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 .

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

【讨论】:

  • 我明白你的意思。我不能在架构级别做出这样的陈述正确吗?此类陈述只能针对具体的个人;具体的主体和客体,而不是范围和领域。
猜你喜欢
  • 1970-01-01
  • 2013-09-04
  • 2014-04-05
  • 2018-03-18
  • 2013-12-26
  • 1970-01-01
  • 2011-06-08
  • 1970-01-01
相关资源
最近更新 更多