Нет, не совсем. Вы не можете просто слепо запрашивать базу данных, вы должны знать кое-что о том, что в ней содержится, чтобы придумать осмысленный запрос и получить часть интересующих вас данных.
Но, не имея никаких знаний о наборе данных, вы можете запустить несколько очень общих запросов, чтобы начать создавать строительные блоки навигации, например
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