Notation N3
Resource Description Framework (RDF, «среда описания ресурса») — это разработанная консорциумом Всемирной паутины модель для представления данных, в особенности — метаданных. RDF представляет утверждения о ресурсах в виде, пригодном для машинной обработки. RDF является частью концепции семантической паутины.
Ресурсом в RDF может быть любая сущность — как информационная (например, вебсайт или изображение), так и неинформационная (например, человек, город или некое абстрактное понятие). Утверждение, высказываемое о ресурсе, имеет вид «субъект — предикат — объект» и называется триплетом. Утверждение «небо голубого цвета» в RDFтерминологии можно представить следующим образом: субъект — «небо», предикат — «имеет цвет», объект — «голубой». Множество RDF-утверждений образует ориентированный граф, в котором вершинами являются субъекты и объекты, а рёбра отображают отношения.
Нотация 3— широко распространённый краткий способ записи моделей RDF. Разработан с целью быть понятным человеку: N3 намного компактнее и удобнее для чтения, чем XML-запись RDF.
RDF-модель, записанная в стандартном XML-виде (RDF/XML):
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"> <rdf:Description rdf:about="http://en.wikipedia.org/wiki/Tony_Benn"> <dc:title>Tony Benn</dc:title> <dc:publisher>Wikipedia</dc:publisher> </rdf:Description> </rdf:RDF> |
В N3 её можно записать так:
@prefix dc: <http://purl.org/dc/elements/1.1/>.
<http://en.wikipedia.org/wiki/Tony_Benn> dc:title "Tony Benn"; dc:publisher "Wikipedia" . |
Синтаксис
Нотация 3(N3) – это упрощённый способ записи моделей RDF по сравнению с XML. Запись триплета RDF (субъект-глагол-объект) с помощью N3 выглядит следующим образом:
Ниже следуют основные правила составления и чтения выражений RDF с помощью нотации 3.
Каждый семантический элемент данного выражения представляется с помощью унифицированного идентификатора ресурса (URI), например, для страницы сообщества Всемирной паутины верно следующее утверждение:
Только для объекта в триплете возможно символьное указание объекта в явном виде, например, «26»:
Если при указании URI в триплете RDF пропущены все компоненты, кроме фрагмента (компонент URI после октоторпа), то идентификация вторичного ресурса производится относительно первичного (определяем субъект, глагол или объект в текущем документе). Идентификаторы ресурсов приобретут следующий вид:
Несмотря на непривычное образование предложения, смысл данного выражения несложно понять и без знаний в области описания выражений RDF.
Если при указании субъекта утверждения оставлено пустое место, то субъектом является текущий документ:
Если несколько утверждений относятся к одному субъекту, то допускаются следующие упрощения записи выражений в N3: точкой с запятой отделяется другое свойство того же субъекта, а запятой отделяется другой объект для того же субъекта и свойства:
В некоторых случаях целесообразно обращение к чему-либо не через конкретное указания, например, названия, а косвенным путём.
Что может быть записано с использованием N3 следующим образом:
По сути такая запись описывает движение по графу, где каждой точкой обозначается переход от чего-то к его свойству. Возможно движение в обратную сторону с помощью символа “^”, например:
:zipcode^:address - адресс, содержащий почтовый индекс.
При необходимости, можно создать новые словари с новыми классами и свойствами, которые объявляются с помощью присвоения соответствующего типа субъекту выражения. Тип определён в словаре rdf, полный URI для типа: https://www.w3.org/1999/02/22-rdf-syntax-ns#type. Однако, в виду того, что все выражения в словарях по своей сути – объявления того, что тот или иной субъект относится к определённому типу, было введено упрощение и элемент выражения <https://www.w3.org/1999/02/22-rdf-syntax-ns#type> можно заменить одной буквой – “a”, например, следующее выражение:
Можно заменить:
Классы описываются тем, что в них входит, причём объект может быть в нескольких классах, иерархических отношений между классами нет. Если между классами необходимо определить отношение, то это можно сделать с помощью соответствующих свойств, например:
Собственно, свойства в RDF и устанавливают отношения, например, если мы хотим сказать, что у Джейн есть сестра Анна, то запишем это утверждение с помощью выражения RDF в нотации следующим образом:
В данном случае :sister – свойство, что можно записать:
Упрощения
В Нотации 3 существует достаточно много упрощений, делающих работу с RDF намного проще и быстре, мы приводим основные.
@prefix: <#>. | :John - субъект определен в текущем документе |
a/ @a | Rdf:type |
[] | указываем, что существует объект с заданными свойствами без возможности ссылаться на него |
= | эквивалентность (owl:equivalentTo) |
=> | Log:implies |
объект.свойство | переход к свойству |
(элемент1 элемент2) | список |
_:variable | log:forSome |
?variable | log:forAll |
Если две определённых сущности эквивалентны, то для отображения такого отношения в RDF используется “=”, например:
То есть созданный в текущем документе тип полностью совпадает с rfd:Property.
Логические свойства и встроенные функции
Ниже описано пространство имён log:
- log:includes
Если формула G n3 - влечет другую формулу F, это выражается в логике N3 как:
Из F и F log: включает G логически следует G
- log:notIncludes
Представим формулы F и G: F log: notIncludes G - тот случай, когда G n3 - влечет F не выполняется.