2013-06-21 1 views
2

Насколько я знаю, семантическая сеть состоит из троек URI. Сокращения пространства имен широко используются для сокращения их в повседневном использовании. Я думал, что сокращенные пространства имен будут расширены до URI путем простой конкатенации, например. знаменитый dc:title в известном пространстве имен dc: (который определяется как http://purl.org/dc/elements/1.1/, обратите внимание, что последний символ равен /) будет расширен и, следовательно, будет семантически равен http://purl.org/dc/elements/1.1/title.Правильно расширяя пространства имен xml без заданного конечного символа в допустимые URI

Затем я пришел к некоторым определениям пространства имен, которые не имеют разумного символа разделения на их конце. Некоторые примеры из http://live.dbpedia.org/sparql?nsdecl

и некоторые из Most common RDF namespaces списка:

Как расширить такие пространства имен в действительных связанных URIs данных?

Рекомендация W3C Namespaces in XML определяет: «расширенного имя является парой, состоящей из namespace name и local name.» И Фредрик Lundh writes on effbot.org: «В дереве элементов, квалифицированные имена хранятся в виде универсальных имен в Кларке обозначение, которое объединяет URI и локальную часть в одну строку, заданную как «{uri» local ». Это может быть подходящим для широкого круга вариантов использования, но это не соответствует идее, согласно которой связаны данные URI, которые не могут начинаться с {.

я бы подумал, что xsd:element должны не быть расширена до http://www.w3.org/2001/XMLSchemaelement в связанных данных (ни к {http://www.w3.org/2001/XMLSchema}element), должен ли? Как это должно быть выполнено правильно?

ответ

5

Из 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.