Интернационализированные QNames/CURI

Разрешены ли нелатинские символы в локальной части QNames/CURI? У меня есть следующее определение префикса: @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

2 ответа

Решение

Правила для QNames и CURIE совершенно не связаны друг с другом, так что на самом деле это два отдельных вопроса.

Термин QName имеет несколько разных значений в зависимости от того, на какую спецификацию вы ссылаетесь, но по сути это тройка, включающая префикс, локальную часть и пространство имен. Префикс и локальная часть определены как NCNames и могут определенно содержать нелатинские символы; Точный набор символов зависит от того, на какую версию / редакцию спецификации XML вы ссылаетесь.

Вопрос о том, что разрешено в части пространства имен, немного неоднозначен. В спецификации Namespaces 1.0 имя пространства имен было определено как ссылка на URI (как определено в RFC 3986); в пространствах имен 1.1 был определен как IRI (как определено в RFC 3987). IRI, конечно, могут содержать нелатинские буквы, но URI не могут. Однако в заявлении о соответствии обоих документов указываются условия для соответствия документа, и эти условия НЕ включают в себя требование, чтобы имя пространства имен было действительным URI или IRI. Я понимаю, что это упущение было преднамеренным. Поэтому большая часть программного обеспечения, обрабатывающего QNames, принимает любую строку символов в качестве допустимого имени пространства имен.

И все же, по моему опыту, многие валидаторы или парсеры RDF не принимают нелатинские символы, жалуясь на то, что они недействительны QNames. Пример, который я видел сегодня, был через 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_аэроплан>;
Другие вопросы по тегам