例如:
entity:f06574 rdfs:label "Orioles"
或者这样的格式:
:tt0268252 a :Movie .
在任一情况下,f06574
and tt0268252
是代码,而不是实体或实例的实际字符串。原因之一可能是因为同一个字符串可能指代不同的事物,但在 RDF 世界中,事物的标识符总是以其唯一的 URI 为前缀,因此即使使用字符串,也不会导致歧义,等等可读且不透明的代码。
这种表述的真正原因是什么? Freebase 中的三元组是相似的。
这类似于代理键 https://en.wikipedia.org/wiki/Surrogate_key在关系数据库理论中。代理键不是从应用程序数据派生的,因此不携带任何语义含义。这与从应用程序数据派生的自然键相反。
代理键的主要优点是,如果应用程序数据发生更改,则不需要更改对数据的引用。在自然键的情况下,如果应用程序数据发生变化,就会导致对数据的引用发生变化。因此,所有外键都需要相应更新。
在语义网中,任何三元组指的是tt0268252
如果我们本质上希望标签从例如Movie
to Film
。如果我们使用像这样的字符串http://awesome/movie
它需要更改为电影,我们需要更改 IRIhttp://awesome/film
,这将违背语义网的原则(IRI 不应改变)。否则我们将不得不忍受http://awesome/movie
with http://awesome/movie rdfs:label "Film"
。这可能会导致更多的混乱而不是不透明的代码。
顺便说一句,这就是为什么有些人更喜欢使用持久统一资源定位符 https://en.wikipedia.org/wiki/Persistent_uniform_resource_locator当底层网络资源发生变化时提供弹性。以类似的方式,这些“代码”在应用程序数据发生变化时提供弹性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)