Документация

Стандартные теги FOAF

Для описания профиля пользователя можно использовать любые теги стандарта FOAF. В данном разделе приводится краткая информация об основных из них.

Следует иметь в виду, что описания стандартных тегов, которые можно найти в данном разделе, основываются на официальной спецификации FOAF. Они не являются полным переводом англоязычной спецификации и содержат лишь данные, особенно важные для Поиска по блогам. Полное описание стандартных тегов можно найти в самой официальной спецификации.

Общий обзор тегов

По алфавиту

Классы: | Agent | Document | Image | Group | Person |

Свойства: | gender | homepage | icqChatID | img | interest | jabberID | knows | mbox | msnChatID | name | nick | weblog |

По категориям

Основы FOAFЛичная информацияУчетные записи клиентов мгновенного обмена сообщениямиГруппыДокументы и рисунки

Agent

Person

homepage

name

mbox

img

nick

weblog

knows

interest

gender

icqChatID

msnChatID

jabberID

Group

Document

Image

img

foaf:Agent

Agent - агент (т. е. тот, кто совершает действие)

В диапазоне: foaf:maker | foaf:member | foaf:mbox | foaf:mbox_sha1sum | foaf:gender | foaf:jabberID | foaf:aimChatID | foaf:icqChatID

В домене: foaf:mbox | foaf:mbox_sha1sum | foaf:gender | foaf:jabberID | foaf:aimChatID | foaf:icqChatID |foaf:yahooChatID | foaf:msnChatID | foaf:weblog | foaf:openid | foaf:tipjar | foaf:made | foaf:holdsAccount | foaf:birthday

Класс foaf:Agent описывает объекты, которые совершают какие-либо действия. Важным подмножеством foaf:Agent является класс foaf:Person, описывающий людей. Существуют также другие типы агентов, например, foaf:Group или foaf:Organization.

Класс foaf:Agent обычно полезен в тех случаях, когда его подмножества, например, foaf:Person, являются избыточными. Например, идентификаторы служб обмена сообщениями обычно ассоциируются с людьми, но могут также принадлежать различным ботам.

наверх

foaf:Document

Document - документ

В диапазоне: foaf:homepage | foaf:weblog | foaf:openid | foaf:tipjar | foaf:workplaceHomepage | foaf:workInfoHomepage | foaf:schoolHomepage | foaf:interest | foaf:publications | foaf:isPrimaryTopicOf | foaf:page | foaf:accountServiceHomepage

В домене: foaf:sha1 | foaf:topic | foaf:primaryTopic

Класс foaf:Document представляет собой документ в широком смысле: от обычных документов до электронных.

Частным случаем foaf:Document является foaf:Image.

наверх

foaf:Image

Image - любое изображение

В диапазоне: foaf:img | foaf:depiction | foaf:thumbnail

В домене: foaf:depicts | foaf:thumbnail

Класс foaf:Image описывает документ в любом графическом формате (JPEG, PNG, GIF, SVG и пр.) и является подклассом foaf:Document, описывающим "документ" в общем виде.

наверх

foaf:Group

Group - группа агентов

В домене: foaf:member

Класс foaf:Group представляет собой коллекцию агентов (foaf:Agent), т. е. кого-либо, кто может выполнять некоторые действия. Сама foaf:Group также может являться агентом.

Понятие "группа" рассматривается достаточно широко и распространяется практически на любые объединения людей.

foaf:Group обычно состоит из нескольких foaf:Agent, - как правило, людей (foaf:Person). Для выражения принадлежности агента к группе можно воспользоваться свойством foaf:member. Например, чтобы выразить принадлежность Василия Пупкина (foaf:Agent) к группе "Сотрудники Яндекса", нужно создать следующую запись:

<foaf:Group>
 <foaf:name>Сотрудники Яндекса</foaf:name>
 <foaf:member>
  <foaf:Person>
   <foaf:name>Василий Пупкин</foaf:name>
   <foaf:homepage rdf:resource="http://yandex.ru"/>
   <foaf:workplaceHomepage rdf:resource="http://yandex.ru"/>
  </foaf:Person>
 </foaf:member>
</foaf:Group>

