qlever 0.5.27__tar.gz → 0.5.29__tar.gz
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.
- {qlever-0.5.27/src/qlever.egg-info → qlever-0.5.29}/PKG-INFO +1 -1
- {qlever-0.5.27 → qlever-0.5.29}/pyproject.toml +1 -1
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever/Qleverfiles/Qleverfile.ohm-planet +1 -1
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever/Qleverfiles/Qleverfile.osm-country +2 -2
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever/Qleverfiles/Qleverfile.osm-planet +5 -5
- qlever-0.5.29/src/qlever/Qleverfiles/Qleverfile.osm-planet-from-pbf +42 -0
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever/Qleverfiles/Qleverfile.uniprot +2 -2
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever/commands/benchmark_queries.py +2 -5
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever/commands/settings.py +1 -0
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever/commands/update_wikidata.py +64 -36
- {qlever-0.5.27 → qlever-0.5.29/src/qlever.egg-info}/PKG-INFO +1 -1
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever.egg-info/SOURCES.txt +1 -0
- qlever-0.5.29/src/qlever.egg-info/top_level.txt +6 -0
- qlever-0.5.27/src/qlever.egg-info/top_level.txt +0 -1
- {qlever-0.5.27 → qlever-0.5.29}/LICENSE +0 -0
- {qlever-0.5.27 → qlever-0.5.29}/README.md +0 -0
- {qlever-0.5.27 → qlever-0.5.29}/setup.cfg +0 -0
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever/Qleverfiles/Qleverfile.dblp +0 -0
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever/Qleverfiles/Qleverfile.dblp-plus +0 -0
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever/Qleverfiles/Qleverfile.dbpedia +0 -0
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever/Qleverfiles/Qleverfile.default +0 -0
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever/Qleverfiles/Qleverfile.dnb +0 -0
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever/Qleverfiles/Qleverfile.fbeasy +0 -0
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever/Qleverfiles/Qleverfile.freebase +0 -0
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever/Qleverfiles/Qleverfile.imdb +0 -0
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever/Qleverfiles/Qleverfile.olympics +0 -0
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever/Qleverfiles/Qleverfile.orkg +0 -0
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever/Qleverfiles/Qleverfile.pubchem +0 -0
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever/Qleverfiles/Qleverfile.scientists +0 -0
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever/Qleverfiles/Qleverfile.vvz +0 -0
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever/Qleverfiles/Qleverfile.wikidata +0 -0
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever/Qleverfiles/Qleverfile.wikipathways +0 -0
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever/Qleverfiles/Qleverfile.yago-4 +0 -0
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever/__init__.py +0 -0
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever/command.py +0 -0
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever/commands/__init__.py +0 -0
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever/commands/add_text_index.py +0 -0
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever/commands/cache_stats.py +0 -0
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever/commands/clear_cache.py +0 -0
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever/commands/extract_queries.py +0 -0
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever/commands/get_data.py +0 -0
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever/commands/index.py +0 -0
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever/commands/index_stats.py +0 -0
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever/commands/log.py +0 -0
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever/commands/query.py +0 -0
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever/commands/setup_config.py +0 -0
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever/commands/start.py +0 -0
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever/commands/status.py +0 -0
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever/commands/stop.py +0 -0
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever/commands/system_info.py +0 -0
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever/commands/ui.py +0 -0
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever/commands/warmup.py +0 -0
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever/config.py +0 -0
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever/containerize.py +0 -0
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever/log.py +0 -0
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever/qlever_main.py +0 -0
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever/qleverfile.py +0 -0
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever/util.py +0 -0
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever.egg-info/dependency_links.txt +0 -0
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever.egg-info/entry_points.txt +0 -0
- {qlever-0.5.27 → qlever-0.5.29}/src/qlever.egg-info/requires.txt +0 -0
|
@@ -22,7 +22,7 @@ MULTI_INPUT_JSON = { "cmd": "zcat ${INPUT_FILES}", "parallel": "true" }
|
|
|
22
22
|
STXXL_MEMORY = 5G
|
|
23
23
|
PARSER_BUFFER_SIZE = 50M
|
|
24
24
|
SETTINGS_JSON = { "num-triples-per-batch": 5000000 }
|
|
25
|
-
|
|
25
|
+
ENCODE_AS_ID = https://www.openhistoricalmap.org/node/ http://www.openhistoricalmap.org/node/ https://www.openhistoricalmap.org/way/ https://www.openhistoricalmap.org/relation/ https://osm2rdf.cs.uni-freiburg.de/rdf/geom#ohmnode_tagged_ https://osm2rdf.cs.uni-freiburg.de/rdf/geom#ohmnode_untagged_ https://osm2rdf.cs.uni-freiburg.de/rdf/geom#ohmway_ https://osm2rdf.cs.uni-freiburg.de/rdf/geom#ohmrel_ https://www.openstreetmap.org/changeset/
|
|
26
26
|
|
|
27
27
|
[server]
|
|
28
28
|
PORT = 7037
|
|
@@ -25,13 +25,13 @@ INPUT_FILES = ${data:NAME}.ttl.bz2
|
|
|
25
25
|
CAT_INPUT_FILES = bzcat ${data:NAME}.ttl.bz2
|
|
26
26
|
STXXL_MEMORY = 10G
|
|
27
27
|
SETTINGS_JSON = { "num-triples-per-batch": 10000000 }
|
|
28
|
-
|
|
28
|
+
ENCODE_AS_ID = https://www.openstreetmap.org/node/ http://www.openstreetmap.org/node/ https://www.openstreetmap.org/way/ https://www.openstreetmap.org/relation/ https://osm2rdf.cs.uni-freiburg.de/rdf/geom#osmnode_tagged_ https://osm2rdf.cs.uni-freiburg.de/rdf/geom#osmnode_untagged_ https://osm2rdf.cs.uni-freiburg.de/rdf/geom#osmway_ https://osm2rdf.cs.uni-freiburg.de/rdf/geom#osmrel_ https://www.openstreetmap.org/changeset/
|
|
29
29
|
|
|
30
30
|
# Server settings
|
|
31
31
|
[server]
|
|
32
32
|
HOSTNAME = localhost
|
|
33
33
|
PORT = 7025
|
|
34
|
-
ACCESS_TOKEN = ${data:NAME}
|
|
34
|
+
ACCESS_TOKEN = ${data:NAME}
|
|
35
35
|
MEMORY_FOR_QUERIES = 20G
|
|
36
36
|
CACHE_MAX_SIZE = 10G
|
|
37
37
|
CACHE_MAX_SIZE_SINGLE_ENTRY = 5G
|
|
@@ -15,13 +15,13 @@ DESCRIPTION = OSM from ${GET_DATA_URL} (converted to RDF using osm2rdf, enhance
|
|
|
15
15
|
|
|
16
16
|
[index]
|
|
17
17
|
INPUT_FILES = ${data:NAME}.ttl.bz2
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
MULTI_INPUT_JSON = { "cmd": "lbzcat -n 2 ${INPUT_FILES}", "parallel": "true" }
|
|
19
|
+
VOCABULARY_TYPE = on-disk-compressed-geo-split
|
|
20
20
|
PARSER_BUFFER_SIZE = 100M
|
|
21
|
-
STXXL_MEMORY =
|
|
21
|
+
STXXL_MEMORY = 60G
|
|
22
22
|
SETTINGS_JSON = { "num-triples-per-batch": 10000000 }
|
|
23
|
-
ULIMIT =
|
|
24
|
-
|
|
23
|
+
ULIMIT = 50000
|
|
24
|
+
ENCODE_AS_ID = https://www.openstreetmap.org/node/ http://www.openstreetmap.org/node/ https://www.openstreetmap.org/way/ https://www.openstreetmap.org/relation/ https://osm2rdf.cs.uni-freiburg.de/rdf/geom#osmnode_ https://osm2rdf.cs.uni-freiburg.de/rdf/geom#osmway_ https://osm2rdf.cs.uni-freiburg.de/rdf/geom#osmrel_ https://www.openstreetmap.org/changeset/
|
|
25
25
|
|
|
26
26
|
[server]
|
|
27
27
|
PORT = 7007
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Qleverfile for OSM Planet, use with the QLever CLI (`pip install qlever`)
|
|
2
|
+
#
|
|
3
|
+
# qlever get-data # download ~100 GB (pbf), convert with osm2rdf, ~200B triples
|
|
4
|
+
# qlever index # ~40 hours, ~60 GB RAM, ~2.5 TB index size on disk
|
|
5
|
+
# qlever start # a few seconds, adjust MEMORY_FOR_QUERIES as needed
|
|
6
|
+
#
|
|
7
|
+
# Measured on an AMD Ryzen 9 9950X with 128 GB RAM and 4 x 8 TB NVMe (02.10.2025)
|
|
8
|
+
|
|
9
|
+
[data]
|
|
10
|
+
NAME = osm-planet
|
|
11
|
+
PLANET_PBF = planet-250929.osm.pbf
|
|
12
|
+
GET_DATA_URL = https://planet.openstreetmap.org/pbf/${PLANET_PBF}
|
|
13
|
+
GET_PBF_CMD = unbuffer wget -O ${PLANET_PBF} ${GET_DATA_URL}
|
|
14
|
+
OSM2RDF_CMD = unbuffer osm2rdf ${PLANET_PBF} -o ${NAME}.ttl --num-threads 20 --output-compression gz --cache . --store-locations disk-dense --iri-prefix-for-untagged-nodes http://www.openstreetmap.org/node/ --split-tag-key-by-semicolon ref --split-tag-key-by-semicolon service
|
|
15
|
+
GET_DATA_CMD = ${GET_PBF_CMD} && ${OSM2RDF_CMD} 2>&1 | tee ${NAME}.osm2rdf-log.txt
|
|
16
|
+
VERSION = $$(date -r ${PLANET_PBF} +%d.%m.%Y || echo "NO_DATE")
|
|
17
|
+
DESCRIPTION = OSM from ${GET_DATA_URL}, converted to RDF using osm2rdf, enhanced by GeoSPARQL triples ogc:sfContains, ogc:sfCovers, ogc:sfIntersects, ogc:sfEquals, ogc:sfTouches, ogc:sfCrosses, ogc:sfOverlaps
|
|
18
|
+
|
|
19
|
+
[index]
|
|
20
|
+
INPUT_FILES = ${data:NAME}.ttl.gz
|
|
21
|
+
MULTI_INPUT_JSON = { "cmd": "zcat ${INPUT_FILES}", "parallel": "true" }
|
|
22
|
+
VOCABULARY_TYPE = on-disk-compressed-geo-split
|
|
23
|
+
PARSER_BUFFER_SIZE = 100M
|
|
24
|
+
STXXL_MEMORY = 60G
|
|
25
|
+
SETTINGS_JSON = { "num-triples-per-batch": 10000000 }
|
|
26
|
+
ULIMIT = 50000
|
|
27
|
+
ENCODE_AS_ID = https://www.openstreetmap.org/node/ http://www.openstreetmap.org/node/ https://www.openstreetmap.org/way/ https://www.openstreetmap.org/relation/ https://osm2rdf.cs.uni-freiburg.de/rdf/geom#osmnode_tagged_ https://osm2rdf.cs.uni-freiburg.de/rdf/geom#osmnode_untagged_ https://osm2rdf.cs.uni-freiburg.de/rdf/geom#osmway_ https://osm2rdf.cs.uni-freiburg.de/rdf/geom#osmrel_ https://www.openstreetmap.org/changeset/
|
|
28
|
+
|
|
29
|
+
[server]
|
|
30
|
+
PORT = 7007
|
|
31
|
+
ACCESS_TOKEN = ${data:NAME}
|
|
32
|
+
MEMORY_FOR_QUERIES = 40G
|
|
33
|
+
CACHE_MAX_SIZE = 20G
|
|
34
|
+
CACHE_MAX_SIZE_SINGLE_ENTRY = 10G
|
|
35
|
+
TIMEOUT = 600s
|
|
36
|
+
|
|
37
|
+
[runtime]
|
|
38
|
+
SYSTEM = docker
|
|
39
|
+
IMAGE = docker.io/adfreiburg/qlever:latest
|
|
40
|
+
|
|
41
|
+
[ui]
|
|
42
|
+
UI_CONFIG = osm-planet
|
|
@@ -55,8 +55,8 @@ MULTI_INPUT_JSON = [{ "cmd": "zcat {}", "graph": "http://sparql.uniprot.org/unip
|
|
|
55
55
|
{ "cmd": "zcat ${data:TTL_DIR}/examples_uniprot.ttl.gz", "graph": "http://sparql.uniprot.org/.well-known/sparql-examples" },
|
|
56
56
|
{ "cmd": "zcat ${data:TTL_DIR}/core.ttl.gz", "graph": "http://purl.uniprot.org/core" }]
|
|
57
57
|
SETTINGS_JSON = { "languages-internal": [], "prefixes-external": [""], "locale": { "language": "en", "country": "US", "ignore-punctuation": true }, "ascii-prefixes-only": true, "num-triples-per-batch": 25000000 }
|
|
58
|
-
STXXL_MEMORY =
|
|
59
|
-
ULIMIT =
|
|
58
|
+
STXXL_MEMORY = 80G
|
|
59
|
+
ULIMIT = 50000
|
|
60
60
|
|
|
61
61
|
[server]
|
|
62
62
|
PORT = 7018
|
|
@@ -335,9 +335,7 @@ class BenchmarkQueriesCommand(QleverCommand):
|
|
|
335
335
|
)
|
|
336
336
|
return []
|
|
337
337
|
|
|
338
|
-
return [
|
|
339
|
-
(query['query'], query['sparql']) for query in data["queries"]
|
|
340
|
-
]
|
|
338
|
+
return [(query["query"], query["sparql"]) for query in data["queries"]]
|
|
341
339
|
|
|
342
340
|
def get_result_size(
|
|
343
341
|
self,
|
|
@@ -552,8 +550,7 @@ class BenchmarkQueriesCommand(QleverCommand):
|
|
|
552
550
|
|
|
553
551
|
# Show what the command will do.
|
|
554
552
|
example_queries_cmd = (
|
|
555
|
-
"curl -sv https://qlever.
|
|
556
|
-
f"api/examples/{args.ui_config}"
|
|
553
|
+
f"curl -sv https://qlever.dev/api/examples/{args.ui_config}"
|
|
557
554
|
)
|
|
558
555
|
sparql_endpoint = (
|
|
559
556
|
args.sparql_endpoint
|
|
@@ -252,46 +252,74 @@ class UpdateWikidataCommand(QleverCommand):
|
|
|
252
252
|
# operation = event_data.get("operation")
|
|
253
253
|
rdf_added_data = event_data.get("rdf_added_data")
|
|
254
254
|
rdf_deleted_data = event_data.get("rdf_deleted_data")
|
|
255
|
+
rdf_linked_shared_data = event_data.get(
|
|
256
|
+
"rdf_linked_shared_data"
|
|
257
|
+
)
|
|
258
|
+
rdf_unlinked_shared_data = event_data.get(
|
|
259
|
+
"rdf_unlinked_shared_data"
|
|
260
|
+
)
|
|
255
261
|
|
|
256
262
|
# Process the to-be-deleted triples.
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
263
|
+
for rdf_to_be_deleted in (
|
|
264
|
+
rdf_deleted_data,
|
|
265
|
+
rdf_unlinked_shared_data,
|
|
266
|
+
):
|
|
267
|
+
if rdf_to_be_deleted is not None:
|
|
268
|
+
try:
|
|
269
|
+
rdf_to_be_deleted_data = rdf_to_be_deleted.get(
|
|
270
|
+
"data"
|
|
271
|
+
)
|
|
272
|
+
graph = Graph()
|
|
273
|
+
log.debug(
|
|
274
|
+
f"RDF to_be_deleted data: {rdf_to_be_deleted_data}"
|
|
275
|
+
)
|
|
276
|
+
graph.parse(
|
|
277
|
+
data=rdf_to_be_deleted_data, format="turtle"
|
|
278
|
+
)
|
|
279
|
+
for s, p, o in graph:
|
|
280
|
+
triple = f"{s.n3()} {p.n3()} {o.n3()}"
|
|
281
|
+
# NOTE: In case there was a previous `insert` of that
|
|
282
|
+
# triple, it is safe to remove that `insert`, but not
|
|
283
|
+
# the `delete` (in case the triple is contained in the
|
|
284
|
+
# original data).
|
|
285
|
+
if triple in insert_triples:
|
|
286
|
+
insert_triples.remove(triple)
|
|
287
|
+
delete_triples.add(triple)
|
|
288
|
+
except Exception as e:
|
|
289
|
+
log.error(
|
|
290
|
+
f"Error reading `rdf_to_be_deleted_data`: {e}"
|
|
291
|
+
)
|
|
292
|
+
return False
|
|
275
293
|
|
|
276
294
|
# Process the to-be-added triples.
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
+
for rdf_to_be_added in (
|
|
296
|
+
rdf_added_data,
|
|
297
|
+
rdf_linked_shared_data,
|
|
298
|
+
):
|
|
299
|
+
if rdf_to_be_added is not None:
|
|
300
|
+
try:
|
|
301
|
+
rdf_to_be_added_data = rdf_to_be_added.get("data")
|
|
302
|
+
graph = Graph()
|
|
303
|
+
log.debug(
|
|
304
|
+
"RDF to be added data: {rdf_to_be_added_data}"
|
|
305
|
+
)
|
|
306
|
+
graph.parse(
|
|
307
|
+
data=rdf_to_be_added_data, format="turtle"
|
|
308
|
+
)
|
|
309
|
+
for s, p, o in graph:
|
|
310
|
+
triple = f"{s.n3()} {p.n3()} {o.n3()}"
|
|
311
|
+
# NOTE: In case there was a previous `delete` of that
|
|
312
|
+
# triple, it is safe to remove that `delete`, but not
|
|
313
|
+
# the `insert` (in case the triple is not contained in
|
|
314
|
+
# the original data).
|
|
315
|
+
if triple in delete_triples:
|
|
316
|
+
delete_triples.remove(triple)
|
|
317
|
+
insert_triples.add(triple)
|
|
318
|
+
except Exception as e:
|
|
319
|
+
log.error(
|
|
320
|
+
f"Error reading `rdf_to_be_added_data`: {e}"
|
|
321
|
+
)
|
|
322
|
+
return False
|
|
295
323
|
|
|
296
324
|
except Exception as e:
|
|
297
325
|
log.error(f"Error reading data from message: {e}")
|
|
@@ -28,6 +28,7 @@ src/qlever/Qleverfiles/Qleverfile.olympics
|
|
|
28
28
|
src/qlever/Qleverfiles/Qleverfile.orkg
|
|
29
29
|
src/qlever/Qleverfiles/Qleverfile.osm-country
|
|
30
30
|
src/qlever/Qleverfiles/Qleverfile.osm-planet
|
|
31
|
+
src/qlever/Qleverfiles/Qleverfile.osm-planet-from-pbf
|
|
31
32
|
src/qlever/Qleverfiles/Qleverfile.pubchem
|
|
32
33
|
src/qlever/Qleverfiles/Qleverfile.scientists
|
|
33
34
|
src/qlever/Qleverfiles/Qleverfile.uniprot
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
qlever
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|