#jena #tdb
#jena #tdb
Вопрос:
Я пытаюсь создать базу данных jena в виде троек.
Кажется, есть команда, которая идеально подходит для этой задачи: tdb2.dump
jena@debian-clean:~$ ./apache-jena-3.8.0/bin/tdb2.tdbdump --help
tdbdump : Write a dataset to stdout (defaults to N-Quads)
Output control
--output=FMT Output in the given format, streaming if possible.
--formatted=FMT Output, using pretty printing (consumes memory)
--stream=FMT Output, using a streaming format
--compress Compress the output with gzip
Location
--loc=DIR Location (a directory)
--tdb= Assembler description file
Symbol definition
--set Set a configuration symbol to a value
--mem=FILE Execute on an in-memory TDB database (for testing)
--desc= Assembler description file
General
-v --verbose Verbose
-q --quiet Run with minimal output
--debug Output information for debugging
--help
--version Version information
--strict Operate in strict SPARQL mode (no extensions of any kind)
jena@debian-clean:~$
Но мне не удалось заставить ее записывать что-либо в стандартный вывод.
Когда я использую --loc
параметр для указания на базу данных, новая копия этой базы данных появляется во вложенной папке: Data-0001
, но в стандартном выводе ничего не отображается.
Когда я пытаюсь использовать --tdb
параметр и указываю его на ttl
файл, я получаю трассировку стека, жалующуюся на его форматирование.
Google обнаружил документацию Jena, в которой говорится, что команда существует, и все. Так что любая помощь приветствуется.
Комментарии:
1.
--loc
должно быть таким же, как используется для создания базы данных. Предположим, что это «DB2». Для TDB2 (не TDB1) после создания базы данныхDB2/Data-0001
уже будет существовать. Не используйте это для--loc
. Если это база данных TDB1 (файлы находятся в каталоге «—loc»), используйтеtdbdump
. В пустой базе данных нет троек / квадратов, поэтому вы не получите выходных данных.2. @AndyS Я мог запросить свою базу данных в Fuseki, поэтому она содержала абсолютные тройки, прежде чем я когда-либо пытался ее сбросить. Я был совершенно убежден, что это база данных tdb2, но, увидев ваши комментарии, я начинаю сомневаться в себе. Я посмотрю, в чем проблема. Спасибо!
3. К вашему сведению, следующая версия Fuseki определяет существующий тип базы данных. В настоящее время она должна вызываться с одной и той же настройкой при каждом запуске, что является хрупким в отношении TDB1 / TDB2. Если вы создали базу данных TDB2 вне Fuseki и используете только аргументы командной строки, вам понадобится «—tdb2».
4. ХОРОШО! Спасибо @AndyS. Добавьте что-нибудь из этого в ответ, и я дам вам 25 баллов 🙂
Ответ №1:
«—loc» должно быть таким же, как используется для создания базы данных.
Предположим, что это «DB2». Для TDB2 (не TDB1) после создания базы данных «DB2 /Data-0001» уже будет существовать. Не используйте это для —loc. Используйте «—loc DB2».
Если это база данных TDB1 (файлы находятся в каталоге «—loc», без «Datat-0001»), используйте tdbdump
. В пустой базе данных нет троек / квадратов, поэтому вы не получите выходных данных.
В настоящее время Fuseki (до 3.16.0) должен вызываться с одной и той же настройкой при каждом запуске, что является хрупким в отношении TDB1 / TDB2. Если вы создали базу данных TDB2 вне Fuseki и используете только аргументы командной строки, вам понадобится «—tdb2» каждый раз.
Fuseki в следующей версии (3.17.0) определяет существующий тип базы данных.