Структура базы данных тройного магазина?

Я хочу использовать RDF/triples в своем проекте Symfony2 для организации вещей (в моем случае это теги).

Я бы увидел что-то вроде этого:

ENTITY TAG  <-------------- TAG_TAG --------------> ASSOCIATION_TYPE
         ^                     |
         |---------------------/

Поля:

TAG
  ID
  Tag (text)
  Description (text/html)

TAG_TAG
  ID
  *TAG1
  *TAG2
  *ASSOCIATION_TYPE
  ASSOCIATION_PARAM

Таким образом, я мог бы:

  • Для хранения тройных ассоциаций
  • Для установки различных типов ассоциации. Например, PHP является языком программирования ; stackoverflow.com является веб-сайтом; но Земля вращается вокруг Солнца.
  • Задавать параметры (что позволяет давать больше информации внутри ассоциаций)

Мы могли бы установить отношение «многие ко многим» между TAG_TAG и ASSOCIATION_TYPE. Сделав это, мы могли бы установить несколько параметров.

Итак, у меня есть несколько вопросов:

  1. Как вы думаете, это хороший способ эффективно хранить триплеты?
  2. Есть ли какой-либо слой RDF для извлечения существующих баз данных RDF/triples и заполнения моих собственных?
  3. Должен ли я рассмотреть возможность использования какого-то тройного хранилища, такого как Sesame, и использовать его с Symfony?

person Creasixtine    schedule 29.05.2012    source источник


Ответы (2)


Чтобы ответить на ваши вопросы:

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

Если вы спрашиваете о хранении троек, не спрашивайте. Смотрите мой ответ на №3.

2) Доступно множество библиотек RDF, у вас есть Jena и Sesame для Java, dotNetRdf для мира .Net, RDFLib на питоне, редланд для C и т. д.

3) Да. Не пытайтесь заново изобретать велосипед и строить свой собственный тройной магазин. Это непростой проект, и вы не преуспеете даже в худшем существующем тройном магазине в любом разумном масштабе времени.

person Michael    schedule 30.05.2012
comment
Большое спасибо. Я собираюсь попытаться найти что-нибудь для использования с фреймворком Symfony2. - person Creasixtine; 31.05.2012
comment
Я думаю, что это в PHP, верно? Если это так, мне сказали, что ARC (github.com/semsol/arc2/wiki) путь, если вы делаете PHP с RDF. Сам я PHP не использую, так что это знания из вторых рук, поэтому ymmv. Но вы должны начать там. - person Michael; 31.05.2012
comment
Большое спасибо еще раз! Я думаю, я попробую это. - person Creasixtine; 01.06.2012

Как сказал Майкл, пожалуйста, не стройте свой собственный тройной магазин! В PHP доступно несколько решений:

  • ARC2 предоставляет тройное хранилище на основе MySQL.
  • Расширение librdf предоставляет PHP-оболочку для стандартной RDF-библиотеки C.
  • Erfurt Library – это библиотека абстракций для подключения к Virtuoso Server тройное хранилище, но также имеет собственное тройное хранилище на основе Zend DB, которое можно использовать с MySQL.
person chiborg    schedule 23.07.2014