На днях сделал реализацию .Net парсера различных FOAF файлов публикуемых блогхостерами на базе простой XML сериализации в рамках библиотеки BlogsAPI.
Планирую в ближайшее время выложить для всех. Надеюсь это упростит для многих понимание и использование информации публикуемой в RDF формате.
Пока изучал различные модификации FOAF в рунете, составил следующий список некорректных на мой взгляд моментов:
FOAF (http://xmlns.com/foaf/spec/)
1) Тэг foaf:Person может содержать вложенный тэг foaf:Person. Это пережиток прошлого и может вносить путаницу в виде рекурсии.
2) Часто встречается неправильное использование тэгов "dc:*" как аттрибутов, вместо тэгов.
3) Много "мертвых" элементов в статусе "unstable" и "testing",
а также многочисленные поля единого семантического свойства, но не объединенные единым тэгом. Например, yahooID, openid.
4) Формат разработывался с 2004года, и многие примеры в спецификации устарели, либо имеют неправильную запись.
Однако, люди которые впервые знакомятся с RDF/FOAF принимают их как эталон и продолжают пложить ошибки.
5) Раздражает и усложняет сериализацию необходимость указывания тэга foaf:knows, вместо того, чтобы одним тэгом окаймить весь массив связей.
YaFoaf (http://api.yandex.ru/blogs/doc/indexation/appendices/foaf-profile-sample.xml)
1) Неправильная запись "<foaf:img>http://img.ya.ru/userpic/1051645/90316</foaf:img>",
правильно: <foaf:img rdf:resource="http://img.ya.ru/userpic/1051645/90316" />
либо: "<foaf:
image>http://img.ya.ru/userpic/1051645/90316</foaf:image>"
2) Аналогично для тэга foaf:homepage
3) ya:firstNode, ya:middleName, ya:secondName - выглядят как тавталогия, если учесть что их аналоги есть в "foaf:"
4) "foaf:dateOfBirth" - такого тэга нет, правильно "foaf:birthday"
5) ya:blogActivity - идиотизм задавать его для каждого из 4х параметров, нет чтобы один тэг,
а внутри 4 различных подкласса для постов, комментов, ссылок и читателей. Видно, что копировали форму записи с foaf:knows
FOAF на li.ru
1) Ya:RSS - удобная замена для ya:feed, Но не документирована
2) ya:location - тоже какая-то самодеятельность от лени.
3) foaf:name и foaf:nick заполнены как-то странно, в итоге в поле name всегда пишеться номер блогера в базе дынных
FOAF на livejournal.com
1) общая неточность с foaf:dateOfBirth вместо foaf:birthday
2) Вводится дополнительное пространство имен LJ, но можно было бы обойтись dc:title и dc:description, как аттрибуты foaf:Document.
FOAF на ya.ru
1) Нигде не заполнен "реальный" ник пользователя, придется его извлекать из урла.
Выводы:
1) Я бы пересмотрел бы весь формат и задал бы новый исходя из теории "Социально Значимых Объектов", разбив весь RDF файл на 4 секции, но это мечты.
2) Видно, что нет единства в формировании FOAF файлов и все относятся к этому спустя рукова, так как пользу это дает только примитивному
поисковику по профилям блогеров.