QNames / CURIs的本地部分是否允许使用非拉丁字符?
我有以下前缀定义:@prefix namespace <http://example.org/namespace/> .
以下URI:
<http://example.org/namespace/Sense_en_aircraft>
<http://example.org/namespace/Sense_ru_аэроплан>
这两个QNames是否正确?: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
答案 0 :(得分:1)
QNames和CURIEs的规则彼此完全无关,所以这实际上是两个不同的问题。
术语QName具有几种不同的含义,具体取决于您所引用的规范,但它本质上是包含前缀,本地部分和命名空间的三元组。前缀和本地部分都定义为NCNames,并且绝对可以包含非拉丁字符;确切的字符集取决于您引用的XML规范的版本/版本。
命名空间部分允许的内容有点含糊不清。在Namespaces 1.0规范中,名称空间名称被定义为URI引用(在RFC 3986中定义);在Namespaces 1.1中,定义为IRI(如RFC 3987中所定义)。 IRI当然可以包括非拉丁字母,但URI不能。但是,两个文档的一致性声明都说明了文档符合条件,并且这些条件不包括命名空间名称是有效URI或IRI的要求。我知道这个遗漏是故意的。因此,大多数处理QNames的软件都接受任何字符串作为合法的命名空间名称。
答案 1 :(得分:0)
然而,根据我的经验,许多 RDF 验证器或解析器不接受非拉丁字符,抱怨它们不是有效的 QName。我今天看到的例子是通过 https://www.w3.org/2015/03/ShExValidata/,它喜欢前两个例子但不喜欢第三个。
fcntl64