Pull to refresh

Comments 8

a foaf:Person;
foaf:name "Alice";
foaf:mbox ;
foaf:homepage http://www.example.com/people/alice>

Убери, пожалуйста, лишние переводы строк.
Это автоформатирование хабра
Вывод? Используйте статус 303 или хэш УРЛ.
Сказали "а" - говорите "б". Из принципа не пошел в ваш блог, хотя тема мне интересна
web.archive.org/web/20080103025408/http://futuri.us/2007/12/20/semanticheskomu-vebu-krutye-adresa/

2. Не будьте двусмысленными.

Не должно быть путаницы между URI документа или любого другого объекта. Адрес должен определять только одно и не может использоваться для описания реального объекта и веб-документа.


Как же нам решить сложившуюся проблему? Если нельзя использовать адреса документа для указания реальных объектов, то как же нам восстановить описание объекта в паутине?

Легко изобразить желаемые отношения между документами и объектами при помощи небольшой диаграммки.

uris.png
Есть два способа решения проблемы. 303 URI и hashURI. Оба имеют свои преимущества и недостатки и разняться в применении когда RDF используется отдельно от HTML и когда семантическая информация вшита в код страницы HTML.

hashURI
Это привычные адреса со значком #. Грубо говоря ссылка на отдельный кусок страницы. Тогда ссылку на Алису (как на человека) приобретает такой вид www.example.com/about#alice

uris.png
303 URIs
Использует код статуса HTTP “303 See other”. Идея, что после анализа запроса клиенту выдается нужная ему страничка. И не всегда это запрашиваемый адрес.

uris.png
Принцип работы прост. Сервер получает такой запрос:

GET /people/alice HTTP/1.1Host: www.example.comAccept: text/html, application/xhtml+xmlAccept-Language: en, de
Accept: text/html, application/xhtml+xml — клиенту нужна веб-страничка и притом на английском или немецком языках. (Accept-Language: en, de)
Согласно этому перенаправляем его на страницу, которая максимально удовлетворяет запросу:

HTTP/1.1 302 FoundLocation: www.example.com/people/alice.en.html
Теперь мы можем описать Алису в N3:

<www.example.com/id/alice> foaf:page <www.example.com/people/alice>;rdfs:isDefinedBy <www.example.com/data/alice>; a foaf:Person;

foaf:name “Alice”;

foaf:mbox <mailto:alice@example.com>;


Можно добавить немного связи для пущей уверенности, указав в теле документа про Алис, что у нее есть описание и в машиночитаемом формате.

Alice's Homepage

<link rel=«alternate» type=«application/rdf+xml»

title=«RDF Version»

href=«www.example.com/data/alice” />


Тогда диаграмма принимает такой вид:

uris.png
Перефразируя: «Просто всю страницу считать Алисой нельзя, но зато Алисой можно считать 1) часть страницы, начинающуюся с букмарка, и 2) всю страницу, если при специальном запросе с этого же адреса документа в формате rdf будет отдаваться документ в формате rdf»

В общем, изначальная посылка про «нельзя» («На www.example.com/people/alice нельзя, потому что по правилам <URI-Алисы> a foaf:Person; должно содержать именно ссылку на человека.») — бред.

А статья — неполный огрызок информации про варианты выдачи rdf-а с веб-сервера, и соответственно, формирования ссылок на них в самом rdf.
Sign up to leave a comment.

Articles