qlever 0.5.6__py3-none-any.whl → 0.5.8__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of qlever might be problematic. Click here for more details.

@@ -1,20 +1,20 @@
1
1
  # Qleverfile for DBLP, use with https://github.com/ad-freiburg/qlever-control
2
2
  #
3
- # qlever get-data # takes ~3 mins (downloads .ttl.gz file of size ~3 GB)
4
- # qlever index # takes ~4 mins (on an AMD Ryzen 9 5900X)
5
- # qlever start # takes a few seconds
3
+ # qlever get-data # ~5 GB compressed, 1.3 B triples
4
+ # qlever index # ~30 min (on an AMD Ryzen 9 5900X)
5
+ # qlever start # ~1 sec
6
6
 
7
7
  [data]
8
8
  NAME = dblp
9
- GET_DATA_URL = https://dblp.org/rdf/dblp.ttl.gz
10
- GET_DATA_CMD = curl -LRC - -O ${GET_DATA_URL} 2>&1 | tee ${data:NAME}.download-log.txt
9
+ GET_DATA_URL = https://sparql.dblp.org/download/dblp_KG_with_associated_data.tar
10
+ GET_DATA_CMD = (curl -LRC - -o dblp+citations.tar ${GET_DATA_URL} && tar -xf dblp+citations.tar) 2>&1 | tee ${NAME}.download-log.txt
11
11
  VERSION = $$(date -r dblp.ttl.gz +"%d.%m.%Y %H:%M" || echo "NO_DATE")
12
- DESCRIPTION = DBLP computer science bibliography, data from ${GET_DATA_URL} (version ${VERSION})
12
+ DESCRIPTION = DBLP computer science bibliography + citations from OpenCitations, data from ${GET_DATA_URL} (version ${VERSION})
13
13
 
14
14
  [index]
15
- INPUT_FILES = dblp.ttl.gz
15
+ INPUT_FILES = *.gz
16
16
  CAT_INPUT_FILES = zcat ${INPUT_FILES}
17
- SETTINGS_JSON = { "ascii-prefixes-only": false, "num-triples-per-batch": 1000000, "prefixes-external": [""] }
17
+ SETTINGS_JSON = { "ascii-prefixes-only": false, "num-triples-per-batch": 1000000, "languages-internal": [], "prefixes-external": [""] }
18
18
 
19
19
  [server]
20
20
  PORT = 7015
@@ -1,37 +1,37 @@
1
1
  # Qleverfile for OHM Planet, use with https://github.com/ad-freiburg/qlever-control
2
2
  #
3
3
  # qlever get-data # ~20 mins (download PBF, convert to TTL, add GeoSPARQL triples)
4
- # qlever index # ~10 mins and ~5 GB RAM (on an AMD Ryzen 9 5900X)
4
+ # qlever index # ~20 mins and ~5 GB RAM (on an AMD Ryzen 9 5900X)
5
5
  # qlever start # ~1 sec
6
6
  #
7
- # For `qlever get-data` to work, `osm2rdf` and `spatialjoin` must be installed
8
- # and included in the `PATH`.
7
+ # For `qlever get-data` to work, `osm2rdf` must be installed and in the `PATH`.
9
8
 
10
9
  [data]
11
10
  NAME = ohm-planet
12
11
  GET_DATA_URL = https://planet.openhistoricalmap.org/planet
12
+ CHECK_BINARIES = osm2rdf -h > /dev/null || (echo "osm2rdf not found, make sure that it's installed and in your PATH" && exit 1)
13
13
  GET_DATA_CMD_1 = curl -LRfC - -o ${NAME}.pbf $$(curl -s ${GET_DATA_URL}/state.txt) 2>&1 | tee ${NAME}.download-log.txt
