我刚开始学习语义网,并对限制类有疑问。我挖了一段时间,但还没有找到任何答案..任何帮助将不胜感激!
从教科书中,我看到了定义限制类的示例,它们都是要定义匿名owl:Restriction
类bnode
并将此bnode
与属性owl:equivalentClass
相关联。
示例:
example:restrictionClass owl:equivalentClass [
rdf:type owl:Restriction;
owl:onProperty example:resProp;
owl:someValuesFrom example:resValue.
]
我的问题是我们可以直接定义限制类吗?像:
example:restrictionClass rdf:type owl:Restriction;
owl:onProperty example:resProp;
owl:someValuesFrom example:resValue.
定义匿名owl:Restriction
有什么好处?
答案 0 :(得分:7)
:C owl:equivalentClass [
rdf:type owl:Restriction;
owl:onProperty :p;
owl:someValuesFrom :D .
]
现在,假设您还有公理 EquivalentClasses(C ObjectSomeValuesFrom(r E))。这被编码为:
:C owl:equivalentClass [
rdf:type owl:Restriction;
owl:onProperty :r;
owl:someValuesFrom :E .
]
现在,如果你可以应用你想要的缩写,你会得到:
:C rdf:type owl:Restriction ;
owl:onProperty :p ;
owl:onProperty :r ;
owl:someValuesFrom :D ;
owl:someValuesFrom :E .
现在有歧义。以下哪一项C等于?
仅从RDF,你没有办法说出来。您实际上需要编码 EquivalentClasses 公理。
要解决评论中的问题:我使用C,p和D来缩短文本。您的原始RDF片段是公理的RDF编码
EquivalentClasses(
例如:restrictionClass
ObjectSomeValuesFrom(例如:resProp示例:resValue)
)
那是什么
example:restrictionClass owl:equivalentClass [
rdf:type owl:Restriction;
owl:onProperty example:resProp;
owl:someValuesFrom example:resValue.
]
编码。 示例:restrictionClass 在两个地方都是相同的IRI。整个空白节点是类表达式 ObjectSomeValuesFrom(例如:resProp示例:resValue)。然后 owl:equivalentClass 只关联两者。请注意,表达式不一样;他们表示的类是相同的。 OWL本体到RDF的映射在OWL 2 Web Ontology Language: Mapping to RDF Graphs (Second Edition)中给出。具体来说,请查看2.1 Translation of Axioms without Annotations中的表1,您可以在其中找到规则:
EquivalentClasses( CE1 ... CEn )
------------------------------------
T(CE1) owl:equivalentClass T(CE2) .
...
T(CEn-1) owl:equivalentClass T(CEn) .
和
ObjectSomeValuesFrom( OPE CE )
------------------------------
_:x rdf:type owl:Restriction .
_:x owl:onProperty T(OPE) .
_:x owl:someValuesFrom T(CE) .
当你向相反方向前进时,你可以阅读RDF并重建你的公理。但支持映射让你做你正在谈论的缩写,并且你有两个等价的类公理。你最终会得到模棱两可的RDF,因为你有两个 owl:onProperty三元组和两个owl:someValuesFrom三元组。
也许算术的例子会有所帮助。我们知道 4 , 2 + 2 和 1 + 3 都是表示相同数字的表达式。所以我们可以得到公理:
现在假设我们在RDF中用以下代码编码:
:four :equals [ rdf:type :sum ; :left :two ; :right :two ] .
:four :equals [ rdf:type :sum ; :left :one ; :right :three ] .
这很好,我们可以从中重建 4 = 2 + 2 和 4 = 1 + 3 。现在假设我们尝试将这些属性移动到:四个,而不是通过:equals 关联的空白节点。我们最终得到:
:four rdf:type :sum .
:four :left :two .
:four :right :two .
:four :left :one .
:four :right :three .
但这应该代表什么公理呢?您有四种方法从:四中选择左右两种方法。它应该编码以下哪一项?