Префикс пространства имен в 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, а только его внешний вид.