Формат Turtle

Материал из Semantic Future
Перейти к: навигация, поиск


Ломов П. А.

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

Уровень публикуемого материала
Рекомендуемый уровень знаний читателя в предметной области :

Начальный


Публикация
Тип публикации:

Обзор

Оригинал:

источник:Crider

Личные инструменты
Пространства имён
Варианты
Действия
Проект SF:
Деятельность:
Сообщество:
Хранилище знаний:
Гиды:
Руководства:
Инструменты