Publikujemy w Web 3.0 – część 4: Semantyczny agent rozmawia z naszym serwisem
W poprzednich artykułach cyklu "Publikujemy w Web 3.0" dowiedzieliśmy się w jaki sposób sprawić, aby nasz serwis dostarczał semantyki. W ostatnim odcinku rozważaliśmy potrzebę tworzenia URI tak aby nigdy nie musiały ulegać zmianie. W tym odcinku opiszemy kiedy stosować przekierowania protokołu HTTP czy też adresy URL z tzw. hashtagami.
Jeżeli chcemy zdefiniować schemat URI dla zasobów opisywanych w dokumentach RDF niezależnych od treści HTML (czyli nie osadzonych), mamy do wyboru dwa rozwiązania:
- schemat URI oparty na hash tagach,
- schemat URI oparty na przekierowaniach HTTP 303.
Schemat URI oparty na hash tagach
W pierwszym wypadku nasz serwis dostarcza pojedynczy dokument RDF, w którym poszczególne zasoby identyfikowane są za pomocą lokalnych nazw. Pełne URI zasobu składa się z URI dokumentu RDF i lokalnej nazwy zasobu.
Na przykład nasza firma może zebrać wszystkie informacje w jednym dokumencie RDF i opublikować go pod adresem http://www.przyklad.pl/informacje. Zasób RDF opisujący firmę może mieć lokalna nazwę ofirmie, skąd globalne URI będzie postaci http://www.przyklad.pl/informacje#ofirmie.
Korzystając ze schematów URI opartych na hash tagach możemy dostarczać zawartości w formacie rozpoznawalnym przez danego agenta. Poniższy rysunek pokazuje poszczególne etapy procesu. Agent semantyczny pytając o zasób o URI http://www.przyklad.pl/informacje#ofirmie korzystając z protokołu HTTP otrzymuje cały dokument http://www.przyklad.pl/informacje (hash tagi nie są przetwarzane w ramach protokołu HTTP). W przypadku agenta, który poprosi o dokument RDF (application/rdf+xml) nastąpi de facto przekazanie zawartości dokumentu http://www.przyklad.pl/informacje.rdf; zamiast przekazania bezpośrednio zawartości zasobu http://www.przyklad.pl/informacje. Podobnie w przypadku agenta proszącego o dokument HTML.

Schemat URI oparty na przekierowaniach HTTP 303
W przypadku schematu URI opartego na przekierowaniach HTTP, każdy zasób dla którego dostarczony jest dokument RDF posiada globalne URI. W powyższym przykładzie, taki URI byłby następujący: http://www.przyklad.pl/id/ofirmie. W odpowiedzi na zapytanie agenta o zasób o podanym URI, serwer wysyła status odpowiedzi 303, wraz z nagłówkiem Location o docelowym dokumencie. W przypadku agenta semantycznego proszącego o dokument RDF, zostanie on przekierowany do dokumentu http://www.przyklad.pl/doc/ofirmie.rdf

Który schemat wybrać ?
Zaletą schematów opartych na hash tagach jest mniejsza ilość zapytań HTTP, które musi wykonać agent komunikujący się z naszym serwisem. Niewątpliwą jednak wadą jest konieczność pobrania całego dokumentu opisującego wszystkie zasoby; szczególnie w przypadku dużej liczby zasobów może to prowadzić do sporych opóźnień w komunikacji. Dlatego też schematy URI oparte na hash tagach doskonale nadają się do niewielkich zestawów zasobów, o których informacje zmieniają się rzadko; przykładem mogą być lekkie ontologie. Na zakończenie, warto zauważyć, że oba rozwiązania nie wykluczają się wzajemnie; jeżeli nasz system potrafi skorzystać z hybrytowego rozwiązania opartego na obu schematach, tak powinniśmy uczynić.

