Описание, осмысление, связь с математической логикой и ЕЯ.
Сначала цитаты:
году в 2005: "RDF--the Resource Description Framework--is a universal format for data on the Web."
в 2010: "RDF—the Resource Description Framework—is a standard model for data interchange on the Web." (http://www.w3.org/2001/sw/SW-FAQ#TechieQuestions).
важно что от формата RDF продвинулся к модели (данных).
И основные ссылки:
http://en.wikipedia.org/wiki/Resource_Description_Framework
Очень интересный документ: P. Hayes. RDF Semantics, February 10 2004. http://www.w3.org/TR/rdf-mt/
где в том числе описано логическое следование в RDF[S].
Validation Service: http://www.w3.org/RDF/Validator/
(иделогика) RDF использует частично помеченные орграфы для "описания ресурсов". Ресурс предполагает а) материальные объекты, б) материальные процессы (тоже мне ресурс!) в) а что ещё надо выяснять, но в принципе - сущие, коим можно присвоить URI.
РВ-множество это множество строк заданное регулярным выражением (РВ).
строение RDF-орграфа
RDF-орграф есть частично помеченный орграф, что означает что на узлах и стрелках задана функция label в String.
- узлы делятся на два вида:
-- "ресурсный"
-- литеральный
Ресурсный узел может быть не помечен (blank node), а если он помечен, то URI'ем. И это единственная частичность функции label.
Литеральный узел помечен строкой специального вида - типизированной величиной.
Стрелка обязательно помечена URI'ем.
Требования:
- все помеченные узлы должны иметь разные метки.
- из литеральных узлов нет исходящих стрелок.
- нет изолированных узлов.
()
Замечание о типизации узлов. если мы различаем строки URI и типизированного значения, то узел ресурсный если он помечен URI или не помечен, и литеральный если он помечен типизированным значением.
Замечание. RDF-орграф не должен быть связным.
Замечание. У атрибутированного орграфа функций отображающих узлы/стрелки в РВ-множества несколько с произвольными, обычно "говорящими" названиями, а РВ-множества обычно включают числа.
Чтобы превратить граф в высказывания надо каждому непомеченному узлу приписать уникальный идентификатор (по сути - идентификатор переменной (Var)).
Каждая стрелка задаёт предложение (высказывание) имеющее вид в зависимости от свойств начального (b) и конечного (e) узлов:
URI-b URI-a URI-e.
или
URI-b URI-a Literal.
или
Var-b URI-a Literal.
или
Var-b URI-a URI-e.
При этом подразумевается что:
- URI узла идентифицирует объект "о котором сказывается",
- URI стрелки идентифицирует бинарный предикат.
- каждая переменная связана квантором существования на всей совокупность высказываний.
Замечание: остроумное применение графа состоит в том, что непомеченный узел очень органично представляет неизвестный (не идентифицированный!) объект. Для которого в тексте приходится вводить уникальную переменную.
Подобная техника (граф вместо переменных) была использована Н.Бурбаки для высказываний первого порядка и называется "формативная конструкция" [1] стр.35.
В RDF простейшим языком записи высказываний является N-Triples см. http://www.w3.org/TR/rdf-testcases/#ntriples, где приведен, в том числе и EBNF-синтаксис.
Важность N-Triples в том, что:
- несмотря на простоту в него транслируются остальные языки Semantic Web, в том числе OWL;
- тесты для RDF нормативно записаны на N-Triples.
- он используется в RDF Primer (http://www.w3.org/TR/rdf-primer/).
Замечание: тесты для OWL (http://www.w3.org/TR/owl-test/) написаны на RDF/XML и N3 (см. дальше).
Вот пример текста N-Triples документа:
<http://www.w3.org/2001/08/rdf-test/> <http://purl.org/dc/elements/1.1/creator> "Dave Beckett".
<http://www.w3.org/2001/08/rdf-test/> <http://purl.org/dc/elements/1.1/creator> "Jan Grant".
<http://www.w3.org/2001/08/rdf-test/> <http://purl.org/dc/elements/1.1/publisher> _:a.
_:a <http://purl.org/dc/elements/1.1/title> "World Wide Web Consortium".
_:a <http://purl.org/dc/elements/1.1/source> <http://www.w3.org/>.
В угловых скобках конструкция называющаяся absoluteURI - некоторый специальный вид глобальных ("всемирных") идентификаторов. В то же время "a" в конструкции "_:a" называется name и является, по сути, идентификатором локальной переменной внутри данного документа.
В приведенном тексте пять высказываний, вида субъект предикат объект точка.
В том же разделе об N-Triples указывается, что язык N-Triples является подмножеством языка N3 (http://www.w3.org/DesignIssues/Notation3), на котором тот же пример может быть записан еще более наглядно:
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix rdftc: <http://www.w3.org/2001/08/rdf-test/> .
rdftc: dc:creator "Dave Beckett"@en .
rdftc: dc:creator "Jan Grant"@en .
rdftc: dc:publisher _:a .
_:a dc:title "World Wide Web Consortium"@en .
_:a dc:source <http://www.w3.org/> .
При этом мы использовали только одну из возможностей N3 - объявление префиксов.
Значением префикса является строка в угловых скобках. Можно сказать, что эти скобки используются для сериализации значения префикса.
Подстановка значения префикса: обнаружив префикс в тексте и выделив часть после ":" надо эту часть конкатенировать со значением префикса (сначала префикс потом "часть") и то что получится сериализовать (угловыми скобками) в текст на место конструкции с префиксом, которая в N3 называется qname.
На вольном русском эти 5 предложений выглядят так:
Dave Beckett автор http://www.w3.org/2001/08/rdf-test/.
Jan Grant автор http://www.w3.org/2001/08/rdf-test/.
Некая организация является издателем http://www.w3.org/2001/08/rdf-test/.
Эта организация называется World Wide Web Consortium.
http://www.w3.org/ это сайт этой организации.
ИПЛ это исчисление предикатов с литералами.
Глобальные идентификаторы (см. грамматику N-Triples) применяются для идентификации: объектов предметной области, терминов некоторого (формального логического) языка и типов данных. Локальные идентификаторы обозначают свободные переменные "пробегающие" предметную область. Термины формального логического языка состоят из констант, унарных предикатов (понятий) и бинарных предикатов (ролей).
В формальной логике формула аналог пяти высказываний из примера выглядит так:
creator(RDFTC,"Dave Beckett") and creator(RDFTC,"Jan Grant") and
Ea (publisher(RDFTC,a) and title(a,"World Wide Web Consortium") and source(a,WWWW3ORG))
Здесь:
E - квантор существования; a - переменная; creator, publisher, title, source - бинарные предикаты; RDFTC, WWWW3ORG - константы.
Конечно, с точки зрения RDF надо добавлять, что предикаты и константы глобальны. Формально пока единственное новшество - использование литералов.
Замечание: использование инфиксной формы записи для бинарных операторов (в том числе предикатов) считается классическим и естественным в математике. При такой записи формула будет иметь вид:
(RDFTC creator "Dave Beckett") and (RDFTC creator "Jan Grant") and
Ea ((RDFTC publisher a) and (a title "World Wide Web Consortium") and (a source WWWW3ORG))
Термины формального языка самого RDF перечислены, например в http://www.w3.org/TR/2004/REC-rdf-syntax-grammar-20040210/#section-Namespace.
А именно, не указывая общую начальную часть всех глобальных идентификаторов "словаря" RDF, которая равна http://www.w3.org/1999/02/22-rdf-syntax-ns# получим:
Унарные предикаты (Понятия)
Seq Bag Alt Statement Property List
Бинарные предикаты (Роли)
subject predicate object type value first rest _n
where n is a decimal integer greater than zero with no leading zeros.
Константы (Предметы)
nil
Типы данных
XMLLiteral
То, что XMLLiteral - тип данных описано, например в RDF Primer.
Допустимыми или известными считаются также типы данных XML схемы (XML Schema Part 2: Datatypes) их обычный префикс - xsd:
@prefix xsd: <http://www.w3.org/2001/XMLSchema#>
Смысл терминов rdf словаря, еще раз описан в http://www.w3.org/TR/rdf-schema/, где также описаны предикаты rdfs словаря.
Там же (http://www.w3.org/TR/rdf-schema/#ch_summary) приведены ВСЕ термины RDF словаря, который разбит на два: собственно rdf, приведенный выше, и rdfs (см. ссылку).
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
Унарные предикаты (Понятия)
Resource Literal Class Datatype Container ContainerMembershipProperty
Бинарные предикаты (Роли)
subClassOf subPropertyOf domain range label comment member seeAlso isDefinedBy
Далее везде:
@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
"Первый элемент некоторого списка равен 2"
будет на N-Triples с префиксами выглядеть так:
_:c rdf:type rdf:List .
_:c rdf:first "2"^^xsd:integer .
"rdf:type это бинарный предикат."
rdf:type rdf:type rdf:Property .
Замечание: в классической нотации математической логики то же самое высказывание выглядело бы более "логично": rdf:Property(rdf:type). И означало декларацию того, что rdf:type - бинарный предикат.
[1] Н. Бурбаки, Теория множеств, Мир, Москва, 1965