En


Михаил Шварцман
8 736
Михаил Шварцман

Linked Open Data как средство обогащения поисковых запросов

В последнее время все больше и больше организаций, особенно правительственных, публикуют данные о своей деятельности в открытом доступе. Так, например, Министерство образования и науки РФ опубликовало на своем сайте www.opendata.mon.gov.ru для скачивания 58 наборов данных о функционировании системы школьного образования, о подведомственных организациях и т.п.

С одной стороны, у всех желающих появилась возможность анализировать деятельность Минобрнауки России. С другой, это не очень удобно, потому что данные нужно скачать, проанализировать формат их представления, сравнить их с информацией из других источников. К тому же данные постоянно обновляются. Все это, конечно, не очень технологично. Чтобы избавить исследователя от необходимости постоянно скачивать данные, некоторые организации не только публикуют их отдельные наборы, но и предоставляют сторонним приложениям возможность обращаться напрямую к данным через различные API.

В масштабах страны эта деятельность координируется на портале www.data.gov.ru/opendata, где ведется сводный реестр открытых данных. До недавнего времени библиотеки и другие информационные институты не придавали большого значения публикации своих данных в виде открытых наборов. Возможно, считалось, что в библиотеках и так все открыто. Действительно, работа над протоколом Z39.50 началась в 70-х годах прошлого века, еще до эпохи веб. Первая версия протокола OAI-PMH была представлена в 2001 г. Кажется, что библиотеки опередили всех остальных и им не о чем беспокоиться. Однако ключевое отличие всех вышеперечисленных технологий от требований сегодняшнего дня в том, что данные должны быть не только открытыми, но связанными. Давайте разберемся, что это такое. Связанные открытые данные (Linked Open Data, LOD) – это опубликованные структурированные данные, каждый элемент которых имеет свой URI, представлен в виде Resource Description Framework  (RDF) http://www.w3.org/RDF/ и имеет связь с другими данными. Главное отличие LOD от обычных веб-cтраниц в том, что они предназначены не столько для прочтения человеком, сколько для обработки компьютерными программами. Попробуем на примере пояснить, что это такое.

Как известно все формальные описания различных сущностей, присутствующих в Википедии, были выгружены в RDF-базу DBPEDIA, также находящейся в открытом доступе. Если мы посмотрим, например, на страницу о Юлии Латыниной в DBPEDIA (www. dbpedia.org/page/Yulia_Latynina), то обнаружим описание персоны и ссылку от поля dbo:birthPlace к объекту «Москва» (www.dbpedia.org/page/Moscow), что вполне понятно всем программам, в отличие от подхода «Википедии», в которой связи устанавливаются между HTML-страницами, а не объектами. Из этого описания программа делает вывод о том, что:

1) Латынина – персона (agent) – (rdf:typefoaf:Person, dbo:Agent);

2) окончила Литературный институт (dbp:almaMaterdbr:Maxim_Gorky_Literature_Institute);

