owl 和 rdfs 属性 域范围如何工作?
How do owl and rdfs property domain range work?
我正在尝试理解 rdfs 域和范围的语义。因为我来自面向对象的背景,所以我很难理解语义以及如何根据 rdfs 语句验证数据。
这是一个海龟格式的示例文件:
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
prefix tmpl: <http://template.example.com/>
prefix data: <http://data.example.com/>
tmpl:Thing a owl:Class.
tmpl:Employment rdfs:subClassOf tmpl:TemporalThing.
tmpl:Party rdfs:subClassOf tmpl:Thing.
tmpl:Individual rdfs:subClassOf tmpl:Party.
tmpl:Organisation rdfs:subClassOf tmpl:Party.
tmpl:LimitedLiabilityCompany rdfs:subClassOf tmpl:Organisation.
tmpl:hasCurrentEmployer a owl:ObjectProperty;
rdfs:domain tmpl:Party;
rdfs:range tmpl:Party.
data:Simon a tmpl:Individual;
skos:prefLabel "Simon S".
data:PtyLtd a tmpl:LimitedLiabilityCompany.
data:Simon tmpl:hasCurrentEmployer data:PtyLtd.
tmpl:Animal a owl:Thing.
data:Beans a tmpl:Animal.
data:Simon tmpl:hasCurrentEmployer data:Beans.
我正在使用 GRAPHDB 作为我的测试环境。我希望最后一条语句失败并显示某种消息,因为 'Beans' 是一个 'Animal',它是 not a 'Party'.
然而,GRAPHDB 只接受该声明。
有什么想法吗?
编辑
基于以下 Stanislav 的评论:虽然推理引擎可能对此没有问题,但我们可以使用域和范围在应用程序中进行错误检查。
如评论中所述,您误解了域和范围的语义。
P rdfs:domain D
P rdfs:range R
意思是如果一个命题s P o
成立,那么(有推理运行),可以推导出s rdf:type D
和o rdf:type R
.
域和范围从不限制属性。这个要清楚。
要了解事情是如何工作的,请检查示例 OWL direct semantics for object properties here。
我正在尝试理解 rdfs 域和范围的语义。因为我来自面向对象的背景,所以我很难理解语义以及如何根据 rdfs 语句验证数据。
这是一个海龟格式的示例文件:
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
prefix tmpl: <http://template.example.com/>
prefix data: <http://data.example.com/>
tmpl:Thing a owl:Class.
tmpl:Employment rdfs:subClassOf tmpl:TemporalThing.
tmpl:Party rdfs:subClassOf tmpl:Thing.
tmpl:Individual rdfs:subClassOf tmpl:Party.
tmpl:Organisation rdfs:subClassOf tmpl:Party.
tmpl:LimitedLiabilityCompany rdfs:subClassOf tmpl:Organisation.
tmpl:hasCurrentEmployer a owl:ObjectProperty;
rdfs:domain tmpl:Party;
rdfs:range tmpl:Party.
data:Simon a tmpl:Individual;
skos:prefLabel "Simon S".
data:PtyLtd a tmpl:LimitedLiabilityCompany.
data:Simon tmpl:hasCurrentEmployer data:PtyLtd.
tmpl:Animal a owl:Thing.
data:Beans a tmpl:Animal.
data:Simon tmpl:hasCurrentEmployer data:Beans.
我正在使用 GRAPHDB 作为我的测试环境。我希望最后一条语句失败并显示某种消息,因为 'Beans' 是一个 'Animal',它是 not a 'Party'.
然而,GRAPHDB 只接受该声明。
有什么想法吗?
编辑
基于以下 Stanislav 的评论:虽然推理引擎可能对此没有问题,但我们可以使用域和范围在应用程序中进行错误检查。
如评论中所述,您误解了域和范围的语义。
P rdfs:domain D
P rdfs:range R
意思是如果一个命题s P o
成立,那么(有推理运行),可以推导出s rdf:type D
和o rdf:type R
.
域和范围从不限制属性。这个要清楚。
要了解事情是如何工作的,请检查示例 OWL direct semantics for object properties here。