Перейти к содержанию

Статья для предыдущей поддерживаемой версии ПО — 4.7!

Текущая рекомендованная версия — Comindware Platform 5.0. См. документацию к версии 5.0.

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), например, для страницы сообщества Всемирной паутины верно следующее утверждение:

<https://www.w3.org/> <http://purl.org/dc/elements/1.1./title> ”World Wide Web Consortium (W3C)” 

Только для объекта в триплете возможно символьное указание объекта в явном виде, например, «26»:

<#Sam> <#age> “26”. 

Если при указании URI в триплете RDF пропущены все компоненты, кроме фрагмента (компонент URI после октоторпа), то идентификация вторичного ресурса производится относительно первичного (определяем субъект, глагол или объект в текущем документе). Идентификаторы ресурсов приобретут следующий вид:

<#John> <#son> <#Martha>.  

Несмотря на непривычное образование предложения, смысл данного выражения несложно понять и без знаний в области описания выражений RDF.

Если при указании субъекта утверждения оставлено пустое место, то субъектом является текущий документ:

< > <#title> “new document”. 

Если несколько утверждений относятся к одному субъекту, то допускаются следующие упрощения записи выражений в N3: точкой с запятой отделяется другое свойство того же субъекта, а запятой отделяется другой объект для того же субъекта и свойства:

<#Steve> <#son> “Martha”, “Jack”;   
                          <#age> “27”. 

В некоторых случаях целесообразно обращение к чему-либо не через конкретное указания, например, названия, а косвенным путём.

Почтовый индекс адреса дома ассистента матери Александра. 

Что может быть записано с использованием N3 следующим образом: 

:Alexandr.:mother 
                           .:assistant 
                                          .:home 
                                                    .:address 
                                                                  .:zipcode

По сути такая запись описывает движение по графу, где каждой точкой обозначается переход от чего-то к его свойству. Возможно движение в обратную сторону с помощью символа “^”, например:

: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:Statement rdf:type rdfs:Class.

Можно заменить: 

rdf:Statement a rdfs:Class. 

Классы описываются тем, что в них входит, причём объект может быть в нескольких классах, иерархических отношений между классами нет. Если между классами необходимо определить отношение, то это можно сделать с помощью соответствующих свойств, например:

:Man a rdfs:Class; rdfs:subClassOf :Person.

Собственно, свойства в RDF и устанавливают отношения, например, если мы хотим сказать, что у Джейн есть сестра Анна, то запишем это утверждение с помощью выражения RDF в нотации следующим образом:

:Jane :sister :Ann. 

В данном случае :sister – свойство, что можно записать: 

:sister a rdf:Property.  

 

Упрощения

В Нотации 3 существует достаточно много упрощений, делающих работу с RDF намного проще и быстре, мы приводим основные. 

@prefix: <#>. :John - субъект определен в текущем документе
a/ @a Rdf:type
[] указываем, что существует объект с заданными свойствами без возможности ссылаться на него
= эквивалентность (owl:equivalentTo)
=> Log:implies
объект.свойство переход к свойству
(элемент1 элемент2) список
_:variable log:forSome
?variable log:forAll

Если две определённых сущности эквивалентны, то для отображения такого отношения в RDF используется “=”, например:

:MyProperty = rdf:Property. 

То есть созданный в текущем документе тип полностью совпадает с rfd:Property. 

 

Логические свойства и встроенные функции

Ниже описано пространство имён log:

  • log:includes

Если формула G n3 - влечет другую формулу F, это выражается в логике N3 как: 

F log:includes G.

Из F и F log: включает G логически следует G

  • log:notIncludes

Представим формулы F и G: F log: notIncludes G - тот случай, когда G n3 - влечет F не выполняется.