Навигация
Главная
Поиск
Новости
Статьи
Ссылки
Об авторе
Контакты
FFQs
 
Главная arrow FFQs arrow SemanticWeb, Jena и другое семантическое arrow Формат Turtle
Формат Turtle Версия для печати Отправить на e-mail
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#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
 skos:narrower rdf:type owl:ObjectProperty .

Простые литералы (короткие - на одну строку) пишуться в кавычках, длинные в двойных кавычках. К ним также можеть быть добавлен идентификатор языка или типа, например:

"chat"
"""a string"""
"""a string
with newlines
end"""
"chat"@en
"chat"@fr
"foo"^^<http://example.org/my/datatype>
"""10"""^^xsd:decimal

Пустые узлы обозначаются _:nodeID т.е. относительно текущего @base URI:

_:me
_:a1234

 Символ запятая используется для повторения элементов subject и predicate в следующем триплете при необходимости:

 

:a :b :c ,
        :d .
# the last triple is :a :b :d .

Символ точка-с-запятой ";" используется для повторения элемента subject в следующих триплетах:

# this is not a complete turtle document
:a :b :c ;
  :d :e .
# the last triple is :a :d :e .

Элементом триплета может быть также коллекция - набор вышеописанных элементом, заключенных в круглые скобки и разделенных пробелами:

@prefix : <http://example.org/stuff/1.0/> .
:a :b ( "apple" "banana" ) .
или в длинной форме:
@prefix : <http://example.org/stuff/1.0/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
:a :b
  [ rdf:first "apple";
    rdf:rest [ rdf:first "banana";
               rdf:rest rdf:nil ]
  ] .

 Грамматика языка TURTLE в форме Бэкуса-Наура:

[1]	turtleDoc	::=	statement*
[2]	statement	::=	directive '.' | triples '.' | ws+
[3]	directive	::=	prefixID | base
[4]	prefixID	::=	'@prefix' ws+ prefixName? ':' uriref
[5]	base	::=	'@base' ws+ uriref
[6]	triples	::=	subject predicateObjectList
[7]	predicateObjectList	::=	verb objectList ( ';' verb objectList )* ( ';')?
[8]	objectList	::=	object ( ',' object)*
[9]	verb	::=	predicate | 'a'
[10]	comment	::=	'#' ( [^#xA#xD] )*
[11]	subject	::=	resource | blank
[12]	predicate	::=	resource
[13]	object	::=	resource | blank | literal
[14]	literal	::=	quotedString ( '@' language )? | datatypeString | integer | double | decimal | boolean
[15]	datatypeString	::=	quotedString '^^' resource
[16]	integer	::=	('-' | '+') ? [0-9]+
[17]	double	::=	('-' | '+') ? ( [0-9]+ '.' [0-9]* exponent | '.' ([0-9])+ exponent | ([0-9])+ exponent )
[18]	decimal	::=	('-' | '+')? ( [0-9]+ '.' [0-9]* | '.' ([0-9])+ | ([0-9])+ )
[19]	exponent	::=	[eE] ('-' | '+')? [0-9]+
[20]	boolean	::=	'true' | 'false'
[21]	blank	::=	nodeID | '[]' | '[' predicateObjectList ']' | collection
[22]	itemList	::=	object+
[23]	collection	::=	'(' itemList? ')'
[24]	ws	::=	#x9 | #xA | #xD | #x20 | comment 
[25]	resource	::=	uriref | qname
[26]	nodeID	::=	'_:' name
[27]	qname	::=	prefixName? ':' name?
[28]	uriref	::=	'<' relativeURI '>' 
[29]	language	::=	[a-z]+ ('-' [a-z0-9]+ )* 
[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]
[31]	nameChar	::=	nameStartChar | '-' | [0-9] | #x00B7 | [#x0300-#x036F] | [#x203F-#x2040]
[32]	name	::=	nameStartChar nameChar*
[33]	prefixName	::=	( nameStartChar - '_' ) nameChar*
[34]	relativeURI	::=	ucharacter*
[35]	quotedString	::=	string | longString
[36]	string	::=	#x22 scharacter* #x22
[37]	longString	::=	#x22 #x22 #x22 lcharacter* #x22 #x22 #x22
[38]	character	::=	'\u' hex hex hex hex | '\U' hex hex hex hex hex hex hex hex |'\\' | [#x20-#x5B] | [#x5D-#x10FFFF] 
[39]	echaracter	::=	character | '\t' | '\n' | '\r' 
[40]	hex	::=	[#x30-#x39] | [#x41-#x46]
[41]	ucharacter	::=	( character - #x3E ) | '\>' 
[42]	scharacter	::=	( echaracter - #x22 ) | '\"' 
[43]	lcharacter	::=	echaracter | '\"' | #x9 | #xA | #xD

 


 Представленные материалы - скращенная версия Turtle - Terse RDF Triple Language

Последнее обновление ( 16.07.2009 )
 
След. >
crider.rork.ru © 2018