1

例如:

entity:f06574 rdfs:label "Orioles"

或者这样的格式:

:tt0268252 a :Movie .

在任何一种情况下,f06574andtt0268252都是代码,而不是实体或实例的实际字符串。一个原因可能是同一个字符串可能指代不同的事物,但在 RDF 世界中,事物的标识符总是以其唯一的 URI 为前缀,因此即使使用字符串,也不会引起歧义,等等可读且不透明的代码。

这种表现的真正原因是什么?Freebase 中的三元组是相似的。

4

1 回答 1

3

这类似于关系数据库理论中的代理键。代理键不是从应用程序数据派生的,因此没有语义。这与从应用程序数据派生的自然键相反。

代理键的主要优点是,如果应用程序数据发生更改,则不需要对数据的引用进行更改。在自然键的情况下,如果应用程序数据发生变化,就会导致对数据的引用发生变化。因此,所有外键都需要相应地更新。

在语义网中,如果我们本质上希望标签从 say变为tt0268252,则不需要更新任何引用的三元组。如果我们使用字符串 like并且需要将其更改为电影,我们将需要更改 IRI ,这将违反语义网的原则(IRI 不应更改)。否则我们将不得不忍受。这可能会导致更多的混乱而不是不透明的代码。MovieFilmhttp://awesome/moviehttp://awesome/filmhttp://awesome/moviehttp://awesome/movie rdfs:label "Film"

顺便说一句,这就是为什么有些人更喜欢使用持久统一资源定位器,这些定位器在底层 Web 资源发生变化时提供弹性。以类似的方式,这些“代码”在应用程序数据更改时提供弹性。

于 2019-11-19T22:01:01.747 回答