В FOAF существует также более сложный механизм выражения "членства" в группе, реализуемый свойством foaf:membershipClass. С его помощью можно связать foaf:Group с подмножеством класса foaf:Agent, который включает в себя членов группы. Синтаксис foaf:Group позволяет указать правила членства в группе на основе любых характеристик ее потенциальных членов, описанных при помощи RDF.

Например, foaf:Group объединяет работников Яндекса. Тогда свойство foaf:membershipClass соединяет группу с определением класса, описывающего тех людей, которые ее составляют. В рассматриваемом случае правило состоит в том, что все члены группы "Сотрудники Яндекса" относятся к классу YandexStaffPerson, который состоит из работников (foaf:Person), у которых рабочий адрес домашней странички (foaf:workplaceHomepage) установлен в http://yandex.ru/. Т. о., группа создается на основе определения подмножества foaf:Agent с указанием критериев, по которым классы включаются в это подмножество или нет. Для этого используются параметры owl:onProperty и owl:hasValue, указывающие свойства и необходимые для членства в группе значения этих свойств. Например:

<!-- Описание группы FOAF.
     Каждая FOAF-группа может соответствовать OWL-определению,
     которое описывает класс агентов, имеющих членство в группе -->
<foaf:Group>
 <foaf:name>Сотрудники Яндекса</foaf:name>
 <foaf:membershipClass>
    <owl:Class rdf:about="http://yandex.ru/groups#YandexStaffPerson">
     <rdfs:subClassOf rdf:resource="http://xmlns.com/foaf/0.1/Person"/>
     <rdfs:subClassOf>
       <owl:Restriction> 
         <owl:onProperty rdf:resource="http://xmlns.com/foaf/0.1/workplaceHomepage"/>
         <owl:hasValue rdf:resource="http://yandex.ru/"/>
       </owl:Restriction> 
     </rdfs:subClassOf>
   </owl:Class>
 </foaf:membershipClass>
</foaf:Group>

Для обработки подобных записей нужно сначала при помощи OWL-средств определить, соответствует ли человек (foaf:Person) требованиям класса YandexStaffPerson. Это делается на основе анализа OWL-правил, которые в данном случае сопоставляют классу YandexStaffPerson людей (foaf:Person) с особым значением foaf:workplaceHomepage. Далее, чтобы определить, является ли YandexStaffPerson членом (foaf:member) группы с именем (foaf:name) "Сотрудники Яндекса", нужно уже учитывать особенности формирования групп в FOAF.

Описанная выше схема представляет собой отношение "от группы к ее членам". Подобный подход удобен, когда нужно составить XML/RDF, описывающий всех членов группы в пределах одного файла. Тем не менее, в RDF существует возможность описать те же самые отношения, не помещая описания членов группы в описание самой группы. Например:

<foaf:Group>
 <foaf:member rdf:nodeID="vasya"/>
 <!-- здесь будет дальнейшая информация о группе -->
</foaf:Group>
<foaf:Person rdf:nodeID="vasya">
  <!-- здесь будет дальнейшая информация о 'vasya' -->
</foaf:Person>

наверх

foaf:Person

Person - человек

В диапазоне: foaf:knows | foaf:geekcode | foaf:firstName | foaf:surname | foaf:family_name | foaf:plan | foaf:img

В домене: foaf:myersBriggs | foaf:workplaceHomepage | foaf:workInfoHomepage | foaf:schoolHomepage | foaf:knows | foaf:interest | foaf:topic_interest | foaf:publications | foaf:currentProject | foaf:pastProject

Класс foaf:Person описывает людей. Концептуально не важно, является ли описываемый человек настоящим или воображаемым. Класс foaf:Person является подмножеством foaf:Agent, т. к. все люди в FOAF считаются "агентами".

наверх

foaf:gender

gender - пол

Домен: foaf:Agent

Диапазон: http://www.w3.org/2000/01/rdf-schema#Literal

Свойство foaf:gender содержит информацию о половой принадлежности. В большинстве случаев диапазон данного свойства принимает два значения, "male" ("мужской") и "female" ("женский"), однако не ограничивается ими. foaf:gender не ставит своей целью описание всего разнообразия биологических, социальных и сексуальных вариаций и восприятий концепции пола.

Любой класс, имеющий foaf:gender, является подмножеством foaf:Agent, однако существуют агенты, к которым понятие пола неприменимо (например, foaf:Group).

