Обновление SPARQL: подчеркивание не разрешено в языковом теге

Я пытаюсь вставить данные в blazegraph, используя вкладку «Обновить» верстака blazegraph. Ниже приведен пример фрагмента кода:

INSERT DATA
{
  ns:MyNode ns:hasValue "MyValue"@en_us
}

Я указываю языковой тег с символом @. Однако он выдает следующее исключение:

org.openrdf.query.MalformedQueryException: лексическая ошибка в строке 8, столбце 49. Встречается: "u" (117), после: "_"

Кажется, что он не позволяет использовать подчеркивание как часть языкового тега. Если попробовать просто с 'en', все работает нормально.

Почему это так? Является ли здесь подчеркивание специальным символом? Если да, то как избежать этого?


person whitehat    schedule 17.11.2017    source источник


Ответы (1)


Синтаксис языковых тегов определяется документом RFC, который теперь исправлен в RFC5646. Регистрация языковых тегов контролируется IANA.

Подтеги разделяются "-"; только A-Z,0-9 разрешены в подтегах.

Когда он был принят для синтаксисов RDF (N3, SPARQL, Turtle и т. д.), принятый шаблон грамматики был компромиссным синтаксисом, слабо соответствующим RFC. '@' [a-zA-Z]+ ('-' [a-zA-Z0-9]+)* без подробностей. Разделитель вложенных тегов "-". «_» не допускается в языковом теге.

person AndyS    schedule 17.11.2017