rdf - 使用 OWL 本体通过推理进行类传播
问题描述
我正在尝试编写一个本体,它将在连接的节点之间传播某些类。这种连接可以通过任何属性来完成。传播应该在这些属性的域的方向上。
例如:
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 本体?
额外信息:
- 作为推理引擎,我使用 Apache Jena 及其所有默认值
- 为方便起见,我想从推理而不是 SPARQL 查询中获得这样的结果
解决方案
如果您是一对个人: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 .
这样做的好处是您可以调整哪个属性使事物敏感或不敏感。
推荐阅读
- xamarin.forms - 使用 xamarin 表单查找设备方向,而不是应用程序方向
- java - 请求中的多个方法调用
- java - 如何使用 Selenium 和 Java 在多个帧之间切换
- r - R根据变量重新调整第二个Y轴
- python - Flask 会话不会跨请求持续存在
- javascript - react-native run-android 失败
- python - 如何在数据框中添加缺失的日期并填充python中的其他相应列?
- django - Stripe 使用 django 的 webhook 说:stripe.error.SignatureVerificationError
- css - 仅在 Chrome 中出现奇怪的 CSS 阴影错误?
- android - 由于带有新代码的新版本,有关如何在 Android Studio 中编写 Soundboard 的教程后出现问题