2016-11-07 4 views
1

Согласно the GraphDB documentation, можно напрямую запрограммировать его базу данных RDF4J. Это противоречит моей интуиции, что к одним и тем же файлам базы данных можно одновременно обращаться двумя отдельными приложениями. Правильно ли это обрабатывается, включая одновременную запись?Может ли приложение напрямую запрограммировать базовую базу данных RDF4J от GraphDB?

Я считаю, что GraphDB использует более старую версию Sesame 2.9. Изменен ли формат файла с помощью последней версии RDF4J 2.1? Или мне нужно использовать эту более старую версию Sesame?

Я предполагаю, что если все вышеизложенное правильно, то есть большой бонус к производительности по сравнению с HTTP-подключением. Есть ли какие-либо результаты испытаний, чтобы поддержать это?

ответ

1

Я считаю, что GraphDB использует более старую версию Sesame 2.9. Изменен ли формат файла с последней версией RDF4J 2.1? Или мне нужно использовать вместо этой старой версии кунжута?

Сезам 2,9 до сих пор использует Java 7, кунжутное 4 и RDF4J использовать Java 8

Формат файла не изменился, но программирование API изменился совсем немного между SESAME2 и 4, так что если GraphDB действительно использует кунжут 2.9, чем вам нужно использовать ту же версию.

для получения дополнительной информации см также http://docs.rdf4j.org/migration/

2

Я думаю, что есть немного путаницы здесь. GraphDB не имеет «базовой базы данных RDF4J/Sesame». На самом деле это наоборот: RDF4J/Sesame предоставляет стандартизованный API доступа Java для баз данных RDF, а GraphDB - это реализация этого API.

Вы можете программно обращаться к хранилищу GraphDB с помощью API-интерфейсов Sesame, как описано в документации GraphDB. Sesame предоставляет способы доступа к локальной базе данных (встроенной в собственное приложение) или удаленной базе данных (доступной через HTTP). Как вы правильно поняли, вы не можете получить доступ к базе данных локально с несколькими приложениями - если требуется доступ к нескольким приложениям, вам необходимо, чтобы оба приложения обращались к базе данных через HTTP (или одно приложение обращалось непосредственно к другому приложению, но для этого требуется много пользовательского кодирования).

Что касается Sesame 2.9 vs RDF4J, как указано в правильном значении @ChristophE, есть некоторые отличия (подробности см. На странице migration guide), поэтому ваша версия GraphDB, вероятно, пока не будет работать с RDF4J. Однако следующий предстоящий выпуск GraphDB будет поддерживать RDF4J.

Что касается производительности: естественно, связь через HTTP несет штраф за производительность по сравнению с прямым доступом. Боюсь, у меня нет точных цифр. Однако как сам Sesame/RDF4J, так и GraphdB были спроектированы таким образом, чтобы максимально уменьшить это наказание, так что это не довольно так плохо, как вы могли бы подумать.

Смежные вопросы