RDF = Resource Description Framework

info editovat

úvod editovat

  • Datový model reality se popisuje triplety ve tvaru subjekt-predikát-objekt:
    • subjekt zde představuje daný datový zdroj (URI)
    • predikát představuje jeho vlastnost či aspekt a vyjadřuje tak vztah mezi subjektem a objektem (někdy se mu říká role)
    • objekt má nějakou hodnotu a často bývá odkazem na jiný subjekt (URI) – tím pádem vznikají zřetězení. Může to být ale i literál – tj. např. jen řetězec znaků, číslo atd.

příklad rodokmenu editovat

Tak je možné popisovat například rodinné vztahy:

  • subjekty (a tím pádem i objekty v tripletech) budou rodinní příslušníci
  • predikáty budou vyjadřovat jejich rodinné vztahy, např:
    • … má otce …
    • … má matku …
    • … má syna …
    • … má bratra …
    • atd.
  • Samozřejmě to může fungovat i naopak a uvažovat predikáty:
    • … je otcem …
    • … je matkou …
    • … je synem …
    • … je bratrem …
    • atd.
  • V obou případech ty predikáty vyjadřují vztah mezi subjektem a objektem v každém tripletu

Jako příklad rodiny můžeme uvažovat takovýto set subjektů s přiřazenými predikáty:

  • Petr - má otce - Stanislava
  • Petr - má matku - Věru
  • Petr - má manželku - Alenu
  • Petr - má syna - Dalibora
  • Petr - má syna - Vítka
  • Petr - má syna - Slávka
  • Petr - má syna - Matěje
  • Stanislav - má otce - Františka
  • Stanislav - má matku - Růženu
  • Stanislav - má syna - Petra
  • atd.

V tomto formalismu často užívané anglické slovo has, tj. česky , ovšem nevypovídá nic o tom, jestli dotyčná osoba třeba ještě žije, takže je třeba mu rozumět ve smyslu , měl – prostě jde o vyjádření vztahu otcovství či synovství, vztah rodiče a potomka, takže záleží na implementaci, zda např. budeme rozlišovat otce a matku anebo uvažovat pouze vztahy typu má rodiče, má potomka.

Je zřejmé, že triplety:

  • Petr - má otce - Stanislava
  • Stanislav - má syna - Petra

bychom mohli považovat za redundantní, neboť vyjadřují tu samou skutečnost – vztahy být rodičem a být potomkem v běžném životě obvykle považujeme za reciproké. Z jednoho faktu bychom tak mohli odvodit druhý a naopak a tak oba triplety považovat ekvivalentní. Problém je v tom, že jsme si zatím nikde nedefinovali, že predikát "Y má otce X" je ekvivalentní s predikátem "X má syna Y". Do té doby musíme oba predikáty považovat za na sobě nezávislá fakta.

Můžeme si také představit situaci, kdy predikáty budou znamenat výpovědi dotyčných subjektů, například při nějakým soudním procesu, do kterého bude zapleteno mnoho lidí. Tím pádem predikáty "Y má otce X" a "X má syna Y" mohou representovat např. výpovědi různých účastníků procesu a ty si mohou a nemusí vzájemně odpovídat. Potom takovýto formalismus může sloužit například k odhalování sporů mezi různými výpověďmi.

Avšak i triplety se stejným subjektem jsou v podstatě nezávislé – jeden predikát může vázat k jednomu subjektů více různých objektů:

  • Petr - má syna - Dalibora
  • Petr - má syna - Vítka
  • Petr - má syna - Slávka
  • Petr - má syna - Matěje

To samé ale nemusí automaticky platit o jeho ženě Aleně – podrobnější fakta o jeho rodinném životě jsme dosud neuvedli. Ale zrovna tak můžeme uvažovat výskyt i takových, na první pohled nelogických případů:

  • Petr - má otce - Stanislava
  • Petr - má otce - Jiřího

Pak ovšem datový model implicitně neřeší, jak danou situaci interpretovat – samozřejmě si můžeme představit různé situace, kterým by to mohlo odpovídat:

  • Petrův otec je nejistý
  • Oba objekty se přihlásily k otcovství
  • Chyba v databázi
  • Jeden triplet pochází z úředních dokumentů a druhý z analýzy DNA
  • Petr dostal při dalším manželství rodičů nevlastního otce
  • Stanislav se přejmenoval
  • Petrův otec se jmenuje "Stanislav Jiří"
  • atd.

Můžeme si sami vymyslet množství dalších situací a zamyslet se nad tím, co z toho může být skutečně chybou a jakými dalšími predikáty bychom mohli datový model zpřesnit. Například poslední případ bychom považovali za chybu, protože objekty v tomto modelu nejsou "jména" jakožto řetězce znaků, ale odkazy na jiné subjekty – v tom případě by se neměl ten samý subjekt vyskytovat pod třemi různými jmény jako "Stanislav", "Jiří" a "Stanislav Jiří" – i když právě takové věci se v realitě často stávají.

