在命名空间及其散列或斜线性质的情况下,我无法理解这个想法。我理解他们两个,但我遇到了另一个符号,没有哈希或斜线。特别是在我正在阅读的一本书中(Mannings:Linked Data),有一些例子使用了一个保存在Turtle格式文件中的小模式。这些示例使用此前缀:
@prefix wish: <http://purl.org/net/WishListSchema> .
这导致(转换为JSON-LD):
"http://purl.org/net/WishListSchemwish_list_item":
在我为前缀添加哈希/斜杠的情况下,它看起来更合理:
"wish:wish_list_item":
也许我对词汇/图式差异没有正确理解,我不知道。
符号没有哈希或斜杠是否常见?问题在哪里?
答案 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。