3) Автор книги «Инсайдер» (is dbp:author of – dbr:The_Insider_(Latynina_novel).

То, что «Инсайдер» – это книга, можно определить по описанию этого объекта в DBPEDIA (www.dbpedia.org/page/The_Insider_(Latynina_novel)). В нём указано, что тип этой сущности в соответствии с онтологией DBPEDIA – Written work и Book, приведены различные сведения об этой книге. В LOD все отношения между понятиями строятся в виде графов. В модели  RDF они называются триплетами и состоят из субъекта, объекта и предиката (утверждения о каком-либо свойстве субъекта).

LOD1

Связи между сущностями удобнее представлять в виде графа. Ниже представлен граф, составленный из таблицы данных, приведенных в «Википедии».

LOD2

Преимущество представления связей в виде графов особенно очевидно, если мы продолжить выстраивать отношения между различными понятиями. Так, на приведенном ниже рисунке видно, что одним из свойств персоны является место рождения. Значение этого свойства – «Москва» – в свою очередь обладает множеством характеристик: географическими координатами, значимыми персонами. Таким образом, различные понятия оказываются связанными и становится возможным организовать навигацию по графу от понятия к понятию.

LOD2

Принципиальной особенностью LOD является использование универсальных идентификаторов ресурса (Universal Resource Identifier, URI), однозначно определяющих место, куда можно обратиться за раскрытием понятия. Так,  вместо фамилии персоны может быть указан её адрес в DBPEDIA, а вместо предиката «место рождения» – URI описания этого отношения в онтологии DBPEDIA.

LOD4

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

Возникает вопрос: а при чем тут библиотеки? Дело в том, что массив различных сведений, организованный в связанный граф, может помочь библиотекам в каталогизации и при поиске. В первую очередь, нужно вспомнить про Virtual International Authority File (VIAF) www.viaf.org, в котором собрана информация о принятых формах написания имен авторов в разных странах и номер записи об этом авторе в системе ISNI (International Standard Name Identifier ) http://www.isni.org/ .

LODVIAF

Эта информация может помочь при каталогизации, поиске произведений авторов на языке, отличном от языка запроса и т.п. Так, например, в сводном каталоге национальных и научных библиотек Европы, где собран массив библиографических описаний на разных языках, для расширения списка авторов используется VIAF и при вводе запроса Пушкин предлагается также поискать и по Pushkin и Puskin и др.

LOD5

Схему взаимодействия пользователя с подобным сервисом можно представить следующим образом: программное обеспечение, получив запрос от пользователя, обращается на языке  запросов к данным, представленным по модели RDF (SPARQL)  в обогащающие сервисы (базы данных, содержащие дополнительную информацию). Например, если поиск ведется в многоязычном массиве книг и в запросе присутствует фамилия автора, то запрос направляется в VIAF для получения всех форм написания автора. Если в метаданных в электронном каталоге отсутствуют данные о месте или дате рождения автора, а пользователю нужны только авторы, родившиеся в определенной стране и в определенной период времени, то можно обратиться в DBPEDIA и, послав туда соответствующий запрос, получить набор фамилий авторов, по которым искать документы уже в электронном каталоге. Поскольку мы еще не встретили такого готового сервиса, то попробовали оценить, насколько сложным получается запрос в DBPEDIA для получения списка 10 авторов, написавших хотя бы одну книгу и родившихся в России после 1960 г. с выводом информации об их месте и дате рождения, краткой биографии, написанных книгах и фотографией, если такие сведения имеются. Нужно сказать, что запрос получается совсем не сложным (он приведен ниже) и большую часть из него занимает определение используемых схем описания данных.

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>

PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>

PREFIX dbpprop: <http://dbpedia.org/property/>

PREFIX dc: <http://purl.org/dc/elements/1.1/>

SELECT DISTINCT ?Name ?Title ?BirthPlace ?birthData ?authorPicture ?authorDescription WHERE

{

?TitleURL rdf:type dbpedia-owl:Book ;

rdfs:label ?Title ;

dbo:author ?authorURL.

?authorURL foaf:name ?Name;

dbpedia-owl:abstract ?authorDescription ;

dbp:birthPlace ?BirthPlace.

OPTIONAL {

?authorURL foaf:depiction ?authorPicture.}

?authorURL dbpedia-owl:birthDate ?birthData.

FILTER(REGEX(STR(?BirthPlace), “Russia”)).

FILTER (?birthData > “1960-01-01″^^xsd:date) .

FILTER langMatches( lang(?authorDescription), “RU” ) }

LIMIT 10

Отправив этот запрос в DBPEDIA, мы получили в ответ таблицу

 

таблица 1

Для экономии места мы приводим только выдержку из этой таблицы.

Авторы не преувеличивают степень достоверности данных в «Википедии» и соответственно в DBPEDIA. Тем не менее, это очень удобный полигон для испытания различных технологий семантического веба – открытый, подробно размеченный и хорошо документированный.

При обогащении запросов нужно, разумеется, придерживаться принципа разумной меры. В противном случае мы рискуем «завалить» пользователя не нужными ему результатами. Мы, конечно, обеспечим ему полноту выдачи, но в большом количестве полученных результатов пользователь может и не дойти до нужной ему информации. В общем, обогащение поисковых запросов средствами LOD – очень полезный инструмент, если использовать его без фанатизма.

Хорошим примером обогащения результатов поиска может служить сайт www.kbresearch.nl/enrich/ [1]. Поиск в нем происходит обычным способом, но найденный в результате поиска текст «на лету» обрабатывается при помощи программного обеспечения GateAnnie (www.gate.ac.uk). С его помощью в тексте выделяются сущности, которые объединяются в классы и для них автоматически формируются запросы в DBPEDIA. Рис. 6 иллюстрирует запрос в веб на тему «рыболовство в Греции». В ответ система выдала ряд страниц (используется API одной из поисковых систем), в тексте которых были найдены страны (Греция и Исландия) и виды рыб. При наведении курсора на найденное понятие всплывает окно с ссылкой на его страницу в DBPEDIA.

LOD6

Ценность такого обогащения заключается в том, что нам не нужен заранее размеченный и подготовленный текст, работа происходит с обычной выдачей поисковых систем. Хотя, конечно, нельзя не отметить, что в настоящее время механизм автоматического выделения понятий далек от совершенства.

Большое значение для библиотечной деятельности имеют различные нормативные данные в формате LOD. Библиотека Конгресса США опубликовала в виде LOD свои предметные рубрики, классификацию, тезаурусы и ряд других массивов (www.id.loc.gov). Начаты работы по публикации Danish Decimal Classification как Linked Open Data (www.opensource.dbc.dk/linked-data/dk5-linked-data). OCLC провел исследование по представлению классификации Дьюи в виде LOD и даже опубликовало её на сайте www.dewey.info. К сожалению, в последнее время эта страница стала недоступна. Консорциум УДК представил более 2,4 тыс. индексов верхних уровней  иерархии на 49 языках в виде LOD по адресу www.udcdata.info под лицензией Creative Commons. Центральная национальная библиотека Флоренции опубликовала свой тезаурус как LOD (www.thes.bncf.firenze.sbn.it/thes-dati_eng.htm). Эти данные можно скачать и использовать для загрузки в свои информационные системы.

Для того чтобы российская Библиотечно-библиографическая классификация (ББК) также могла быть встроена в семантический веб, мы начали работы по преобразованию ББК в LOD. В настоящее время существуют несколько версий ББК для библиотек различного типа. Для нашей работы мы решили использовать разделители из систематического каталога РГБ, содержащие реальные индексы, которые семантически богаче, поскольку включают в себя кроме индекса еще и типовые деления. Несколько лет назад в рамках работ по ретроконверсии весь систематический каталог был оцифрован и разделители из систематического каталога были распознаны [2]. Массив разделителей имел следующий вид.

Е          Биологические науки

Е.а/я    Биологические науки – Общий раздел

Е.б       Биологические науки — Общий раздел — Руководящие и законодательные материалы СССР, Российской Федерации

………………………….

Е.в01   Биологические науки – Общий раздел – Философские вопросы. Методология – Предмет и задачи биологии

Е.в1     Биологические науки – Общий раздел – Философские вопросы. Методология – Философское значение законов, понятий, теорий биологии (а также отдельные философские понятия в биологии)

 

Самыми ценными в этом массиве были цепочки словесных формулировок каждого индекса, по которым мы смогли формализовать иерархию понятий. Так, например, рубрика Е991.780.551-73 имеет следующую словесную формулировку:

Биологические науки – Физиология, биофизика и биохимия животных и человека – Физиология, биофизика и биохимия функциональных систем, органов и процессов – Физиология, биофизика и биохимия нервной системы и органов чувств – Физиология, биофизика и биохимия нервной системы – Центральная нервная система – Кора головного мозга. Высшая нервная деятельность – Кора головного мозга – Возбуждение и торможение в коре – Сон и гипноз. Зимняя спячка – Сон – Физиология, биофизика и биохимия – Физиология

Далее в качестве примера мы будем рассматривать раздел Е691.82 , который занимает следующее место в ББК.

Е Биологические науки

Е6 Биологические науки – Зоология

Е69 Биологические науки – Зоология – Систематика животных. Специальные зоологические науки

Е691.82 Биологические науки – Зоология – Систематика животных. Специальные зоологические науки – Invertebrata. Беспозвоночные. Зоология беспозвоночных – Arthropoda. Членистоногие – Arachnoidea. Паукообразные. Арахнология

Е691.821 Scorpionoidea. Скорпионы

Е691.822 Pedipalpi. Жгутоногие

Е691.823 Palpigradi. Пальпиграды

Е691.824 Pseudoscorpionidea. Лжескорпионы

……………………………

Е691.828 Acarina. Клещи. Акарология

На начальном этапе нашей работы, мы решили выбрать не очень сложную схему описания рубрик, которая в первом приближении отвечала нашим задачам. Мы выбрали ряд отношений, рекомендуемых в модели Simple Knowledge Organization System (SKOS) http://www.w3.org/2004/02/skos/

skos:notation – код рубрики;

skos:prefLabel – наименование рубрики;

skos:narrower – нижестоящее понятие;

skos:broader – вышестоящее понятие.

Поскольку существующий индекс ББК не годится для автоматического построения иерархии, при разборе массива индексов мы ввели для каждого из них в соответствии с местом в массиве его позицию в иерархии. В нашей схеме этот элемент заносился в поле <rdfs:label>. После конвертирования в RDF вышеприведенный массив выглядел таким образом (верхний заголовок XML-файла опущен):

<rdf:Description rdf:about=”http://oiks.rsl.ru/bbk/record.cgi?id=6.7.9.3.25.8″>

<rdf:type rdf:resource=”http://www.w3.org/2004/02/skos/core#Concept”/>

<skos:notation>Е691.82</skos:notation>

<skos:prefLabel xml:lang=”ru”>Arachnoidea. Паукообразные. Арахнология</skos:prefLabel>

<rdfs:label>6.7.9.3.25.8</rdfs:label>

<skos:narrower rdf:resource=”http://oiks.rsl.ru/bbk/record.cgi?id=6.7.9.3.25.8.1″ />

<skos:narrower rdf:resource=”http://oiks.rsl.ru/bbk/record.cgi?id=6.7.9.3.25.8.2″ />

……………………………………………

<skos:narrower rdf:resource=”http://oiks.rsl.ru/bbk/record.cgi?id=6.7.9.3.25.8.11″ />

<skos:broader rdf:resource=”http://oiks.rsl.ru/bbk/record.cgi?id=6.7.9.3.25″ />

</rdf:Description>

Для работы нам нужно было загрузить полученный RDF-файл в семантическое хранилище для последующего манипулирования ими с помощью SPARQL-запросов. Изучив опыт Д.А. Малахова в выборе программного обеспечения [3], мы решили, что оптимальным решением для нашей задачи будет использование Virtuoso Universal Server, разработанного компанией OpenLink Software (www.virtuoso.openlinksw.com), сочета.otuj простотe установки и достаточную функциональность.

Действительно, мы установили Virtuoso Universal Server на сервере в РГБ по адресу www.oiks.rsl.ru:8890/sparql безо всяких проблем и загрузили туда опытный массив данных. Мы изначально рассчитывали, что хотим сделать сервис, позволяющий обслуживать SPARQL-запросы, а не просто разместить файл в формате RDF. По нашим представлениям, использование этого массива возможно в соответствии со следующими сценариями.

Обогащение библиографического описания. Предположим, что у нас есть книга, с проставленным индексом ББК «Е691.82…». Для того чтобы получить ключевые слова для описания этой книги, можно использовать словесные наименования рубрик ББК этого уровня и любого количества нижестоящих уровней. Для такого определения нужно просто направить запрос на языке SPARQL в нашу базу. В описываемом случае мы запросили один нижестоящий уровень.

LODVirtuozo

В результате мы получим наименование рубрики Е691.82 и список наименований одного нижестоящего уровня.

Label child_label
“Arachnoidea. Паукообразные. Арахнология”@ru “Экология и география”@ru
“Arachnoidea. Паукообразные. Арахнология”@ru “Scorpionoidea. Скорпионы”@ru
“Arachnoidea. Паукообразные. Арахнология”@ru “Pedipalpi. Жгутоногие”@ru
“Arachnoidea. Паукообразные. Арахнология”@ru “Palpigradi. Пальпиграды”@ru
“Arachnoidea. Паукообразные. Арахнология”@ru “Pseudoscorpionidea. Лжескорпионы”@ru
“Arachnoidea. Паукообразные. Арахнология”@ru “Solpugidea. Сольпуги. Фаланги”@ru
“Arachnoidea. Паукообразные. Арахнология”@ru “Opiliones. Сенокосцы”@ru
“Arachnoidea. Паукообразные. Арахнология”@ru “Araneina. Пауки”@ru
“Arachnoidea. Паукообразные. Арахнология”@ru “Acarina. Клещи. Акарология”@ru

Точно такой же результат мы получим, если будем искать не по индексу ББК, а по слову из формулировки наименования рубрики (ниже приведен такой запрос).

SELECT ?label ?child_label

{ ?obj skos:prefLabel ?label.

FILTER(REGEX(STR(?label), “Паукообразные”)).

?obj skos:narrower ?child.

?child skos:prefLabel ?child_label }

LIMIT 100

Другим сценарием является обогащение запроса. Предположим, что пользователь хочет найти все документы по паукообразным. Если он просто введет в поисковую строку термин «паукообразные», то получит только те документы, в которых присутствует именно это слово. Хочу обратить внимание на то, что речь не идет только об электронном каталоге библиотек, а обо всех поисковых сервисах, таких как «Яндекс», Google и т.п. В каких-то документах, посвященных, например, фалангам, не будет слова «паукообразные», поскольку автор сочтет совершенно очевидным то, что фаланги относятся к паукообразным и не упомянет этого в тексте. Для того чтобы обогатить запрос наименованиями конкретных представителей паукообразных, нужно добавить наименования всех нижестоящих на одно деление рубрик через оператор «или» (клещи, сенокосцы, скорпионы и т.п.). В некоторых случаях возможно лучше добавить наименования всех нижестоящих рубрик всех уровней. Например, если кто-то ищет по термину «членистоногие», то для наиболее полного поиска можно добавить в запрос через оператор «или» следующие термины: «паукообразные», «трилобиты», «ракообразные», «скорпионы», «дафнии» т.п.

Label child_label child1_label child2_label
“Arthropoda. Членистоногие”@ru “Arachnoidea. Паукообразные. Арахнология”@ru “Scorpionoidea. Скорпионы”@ru “Физиология, биофизика и биохимия”@ru
“Arthropoda. Членистоногие”@ru “Arachnoidea. Паукообразные. Арахнология”@ru “Araneina. Пауки”@ru “Экология и география”@ru
“Arthropoda. Членистоногие”@ru “Crustacea. Ракообразные. Карцинология”@ru “Entomostraca. Низшие раки”@ru “Branchiopoda. Жаброногие”@ru
“Arthropoda. Членистоногие”@ru “Crustacea. Ракообразные. Карцинология”@ru “Entomostraca. Низшие раки”@ru “Cladocera. Ветвистоусые. Дафнии”@ru
“Arthropoda. Членистоногие”@ru “Насекомые. Энтомология”@ru “Высшие (крылатые) насекомые”@ru “Стрекозы”@ru
“Arthropoda. Членистоногие”@ru “Насекомые. Энтомология”@ru “Высшие (крылатые) насекомые”@ru “Поденки”@ru
“Arthropoda. Членистоногие”@ru “Trilobitae. Трилобиты”@ru “Палеозойская фауна”@ru “Кембрийская фауна”@ru
“Arthropoda. Членистоногие”@ru “Trilobitae. Трилобиты”@ru “Палеозойская фауна”@ru “Ордовикская фауна”@ru

Ниже приведена схема взаимодействия пользователя с сервисом обогащения поисковых запросов.

LOD7

Ответы на запрос можно получать в различном виде. В Virtuozo предусмотрена возможность получения ответа в HTML, JSON RDF/XML и др. В настоящее время система находится на стадии разработки. Мы сделал прототип, загрузили в систему несколько разделов ББК и продолжаем готовить к загрузке остальные разделы.

К сожалению, в настоящее время только немногие библиотеки России начали работу в области открытых связанных данных. Авторы надеются, что данная статья привлечет внимание широкой общественности к возможностям этого подхода и количество открытых наборов данных и Sparql endpoint начнет увеличиваться.

 

 

 

 

Шварцман М.Е., Найдин О.П.

(работа выполнена при поддержке РФФИ, грант 15-07-05265 А)

Литература.

  1. Fafalios P., Tzitzikas Y. – X-ENS: Semantic Enrichment of Web Search Results at Real-Time /SIGIR’13, 2013. – Режим доступа http://62.217.127.118/x-ens.
  2. Лаврёнова О.А. Возможности пользователя при поиске информации в электронных библиотеках, или «Витязь на распутье» / Библиотековедение 2013.- №3.- С. 43-52
  3. Малахов Д.А., Серебряков В.А., Теймуразов К.Б., Шорин О.Н. Интеграция библиографических данных в Linked Open Data // Труды 16-й Всероссийской научной конференции «Электронные библиотеки: перспективные методы и технологии, электронные коллекции». – RCDL–2014, Дубна, Россия, 13–16 октября 2014 г.

 


Комментарии

Боровинский Арсен Исаевич

Спасибо авторам за статью.

Дополню еще, что есть как минимум два конкурирующих стандарта по описанию связей:

http://schema.org/ – веб и поисковые системы;
http://www.rdaregistry.info/ – библиотеки.

Михаил, а под какой лицензией РГБ планирует отдавать свои данные (включая ББК) в интернет?

То, что УДК открыт под Creative Commons, думаю, не случайность, а как раз необходимость, иначе потребителя для твоих LOD будет сложно найти…

Михаил Шварцман

Я не могу ответить за РГБ, тем более, что пока еще проект не закончен и полностью данные не выложены.
Со своей стороны, лично я всегда агитировал за открытый доступ, поскольку совершенно согласен, что в противном случае потребителей будет немного.

Боровинский Арсен Исаевич

Михаил, а какие основания предполагать, что запросы надо обогащать от общего к частному? Есть какие-то исследования на эту тему, которые бы показывали пользу и в каких случаях?

Вот мне, чисто априорно, не кажется, что надо проводить обогащение от общего к частному.

Условно говоря, если пользователь ищет “текучесть жидкостей”, то он не ищет “текучесть масла”. Он хочет получить ответ на том уровне абстракции на котором задан запрос.

Сделать синонимиальную подстановку – да, возможно следует, но это можно сделать и на уровне поискового движка.

Также можно сказать, что если пользователь попал поисковым запросом в термин ББК, то аналогично описанному обогащению можно сделать подстановку типа ” bbk = *Е691.82* ” . Т.е. провести обычный полнотекстовый поиск с усечением по индексу воспользовавшись тем, что классификации уже включают в себя движение от общего к частному.

Михаил Шварцман

Я не уверяю, что всегда нужно обогащать запросы от общего к частному. Но уверен, что в некоторых случаях это будет полезно. Поэтому считаю полезным сервис, который умеет это делать. Если в поисковой системе есть инструмент поиска ББК, то возможно использовать его усечение. Однако, в большинстве систем ББК нет и обогащение дополнительными частными понятиями будет полезно для повышения полноты результатов поиска.

Боровинский Арсен

Михаил, расскажите пожалуйста, на какой стадии проект LOD находится сегодня?

Если не секрет, какое административное решение принято по открытым данным в РГБ?

Михаил Шварцман

Почти все записи ББК загружены в базу данных, сейчас мы изучаем вопросы использования результатов исследований и разработок в других проектах аналогичного характера. К концу 2017 года должны что то придумать и попробовать сделать.
Административных решений пока никаких не принято. Сначала нужно сделать.

Боровинский Арсен Исаевич

В любом случае: открытые данные – это хорошо. А связанные открытые данные – еще лучше.

Не всегда можно угадать кто и как будет их использовать, но раз уж они в принципе есть – надо предоставить возможность их использовать всем желающим.

Боровинский Арсен Исаевич

Михаил, еще есть соображение по поводу:

“Принципиальной особенностью LOD является использование универсальных идентификаторов ресурса (Universal Resource Identifier, URI), однозначно определяющих место, куда можно обратиться за раскрытием понятия”

В LOD URI идентифицирует ресурс, а положение определяет URL, а не URI. Просто в российских публикациях не в первый раз встречаю мнение, что зная URI ресурса в LOD можно вытащить о нем данные. В общем случае это не так. Хотя, конечно, поставщикам связанных данных следует к этому стремиться.


Оставить комментарий

Скрыто от всех