Embedded RDF

Jednym z najpoważniejszych problemów z jakimi się spotykam w różnych dyskusjach na temat Sieci Semantycznej jest obawa, że wszystkie aktualne dokumenty (X)HTML staną się nagle zupełnie zbędne jako nieczytelne dla agentów. Takie podejście oczywiście maksymalnie hamuje rozwój — ludzie są ze swej natury leniwi niechętni do zmian. A jeżeli muszą napisać coś od nowa (np. oprócz strony HTML dodatkowo jeszcze RDF/XML) tylko dlatego, że jakiś tam agent sobie nie radzi z informacjami w ich dokumentach to już w ogóle tragedia i zniechęcenie.[1] Dlatego bardzo ważne są wszelkie próby minimalizujące konieczność wykonywania podwójnej pracy jak publikacja dla człowieka i osobna publikacja dla agenta SW.

Ponieważ długo jeszcze podstawowym odbiorcą WWW będzie człowiek, więc mało rozsądne wydaje mi się założenie, że coś innego niż dokument (X)HTML (np. RDF) stanie się nagle powszechnym formatem źródłowym informacji publikowanych w Sieci. A skoro mamy jeszcze długo produkować miliony dokumentów (X)HTML to być może rozsądne będzie tworzenie ich w taki sposób, aby wychodząc właśnie od nich uzyskiwać dane czytelne dla maszyny. Najlepiej by „dane w czystej postaci” były możliwe do wyciągnięcia z „ludzkiej wersji strony” za pomocą automatycznych mechanizmów typu GRDDL czy generalnie mówiąc XSLT.

RDF prawie przezroczysty

Jednym ze sposobów na umieszczanie w dokumentach (X)HTML danych RDF jest Embedded RDF. Oczywiście nie jest to pierwsza ani jedyna próba podejścia do tematu. Np. RDF in XHTML Taskforce opracowuje specyfikację RDF/A, ale po pierwsze sprawa idzie dosyć powoli, a po drugie RDF/A wymaga „prawdziwego” XML-a jako dokumentu hosta. Umożliwia to co prawda umieszczanie metadanych w dowolnych plikach XML (np. SVG) ale niestety wyklucza HTML-a. Natomiast rozwiązanie Embedded RDF, mimo pewnych ograniczeń działa już, tu i teraz.

Na pierwszy rzut oka widać, że Embedded RDF jest podejściem podobnym do idei microformats. Trik polega na takim wykorzystaniu tagów i atrybutów (X)HTML, aby zawrzeć w dokumencie informacje, które można następnie z niego wyciągnąć za pomocą XSLT do postaci RDF.

W nagłówku strony wymagany jest zapis profile="http://purl.org/NET/erdf/profile", a wszystkie wykorzystywane przestrzenie nazw muszą być wskazane poprzez tagi <link rel="schema.prefix" href="uri" />. Dopiero na tak przygotowanej stronie można umieszczać informacje RDF (po szczegóły odsyłam do strony wiki). Na przykład fragment strony:

<p id="me">
Witam. Jestem <span class="foaf-name">Janek</span>.
<a rel="foaf-homepage" href="http://example.org/janek" title="Janek wita">Ta strona</a>
jest niestety kiepska. Mój <span id="franek" class="foaf-knows">kolega,
<span class="foaf-name">Franek</span>, ma dużo lepszą
<a rel="foaf-homepage" href="http://example.org/franek" title="Franek online">stronę</a></span>.
Zapraszam.
</p>

ujawnia takie trójki RDF:

<#me> foaf:name "Janek" .
<#me> foaf:homepage <http://example.org/janek> .
<http://example.org/janek> rdfs:label "Janek wita" .
<#me> foaf:knows <#franek> .
<#franek> foaf:name "Franek" .
<#franek> foaf:homepage <http://example.org/franek> .
<http://example.org/franek> rdfs:label "Franek online" .

Do wykonania tej transformacji można wykorzystać Embedded RDF Extractor lub wykonać ją na własną rękę za pomocą dostępnego pliku XSLT. Wygenerowany RDF/XML zawiera taki fragment:

<rdf:Description rdf:about="http://example.org/janek/index.html#me">
<foaf:name>Janek</foaf:name>
<foaf:knows rdf:resource="http://example.org/janek/index.html#franek"/>
<foaf:homepage rdf:resource="http://example.org/janek" rdfs:label="Janek wita"/>
</rdf:Description>
<rdf:Description rdf:about="http://example.org/janek/index.html#franek">
<foaf:name>Franek</foaf:name>
<foaf:homepage rdf:resource="http://example.org/franek" rdfs:label="Franek online"/>
</rdf:Description>

Czyli oprócz głupiego kawałka tekstu i linku do innej strony mamy teraz informację, że istnieje ktoś (albo coś), kto posiada nazwę "Janek", stronę domową o adresie http://example.org/janek, opisaną jako "Janek wita" i ten ktoś zna kogoś (lub coś) innego, kto z kolei nazywa się "Franek" i ma stronę domową "Franek online" pod adresem http://example.org/franek. Nie jest to co prawda ogrom informacji, ale bez RDF pozostałby tylko tekst, mało wartościowy z punktu widzenia maszyny.

przyszłość czy pomyłka?

Abstrahując od czytelności takiego rozwiązania i od tego jak Embedded RDF ma się do semantyki jakiejkolwiek, trzeba uczciwie stwierdzić, że widać tu spory potencjał. Aktualnie wciąż jeszcze istnieje silny nacisk na (auto)dyscyplinowanie twórców stron internetowych i wykorzystywanie tego, co określamy jako „semantyczne znaczniki”. Przy pewnym zaangażowaniu dobrej woli można postrzegać Embedded RDF jako rozszerzone, bardziej zaawansowane „nadawania znaczenia” poszczególnym elementom dokumentu (X)HTML...

[1] Dokładnie takie same reakcje spotykam jeszcze czasami w związku z dostępnością stron np. dla osób niewidomych. „Że co? Mam coś zmieniać w swoich stronach tylko po to, żeby jakiś ślepiec mógł to czytać? Niedoczekanie. Nie mam czasu dla frajera. Niech sobie idzie gdzie indziej....” :-(

Komentarze

Brak komentarzy do tego wpisu.

 

Uwaga: Ze względu na bardzo intensywną działalność spambotów komentowanie zostało wyłączone po 60 dniach od opublikowania wpisu. Jeżeli faktycznie chcesz jeszcze skomentować skorzystaj ze strony kontaktowej.