Vize sémantického webu vypadá dokonale, protože celou dobu počítáme s tím, že metadata na stránkách již existují. Bohužel tomu tak na většině serverů není. Otázka, která teď tedy stojí před námi, zní, jaké máme možnosti při vkládání metadat do stránek? Existují celkem 3 různé varianty: mikroformáty, RDFa a eRDF. Popíšeme si je postupně v následujících odstavcích. [HolyExpo].
Ještě před představením RDFa si krátce popíšeme jejich historickou alternativu - Mikroformáty. Jedná se o konvenci zápisu metainformací do již existujícího (X)HTML kódu. Jde tedy stejně jako u RDFa a eRDF o cestu anotace dat. Konkrétně se provádí pomocí atributu class (definuje třídu v CSS) nebo rel. Jejím prostřednictvím se datům přidává struktura a hlavně význam. S myšlenkou mikroformátů přišel Tantek Çelik - bývalý člen konsorcia W3C. Je třeba podotknout, že mikroformáty nejsou v jakémkoliv rozporu se standardy W3C. Stanovují, jakým způsobem vkládat do webových stránek informace, jako jsou adresa, událost, geografická pozice a mnohé další tak, aby byly srozumitelné nejen pro člověka, ale i pro počítač. Vlastní formát se nijak nedotkne struktury celé webové stránky, ale pouze zápisu oné konkrétní informace.
XFN (XHTML Friends Network) - slouží pro propojování jednotlivých lidí a definování jejich vztahů. Můžeme tak osobu označit za spolupracovníka, přítele, atd. Díky nim se mohou propojovat jednotlivé sociální sítě. Jednoduchým odkazem na něčí soukromou stránku tak můžete zároveň sdělit vyhledávači spoustu cenných informací. <a href="http://neci.blog.cz/" rel="contact met friend">Marcel Březina</a>
hCard - reprezentuje lidi, organizace, firmy a místa – nejčastěji ve smyslu adresy/kontaktních informací. Dá se jednoduše konvertovat do standardu vCard, se kterým umí pracovat spousta aplikací.
hCalendar - záznamy o událostech v kalendáři. Formát hCalendar může být transformován do formátu iCalendar (respektive vCalendar).
hReview - mikroformát vhodný pro zápis recenze. Jeho cílem je umožnit a podporovat sdílení, šíření a publikování recenzí.
rel-license, rel-tag, XOXO, hAtom a další.
Příklad 4.1. Zápis mikroformátu hCard. (Zdroj: [hCardAtaxo])
<div class="vcard"> <div class="fn org">Ataxo s.r.o.</div> <div class="adr"> <div class="street-address">Holečkova 12</div> <span class="locality">Praha 4 - Smíchov</span> <span class="country-name">Czech Republic</span> </div> </div>
U mikroformátů je výhoda v jejich velmi jednoduché implementaci a díky tomu je jejich zavádění úspěšnější (rychlejší) oproti RDFa. Na rozdíl od formátu RDF jsou mikroformáty postaveny na již existujících a odzkoušených technologiích. Vydaly se tedy osvědčenou cestou evoluce, a nikoliv revoluce. Výhodou mikroformátů je také fakt, že W3C zavedla mechanismus GRDDL (Gleaning Resource Descriptions from Dialects of Languages), který umožňuje data popsaná mikroformáty lehce extrahovat do RDF.
Mezi příznivci jednotlivých táborů RDF a mikroformátů už od začátku existují tzv. "svaté války", kde se přesvědčují o kladech a záporech jedné či druhé technologie. Jen pro nastínění zde uvedeme pár argumentů proti mikroformátům. Mikroformáty generují zbytečný kód a parazitují na atributech class. Dalším argumentem je často zmiňovaná (ne)přístupnost, kdy čtečky pro slepé mají s mikroformáty problémy. Dále pak nedostatek nástrojů pro používání mikroformátů, jejich vytváření, atd. Zastánci mikroformátů se samozřejmě brání zuby nehty a tyto argumenty se snaží vyvrátit. Nadbytečný kód jako argument nepřimají s vysvětlením, že mikroformáty můžeme konstruovat za pomocí elementů, které jsou vhodné zároveň v kontextu obsahu, který publikujeme. Naším cílem ale není zde řešit tyto žabomyší války. Bude nám stačit, že víme o obou táborech v komunitě sémantického webu.
Jelikož klasické RDF naráží na svou složitost implementace a "konkurenční" mikroformáty si už získaly svou část fanoušků, bylo potřeba přijít s technologií, která bude snadná pro implementaci, ale zároveň nebude omezená jako mikroformáty.
Vzniklo tak RDFa (Resource Description Framework in attributes), které oproti mikroformátům stojí na základech RDF a je tak možné aplikovat nástroje sémantického webu (např.: odvozování) [SemWebKosek]. RDFa se podobně jako mikroformáty zapisují přímo do XHTML kódu. Základem RDFa je přidání několika nových atributů do XHTML, které jsou pak určeny primárně pro zachycení metadat. Odtud také ono 'a' ve zkratce RDFa (atributy).
Atributy RDFa [RDFaAtributy]:
about - URI adresa, která specifikuje blíže zdroj metadat
rel a rev - specifikuje vztah s jiným zdrojům
href, src a resource - definuje zdroj predikátu
property - nese jméno predikátu
content - určuje hodnotu predikátu (při jejím uvedení se přepíše hodnota elementu)
datatype - definuje datový typ hodnoty
typeof - specifikuje RDF typ subjektu
Příklad 4.2. Ukázka zápisu RDFa. (Zdroj: [EurOpenKosek])
<html xmlns="http://www.w3.org/1999/xhtml xmlns:cal="http://www.w3.org/2002/12/cal/ical#" xmlns:xs="http://www.w3.org/2001/XMLSchema"> ... <p typeof="cal:Vevent"> Sdružení <a property="cal:url" href="http://www.europen.cz/">EurOpen</a> pro vás chystá <span property="cal:summary">XXXIII. konferenci EurOpen.CZ</span>. Bude se konat <span property="cal:dtstart" content="2008-10-05T13:30:00+02:00" datatype="xs:dateTime">5.</span>-<span property="cal:dtend" content="2008-10-08T14:00:00+02:00" datatype="xs:dateTime">8. října 2008</abbr> v hotelu <a property="cal:location" href="http://www.hotel-lesnichata.cz/">Lesní chata v Kořenově</a>. </p> ... </html>
Takto zapsaný kód je pak jednoduché vyexportovat do čistého RDF.
Oproti mikroformátům se u RDFa uvádí několik výhod.
U RDFa se dají využít všechny již existující ontologie. U mikroformátů musí vzniknout nový mikroformát. Musí mít ekvivalentní ontologii, do které se transformuje. I v případě, kdy již ontologie existuje, se stejně musí vytvořit nový mikroformát.
Stačí jeden XSLT transformační styl pro všechny ontologie. U mikroformátů musí pro každý mikroformát existovat zvláštní XSLT styl.
stejně jako mikroformátům, tak i RDFa schází větší podpora prohlížečů - je třeba instalovat rozšíření (Operator, Semantic Radar nebo Fuzz)
přišel později než mikroformáty, které už jsou na mnohých serverech naimplementovány
eRDF (Embeddable RDF) je stejně jako RDFa a mikroformáty konvence pro zápis metadat do dokumentu. S formátem eRDF přišel v roce 2005 Ian Davis a částečně se u jeho vývoje inspiroval mikroformáty. Zjednodušuje anotaci dokumentů, ale s nástupem RDFa se přestal používat a skoro upadl v zapomnění [erdf].
Když pomineme eRDF, u kterého jsme si řekli, že se vývoj zastavil, tak nám zbývají mikroformáty a RDFa. Oba dva slouží pro záznam metainformací do dokumentu a oba pro to používají XHTML atributy, které jsou běžnému uživateli skryté. V čem se liší, je jejich vývoj. Zatímco RDFa pochází z dílny standardů tvořícího konsorcia W3C, tak mikroformáty jsou dílem Tantek Çelika a vývojářů okolo serveru Technorati. Po technické stránce jsme si několik výhod RDFa již uvedli v předchozí kapitole, proto zde jen stručně. RDFa na rozdíl do mikroformátů bude součástí standardu XHTML 2. Na druhou stranu však RDFa nepracuje s HTML4 a XHTML 1.x. Mikroformáty ano. RDFa zavádí nové atributy, zatímco mikroformáty používají ty stávající. Ve srovnání s RDFa nejsou mikroformáty dostatečně flexibilní, nelze je dále rozšiřovat [porovnani] [porovnani2].
Pokud se na tento pomyslný souboj formátů podíváme statistickým nástrojem vyhledávání Google insights, tak na grafu uvidíme, že zatímco mikroformáty si drží od roku 2006 svou popularitu (s mírnou klesající tendencí), tak RDFa od svého zavedení roste a koncem roku 2009 v popularitě svého soupeře dokonce předběhl. S formátem eRDF je to u tohoto typu porovnávání složitější, protože výsledky nám zde ovlivňuje fakt, že eRDF je také zkratkou pro nejednu organizaci. Tuto odchylku by mělo eliminovat omezení kategorie výsledků na "Internet".
Jelikož by důkladné porovnávání těchto formátů vydalo na samostatnou práci, nebudeme se jím už blíže zabývat. Pouze pro doplnění si uvedeme 2 články, které se srovnáním zabývají. Jedním z nich je článek od Benjamina Nowacka, jehož součástí je formulář, který na základě 20 námi zvolených priorit vypočte nejvhodnějšího kandidáta. Další, kdo se porovnáváním těchto formátů věnuje, je Evan Podromou se svým článkem RDFa vs microformats.
Nakonec ještě dodáme, že podle zdroje [RDFaSvatek] by se mikroformáty měly v budoucnu transformovat do RDF. Je to ale jen autorova domněnka, která se nemusí naplnit.
Pro obhájení stanoviska, že vložení metadat na stránky je opravdu jednoduchá záležitost, si to ukážeme na krátkém příkladu.
Uvažujme situaci, kdy chceme na své firemní stránky vložit strojově čitelné informace o kontaktní adrese firmy. Vybereme si proto mikroformát hCard, který je k tomu určený. Umožňuje vložit adresu, fotografii, telefon, email a další kontaktní údaje. Jeho datové položky se ostatně shodují s formátem vCard (standard pro elektronické vizitky).
Následující zdrojový kód nám nastíní, jak jsou informace na webové stránce zapsány nyní. Vidíme, že nenesou žádné sémantické data.
Příklad 4.3. Kód kontaktu bez mikroformátů. (Zdroj: autor)
<div> <ul> <li>Jiří Štencek</li> <li><a href='mailto:info@example.com'>info@example.com</a></li> <li>+420 777 777 777</li> <li>Adresa: <ul> <li>Na Malovce 13/789</li> <li>130 00</li> <li>Praha 3</li> </ul> </li> ... </div>
Na druhém příkladu je úryvek kódu, který již disponuje metadaty a je tak strojově čitelný. Zkontrolovat si to můžeme za pomoci jednoho z nástrojů sémantického webu pro Firefox (např.: Operator). Z prvního pohledu je zřejmé, že nám kód mírně "nabobtnal".
Základem je div
s třídou class="vcard"
, který
definuje oblast kontaktu. Proč vcard, když mikroformát se jmenuje hCard? Je to
právě proto, že formát hCard je 1:1 reprezentací staršího vCard a přejímá
všechny atributy.
V dalším kroku si sémanticky označíme jméno.
Celé jméno obalíme třídou class="n"
. Tato třída nám říká, že
elementy uvnitř obsahují části jména osoby (např. křestní, druhé jméno a
příjmení). Pojďme se tedy podívat, jak to bude vypadat uvnitř třídy n. Pro křestní
jméno existuje vlastnost class="given-name"
a pro
příjmení
class="family-name"
. Pokud bychom chtěli označit i prostřední
(druhé) jméno, použijeme class="additional-name"
.
Označení emailu a telefonu je taktéž velmi jednoduché, stačí do rodičovského
elementu vložit třidu class="email"
(respektive
class="tel"
).
U adresy budeme postupovat podobně jako u
jména. Nejdříve určíme obalovací prvek s třídou class="adr"
, do
nějž potom vložíme informace o ulici class="street-address"
, PSČ
class="postal-code"
a městu
class="locality"
.
Příklad 4.4. Kód kontaktu s implementovanými mikroformáty. (Zdroj: autor)
<div class="vcard"> <ul> <li class="n"> <span class="given-name">Jiří</span> <span class="family-name">Štencek</span> </li> <li><a class="email" href='mailto:info@example.com'>info@example.com</a></li> <li class="tel">+420 777 777 777</li> <li>Adresa: <ul class="adr"> <li class="street-address">Na Malovce 13/789</li> <li class="postal-code">130 00</li> <li class="locality">Praha 3</li> </ul> </li> ... </div>
V našem příkladě jsme samozřejmě neobsáhli všechny možnosti
mikroformátu hCard. Dále bychom mohli vložit informace o datu narození, titulech
před/za jmény, URL adresách, atd [implementaceMikroformatu].
Výsledný kód aplikovaný na webových stránkách si můžeme online prohlédnout na firemní prezentaci C3studia, která sloužila jako podklad k příkladu.
Abychom si neukazovali pouze anotaci kontaktních údajů, uvedeme si k RDFa implementaci příklad s popisem osoby. Jen pro úplnost, pokud bychom chtěli pomocí RDFa popisovat kontaktní údaje, tak použijeme také vCard, ale ne mikroformát, ale ontologii.
Nejdříve zvolíme správný DOCTYPE webové stránky. V tomto případě to bude XHTML+RDFa 1.0.
Příklad 4.5. Doctype XHTML+RDFa. (Zdroj: autor)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
Jakmile máme DOCTYPE uvedený, přejdeme k vlastní anotaci. Pro popis osob byl vytvořen formát FOAF (více o něm v samostatné kapitole). Abychom ho mohli na stránkách používat, musíme jej uvézt v hlavičce webu. Takže na prvním místě vložíme do tagu HTML jmenné prostory pro ontologie. V našem případě to budou tyto:
Příklad 4.6. Kód tagu HTML. (Zdroj: autor)
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" ...
Pak už můžeme přistoupit ke kódu popisující osobu. Budeme používat obalovací
tag div
s atributem typeof="foaf:Person"
, který nám
definuje, že jde o popis osoby. Pro vyznačení jména použijeme
property="foaf:name"
, pro telefon rel="foaf:phone"
a pro e-mail rel="foaf:mbox"
[RDFaPrimer].
Příklad 4.7. Kód popisu osoby. (Zdroj: autor)
<div typeof="foaf:Person"> <h2 property="foaf:name">Jiří Štencek</h2> <table> <tr> <th>Tel.:</th> <td><a rel="foaf:phone" href="+420 777 777 777">+420 777 777 777</a></td> </tr> <tr> <th>E-mail:</th> <td><a rel="foaf:mbox" href="mailto:info@example.com">info@example.com</a></td> </tr> ...
Na tomto jednoduchém příkladě jsme si ukázali, že ani zápis RDFa není nijak složitý. Jediný rozdíl je v zápisu jmenných prostorů a následně používaných prefixů.
I v tomto případě si výsledný kód aplikovaný na webových stránkách můžeme prohlédnout online a to sice na stránkách Foto-modelky.cz, která sloužila jako podklad k příkladu.