rdf - rdfs:subPropertyOf 和 rdfs:domain
问题描述
下面的说法可能吗?
:a rdfs:subPropertyOf :b
:b rdfs:domain :aDomain
Thus, :a rdfs:domain :aDomain
解决方案
TL;DR:根据 RDFS 语义,如果所有具有属性的东西
:a
也是 type:aDomain
,它不会自动暗示:a rdfs:domain :aDomain
; 根据 OWL 语义,如果所有具有属性的东西:a
也是 类型:aDomain
,那么它在逻辑上意味着:a rdfs:domain :aDomain
。
这个问题的答案比看起来更微妙,因为 RDFS 的语义和 OWL 的语义之间存在细微差别。斯坦尼斯拉夫·克拉林 (Stanislav Kralin ) 在他对这个问题的简洁评论中强调了这种微妙之处。Costas给出的 RDF 片段可以根据RDFS 语义或 OWL 语义(甚至是RDF 语义,或简单语义,或其他语义扩展)来解释。
根据简单语义和 RDF 语义,术语rdfs:subPropertyOf
和rdfs:domain
没有任何特殊含义,因此结论:a rdfs:domain :aDomain
不成立。
根据RDFS语义,结论也不成立,但不太明显。在 RDFS 中,如果您有:
:a rdfs:subPropertyOf :b .
:b rdfs:domain :aDomain .
?x :a ?y .
对于任何 IRI 或空白节点?x
以及任何 IRI 或空白节点或文字?y
,您可以得出以下结论:
?x rdf:type :aDomain .
但你不能得出这样的结论:
:a rdfs:domain :aDomain .
这是因为 RDFS 没有扩展语义。这意味着如果所有具有C类型的东西也具有D类型,那么您不能(仅从这一点)断定C是B的子类,并且如果具有属性p的所有东西都具有C类型,那么您不能断定(从仅此一项)p具有域C。2004 年,RDF 1.0 提出了具有扩展语义的 RDFS的替代版本,突出了这个问题。2013 年,Franconi 等人。讨论了扩展 RDFS 的逻辑及其属性(Stanislas Kralin 在对 OP 的评论中也提供了链接)。
最后,OWL 语义(无论是直接语义还是基于 RDF 的语义)都具有外延语义,因此在根据这些语义解释 RDF 片段时,结论成立:
:a rdfs:subPropertyOf :b .
:b rdfs:domain :aDomain .
蕴含(即逻辑上暗示):
:a rdfs:domain :aDomain .
推荐阅读
- python - 不和谐.py | 删除空的语音通道
- oracle-sqldeveloper - Oracle SQL Developer 中的突然导出失败
- python - TypeError: 'int' 对象在渲染 Flask 模板时不可迭代
- android - Android Studio:Kotlin 注册监听器
- linux - 在 Dockerfile 中运行 chown 什么都不做
- powershell - 如何将此值获取到变量中以供以后操作?
- reactjs - 使用 webpack 或 babel 创建 react 组件 npm 包不起作用
- c# - 有没有办法让基异常类不打印它的消息
- html - 另一个 flex 元素内的 Flex 元素在 Safari 上折叠
- arcgis-js-api - 显示弹出窗口时更改默认要素图层颜色