你能用一个例子解释一下 rdfs:domain 和 rdfs:range 之间的区别吗?我应该何时使用域以及何时使用范围?我已阅读 h w3c rdf 入门,但我不明白其中的区别
3 回答
从简单的角度来看,域和范围属性可以让您深入了解属性将主题链接到对象的方式。
在域属性的情况下,当您使用具有此关联属性的属性将主题链接到对象时,该主题有资格作为域中指定的事物类型。例如,我们查看一个词汇表,我们看到我们的属性的域是一个项目。所以,简单地说,只要使用“名称”属性描述的主题是一种项目(或者可能是一种项目),那么你应该没有问题继续使用该术语来描述那个东西,因为大多数其他人会解释说,如果使用这个术语来描述某事物,那么它就是一个项目。您会发现不仅人类,而且机器(在这种情况下为推理器)也会做出相同的推断。
range的工作方式与 domain 完全一样,但对于这个,它适用于语句的对象而不是主题。一句警告;您有时可能会遇到域或范围适用于不止一件事的情况。在这种情况下,这意味着主题或对象(域或范围)是指定的所有类型(交集而不是联合)。
简短回答:一个属性可能有很多 rdfs:domain 值,但只有一个 rdfs:range 值
这些属性适用于属性,并且必须按类进行赋值。它们用于限制可能具有给定属性的资源集(属性的域)和属性的有效值集(其范围)。一个属性可以有尽可能多的 rdfs:domain 值,但不超过一个 rdfs:range 值
来源:https ://perso.liris.cnrs.fr/pierre-antoine.champin/2001/rdf-tutorial/node15.html
RDF 中的每个属性都可能有自己关于域和范围的属性。域值限制了属性扩展的三倍主题的类别,范围值限制了属性值的范围。
来源:http ://www-kasm.nii.ac.jp/~koide/SWCLOS2/Manual/08DomainRange.htm
我发现从一个例子开始会更容易:假设我们有一个happened_at
DOMAIN 和 RANGE 定义如下的属性:
领域 | 财产 | 范围 |
---|---|---|
Event Olympic Games |
happened_at |
Place Location |
任何具有给定属性happened_at 的资源都是Event 或Olympic Games |
属性的值是一个或多个类的实例(例如Place ) |
|
2022年北京奥运会 | 北京 | |
类_ | 属性_ | 类_ |
因此,例如在以这种方式定义的本体中,当我happened_at
从其范围中找到属性时,我知道它的值可能只是Place
orLocation
并且从其域中,我知道具有此属性的资源将是Event
or的实例Olympic Games
。
在 RDF 中,属性P将具有范围和域类C,形式化如下:
P rdfs:range C
P rdfs:domain C
您可以在此处阅读 W3C 推荐中的完整定义。