Значение свойства foaf:gender не является статичным (т. е. оно может изменяться).

Разработчики FOAF-интерфейсов должны обратить внимание на то, что нужно всегда предоставлять пользователям возможность не указывать свой пол (foaf:gender), или же указывать там значения, отличные от "мужской" и "женский".

наверх

foaf:homepage

homepage - домашняя страница

Домен: http://www.w3.org/2002/07/owl#Thing

Диапазон: foaf:Document

Свойство foaf:homepage содержит информацию о домашней странице.

Согласно FOAF, один класс может иметь несколько домашних страниц, но каждая страница может быть домашней только для одного класса.

Под домашней страницей понимается публичный веб-документ, обычно (но необязательно) доступный в HTML-формате. В качестве foaf:topic домашней страницы должен быть указан тот класс, для которого эта страница является домашней.

foaf:homepage является подмножеством более общего свойства foaf:page, который соотносит класс с описывающей его страницей.

наверх

foaf:icqChatID

icqChatID - идентификатор агента в системе ICQ

Домен: foaf:Agent

Диапазон: http://www.w3.org/2000/01/rdf-schema#Literal

Свойство foaf:icqChatID содержит информацию о текстовым идентификаторе, присвоенном пользователю в системе ICQ Chat.

Для унифицированного описания интернет-сервисов, предоставляющих своим клиентам ID, используется foaf:OnlineAccount.

наверх

foaf:img

img - фотография, рисунок

Домен: foaf:Person

Диапазон: foaf:Image

Свойство foaf:img содержит информацию об изображении человека (foaf:Image).

foaf:img никак не ограничивает размеры, глубину цвета, формат и пр. класса foaf:Image, на который он ссылается.

Не следует путать свойство foaf:img с foaf:depiction, которое может представлять любое изображение, тогда как foaf:img - только фотографию (портрет) человека. Так, foaf:img будет содержать аватар пользователя на его домашней странице, тогда как foaf:depiction - фотографию из его альбома. Более того, foaf:img может содержать только фотографии людей.

наверх

foaf:interest

interest - интерес (страница, посвященная теме, интересной кому-либо)

Домен: foaf:Person

Диапазон: foaf:Document

Свойство foaf:interest описывает интерес некоторого агента (foaf:Agent), связывая его с foaf:Document, свойство foaf:topic которого характеризует данный интерес.

Например, можно сказать, что агент интересуется RDF, если его свойство foaf:interest связывает его с домашней страницей RDF. Другими словами, данный агент интересуются информацией, размещенной на указанной странице.

Для указания интереса принято использовать различные URI. Данный подход является более предпочтительным по сравнению с использованием текстовых описаний в свободной форме, т. к. позволяет с большой точностью сравнивать интересы разных людей.

наверх

foaf:jabberID

jabberID - идентификатор агента в системе Jabber

Домен: foaf:Agent

Диапазон: http://www.w3.org/2000/01/rdf-schema#Literal

Свойство foaf:jabberID содержит информацию о текстовом идентификаторе, присвоенном пользователю в системе Jabber.

Для унифицированного описания интернет-сервисов, предоставляющих своим клиентам ID, используется foaf:OnlineAccount.

наверх

foaf:knows

knows - "он(а) знает"

Домен: foaf:Person

Диапазон: foaf:Person

Свойство foaf:knows связывает человека (foaf:Person) с другим человеком (foaf:Person), которого он или она знает.

Понятие "знать" ("knows") понимается в широком смысле: FOAF не может диктовать жесткую спецификацию этого термина, т. к. социальные условия в различных странах, сообществах и культурах сильно различаются. При этом всегда подразумевается взаимодействие двух людей.

Отношение foaf:knows не подразумевает дружбу, любовь или даже единократное наличие визуального контакта: чтобы знать кого-либо может быть достаточно обмена электронной почтой, письмами, факсимильными сообщениями и т. п.

Несмотря на отсутствие четкой конкретизации понятия, foaf:knows имеет широкую сферу применения. Например, с его помощью можно найти все блоги, созданные знакомыми некоторого человека.