14
- GET_DATA_CMD_2 = osm2rdf ${NAME}.pbf -o ${NAME}.ttl --source-dataset OHM --simplify-wkt 0 --write-ogc-geo-triples none 2>&1 | tee ${NAME}.osm2rdf-log.txt
15
- GET_DATA_CMD_3 = bzcat ${NAME}.ttl.bz2 | \grep "^osm2rdf" | sed -En 's/^osm2rdf(geom)?:(ohm_)?(node|rel|way)[a-z]*_([0-9]+) geo:asWKT "([^\"]+)".*/ohm\3:\4\t\5/p' | tee ${NAME}.spatialjoin-input.tsv | spatialjoin --contains " ogc:sfContains " --covers " ogc:sfCovers " --intersects " ogc:sfIntersects " --equals " ogc:sfEquals " --touches " ogc:sfTouches " --crosses " ogc:sfCrosses " --overlaps " ogc:sfOverlaps " --suffix $$' .\n' -o ${NAME}.spatialjoin-triples.ttl.bz2 2>&1 | tee ${NAME}.spatialjoin-log.txt && rm -f areas events lines points simplelines
16
- GET_DATA_CMD = set -o pipefail && ${GET_DATA_CMD_1} && echo && ${GET_DATA_CMD_2} && echo && ${GET_DATA_CMD_3} && head -100 <(bzcat ${NAME}.ttl.bz2) | sed '/^@prefix/!d' > ${NAME}.prefix-definitions
14
+ GET_DATA_CMD_2 = osm2rdf ${NAME}.pbf -o ${NAME}.ttl --source-dataset OHM --cache . --add-hascentroid 2>&1 | tee ${NAME}.osm2rdf-log.txt
15
+ GET_DATA_CMD = set -o pipefail && ${CHECK_BINARIES} && ${GET_DATA_CMD_1} && echo && ${GET_DATA_CMD_2}
17
16
  VERSION = $$(date -r ${NAME}.pbf +%d.%m.%Y || echo "NO_DATE")
18
17
  DESCRIPTION = OHM Planet, data from ${GET_DATA_URL} version ${VERSION} (with GeoSPARQL predicates ogc:sfContains and ogc:sfIntersects)
19
18
 
20
19
  [index]
21
- INPUT_FILES = ${data:NAME}.prefix-definitions ${data:NAME}.spatialjoin-triples.ttl.bz2 ${data:NAME}.ttl.bz2
20
+ INPUT_FILES = ${data:NAME}.ttl.bz2
22
21
  CAT_INPUT_FILES = bzcat -f ${INPUT_FILES}
23
22
  SETTINGS_JSON = { "prefixes-external": [""], "ascii-prefixes-only": false, "parallel-parsing": true, "num-triples-per-batch": 5000000 }
24
23
 
25
24
  [server]
26
- PORT = 7037
27
- ACCESS_TOKEN = ${data:NAME}
28
- MEMORY_FOR_QUERIES = 10G
29
- CACHE_MAX_SIZE = 5G
30
- WARMUP_CMD = curl -s http://localhost:${PORT} -H "Accept: application/qlever-results+json" --data-urlencode "query=PREFIX geo: <http://www.opengis.net/ont/geosparql#> SELECT ?subject ?geometry WHERE { ?subject geo:hasGeometry ?m . ?m geo:asWKT ?geometry } INTERNAL SORT BY ?subject" --data-urlencode "access-token=${server:ACCESS_TOKEN}" --data-urlencode "pinresult=true" --data-urlencode "send=0" | jq .resultsize | xargs printf "Result size: %'d\n"
31
-
25
+ PORT = 7037
26
+ ACCESS_TOKEN = ${data:NAME}
27
+ MEMORY_FOR_QUERIES = 10G
28
+ CACHE_MAX_SIZE = 5G
29
+ CACHE_MAX_SIZE_SINGLE_ENTRY = 4G
30
+ WARMUP_CMD = curl -s https://qlever.cs.uni-freiburg.de/mapui-petri/query --data-urlencode "query=PREFIX geo: <http://www.opengis.net/ont/geosparql#> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX osm: <https://www.openstreetmap.org/> SELECT ?osm_id ?geometry WHERE { ?osm_id geo:hasGeometry/geo:asWKT ?geometry . ?osm_id rdf:type osm:node } LIMIT 1" --data-urlencode "backend=https://qlever.cs.uni-freiburg.de/api/${data:NAME}" > /dev/null
32
31
 
33
32
  [runtime]
34
- SYSTEM = native
33
+ SYSTEM = docker
34
+ IMAGE = adfreiburg/qlever:latest
35
35
 
36
36
  [ui]
37
37
  CONFIG = ohm-planet
@@ -8,35 +8,41 @@
8
8
  # the link under GET_DATA_CMD exists (the names are usually the canonical
9
9
  # names). The time for osm2rdf is around the same as that for "qlever index".
