SXHMTL

SXHTML - Semantic XHTML

Przeglądałem trochę dokumentów na temat RDF, FOAF i XFN. Wszystkie te skróty oznaczają różne sposoby opisu relacji pomiędzy obiektami i służą przede wszystkim, na razie, opisowi relacji między profilami ludzi w Internecie. RDF jest systemem bardzo ogólnym a przez to dość skomplikowanym. FOAF to właściwie podsystem RDF, służący właśnie opisowi relacji między ludźmi i organizacjami (RDF jest bardziej ogólny). XFN natomiast to bardzo prosty system opisu relacji między ludźmi. Dokładniej XFN pozwala dodać do zwykłych odnośników <a href= atrybut określający relację osoby-właściciela dokumentu z osobą-właścicielem docelowego dokumentu.

Przykładowo: zapis <a href="http://paulina.org/" rel="sweetheart date met">Paulina</a> oznacza, że ja, linkujący do http://paulina.org określam siebie jako będącego w relacji osobą właściwą dla strony paulina.org.

Jak widać XFN jest banalnie prosty, ale w tej prostocie jest haczyk. Atrybut rel= musi mieć dobrze określone wartości, inaczej będzie niezrozumiały. W dodatku nie wiadomo, czy jest poprawny, tzn. jego wartość oznacza tylko deklarację właściciela strony, a nie stan faktyczny (stan faktyczny można po części sprawdzić, badając wzajemne linkowanie za pomocą XFN).

Wadą XFN jest to, że jest to język ograniczony tylko do określania relacji międzyludzkich. Tymczasem warto byłoby wskazywać relacje między innymi obiektami: stronami WWW, książkami, komputerami, produktami w sklepach... Jak to zrobić w prosty sposób, nie wchodząc w skomplikowany RDF?

Mam taką, bardzo zgrubną propozycję, by rozszerzyć znacznik A o atrybut rel, który zawiera wypisane (oddzielone spacjami lub przecinkami) nazwy istniejących między obiektami relacji, np.

<a href="http://www.pcworld.pl" rel="praca">PCWorld.pl</a>
<a href="http://www.plfoto.com/pawelb" rel="hobby profil">plfoto</a>
<a href="http://www.onephoto.net" rel="hobby">OnePhoto</a>

To nie są relacje tylko między osobami, to są dowolne dobrze (patrz dalej) opisane relacje. Relacja musi mieć nazwę (praca), w jednym atrybucie może być kilka relacji.

Uwaga: relacja może też mieć wartość liczbową, podawaną w nawiasach okrągłych zaraz po swojej nazwie, np.

<a href="http://www.pcworld.pl" rel="praca(90%)">PC World Komputer</a>
<a href="http://www.wspins.edu.pl" rel="praca(10%)">Szkoła</a>

Wartość może być bezwględna , np. (7) lub procentowa (10%). Oczywiście wartość relacji też powinna być zdefiniowana (czyli CO w tej relacji jest określone wartością). Relacja może mieć także określone prawdopodobieństwo jej wystąpienia, podane w nawiasach kwadratowych, np.

<a href="http://www.rowery.otwock.org" rel="relaks[60%]">Rower</a>
<a href="http://www.kinowotwocku.pl" rel="relaks[40%]">Kino</a>

Ostatni element to zaprzeczenie, oznaczane, jak w C/Javie/JavaScripcie wykrzyknikiem przed nazwą relacji, np.

<a href="http://chip.pl" rel="!praca">Magazyn CHIP</a>

Zaprzeczenie jest po to, by nie tworzyć par relacja-relacja przeciwna. Można by wymyślać inne operacje logiczne na relacjach, ale wystarczy iloczyn (i), oznaczany przez spację (wszystkie wypisane relacje zachodzą) oraz zaprzeczenie (relacja nie zachodzi).

To już prawie wszystko. Zapis ten nazwałem sobie SXHTML, co ma być skrótem od Semantic XHTML, ale też się ładnie czyta jako "Sexhateemel".

Prawie, ale nie do końca. Pozostaje niezwykle ważny element, dobre zdefiniowanie relacji, bo relacje te muszą być zdefiniowane w sposób czytelny dla maszyny. Pomysł jest taki, żeby dokument XHTML odwoływał się do pliku z definicjami za pomocą znacznika LINK:

<link rel="sxhtml" href="http://bragoszewski.com/definicja_sxhtml">

Tak wskazana definicja może już być skomplikowana, np. zapisana w RDF, a powinna zawierać dobrze zdefiniowane relacje o sensownych nazwach. Nazwa jest dla człowieka, który wstawia te SXHTMLowe linki, definicja dla maszyny.

Tutaj pewnie powinno być wytłumaczenie, czemu tworzyć nowy system zapisu relacji, skoro jest i XFN, i RDF. Ano po to, by mieć proste narzędzie do zapisywania relacji, oparte na znaczniku doskonale znanym od początku HTML-a, ale nie ograniczone tylko do relacji międzyludzkich, lecz opisujące relacje w szerszym sensie. Zaleta tego rozwiązania jest też taka, że używający relacji nie musi trudzić się z budowaniem definicji, może odwołać się do jakiejś gotowej. XFN jest zbyt uproszczony, RDF zbyt uniwersalny (przez co trudny w masowym użyciu). SXHTML to takie wyjście bokiem, odrobina więcej semantyki w niesemantycznym Internecie.

Jeszcze jedna uwaga: SXHTML tworzy sieć informacji, która jest niedookreślona, podczas gdy RDF stara się informacje dookreślić, zdefiniować do najbardziej szczegółowego poziomu. SXHTML nie jest po to, by cały świat powiązać relacjami, służy do wiązania zrozumiałymi relacjami dokumenty w Internecie, traktując dokument w Internecie jako podstawowy - i jedyny - rodzaj obiektu. W tym sensie SXHTML jest węższy niż RDF. O ile RDF tworzy grafy, to SXHTML tworzy "pseudografy", tzn. struktury, w których istnienie gałęzi może być określone prawdopodobieństwem. W tym sensie SXHTML jest szerszy niż RDF.

Właśnie widzę, że coś podobnego już wymyślają ludzie w różnych miejscach.

Paweł,
domyślam się, że żeby Twój pomysł zaczął działać, trzeba by wprowadzić zmiany w INTERNETOWYCH PRZEGLĄDARKACH?
Czyli wszystko w rękach producentów Iexplorera i Firefoxa?
WJ