1

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_aircraftnamespace:Sense_ru_аэроплан

这对我来说不是很清楚。可能的来源:https ://www.w3.org/2001/tag/doc/qnameids、https : //www.w3.org/TR/xml/、https : //www.w3.org/TR/curie/和 RFC3987

4

2 回答 2

2

QName 和 CURIE 的规则彼此完全无关,所以这实际上是两个独立的问题。

术语 QName 有几个不同的含义,具体取决于您所指的规范,但它本质上是由前缀、本地部分和命名空间组成的三元组。前缀和本地部分都定义为 NCNames,并且绝对可以包含非拉丁字符;确切的字符集取决于您引用的 XML 规范的版本/版本。

命名空间部分允许什么的问题有点模棱两可。在命名空间 1.0 规范中,命名空间名称被定义为 URI 引用(如 RFC 3986 中所定义);在 Namespaces 1.1 中被定义为 IRI(如 RFC 3987 中所定义)。IRIs 当然可以包含非拉丁字母,但 URIs 不能。但是,两个文档的一致性声明都说明了文档符合的条件,并且这些条件不包括命名空间名称是有效的 URI 或 IRI 的要求。我知道这种遗漏是故意的。因此,大多数处理 QName 的软件都接受任何字符串作为合法的命名空间名称。

于 2016-03-17T21:06:25.753 回答
0

然而,根据我的经验,许多 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_аэроплан>;
于 2021-04-06T21:57:31.013 回答