Настроить, Войти
Как составлять поисковые запросы

Сухая теория: введение в RDF

Вся информация, опубликованная на сайте, организована в соответствии с моделью RDF. Это значит, что весь сайт построен из ресурсов и утверждений о них.

Сообщение – это ресурс, опубликовавший его пользователь – тоже ресурс.

Утверждение определяет некое свойство ресурса и всегда содержит три части: субъект (ресурс, чьё свойство мы определяем), предикат (название свойства) и объект (значение свойства). Объект в утверждении может быть как числом или строкой (по-научному – литералом, то есть “буквальным значением”), так и другим ресурсом.

Например, когда Вася Пупкин публикует на сайте сообщение “Паццталом!”, субъектом утверждения будет сообщение, предикатом – свойство “автор”, а объектом – сам Вася. Можно условно записать так: (<”Паццталом!”> <автор> <Вася Пупкин>).

То, что запись сильно условная, видно невооружённым взглядом, и не только по угловым скобкам – Васей Пупкиных в мире множество, желающих подписаться этим славным именем – ещё больше, да и как отличить “Паццталом!” Васи Пупкина от такого же возгласа нашего Петровича в соседней дискуссии?

В RDF для этого используются URI, причём чаще всего URI оказывается URL-ом, то есть адресом, по которому данный ресурс доступен в Web. В Samizdat схема назначения ресурсам URI предельно проста – в пределах одного сайта каждому ресурсу назначается серийный номер, а URI составляется из адреса сайта и этого номера. Например, пользователь, опубликовавший данное сообщение, представлен ресурсом с URI https://belarus.indymedia.org/1.

В результате выходит, что каждый идентифицированный таким образом ресурс – уникальная сущность, не размытое пятно, а конкретная точка в пространстве знаний. Соответственно, описание, сделанное средствами RDF, представляет собой именованный ориентированный граф, узлы которого – ресурсы, а дуги – утверждения. Причём постольку, поскольку идентификаторы ресурсов уникальны в масштабах всего Интернета, а свойства, используемые в качестве предикатов, чётко определены, все RDF-сайты в сети можно объединить в один большой граф и анализировать как единую базу знаний.

Подробнее об RDF можно узнать в первоисточниках, нам же осталось разобраться только с одним ещё понятием, скрывающимся под мудрёным словом “реификация” (Reification). Реификация – представление утверждения в виде самостоятельного ресурса, о котором в свою очередь можно делать новые утверждения.

Вот подумайте: чего стоит утверждение, которое нельзя подвергнуть сомнению? Именно эту возможность нам и даёт реификация – вместо того, чтобы рассматривать любое утверждение как непокобелимый факт, мы можем рассмотреть, кем и когда это утверждение сделано, кто с ним согласен, а кто – нет, можем такому же анализу подвергнуть любое утверждение об утверждении и так далее.

В Samizdat эта возможность используется для того, чтобы описывать связи между ресурсами и фокусами. Каждый раз, когда вы привязываете сообщение к фокусу, утверждение этой связи реифицируется, и о нём делаются новые утверждения: пользователь такой-то оценивает верность этой связи в такое-то значение, средневзвешенный рейтинг связи вышел таким-то. При желании можно раскопать всю эту цепочку и выяснить, кто какое сообщение повесил под какой фокус: поскольку утверждения связи – тоже ресурсы, их тоже можно просматривать по их серийным номерам и находить с помощью поиска по RDF.

Сырая практика: язык запросов Squish

На странице поиска можно редактировать запросы на языке Squish.

Главная часть запроса – шаблон, которому должны удовлетворять найденные ресурсы. Шаблон запроса составляется из шаблонов утверждений – троек “предикат – субъект – объект”. Предикат выбирается из перечисленных ниже поддерживаемых в Samizdat свойств.

Субъект может быть заранее известным ресурсом (можно указывать как полный URI, так и номер ресурса на сайте) или переменной (свободным узлом – blank node), которая задаётся в формате ”?имя” и обозначает любой ресурс, подходящий под это утверждение. Переменная с тем же именем может встречаться и в других утверждениях шаблона, в пределах одного найденного результата она везде будет обозначать один и тот же ресурс. При помощи переменных утверждения можно связывать между собой в цепочки вроде “найдите мне автора такого сообщения, у которого есть комментарий, который написан по-английски и привязан к фокусу “Перевод”.

Объект утверждения может быть либо ресурсом (в том числе и переменной), либо литералом, в записимости от предиката. Одни свойства подразумевают, что объект – ресурс определённого типа (например, объект свойства “автор” – всегда ресурс типа “участник”), у других объектом может быть только литерал (например, заголовок – это всегда строка).

В дополнение к шаблону запроса, определяющему вид подграфа RDF, в который должен вписываться каждый найденный результат, в поле “буквального условия” можно вписать дополнительные условия, которым должны удовлетворять найденные литералы.

Свойства ресурсов в Samizdat

Формальное опреление свойств можно просмотреть в RDF-схеме Samizdat в формате Notation 3.

Общие свойства

  • s::id – идентификатор (серийный номер) ресурса
  • dc::date – дата публикации

Свойства участников

  • s::login – имя учётной записи
  • s::fullName – видимое имя

Свойства сообщений

  • dc::title – заголовок
  • s::inReplyTo – родительское сообщение (объект – сообщение)
  • dc::creator – автор сообщения (объект – участник)
  • dc::format – формат
  • dc::language – язык сообщения
  • dc::description – краткое описание сообщения (объект – сообщение)
  • s::hidden – скрыто ли сообщение
  • s::content – текст сообщения, если сообщение – не файл
  • dct::isVersionOf – текущая версия сообщения (субъект – одна из старых версия, объект – текущая версия)
  • s::openForAll – открыто ли сообщение для редактирования другими пользователями

Реифицированные утверждения

  • rdf::predicate – предикат (объект – ресурс, хранящий URI предиката)
  • rdf::subject – субъект утверждения (любой ресурс)
  • rdf::object – объект утверждения (если объект – литерал, он также хранится в отдельном ресурсе)

Фокусы

  • dc::relation – связанный с ресурсом фокус (субъект – любой ресурс, объект – фокус)
  • s::rating – средневзвешенный рейтинг утверждения о связи между ресурсом и фокусом (субъект – реифицированное утверждение, объект – число)
  • s::voteProposition – реифицированное утверждение, вес которого оценивает участник (субъект – ресурс “голос”, объект – реифицированное утверждение)
  • s::voteMember – участник, оценивающий утверждение (субъект – голос, объект – участник)
  • s::voteRating – оценка утверждения одним участником (субъект – голос, объект – литерал)
Комментарии
  • автор гость, дата 2006-11-19 14:08, комментариев: 4, ссылка

    А вы не могли бы привести пошаговый пример (может принтскрины?) что куда надо забить, чтобы найти то-то.