10
10
 
11
- # Indexer settings
11
+ # Dataset settings
12
+ [data]
12
13
  CONTINENT = europe
13
14
  COUNTRY = switzerland
14
- DB = osm-${COUNTRY}
15
- PBF = ${DB}.pbf
16
- RDF_FILES = "${DB}.ttl.bz2"
17
- CAT_FILES = "bzcat ${RDF_FILES}"
15
+ NAME = osm-${COUNTRY}
16
+ PBF = ${NAME}.pbf
18
17
  WITH_TEXT = false
19
- STXXL_MEMORY = 10
20
- SETTINGS_JSON = '{ "prefixes-external": [ "\"LINESTRING(", "\"MULTIPOLYGON(", "\"POLYGON(" ], "ascii-prefixes-only": false, "num-triples-per-batch": 1000000 }'
21
- GET_DATA_CMD = "wget -nc -O ${PBF} https://download.geofabrik.de/${CONTINENT}/${COUNTRY}-latest.osm.pbf; rm -f ${DB}.*.bz2; ( time /local/data/osm2rdf/build/apps/osm2rdf ${PBF} -o ${DB}.ttl --cache . --write-geometric-relation-statistics ) 2>&1 | tee ${DB}.osm2rdf-log.txt; rm -f spatial-*"
22
- DESCRIPTION = "OSM ${COUNTRY^}, dump from $(ls -l --time-style=+%d.%m.%Y ${PBF} 2> /dev/null | cut -d' ' -f6) with ogc:contains"
18
+ VERSION = $$(ls -l --time-style=+%d.%m.%Y ${PBF} 2> /dev/null | cut -d' ' -f6)
19
+ GET_DATA_CMD = wget -nc -O ${PBF} https://download.geofabrik.de/${CONTINENT}/${COUNTRY}-latest.osm.pbf; rm -f ${NAME}.*.bz2; ( time osm2rdf ${PBF} -o ${NAME}.ttl --cache . ) 2>&1 | tee ${NAME}.osm2rdf-log.txt; rm -f spatial-*
20
+ DESCRIPTION = OSM ${COUNTRY}, dump from ${VERSION} with ogc:sfContains
21
+
22
+ # Indexer settings
23
+ [index]
24
+ INPUT_FILES = ${data:NAME}.ttl.bz2
25
+ CAT_INPUT_FILES = bzcat ${data:NAME}.ttl.bz2
26
+ STXXL_MEMORY = 10G
27
+ SETTINGS_JSON = { "prefixes-external": [ "\"LINESTRING(", "\"MULTIPOLYGON(", "\"POLYGON(" ], "ascii-prefixes-only": false, "num-triples-per-batch": 1000000 }
23
28
 
24
29
  # Server settings
25
- HOSTNAME = $(hostname -f)
26
- SERVER_PORT = 7025
27
- ACCESS_TOKEN = ${DB}_%RANDOM%
30
+ [server]
31
+ HOSTNAME = localhost
32
+ PORT = 7025
33
+ ACCESS_TOKEN = ${data:NAME}_%RANDOM%
28
34
  MEMORY_FOR_QUERIES = 20G
29
35
  CACHE_MAX_SIZE = 10G
30
36
  CACHE_MAX_SIZE_SINGLE_ENTRY = 5G
31
37
  CACHE_MAX_NUM_ENTRIES = 100
38
+ TIMEOUT = 100s
32
39
 
33
- # QLever binaries
34
- QLEVER_BIN_DIR = %QLEVER_BIN_DIR%
35
- USE_DOCKER = true
36
- QLEVER_DOCKER_IMAGE = adfreiburg/qlever
37
- QLEVER_DOCKER_CONTAINER = qlever.${DB}
40
+ # Runtime to use
41
+ [runtime]
42
+ SYSTEM = docker
43
+ IMAGE = docker.io/adfreiburg/qlever:latest
38
44
 
39
- # QLever UI
40
- QLEVERUI_PORT = 7000
41
- QLEVERUI_DIR = qlever-ui
42
- QLEVERUI_CONFIG = osm
45
+ # Qlever UI
46
+ [ui]
47
+ UI_PORT = 7000
48
+ UI_CONFIG = osm
qlever/commands/index.py CHANGED
@@ -41,7 +41,7 @@ class IndexCommand(QleverCommand):
41
41
  def execute(self, args) -> bool:
