Как запрашивать данные из разных неизвестных структурированных rdf-графов?

За несколько лет количество связанных данных быстро выросло. Существуют различные графики, опубликованные с использованием RDF. Каждый граф имеет свои собственные префиксы и словарные структуры.

Итак, как можно запрашивать определенные объекты и связанные данные с помощью этих графиков?

Нужно ли изучать индивидуальную структуру каждого графа и реализовывать ее в системной логике?

Или есть хороший подход к запросу данных с помощью SPARQL, не зная структуры?


person sn3ek    schedule 09.11.2012    source источник


Ответы (1)


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

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

select distinct ?p where { ?s ?p ?o }

Это вернет каждый предикат, используемый в базе данных. Чтобы получить, грубо говоря, все классы:

select distinct ?t where { ?s a ?t }

Или вы можете комбинировать их, чтобы получить все предикаты, используемые каждым классом.

select distinct ?p ?t where { ?s a ?t . ?s ?p ?o }

Задавая такого рода запросы, вы можете начать понимать, что находится в базе данных. Но на самом деле они просто пытаются приблизиться (т.е. угадать), какова основная схема данных. Поэтому вам лучше просмотреть схему RDF или онтологию OWL, связанную с данными, если она существует. Кроме того, эти запросы, учитывая их универсальность, могут быть нетривиальными для обработки базы данных в зависимости от оптимизации, предоставляемой базой данных. Поэтому вы можете подумать об этом, прежде чем запускать их в любую случайную конечную точку.

Некоторые наборы данных в облаке LoD могут содержать описание voiD, в котором излагаются некоторые из ваших d из приведенных выше запросов или беглого просмотра схемы, и этого будет достаточно, чтобы начать работу.

Как правило, вы не хотите просто начать обход графа, вам лучше изучить структуру графа и придумать несколько точных запросов, которые захватывают подмножества данных, которые вас больше всего интересуют для вашего приложения. Одна хорошая вещь в облаке LoD заключается в том, что многие наборы данных в некоторой степени перекрываются в словарях, которые они используют. Таким образом, вооружившись знанием общеупотребительных словарей, таких как FOAF или Dublin Core, вы сможете извлечь пользу из исследования. Затем, если вы объедините это со словарями, используемыми частями облака, вы сможете начать формулировать запросы, которые будут работать для вашего приложения.

Чтобы ответить на ваш первоначальный вопрос, если он еще не ясен, да, вы можете запросить конкретный объект в графе, все, что вам нужно знать, это его URI. На самом деле, как только вы это узнаете:

describe <uri_of_the_interesting_entity>

Вы получите соответствующее подмножество графика для этого объекта. То, что возвращается в запросе описания, зависит от того, какой алгоритм использует база данных, но, как правило, он будет включать как минимум все триплеты, предметом которых является вещь.

Вам может потребоваться некоторое время, чтобы просмотреть спецификацию SPARQL, если вы еще не знакомы с ней. . Удачи.

person Michael    schedule 09.11.2012