databáze znalostí editovat

Jednotlivé triplety jsme si psali pod sebe jakoby do seznamu:

  • Petr - má otce - Stanislava
  • Petr - má matku - Věru

Každý takový triplet je pro nás určitým faktem. Jedním faktem je, že Petr má otce Stanislava, a druhým faktem je, že Petr má matku Věru. Povšimneme si, že tato dvě fakta jsou na sobě formálně nezávislá: zrovna tak bychom mohli seznam rozšiřovat o další fakta, jako např:

  • Petr - má na sobě - modrý svetr
  • Petr - má vystudovanou - vysokou školu
  • Petr - má chuť na - pivo
  • Petr - má zlozvyk - kousání nehtů

Tato fakta spolu mohou a nemusí nijak zvlášť souviset, mohou se týkat různých situací a mohou pocházet od různých zdrojů – od Petra samotného, od jeho známých, od úřadů, od zaměstnavatelů, od přátel i nepřátel. Jediné, co mají v tomto případě uvedené triplety společného, je jejich subjekt – nějakým způsobem se týkají Petra.

Na druhé straně, pokud víme, co obnášejí predikáty má matku a má otce, pak bychom mohli z těchto dvou, na první pohled nezávislých faktů, usoudit na jakýsi vztah mezi Stanislavem a Věrou – a v tomto případě by se jednalo dokonce o vztah, který historicky předcházel oběma vztahům má otce a má matku.

Naším cílem proto je takovouto na první pohled nesmyslnou hromadu faktů nějak utřídit a vzájemně pospojovat, aby ve svém celku představovala jakýsi model znalostí, které máme v rámci nějaké problematiky. Výsledkem našeho snažení pak bude tzv. databáze znalostí (angl. Database of knowledge), která nám bude sloužit při řešení konkrétních problémů. Blízkou oblastí jsou tzv. expertní databáze, kam odborníci ukládají poznatky svých oborů – např. lékaři poznatky o příčinách, průběhu, diagnostice, léčení i jednotlivých případech různých nemocí – taková databáze pak může pomáhat při stanovení diagnózy a optimálních postupů v medicínské praxi.

sémantika a ontologie editovat

Celá problematika, jak začínáme tušit, nemusí být zrovna jednoduchá a na první pohled průhledná a těsně souvisí s tím, jaký skutečný význam jednotlivé predikáty reprezentují. Otázka významu je ale ve své podstatě otázkou lingvistickou a filosofickou a navíc krajně ošemetnou – věnují se jí rozsáhlé oblasti, jakými jsou sémantika, sémiologie a ontologie.

Tyto pojmy z původně humanitních oblastí byly přeneseny do oblasti informatiky a to s sebou může přinášet řadu nedorozumění – do jaké míry může nějaký datový model vůbec reprezentovat skutečné znalosti o skutečném světě?

sémantický web či wiki editovat

Jednou z možností, kde je RDF model implementován, je tzv. sémantický web, případně i sémantická wiki. Např. sémantické extense MediaWiki umožňují vybudovat sémantickou wiki nad softwarem MediaWiki, na kterém běží naše wikiverzita. Jako vhodnou ilustraci problematiky RDF (pokračování našeho příkladu s rodokmenem na praktické ukázce) doporučuji odskok na: Sémantické extense MediaWiki/Tutoriál. Až vás to přestane bavit, můžete se vrátit zpět sem k problematice RDF.

skutečné rodokmeny editovat

Uvedený příklad se stal základem pro budování skutečného sémantického webu, který by mohl uchovávat životopisy a rodinná data uživatelů, kteří je tam budou sami vkládat:

Nyní můžeme nabýt pocitu, že mapování reality a vytváření znalostních databází je dál už jenom samá legrace. Ve skutečnosti ale na nás číhá ještě řada problémů. Zkusme si je nastínit ještě dříve, než se rozhodneme vkládat skutečná data.

ochrana osobních aj. dat editovat

názvy predikátů editovat

datové formáty editovat

RDF je abstraktním modelem a tak existuje množství datových formátů, které tento model implementují, např:

prefixy editovat

prefix namespace URI poznámka
rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns# RDF zdroje
rdfs: http://www.w3.org/2000/01/rdf-schema# RDFS zdroje
owl: http://www.w3.org/2002/07/owl# OWL zdroje
xsd: http://www.w3.org/2001/XMLSchema# datové typy
ex: http://example.org/schemas/vehicles# příklady W3C
exterms: http://example.org/terms/
exthings: http://example.org/things/


RDFS = RDF Schema editovat

Definuje třídy, umožňuje vytvářet taxonomie a takové věci.

RDF editory editovat

Další věci editovat

už uvádíme na samostatných stránkách:

Související články editovat