Префикс пространства имен в RDF

У меня есть это заявление RDF (формат черепахи):

@prefix cd:      <http://mai.com/contactwrapper/0.1#> .

<http://mai.com/contactwrapper/0.1#malzaa@m.com>
      cd:Belongs_To "1"^^xmls:string ;
      cd:Email_Address "malzaa@m.com"^^xmls:string ;
      cd:Email_Type "WORK"^^xmls:string .

Как видите, префикс работал со свойствами (Belongs_To, Email_Address и Email_Type), но не работал с именем ресурса (malzaa@m.com). Потому что "http://mai.com/contactwrapper/0.1#" следует заменить на CD.

Может ли кто-нибудь объяснить, что не так с этим?

Спасибо

2 ответа

Решение

Сокращенная форма часто называется QName (что означает "квалифицированное имя"). Причина cd:malazaam@m.com не работает как QName являются @ и . полукокса в части позади :, Синтаксис Turtle не позволяет использовать эти символы в QName, поэтому вместо него используется полный URI.

Посмотрите грамматику Turtle для обзора того, какие символы разрешены в QName.

Как в стороне: ваш фрагмент Черепаха не объявляет xmls: либо namespace (которое вы используете для своих литеральных типов данных), поэтому оно не сможет проанализировать.

Как говорит Джин, "@" не допускается в Turtle с префиксным именем, несмотря на то, что префиксное имя шире, чем QNames.

В RDF 1.1 язык Turtle формально стандартизирован. "@" недопустимо в локальной части префиксных имен, но "\@" есть.

Последняя грамматика: http://www.w3.org/TR/turtle/

Есть много пареров, которые принимают традиционную черепаху. Авторы Jena консервативны - они выводят легальные RDF таким образом, чтобы максимизировать шансы быть читаемыми другим анализатором. Запись в полной форме <..> или использование префиксного имени не изменяет записываемый URI, а только его внешний вид.

Другие вопросы по тегам