Формат Turtle
| Ломов П. А. |
Turtle (Terse RDF Triple Language, Краткий язык RDF троек) - формат сериализации для RDF (Модель описания ресурсов) графов. Используется довольно часто для отображения RDF докуметов/файлов. Плюсом данного формата является его наглядность и тот факт, что многие редактроры RDF могут читать RDF, заданные в данном формате.
Основные элементы
RDF файл представляет из себя набор триплетов/троек, состоящих из элементов (subject, predicate, object), и завершающихся точкой ".". Например:
skos:narrower rdf:type owl:ObjectProperty .
Элементами тройки могут быть: URI, лителы и пустые узлы.
URI обрамляются скобками "<,>" и могут быть записына в краткой форме с помощью преффикса - "@prefix", объявленного ранее:
@prefix owl2xml: <http://www.w3.org/2006/12/owl2-xml#> .<br />
@prefix owl: <http://www.w3.org/2002/07/owl#> .<br />
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .<br />
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .<br />
skos:narrower rdf:type owl:ObjectProperty .
Простые литералы (короткие - на одну строку) пишуться в кавычках, длинные в двойных кавычках. К ним также можеть быть добавлен идентификатор языка или типа, например:
"chat"
"""a string"""<br />"""a string<br />with newlines<br />end"""<br />
"chat"@en<br />
"chat"@fr<br />
"foo"^^<http://example.org/my/datatype><br />
"""10"""^^xsd:decimal<br />
Пустые узлы обозначаются _:nodeID т.е. относительно текущего @base URI:
_:me<br />
_:a1234<br />
Символ запятая используется для повторения элементов subject и predicate в следующем триплете при необходимости:
:a :b :c ,<br />
:d .<br />
# the last triple is :a :b :d .<br />
Символ точка-с-запятой ";" используется для повторения элемента subject в следующих триплетах:
# this is not a complete turtle document<br />:a :b :c ;<br /> :d :e .<br /># the last triple is :a :d :e .<br />
Элементом триплета может быть также коллекция - набор вышеописанных элементом, заключенных в круглые скобки и разделенных пробелами:
@prefix : <http://example.org/stuff/1.0/> .<br />
:a :b ( "apple" "banana" ) .<br />
или в длинной форме:
@prefix : <http://example.org/stuff/1.0/> .<br />
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .<br />
:a :b<br />
[ rdf:first "apple";<br />
rdf:rest [ rdf:first "banana";<br />
rdf:rest rdf:nil ]<br />
] .<br />
Грамматика языка TURTLE в форме Бэкуса-Наура:
[1] turtleDoc ::= statement*<br />
[2] statement ::= directive '.' | triples '.' | ws+<br />
[3] directive ::= prefixID | base<br />
[4] prefixID ::= '@prefix' ws+ prefixName? ':' uriref<br />
[5] base ::= '@base' ws+ uriref<br />
[6] triples ::= subject predicateObjectList<br />
[7] predicateObjectList ::= verb objectList ( ';' verb objectList )* ( ';')?<br />
[8] objectList ::= object ( ',' object)*<br />
[9] verb ::= predicate | 'a'<br />
[10] comment ::= '#' ( [^#xA#xD] )*<br />
[11] subject ::= resource | blank<br />
[12] predicate ::= resource<br />
[13] object ::= resource | blank | literal<br />
[14] literal ::= quotedString ( '@' language )? | datatypeString | integer | double | decimal | boolean<br />
[15] datatypeString ::= quotedString '^^' resource<br />
[16] integer ::= ('-' | '+') ? [0-9]+<br />[17] double ::= ('-' | '+') ? ( [0-9]+ '.' [0-9]* exponent | '.' ([0-9])+ exponent | ([0-9])+ exponent )<br />[18] decimal ::= ('-' | '+')? ( [0-9]+ '.' [0-9]* | '.' ([0-9])+ | ([0-9])+ )<br />[19] exponent ::= [eE] ('-' | '+')? [0-9]+<br />[20] boolean ::= 'true' | 'false'<br />
[21] blank ::= nodeID | '[]' | '[' predicateObjectList ']' | collection<br />
[22] itemList ::= object+<br />
[23] collection ::= '(' itemList? ')'<br />[24] ws ::= #x9 | #xA | #xD | #x20 | comment <br />
[25] resource ::= uriref | qname<br />
[26] nodeID ::= '_:' name<br />
[27] qname ::= prefixName? ':' name?<br />
[28] uriref ::= '<' relativeURI '>' <br />
[29] language ::= [a-z]+ ('-' [a-z0-9]+ )* <br />[30] nameStartChar ::= [A-Z] | "_" | [a-z] | [#x00C0-#x00D6] | [#x00D8-#x00F6] | [#x00F8-#x02FF] | [#x0370-#x037D] | [#x037F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]<br />
[31] nameChar ::= nameStartChar | '-' | [0-9] | #x00B7 | [#x0300-#x036F] | [#x203F-#x2040]<br />
[32] name ::= nameStartChar nameChar*<br />
[33] prefixName ::= ( nameStartChar - '_' ) nameChar*<br />
[34] relativeURI ::= ucharacter*<br />
[35] quotedString ::= string | longString<br />
[36] string ::= #x22 scharacter* #x22<br />
[37] longString ::= #x22 #x22 #x22 lcharacter* #x22 #x22 #x22<br />
[38] character ::= '\u' hex hex hex hex | '\U' hex hex hex hex hex hex hex hex |'\\' | [#x20-#x5B] | [#x5D-#x10FFFF] <br />
[39] echaracter ::= character | '\t' | '\n' | '\r' <br />
[40] hex ::= [#x30-#x39] | [#x41-#x46]<br />
[41] ucharacter ::= ( character - #x3E ) | '\>' <br />
[42] scharacter ::= ( echaracter - #x22 ) | '\"' <br />
[43] lcharacter ::= echaracter | '\"' | #x9 | #xA | #xD<br />
Представленные материалы - скращенная версия Turtle - Terse RDF Triple Language
| Уровень публикуемого материала | |
| Рекомендуемый уровень знаний читателя в предметной области : | |
|---|---|
| Публикация | |
| Тип публикации: | |
|---|---|
| Оригинал: | |