42
42
  # Construct the command line.
43
43
  index_cmd = (f"{args.cat_input_files} | {args.index_binary}"
44
- f" -F {args.format} -"
44
+ f" -F {args.format} -f -"
45
45
  f" -i {args.name}"
46
46
  f" -s {args.name}.settings.json")
47
47
  if args.only_pso_and_pos_permutations:
@@ -119,11 +119,14 @@ class IndexCommand(QleverCommand):
119
119
  # Remove already existing container.
120
120
  if args.system in Containerize.supported_systems() \
121
121
  and args.overwrite_existing:
122
- try:
123
- run_command(f"{args.system} rm -f {args.index_container}")
124
- except Exception as e:
125
- log.error(f"Removing existing container failed: {e}")
126
- return False
122
+ if Containerize.is_running(args.system, args.index_container):
123
+ log.info("Another index process is running, trying to stop it ...")
124
+ log.info("")
125
+ try:
126
+ run_command(f"{args.system} rm -f {args.index_container}")
127
+ except Exception as e:
128
+ log.error(f"Removing existing container failed: {e}")
129
+ return False
127
130
 
128
131
  # Write settings.json file.
129
132
  try:
qlever/containerize.py CHANGED
@@ -9,6 +9,7 @@ import subprocess
9
9
  from typing import Optional
10
10
 
11
11
  from qlever.log import log
12
+ from qlever.util import run_command
12
13
 
13
14
 
14
15
  class ContainerizeException(Exception):
@@ -78,6 +79,17 @@ class Containerize:
78
79
  f" -c {shlex.quote(cmd)}")
79
80
  return containerized_cmd
80
81
 
82
+ @staticmethod
83
+ def is_running(container_system: str, container_name: str) -> bool:
84
+ # Note: the `{{{{` and `}}}}` result in `{{` and `}}`, respectively.
85
+ containers = (
86
+ run_command(f"{container_system} ps --format=\"{{{{.Names}}}}\"",
87
+ return_output=True)
88
+ .strip()
89
+ .splitlines()
90
+ )
91
+ return container_name in containers
92
+
81
93
  @staticmethod
82
94
  def stop_and_remove_container(container_system: str,
83
95
  container_name: str) -> bool:
qlever/util.py CHANGED
@@ -186,9 +186,8 @@ def get_random_string(length: int) -> str:
186
186
 
187
187
  def is_port_used(port: int) -> bool:
188
188
  """
189
- Try to bind to the port on all interfaces to check if the port is already
190
- in use. If the port is already in use, `socket.bind` will raise an
191
- `OSError` with errno EADDRINUSE.
189
+ Try to bind to the port on all interfaces to check if the port is already in use.
190
+ If the port is already in use, `socket.bind` will raise an `OSError` with errno EADDRINUSE.
192
191
  """
193
192
  try:
194
193
  sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
@@ -201,16 +200,3 @@ def is_port_used(port: int) -> bool:
201
200
  if err.errno != errno.EADDRINUSE:
202
201
  log.warning(f"Failed to determine if port is used: {err}")
203
202
  return True
204
-
205
-
206
- def check_if_installed(name: str, check_cmd: str) -> bool:
207
- """
208
- Helper function that checks if a given program is installed by running
209
- the given command.
210
- """
211
- try:
212
- run_command(check_cmd)
213
- return True
214
- except Exception as e:
215
- log.error(f"{name} is not installed: {e}")
216
- return False
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: qlever
3
- Version: 0.5.6
3
+ Version: 0.5.8
4
4
  Summary: Script for using the QLever SPARQL engine.
5
5
  Author-email: Hannah Bast <bast@cs.uni-freiburg.de>
6
6
  License: Apache-2.0
@@ -2,13 +2,13 @@ qlever/__init__.py,sha256=7VKA8tp5iHZQyTXhDOcxUbloZ7WyxDnkruq0iJOzQcE,1403
2
2
  qlever/__main__.py,sha256=MqM37bEzQeJEGUXZvuLcilIvnObZiG2eTGIkfKGpdnw,62016
3
3
  qlever/command.py,sha256=yOr0Uc8D8-AM7EjwDsVzbc3KNYjPH-FVOZhIHkqO588,2749
4
4
  qlever/config.py,sha256=qYPy-MQ7BwGrvKSazQWhs0lnlOFqm-d47mpZhc3fptc,10254
5
- qlever/containerize.py,sha256=p8g3O3G8a_0XLzSTzl_e5t9dqjbCQ-ippoA8vI2Z9pI,4193
5
+ qlever/containerize.py,sha256=HRtC5jrRRpcBmdrXK2LsEAKiGVq2dWH1Oa2Ps2nvAsE,4643
6
6
  qlever/log.py,sha256=2O_RvFymnu_dB10ErBTAOsI8bgjORfdD0tE3USH-siM,1315
7
7
  qlever/qlever_main.py,sha256=tA_xqOs_FjvqlDIvKTprwuysfTwzsUjE7at26gRhCVA,2336
8
8
  qlever/qlever_old.py,sha256=X-JxmepFKYeFgSLLp0TRDNqXSxDwIbc8_0Xstiems8c,62026
9
9
  qlever/qleverfile.py,sha256=D321zDnWi-ScCefbFGBydKKI7lzzr1CkohHW6KuwVw0,13106
10
- qlever/util.py,sha256=xNXxXTDfoDqTV0DKo5rKQpkdIwvi7JwfW7ySelvJaZ0,8185
11
- qlever/Qleverfiles/Qleverfile.dblp,sha256=Y6BqAG1GZg-OmEs0HM00yAQuY2TGnSzsOO1LLmGVn2Y,994
10
+ qlever/util.py,sha256=20NQJquSk_mSqvlK4k0OrSBqWrxKs5SgVshm5ucus5o,7847
11
+ qlever/Qleverfiles/Qleverfile.dblp,sha256=NKkvwgvJss0oEsnPLMcJazYyO-8yV_Or824hz9TlzR8,1083
12
12
  qlever/Qleverfiles/Qleverfile.dblp-plus,sha256=Dwd9pK1vPcelKfw6sA-IuyhbZ6yIxOh6_84JgPYnB9Q,1332
13
13
  qlever/Qleverfiles/Qleverfile.dbpedia,sha256=aaNZZayE-zVePGSwPzXemkX__Ns8-kP_E7DNNKZPnqg,1160
14
14
  qlever/Qleverfiles/Qleverfile.default,sha256=UWDy9ohhbKjE4n5xEYqbOPZOiYDFzsnJ_aNNBMCOlaI,2402
@@ -16,16 +16,15 @@ qlever/Qleverfiles/Qleverfile.dnb,sha256=43w_CVi00yf7FHdDvBtHHQR3yU1d-JCNnD_uxYZ
16
16
  qlever/Qleverfiles/Qleverfile.fbeasy,sha256=jeztW4gFpWL_w1nCH5qGHeZyZv2lz_kG6f1G3r3DkJ4,974
17
17
  qlever/Qleverfiles/Qleverfile.freebase,sha256=k6PqYrtHTBr0EydObm1Hg9QWyAAM9fXkdcjhReDg0fM,1035
18
18
  qlever/Qleverfiles/Qleverfile.imdb,sha256=8F6tpEi0uXsMm6lofwjNkLq1X9IEUSoHK8YK_5YCf_g,1638
19
- qlever/Qleverfiles/Qleverfile.ohm-planet,sha256=Y_yUxdpWpUOSDo_zmVKj3caa8X-Wv-1KmacBMks_4QA,2650
19
+ qlever/Qleverfiles/Qleverfile.ohm-planet,sha256=yG6NgW6x6sGTzmCi1wEAkQ-i9goTj2u3PQxvCUwjExs,2122
20
20
  qlever/Qleverfiles/Qleverfile.olympics,sha256=5w9BOFwEBhdSzPz-0LRxwhv-7Gj6xbF539HOXr3cqD0,1088
21
- qlever/Qleverfiles/Qleverfile.osm-country,sha256=UnlkckSXJDrknZORlU-Hdj_J82U4kStl1aRctCc5n6M,1953
21
+ qlever/Qleverfiles/Qleverfile.osm-country,sha256=Pb9o5H3b7wVlVRgdiPHWCvrnkIRS1YUhxOazbUmoKZE,1897
22
22
  qlever/Qleverfiles/Qleverfile.osm-planet,sha256=2RilNix0fplN3GsNNyOu3GzmUss1Pq7586WKOFAQnSs,1400
23
23
  qlever/Qleverfiles/Qleverfile.pubchem,sha256=YuDzWQmukSvL1opu7cf1KX9407_P21lmecYZ9cdbuvA,5611
24
24
  qlever/Qleverfiles/Qleverfile.scientists,sha256=9eZ2c6P9a3E3VHa3RR7LdOQbF4k3oyyrn56Z3u4LZYs,1164
25
25
  qlever/Qleverfiles/Qleverfile.uniprot,sha256=9kAKseomdUnIt7EAZge39g1MTuaLVaSW9JYLHzIMolM,2338
26
26
  qlever/Qleverfiles/Qleverfile.vvz,sha256=ftdMj5dCC9jAlFtNt2WR7kP30w0itT_iYtj5HoUVyWU,931
27
27
  qlever/Qleverfiles/Qleverfile.wikidata,sha256=vDkTY3mPSx2C8MvFWfB72zZoc4d-TMJSw3f_-FqnEqs,1275
28
- qlever/Qleverfiles/Qleverfile.wikimedia-commons,sha256=5JJ1MIp6LoM-ROCDFFIRvLREepCF4i4PnjOT9AFihzQ,2247
29
28
  qlever/Qleverfiles/Qleverfile.wikipathways,sha256=UFEVLrtOBiSQfibBN9xc2wDXrnWcnx5f8PY9khcE6bc,1983
30
29
  qlever/Qleverfiles/Qleverfile.yago-4,sha256=GikYPqChCtbAyZOVqszmVUwgQxSePTcgM8xw2b_21e4,1849
31
30
  qlever/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -34,7 +33,7 @@ qlever/commands/cache_stats.py,sha256=6JjueQstAqc8dNfgY8TP2EitFMxdUvCwrcyd7KUEb2
34
33
  qlever/commands/clear_cache.py,sha256=AnE1MOoj1ZexxrRT8FGeBLlv8rtQIVV4DP8VBn5-X-s,2843
35
34
  qlever/commands/example_queries.py,sha256=5-0ln5EkuDcQYPqKKAOcLaTIStMzFhkAogaNedfRc_I,15271
36
35
  qlever/commands/get_data.py,sha256=f9kjZI3TKad6JHSuXWNkeoajmW8h0Sx8ShvjauDCtNo,1412
37
- qlever/commands/index.py,sha256=iJ1wM7qtlAuRP_x0CupLWIndLRub1GqHvlCbB9ZlyPw,5680
36
+ qlever/commands/index.py,sha256=7tdExYVwJMgBT54gj06oyBPZLR1EraEtPJe86ErV4t4,5891
38
37
  qlever/commands/index_stats.py,sha256=_BiUNBhmbYd9RPxrlm4HF0oENO6JmqnRiAkwkyOdN4U,11722
39
38
  qlever/commands/log.py,sha256=8Krt3MsTUDapYqVw1zUu5X15SF8mV97Uj0qKOWK8jXk,1861
40
39
  qlever/commands/query.py,sha256=_IDH-M8gKL_f1i5wzu0X452pZSUD0_qXl6bPXC85wX0,2750
@@ -44,9 +43,9 @@ qlever/commands/status.py,sha256=5S6EdapZEwFKV9cQZtNYcZhMbAXAY-FP6ggjIhfX8ek,163
44
43
  qlever/commands/stop.py,sha256=TZs4bxKHvujlZAU8BZmFjA5eXSZNAa6EeNzvPpEZsuI,4139
45
44
  qlever/commands/ui.py,sha256=b7g7Mp6ZWevn8f1kwFr-WR4ZWMq42KEV4cGl2QS7M1E,2828
46
45
  qlever/commands/warmup.py,sha256=WOZSxeV8U_F6pEEnAb6YybXLQMxZFTRJXs4BPHUhsmc,1030
47
- qlever-0.5.6.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
48
- qlever-0.5.6.dist-info/METADATA,sha256=FRJKEH385p07cxSLLKRHSgiND-PFwFtPnIYWQjVBv3M,4582
49
- qlever-0.5.6.dist-info/WHEEL,sha256=UvcQYKBHoFqaQd6LKyqHw9fxEolWLQnlzP0h_LgJAfI,91
50
- qlever-0.5.6.dist-info/entry_points.txt,sha256=U_gbYYi0wwdsn884eb0XoOXfvhACOsxhlO330dZ9bi0,87
51
- qlever-0.5.6.dist-info/top_level.txt,sha256=kd3zsYqiFd0--Czh5XTVkfEq6XR-XgRFW35X0v0GT-c,7
52
- qlever-0.5.6.dist-info/RECORD,,
46
+ qlever-0.5.8.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
47
+ qlever-0.5.8.dist-info/METADATA,sha256=Cds_PBvPYvMOqlLAZAFdMF4hKjjaAhuCPJtKCzqZIXg,4582
48
+ qlever-0.5.8.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
49
+ qlever-0.5.8.dist-info/entry_points.txt,sha256=U_gbYYi0wwdsn884eb0XoOXfvhACOsxhlO330dZ9bi0,87
50
+ qlever-0.5.8.dist-info/top_level.txt,sha256=kd3zsYqiFd0--Czh5XTVkfEq6XR-XgRFW35X0v0GT-c,7
51
+ qlever-0.5.8.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (74.0.0)
2
+ Generator: setuptools (75.1.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,37 +0,0 @@
1
- # Qleverfile for Wikimedia Commons, TODO: add to https://github.com/ad-freiburg/qlever-control
2
- #
3
- # qlever get-data # takes ~3 hours to download .bz2 file of size ~40 GB
4
- # qlever index # takes ~2 hours and ~40 GB RAM (on an AMD Ryzen 9 5900X)
5
- # qlever start # starts the server (takes around 15 seconds)
6
-
7
- [data]
8
- NAME = wikimedia-commons
9
- MAIN_RDF_FILE = latest-mediainfo.ttl.gz
10
- DATA_URL_BASE = https://dumps.wikimedia.org/other/wikibase/commonswiki
11
- GET_TTL_CMD = wget -nc ${DATA_URL_BASE}/${MAIN_RDF_FILE}
12
- GET_PROPS_CMD = curl -s https://qlever.cs.uni-freiburg.de/api/wikidata -H "Accept: text/turtle" -H "Content-type: application/sparql-query" --data "PREFIX wikibase: <http://wikiba.se/ontology#> CONSTRUCT { ?s ?p ?o } WHERE { VALUES ?p { wikibase:claim wikibase:directClaim wikibase:novalue wikibase:propertyType wikibase:qualifier wikibase:qualifierValue wikibase:reference wikibase:referenceValue wikibase:statementProperty wikibase:statementValue } ?s ?p ?o }" > properties.nt
13
- GET_LABELS_CMD = curl -s https://qlever.cs.uni-freiburg.de/api/wikidata -H "Accept: text/turtle" -H "Content-type: application/sparql-query" --data "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> CONSTRUCT { ?subject rdfs:label ?label } WHERE { ?subject @en@rdfs:label ?label }" > labels.nt
14
- GET_DATA_CMD = ${GET_TTL_CMD} && ${GET_PROPS_CMD} && ${GET_LABELS_CMD}
15
- INDEX_DESCRIPTION = Wikimedia Commons from ${DATA_URL_BASE}, version 09.11.2023 + Wikidata triples for rdfs:label and wikibase:claim etc.
16
-
17
- [index]
18
- INPUT_FILES = ${data:MAIN_RDF_FILE} labels.nt properties.nt
19
- CAT_INPUT_FILES = zcat -f ${INPUT_FILES}
20
- WITH_TEXT_INDEX = from_literals
21
- STXXL_MEMORY_GB = 5
22
- SETTINGS_JSON = { "languages-internal": [], "prefixes-external": [""], "locale": { "language": "en", "country": "US", "ignore-punctuation": true }, "ascii-prefixes-only": true, "num-triples-per-batch": 5000000 }
23
-
24
- [server]
25
- PORT = 7033
26
- ACCESS_TOKEN = ${data:NAME}_2511328747
27
- MEMORY_FOR_QUERIES_GB = 20
28
- CACHE_MAX_SIZE_GB = 10
29
- CACHE_MAX_SIZE_GB_SINGLE_ENTRY = 5
30
-
31
- [runtime]
32
- SYSTEM = native
33
- IMAGE = docker.io/adfreiburg/qlever:latest
34
-
35
- [ui]
36
- PORT = 7000
37
- CONFIG = wikimedia-commons