rdf - OWL本体可以实现吗?
问题描述
您能否告诉我,是否可以仅通过 OWL 本体定义来实现这种情况?或者我需要为它创建自定义规则?
IF
?doc rdf:type :document
AND ?doc :state :completed
AND not exists { ?other-doc :replaces+ ?doc AND ?other-doc :state :completed }
THEN
?doc rdf:type :latest-document
因此,想法是将推断:latest-document
类型分配给所有rdf:type :document
具有:state = :completed
且没有任何较新实体的实体:state = :completed
。我想知道,如果这种情况太复杂而无法仅通过 OWL 定义来实现它。
解决方案
当然!复杂的部分可能是如何最好地描述被替换的关系:
@prefix owl: <http://www.w3.org/2002/07/owl#> .
_:completed-thing a owl:Restriction ;
owl:onProperty :state ;
owl:hasValue :completed .
_:replaced-by a owl:TransitiveProperty ;
owl:inverseOf :replaces .
_:replaced-thing a owl:Restriction ;
owl:onProperty _:replaced-by ;
owl:someValuesFrom :completed-thing .
_:latest-thing owl:complementOf _:replaced-thing .
这首先通过 标识所有已完成事物的类owl:hasValue
,然后定义_:replaced-by
为 的倒数:replaces
。该属性是可传递的(因此通过扩展:replaces
也可以传递)。
接下来我们定义一个被替换的东西,这是任何被上面定义的至少一个完成的东西所替换的东西。最新的东西就是任何没有被替换的东西。
我没有包含与:document
您指定的交集,因为它会使答案的核心部分复杂化。:replaces
但是,如果并且:state
已经仅在文档上有效,则不需要它,并且owl:intersectionOf
无论如何使用它都是一件简单的事情。
推荐阅读
- reactjs - react-gluejar blob 图像上传到静态服务器
- javascript - setTimeout 的延迟参数可以完全受到亚毫秒输入的影响吗?
- java - 使用 Java 驱动程序返回 null 的 MongoDB 嵌套查询
- reactjs - 我如何使用 gapi 登录并在反应中获取用户信息?
- xaml - 如何更改特定位置点击的列表值?
- android - gradle中不同的依赖实现依赖于不同的android版本
- javascript - Chrome DevTools 无法从 React Production Build 访问变量
- swift - 按下按钮时如何使用键盘激活文本字段
- react-native - 多个提示 AzureAD promptAuthAsync() Expo
- java - 在 IO 绑定任务上使用 CompletableFuture 时的运行时差异