9.3 KiB
LD2
Linked Data 2 (LD2) - это Linked Data с дополнениями \ ограничениями \ особенностями. Цель такая же - формализм знаний.
Введение
Классический web (классический пример wikipedia) построен на гиперссылках (hyperlink).
Hyperlink в общем случае выполняет переход по указанному адресу, который может быть файлом, UNC-адресом или URL-адресом.
Элемент (обычно подсвечиваемое слово \ фраза) имеет свойство hyperlink со значением - адресом перехода:
:элемент :имеетHyperlink :значениеHyperlink(URL) .
Web 3.0 из всемирной паутины делает семантическую паутину Semantic Web на базе Linked Data.
Triple RDF example
Триплет - как атом знания - обычно вводится так: :Миша :Ест :Рыбу .
Всегда на первом месте Субъект - в данном триплете - Миша, далее к нему привязанный (всегда к субъекту) Предикат (отношение) - Ест и Объект Рыбу.
Как в простом предложении: Подлежащее - Сказуемое - Дополнение.
См. позиционное правило SVO subject–verb–object.
Понятие Объект - общее, а в RDF оно узкое, поэтому будем в понимании RDF Объект называть "Объектт", если рядом нет уточнения с "-" или в скобках.
Вместо объекта \ дополнения может быть не объект (что-то с id, именованное, классифицированное и т.п.), а Литерал - безымянная константа (nameless constant).
Еще пример на sky.pro/wiki/javascript
flowchart LR
obj1_Name[/obj1 Имя = Миша: Подлежащее-субъект/]--> link12{{связь типа Ест: глагол_предикат}} --> obj2_Name[/obj2 Имя = Рыбу: Дополнение-объект/]
Это просто и понятно. Однако это иллюзия, точнее сильное упрощение. В реальности "под катопом" - самое главное, не попавшее в пример, и "триплет становится квинтет":
flowchart TB
subgraph baseTriple[triple = Миша Ест Рыбу]
direction LR
obj1_Id --> link12{{связь типа Ест}} --> obj2_Id
end
obj1_Name[/obj1 Имя = Миша/] --> obj1_Id[/obj1 Id = 123/]
obj1_Other[/obj1 = ALL properties: ФИО, ИНН/] --> obj1_Id
obj2_Id[/obj2 Id = 345/] --> obj2_Name[/obj2 Имя = Рыбу/]
obj2_Id --> obj2_Other[/obj2 = ALL properties: вид, размер/]
В данном случае мы хотим сказать, что конкретный Миша (экземпляр) ест конкретную рыбу (экземпляр).
Экземпляр - это "Собственное существительное" - отдельный единичный предмет (мир вещей).
Образ - это "Нарицательное существительное" - обобщённые названия однородных предметов и явлений (мир идей). С ними похожая ситуация, но немного иная.
В отличие от "тривиальной связи" hyperlink (Web, mediaWiki и т.п.) в семантическом триплете (web 3.0 \ semantic Web, semantic mediaWiki и т.п.) имеем именнованные два объекта связи и типизированную связь "связан связью такого-то типа".
1 Привило идентификации Предиката
Проблема идентификации Предиката
В RDF (Resource Description Framework) предикат не может быть напрямую связан с rdf:type, потому что предикаты сами по себе не являются ресурсами в классическом понимании RDF-модели. Предикаты определяют тип связи между субъектом и объектом, а не являются самостоятельными сущностями, к которым можно применять rdf:type в рамках базовой модели RDF. Предикаты не могут иметь id и т.п.
Что делать? Можно использовать обходные пути, например, :Link a rdf:Property . или типы отношений из RDF Schema или OWL к предикату, которые определяют его свойства. Есть Реификация и RDF Star. О
Правило
днако в LD2 будем использовать правило "два объекта соединяются только одним предикатом одного типа" (в каждую сторону) и id предиката вычисляется автоматически:
id1-predicateName-id2
Таким образом предикат становится объектом, к которому можно применять любые другие отношения, добавлять свойства и методы (как к object).
Таким образом, без явного указания к :id1 :predicateName :id2 .
:id1-predicateName-id2 rdf:type :Link .
:id1-predicateName-id2 :isSource :id1 .
:id1-predicateName-id2 :isTarget :id2 .
получит те же знания.
Что делать, если два объекта имеют более чем две связи одного типа? Например, две системы взаимодействуют по протоколу jdbc и DirectLink?
В этом случае объект - связь :id1-predicateName-id2 разбивается на компоненты и каждому компоненту дается соответсвующее свойство.
:id1-predicateName-id2 - это группа компонент, в которой выделяется первый компонент со свойством protocol = jdbc и второй со свойством protocol = DirectLink.
Задание id дочерним компонентам также должно быть задано правилом, например, через разделитель ".".
also
- https://github.com/bpmbpm/doc/blob/main/METAMODEL/object.md
- https://github.com/bpmbpm/doc/blob/main/METAMODEL/PROCESS/integration.md
- https://github.com/bpmbpm/doc/tree/main/LD/RDF_star
- https://github.com/bpmbpm/doc/tree/main/LD/RDF_EAV
- подлежащее–глагол–дополнение (SVO) https://en.wikipedia.org/wiki/Subject%E2%80%93verb%E2%80%93object_word_order
- rdf:type vs rdfs:Class vs owl:Class https://trinidata.ru/tech_tech.htm ; https://trinidata.ru/files/SemanticIntro.pdf
- KG Course 2021 Лекция 3 ; Лекция 4
- https://intuit.ru/studies/courses/1996/215/lecture/5544
- https://github.com/bpmbpm/doc/blob/main/LD2/RDF/base.md