Из RDF/XML Syntax Specification (Revised) [курсив]:
Для того, чтобы закодировать граф в XML, узлы и предикаты должны быть представлены в терминах XML - имен элементов, имен атрибутов, содержимого элементов и значений атрибутов , RDF/XML использует XML QNames, как определено в пространствах имен в XML [XML-NS] для представления ссылок URI RDF. Все имена QNames имеют имя пространства имен, которое является ссылкой URI и коротким локальным именем. Кроме того, QNames могут либо иметь короткий префикс, либо объявляться с объявлением пространства имен по умолчанию и не иметь (но все еще иметь имя пространства имен)
Ссылка на URI RDF, представленная QName, определяется добавлением части локального имени QName после имени имени пространства имен (ссылка на URI) в QName. Это используется для сокращения ссылок URI RDF всех предикатов и некоторых узлов. Ссылки RDF URI, идентифицирующие объекты и объекты, также могут быть сохранены как значения атрибутов XML.Литералы RDF, которые могут быть только объектными узлами, становятся либо текстовым содержимым XML-элементов, либо значениями атрибутов XML.
Это просто конкатенация. Это конкатенированный результат. Это означает, что я могу использовать
@prefix dcterms: <http://purl.org/dc/terms/>
@prefix dctermsx: <http://purl.org/dc/terms/accrual>
dcterms:accrualPolicy === http://purl.org/dc/terms/accrualPolicy
dctermsx:Policy === http://purl.org/dc/terms/accrualPolicy
dcterms:accrualPeriodicity === http://purl.org/dc/terms/accrualPeriodicity
dctermsx:Periodicity === http://purl.org/dc/terms/accrualPeriodicity
Интересно, что синтаксис/XML спецификации RDF должен определить, как QNames интерпретируются. Почему он просто не наследует значение из спецификаций XML QName? Ответ в the article, что вы цитируется:
спецификация пространства имен XML не явно указать, как приложение должно относиться к (URI, локальная часть) пара. В то время как большинство приложений рассматривают их как два отдельных компонента, некоторые приложения ожидают, что вы будете комбинировать их по-разному.
В RDF/XML, приложения обработать (URI, локальная часть) пара в качестве ссылки на URI, который является конкатенация Uri и местный, как указано в исходной цитата из Синтаксический документ RDF. Разумеется, соглашение состоит в том, что URI, определенные лексикой, таковы, что существует общее пространство имен и что термины легко писать с использованием этого пространства имен в качестве префикса XML, поэтому на практике вы не увидите вид манипуляции с пространством имен что я показал выше с условиями DCMI.
В ElementTree, то QName соответствует {} URI локального. Вот как приложение рассматривает пару (URI, локальная часть).
Существуют осложнения, которые возникают из-за того, что сериализации RDF/XML должны быть действительными XML. Не каждый URI может быть представлен как QName, потому что есть URI, которые не могут быть представлены как QName, потому что в QName namespace:localname
существуют ограничения на то, какие символы могут появляться в namespace
и в name
. Например, http://127.0.0.1/789234
, у вас не может быть хорошего QName, например localhost:789234
, потому что локальное имя не может начинаться с числа. (Например, см. this thread в списке рассылки пользователей Jena.)
Еще одно осложнение или путаница возникает из-за того, что существуют сериализации RDF, отличные от RDF/XML, а некоторые из них используют префикс/суффикс-нотацию, которая внешне похожий на XML QNames, но расслабляет некоторые из этих ограничений, поэтому вы можете видеть комбинации префикса/суффикса, которые не были бы корректными XML QNames, но это нормально для этих форматов.
Префиксы, определенные в конечной точке DBpedia SPARQL, выделяют эту проблему. От стандарта SPARQL, [курсив добавлен] раздел 4.1.1.1 Prefixed Names:
PREFIX
ключевое слово связывает метку префикса с IRI. Префиксное имя - это префиксная надпись и локальная часть, разделенная двоеточием ":"
. Префиксное имя сопоставляется с IRI путем объединения IRI, связанного с префиксом и локальной частью. Метка префикса или локальная часть могут быть пустыми. Обратите внимание, что локальные имена SPARQL позволяют вести ведущие разряды, а локальные имена XML - нет. Локальные имена SPARQL также позволяют допускать неалфавитно-цифровые символы в IRI через escape-символы обратной косой черты (например, ns:id\=123
). Локальные имена SPARQL имеют больше синтаксических ограничений, чем CURIE.
В этом контексте, в то время как префикс, как
amz => http://webservices.amazon.com/AWSECommerceService/2005-10-05
был бы бесполезен в RDF/XML сериализации, потому что вы должны были бы написать незаконные вещи, как amz:#something
или amz:/something
, было бы полезно (если возможно неудобно) в SPARQL, где вы может написать amz:\#something
и amz:\/something
.