Linki semantyczne – atrybut REL

Internet jest gęsto polinkowany. Ta zaleta sieci jest też jej wadą. W powodzi linków nie wiemy co ma znaczenie a co jest tylko szumem. Musimy korzystać z automatów, które za nas przeglądają internet (roboty, czytniki rss). Tylko skąd automaty mają wiedzieć które linki nas interesują?

Linki semantyczne mówią nie tylko dokąd linkujemy ale też czym dla nas jest docelowy zasób. Do tego służy atrybut rel (relacja).

Rel znamy od dawna.

Od dawna używamy relacji np. podczas dołączania css:

<link rel="stylesheet" type="text/css" url="adres-arkusza-styli.css" />

Podawaliśmy adres arkusza stylów pomocnych przy renderowaniu przez przeglądarkę bieżącej strony.

Mniej osób wie, że na samych stylach użycie relacji się nie kończy. Html5 pozwala na użycie wielu ciekawych oznaczeń relacji. Przykładowo:

<a href="pomoc.html" rel="help">pomoc</a>

Stworzyliśmy link do dokumentu z pomocą dla bieżącej strony. Przeglądarka może wyróżnić nasz link. Co więcej – robot sieciowy może skojarzyć, że dokument z pomocą dotyczy naszej strony. Może skojarzyć go z tytułem, treścią obecnej strony i udostępnić w wyszukiwaniu. Same korzyści!

Częstym przykładem korzystania z relacji jest obsługa list. HTML5 udostępnia nam wartości takie jak next, prev, first, last itp. W ten sposób możemy np. organizować artykuły w listę. W kodzie będziemy mieć m.in. takie linki:

<a href="poprzednia_strona.html" rel="prev">Poprzedni artykul</a>
<a href="indeks.html" rel="contents">Spis treści</a>

Relacje w REST

Serwisy RESTowe są naturalnym miejscem, gdzie warto wykorzystywać linki. Mamy zasoby, które są w relacjach z innymi zasobami. Mamy do dyspozycji predefiniowane typy relacji oraz możemy korzystać z własnych.

Standardowe relacje są opisane w RFC. Na stronach IANA dostępna jest aktualizowana lista typów relacji.

Znajdziemy tam relacje pomagające w tworzeniu list (first, last, next, prev, up). Są relacje opisujące dokument (author, bookmark, about, copyright, license) czy nawet kontrolujące różne wersje naszego zasobu (duplicate, latest-version, original, predecessor-version, version-history, working-copy). Relacji jest dużo.

Jeszcze bogatszą listę typów relacji oferuje HTML5. Lista dostępnych relacji, odrzuconych, kandydatów i relacji niestandardowych dostępna jest na stronie microformats.org.

Własne typy relacji

Jeśli nie wystarczą nam zdefiniowane relacje możemy utworzyć nową relację o zupełnie nowym znaczeniu.

Nazwa naszej relacji będzie wtedy linkiem do dokumentu opisującego jej znaczenie. Przykładowo:

<link rel="http://moj.serwis/relacja1.html" href="url_do_jakiegos_zasobu" />

Atrybut rel zawiera teraz nie tylko nazwę ale też adres opisujący relację. Co ważne – nie powinno się używać automatu do zaglądania pod ten adres. Służy on programiście do poznania celu istnienia tej relacji. Nasz programista tworzący klienta serwisu RESTowego moze potem zdecydować jak traktować taką relację i czy wogóle z niej korzystać.

Co dalej?

Warto przeczytać RFC 5988 aby poznać dokładniej reguły stojące za relacjami. Można je porównać ze specyfikacją HTML5 w zakresie linków.

Linki to wstęp do takich tematów jak sieć semantyczna, HATEOAS i JSON-LD o czym będę jeszcze pisał.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *