Кто-нибудь знает, как заставить команду tdb2.dump действительно что-то делать

#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) определяет существующий тип базы данных.