Граф URI на GraphDB - PullRequest
       45

Граф URI на GraphDB

0 голосов
/ 22 апреля 2020

Концепция графа SPARQL для меня все еще абстрактна.

Схожи ли графики с таблицами SQL? Может ли одна тройка принадлежать более чем одному графу?

Есть ли способ получить URI графа, которому принадлежит тройка?

Есть ли способ получить URI каждого графа, хранящегося в репозитории GraphDB? Чтобы получить URI графика по умолчанию?

Спасибо,

Ответы [ 2 ]

1 голос
/ 22 апреля 2020

В дополнение к ответам UninformedUser, графики также могут быть перечислены с помощью следующей команды cURL curl 'http://<host>:<port>/repositories/<your_repo>/contexts'.

Можно легко исследовать и экспортировать содержимое графиков в хранилище GraphDB с помощью Workbench. enter image description here

Здесь также можно найти значение графика по умолчанию.

0 голосов
/ 28 апреля 2020

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

Реляционная модель

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

Модель графика

В отличие от этого, SparQL - это язык запросов, имеющий SQL -подобный синтаксис, но работает с графическими данными. Модель данных графа не хранит данные в виде таблиц. Вместо этого он использует тройное хранилище (другой вариант - использовать граф свойств, но ваш вопрос относится к тройному хранилищу). RDF-тройки - это стандартный способ W3 C для описания операторов в модели данных графа. Он состоит из Subject, Predicate, Object. Subject - это сущность, к которой относится тройка, Predicate - это тип отношений, а Object - это сущность или свойство, к которому относится субъект. Субъект всегда имеет уникальный идентификатор (например, URI), тогда как объект может быть литералом или другим объектом с URI.

Дальнейшее сравнение

Вы можно взглянуть на более подробное сравнение моделей в главе 2 (Варианты хранения связанных данных) книги: Графические базы данных, 2-е издание, Ян Робинсон, Джим Уэббер, Эмиль Эйфрем

Возвращаясь к вашим вопросам

Графики похожи на SQL Таблицы? Может ли одна тройка принадлежать более чем одному графику?

Нет, графики не являются SQL таблицами. И да, одна тройка может появиться на разных графиках (при условии, что тройка имеет одинаковые Предмет, Предикат и Объект). Однако, если вы используете разные онтологии, тройка появится в другом контексте.

Есть ли способ получить URI графа, которому принадлежит тройка? Есть ли способ получить URI каждого графа, хранящегося в репозитории GraphDB? Чтобы получить URI графика по умолчанию?

Запросы SparQL - это графовые шаблоны. Вам необходимо указать тип структуры, которую вы ищете.

Как прокомментировал UninformedUser:

Все тройки

select distinct ?g {graph ?g {?s ?p ?o}}

Все структуры, содержащие указанную c тройку

select distinct ?g {graph ?g {:s :p :o}}
...