Использование Jena Deeer на Neo4J db
Я впервые пишу здесь, но я действительно столкнулся с проблемой: возможно ли использовать аргумент Jena в базе данных No-SQL, такой как Neo4J, уже заполненной данными?
У меня есть график Neo4J, представляющий кучу троек, и я хотел бы использовать для них Jena API и Jena. Я думал об использовании компонента SDB/TDB в Jena, но я не понимаю, как на самом деле загрузить данные в мою модель, так как компонент SDB, кажется, работает только с базами данных SQL, и прохождение всего TDB Javadoc кажется немного перебор. Должен ли я определить какой-то файл конфигурации для модели TDB?
Большое спасибо за помощь.
3 ответа
Вы должны взглянуть на эту ссылку, которая описывает связь между neo4j и триплетами. Или возможные соединения по крайней мере.
Модель neo4j сильно отличается от модели RDF, которую использует Джена. RDF состоит из троек, то есть субъектов, предикатов и объектов. Вот пример графика, составленного из троек. Обратите внимание на использование URI для идентификации ресурсов и обратите внимание, что узлы обычно представляют собой атомарные значения данных. Это URI, простое число, строка и так далее.
В Neo4j узлами являются "Контейнеры свойств". Это означает, что это не просто URI, а фактически наборы информации. Отношения соединяют узлы. Таким образом, "предикаты" RDF в некотором роде похожи на отношения Neo4j, но узлы neo4j не похожи на ресурсы и литералы RDF.
Ваша основная задача, если вы хотите использовать рассуждения над базой данных neo4j, состоит в том, чтобы выкачивать данные из neo4j и форматировать их как набор троек RDF. Затем вы можете поместить эти тройки RDF в модель Jena. Если у вас есть эта модель jena в памяти, вы можете использовать существующие API-интерфейсы jena для использования аргументов с этой моделью.
Я немного опоздал на вечеринку, но вы можете использовать https://github.com/neo4j-labs/neosemantics, чтобы вывести данные Neo4J в тройки и прочитать их в модели Jena
Я нахожусь в процессе создания neo4j-реализации jena API. Для этого я создаю подклассы ObjectProperty, Individual и OntClass и реализую запросы к конечной точке neo4j.
Основная проблема заключается в том, что для рассуждений вся база данных должна быть загружена в память, чтобы использовать рассуждения Джены о памяти. Мое решение на данный момент состоит в том, чтобы использовать "разумный"-сервер для обработки этого и записывать новые результаты в основной уровень персистентности. Это, конечно, подходит только для систем долгосрочных рекомендаций, но не для взаимодействия с пользовательским интерфейсом.
Посмотрите здесь текущее состояние проекта:
https://github.com/uzuzjmd/Wissensmodellierung
Путь: база данных компетенций \src\main\scala\uzuzjmd\ компетенция \ персистентность \neo4j
Все, кто заинтересован в участии в этом проекте с открытым исходным кодом, могут связаться со мной.