国际化 QNames/CURIs
Internationalized QNames/CURIs
QNames/CURIs 的本地部分是否允许使用非拉丁字符?
我有以下前缀定义:@prefix namespace <http://example.org/namespace/> .
以及以下 URI:
<http://example.org/namespace/Sense_en_aircraft>
<http://example.org/namespace/Sense_ru_аэроплан>
两个 QName 都正确吗?:namespace:Sense_en_aircraft
和 namespace:Sense_ru_аэроплан
这个我不是很清楚。
可能的来源:https://www.w3.org/2001/tag/doc/qnameids, https://www.w3.org/TR/xml/, https://www.w3.org/TR/curie/ 和 RFC3987
QName 和 CURIE 的规则彼此无关,因此这实际上是两个不同的问题。
根据您所指的规范,术语 QName 有几种不同的含义,但它本质上是一个由前缀、本地部分和名称空间组成的三元组。前缀和本地部分都定义为 NCName,并且绝对可以包含非拉丁字符;确切的字符集取决于您引用的 XML 规范中的 version/edition。
名称空间部分允许什么的问题有点模棱两可。在命名空间 1.0 规范中,命名空间名称被定义为 URI 引用(如 RFC 3986 中所定义);在 Namespaces 1.1 中被定义为 IRI(如 RFC 3987 中所定义)。 IRI 当然可以包含非拉丁字母,但 URI 不能。但是,这两个文档的一致性声明都说明了文档要符合的条件,并且这些条件不包括名称空间名称是有效 URI 或 IRI 的要求。我知道这个遗漏是故意的。因此,大多数处理 QName 的软件都接受任何字符串作为合法的命名空间名称。
然而,根据我的经验,许多 RDF 验证器或解析器不接受非拉丁字符,抱怨它们不是有效的 QName。 [编辑:虽然我相信这是真的,但下面给出的例子是无效的,感谢@Peeja 指出这一点。我会搜索一个有效的。]
我今天看到的例子是通过https://www.w3.org/2015/03/ShExValidata/,它喜欢前两个例子但不喜欢第三个。
dct:source <http://test.org/simple>;
dct:source <http://example.org/namespace/Sense_en_aircraft>;
dct:source <<http://example.org/namespace/Sense_ru_аэроплан>;
QNames/CURIs 的本地部分是否允许使用非拉丁字符?
我有以下前缀定义:@prefix namespace <http://example.org/namespace/> .
以及以下 URI:
<http://example.org/namespace/Sense_en_aircraft>
<http://example.org/namespace/Sense_ru_аэроплан>
两个 QName 都正确吗?:namespace:Sense_en_aircraft
和 namespace:Sense_ru_аэроплан
这个我不是很清楚。 可能的来源:https://www.w3.org/2001/tag/doc/qnameids, https://www.w3.org/TR/xml/, https://www.w3.org/TR/curie/ 和 RFC3987
QName 和 CURIE 的规则彼此无关,因此这实际上是两个不同的问题。
根据您所指的规范,术语 QName 有几种不同的含义,但它本质上是一个由前缀、本地部分和名称空间组成的三元组。前缀和本地部分都定义为 NCName,并且绝对可以包含非拉丁字符;确切的字符集取决于您引用的 XML 规范中的 version/edition。
名称空间部分允许什么的问题有点模棱两可。在命名空间 1.0 规范中,命名空间名称被定义为 URI 引用(如 RFC 3986 中所定义);在 Namespaces 1.1 中被定义为 IRI(如 RFC 3987 中所定义)。 IRI 当然可以包含非拉丁字母,但 URI 不能。但是,这两个文档的一致性声明都说明了文档要符合的条件,并且这些条件不包括名称空间名称是有效 URI 或 IRI 的要求。我知道这个遗漏是故意的。因此,大多数处理 QName 的软件都接受任何字符串作为合法的命名空间名称。
然而,根据我的经验,许多 RDF 验证器或解析器不接受非拉丁字符,抱怨它们不是有效的 QName。 [编辑:虽然我相信这是真的,但下面给出的例子是无效的,感谢@Peeja 指出这一点。我会搜索一个有效的。]
我今天看到的例子是通过https://www.w3.org/2015/03/ShExValidata/,它喜欢前两个例子但不喜欢第三个。
dct:source <http://test.org/simple>;
dct:source <http://example.org/namespace/Sense_en_aircraft>;
dct:source <<http://example.org/namespace/Sense_ru_аэроплан>;