RDF哈希与斜杠词汇表(以及其他)

时间:2015-10-13 10:42:35

标签: rdf semantic-web linked-data

在命名空间及其散列或斜线性质的情况下,我无法理解这个想法。我理解他们两个,但我遇到了另一个符号,没有哈希或斜线。特别是在我正在阅读的一本书中(Mannings:Linked Data),有一些例子使用了一个保存在Turtle格式文件中的小模式。这些示例使用此前缀:

@prefix wish: <http://purl.org/net/WishListSchema> .

这导致(转换为JSON-LD):

 "http://purl.org/net/WishListSchemwish_list_item": 

在我为前缀添加哈希/斜杠的情况下,它看起来更合理:

 "wish:wish_list_item":

也许我对词汇/图式差异没有正确理解,我不知道。

符号没有哈希或斜杠是否常见?问题在哪里?

3 个答案:

答案 0 :(得分:2)

没有斜杠或哈希的符号并不常见。我还没有看到使用该惯例的词汇。在W3C建议中,他们只提供斜杠的配方并具有URI:http://www.w3.org/2001/sw/BestPractices/VM/http-examples/2006-01-18/#naming

实际上,如果你使用你的例子中列出的那个,它可能被认为是斜杠符号,但你词汇表中的每个词都将以&#34; WishListSchema _&#34;开始。

从可引用性的角度来看,如果您使用purl,该示例也会导致问题,因为您必须为词汇表的每个概念创建不同的purl。相反,如果您使用类似http://purl.org/net/WishListSchemwish#的内容,则可以将URL重定向到您的服务器并使用适当的配方来发布词汇表。

答案 1 :(得分:1)

这并不常见,也不是一个好主意。 IRI越来越难以阅读。 同样适用于@base指令,其作用类似于前缀 - 除非使用的IRI没有斜杠,否则最后的qname也将被删除:

@base <http://test.org/path#> .\n <a1> <b1> <c1> .

以IRI&#34; http://test.org/a1&#34;

作为个人进行解析

可能会让人感到非常困惑,我认为这不是教程的最佳选择。

答案 2 :(得分:1)

可能出现没有结束字符的前缀的一种情况是数据最初存储在 XML 中。 RDF/XML 传统上支持将前缀视为 XML 名称空间直接,因此 rdf: 将被声明为 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#",并带有哈希字符。

然而,没有什么可以阻止在 RDF/XML 中声明其他名称空间。过于简单的工具可能会产生这样的前缀:

@prefix xml: <http://www.w3.org/XML/1998/namespace>

现在,类似于 XML,RDF 中的命名空间只是相关资源的抽象分组,但与 XML 不同的是,它并未在 RDF 数据本身的任何地方声明。它只是在人类检查前缀时出现,但它本身并不存在。

当您确实希望 URI 具有含义时,命名空间就变成了一种东西——当资源是一组相关资源(例如本体)的一部分并且 URI 应该是可取消引用时。散列或斜杠约定只是配置网络服务器的最简单方法,因此这是可能的。如果有人将他们的网络服务器配置为将任何以 http://purl.org/net/WishListSchema 开头的 URI 视为引用该命名空间,那么也不会有任何问题。


正如我旁注的那样,我不认为这种从 XML 命名空间的直接转换是幸运的。 XML 命名空间也没有义务取消引用,但它们从未在任何上下文中被视为前缀,因此如果 http://www.w3.org/XML/1998/namespace#lang 描述某事物的可能性很小(这里实际上是这样),那么 {{1 }} 永远不可能是有意义的。在我看来,更合理的算法是检查命名空间是否以 http://www.w3.org/XML/1998/namespacelang# 结尾(这在 XML 中很少见,但有趣的例外是 /),并附加 {{ 1}} 如果没有。在寻找它时,您肯定不会得到 404。