Dockerized DBpedia: Uploading ttl files manually through Virtuoso Conductor / ISQL

I’ve tried the bulk loader through Virtuoso Conductor -> Interactive SQL (ISQL) . I use the ld_dir command, i.e.

ld_dir('C:\\path\\to\\ttl\\parent\\folder', '*.ttl', 'http://dbpedia.org');

but when I execute the above command I get the following error:

The statement execution did not return a result set.
SQLState: 39000
Message: FA020: Unable to list files in ‘C:\Users\blah blah’

Do you know what might be wrong with this one? I’ve used double backslashes, since single backslashes seem to create a problem on Windows.

Thanks!

Unfortunately I do not have experience with docker under windows. But I think it is not the correct way to access Windows path from the docker container this way.

Actually the compose setup is configured to download data from databus. However @janfo wrote another (see below) compose file you could use to replace the compose file. But in any case we think before running docker-compose up, create a folder “data” next to the docker-compose.yml and fill it with your data.

version: '3'
services:
  store:
    image: openlink/virtuoso-opensource-7
    ports: ["8891:8890","1111:1111"]
    environment:
      DBA_PASSWORD: dbpedia
    volumes:
      - ./virtuoso-db:/opt/virtuoso-opensource/database
      - ./data:/usr/share/proj
  load:
    image: dbpedia-virtuoso-loader:latest
    environment:
      STORE_DATA_DIR: /usr/share/proj
      STORE_DBA_PASSWORD: dbpedia
      DOMAIN: http://en.dbpedia.org

The data folder is then mounted to the store image and the load image will instruct virtuoso in store image via isql to load the files automatically.

If you start the virtuoso docker with a volume mounted like ./data:/usr/share/proj as in the docker-compose you can run ld_dir('/usr/share/proj', 'your_data_file.ttl', 'http://dbpedia.org'); after putting your additional data into the data folder on your local machine.

The ld_dir command needs a folder inside the virtuoso docker container. Also the virtuoso needs access to the folder which it has to /usr/share/proj per default.

If you already started the whole infrastructure using the load container, you do NOT have to run the load container again. The load container is mainly there to load initial data and install the dbpedia plugin. If you want to add additional data, put it into the mounted data folder and tell virtuoso to load it from usr/share/proj as described above!

Thanks for the reply. So, the right steps are:

  1. Create a data folder within the root project folder (i.e in the same folder wher the docker-compose.yml file lives).
  2. docker-compose up store
  3. docker-compose up load

Are there any other steps I need to follow?

Also, when I save files in the $ROOT/data folder, do they have to be .bz2 or .ttl?

I think virtuoso can handle both compressed and uncompressed files.

I think bz2 can not be read by virtuoso but gz

@jfrey @jfrey

Thank you, guys. Thanks to your valuable guidance I managed to upload new datasets and get new properties and their corresponding values. Since I’m new to this, if I have any other questions, I’ll come back!

Thanks, again!

You are welcome. We also need Windows testers :wink: