Смешивание RDF и ORM подходов

Я работаю в команде, исследующей технологический стек для проекта по интеграции систем с экологией. Часть нашего стека избранных технологий использует Hibernate для сохранения своего внутреннего состояния и предоставляет хуки для транзакций Hibernate, так что бизнес-объекты остаются синхронизированными с состоянием этой утилиты. Отлично, за исключением того, что нам нужно хранить информацию о сущностях неизвестного типа и связывать эти данные с предопределенными типами. Нам нужно масштабируемое хранилище данных, которое не требует предварительного определения схемы. Самое приятное было бы смешать данные RDF и управляемые объекты Hibernate.

Сталкивались ли вы с подобным требованием и какие подходы вы можете порекомендовать?
Любая смесь RDF/ORM должна поддерживать нечастые крупномасштабные запросы для отчетов и исследования данных, а также частые целевые операции чтения и записи для поддержки транзакций.

4 ответа

Я использую RDF в своем проекте, и мы использовали OWL, чтобы определить онтологию для данных RDF и придать им некоторую структуру. Оттуда мы генерируем классы C# из онтологии OWL. Приятно то, что вы можете добавлять дополнительные данные о своем предмете, но при этом иметь структуру классов, которая имеет смысл в большинстве случаев.

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

Посмотрите здесь аналогичную проблему с аналогичным решением.

На вики-странице Tripresso есть список картографов Object-RDF, которые позволяют работать с данными RDF объектно-ориентированным способом. Я сомневаюсь, что любой из них интегрируется напрямую с Hibernate, но они, по крайней мере, обеспечивают нечто подобное.

Одним из решений является сохранение объектной модели на уровне тройного хранилища RDF, например, с помощью классов для

  • узлы: урис, пробелы и литералы
  • операторы: наборы из трех или более узлов (три для тройки RDF, дополнительные узлы для мета)

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

Другие вопросы по тегам