В общем и целом, главная задача foaf:knows - связать файлы FOAF вместе. Один FOAF-файл сам по себе несет не слишком много информации. При помощи связи foaf:knows и ссылки на соответствующий FOAF-документ в теге rdfs:seeAlso выстраивается огромная коллекция связанных друг с другом FOAF-файлов.

наверх

foaf:mbox

mbox (mailbox) - почтовый ящик

Домен: foaf:Agent

Диапазон: http://www.w3.org/2002/07/owl#Thing

Свойство foaf:mbox содержит информацию о почтовом ящике. Адрес ящика задается в формате URI-схемы [RFC 2368].

Следует обратить внимание на то, что у одного foaf:Agent может быть несколько почтовых ящиков и, соответственно, свойств foaf:mbox.

Часто значение свойства foaf:mbox может использоваться для идентификации пользователя. Для этих целей подходят даже те почтовые ящики, которые реально не используются для переписки. Это и не нужно, т. к. название любого ящика однозначно определяет его владельца.

Многие пользователи не желают делиться адресом своего почтового ящика. Чтобы удовлетворить их пожелания и в то же время иметь возможность использовать адрес почтового ящика для идентификации пользователя, в FOAF существует свойство foaf:mbox_sha1sum, которое хранит адрес почтового ящика в зашифрованном виде.

наверх

foaf:msnChatID

msnChatID - идентификатор агента в системе MSN

Домен: foaf:Agent

Диапазон: http://www.w3.org/2000/01/rdf-schema#Literal

Свойство foaf:msnChatID содержит информацию о текстовом идентификаторе, присвоенном пользователю в системе MSN Chat.

Для унифицированного описания интернет-сервисов, предоставляющих своим клиентам ID, используется foaf:OnlineAccount.

наверх

foaf:name

name - имя

Домен: http://www.w3.org/2002/07/owl#Thing

Диапазон: http://www.w3.org/2000/01/rdf-schema#Literal

Свойство foaf:name содержит информацию об имени класса.

Для указания языка, на котором записано имя, может использоваться XML-атрибут lang. Например:

<foaf:name xml:lang="ru">Василий Иванович Пупкин</foaf:name> 

К недостаткам foaf:name можно отнести то, что строка, содержащая имя, задается в произвольном виде. Как следствие, из этой строки нельзя выделить отдельные части имени, такие как фамилия, отчество и (личное) имя.

Для записи русских имен хорошо подходят свойства из расширения Яндекса для FOAF: ya:firstName, ya:secondName и ya:middleName.

наверх

foaf:nick

nick - ник (короткое неформальное прозвище, характеризующее агента)

Свойство foaf:nick содержит информацию о коротком (часто сокращенным) прозвище. Подобные прозвища обычно используются в качестве учетных записей.

Значение данного свойства не несет большой смысловой нагрузки, т. к. ник выбирается пользователем произвольно. Следовательно, невозможно узнать, что именно хранится в foaf:nick, - логин, IRC-ник или какой-либо другой идентификатор. Тем не менее, данное свойство может быть полезным в виду того, что многие пользователи используют одну и ту же строку (возможно, с незначительными вариациями) для идентификации сразу в нескольких сервисах.

Примечание. Поиск по блогам рекомендует указывать здесь значение, реально использующееся пользователями для обращения друг к другу.

Для некоторых наборов ников (преимущественно для учетных записей служб обмена мгновенными сообщениями) в FOAF существуют специализированные свойства, например foaf:jabberID, foaf:aimChatID, foaf:msnChatID и foaf:icqChatID. При этом не ставится задача создания отдельного тега для любой подобной службы (как применительно к службам обмена сообщениями, так и к любым другим). Для описания этих классов в общем виде следует использовать foaf:OnlineAccount.

наверх

foaf:weblog

weblog - интернет-блог

Домен: foaf:Agent

Диапазон: foaf:Document

Свойство foaf:weblog содержит информацию об интернет-блоге пользователя.

В качестве значения foaf:weblog нужно указывать URL.

наверх

foaf:Agent
foaf:Document
foaf:Image
foaf:Group
foaf:Person
foaf:gender
foaf:homepage
foaf:icqChatID
foaf:img
foaf:interest
foaf:jabberID
foaf:knows
foaf:mbox
foaf:msnChatID
foaf:name
foaf:nick
foaf:weblog