snapquery 0.2.5__tar.gz → 0.2.6__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.
- {snapquery-0.2.5 → snapquery-0.2.6}/.github/workflows/build.yml +1 -1
- {snapquery-0.2.5 → snapquery-0.2.6}/CITATION.cff +2 -3
- {snapquery-0.2.5 → snapquery-0.2.6}/PKG-INFO +21 -7
- {snapquery-0.2.5 → snapquery-0.2.6}/README.md +17 -3
- {snapquery-0.2.5 → snapquery-0.2.6}/pyproject.toml +2 -2
- snapquery-0.2.6/snapquery/__init__.py +1 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/github_access.py +1 -4
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/pid_lookup.py +3 -1
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/prefix_merger.py +3 -4
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/query_parameterizer.py +57 -71
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/query_set_cmd.py +6 -8
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/samples/endpoints.yaml +27 -17
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/scholia.py +9 -5
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/snapquery_core.py +37 -1
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/snapquery_webserver.py +30 -8
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/version.py +1 -1
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/wd_page_query_extractor.py +6 -3
- {snapquery-0.2.5 → snapquery-0.2.6}/tests/test_cmdline.py +5 -3
- {snapquery-0.2.5 → snapquery-0.2.6}/tests/test_endpoints.py +36 -8
- {snapquery-0.2.5 → snapquery-0.2.6}/tests/test_namedqueries.py +4 -1
- {snapquery-0.2.5 → snapquery-0.2.6}/tests/test_pids.py +4 -1
- {snapquery-0.2.5 → snapquery-0.2.6}/tests/test_prefix_merger.py +12 -2
- {snapquery-0.2.5 → snapquery-0.2.6}/tests/test_restful_api.py +3 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/tests/test_scholia.py +31 -25
- {snapquery-0.2.5 → snapquery-0.2.6}/tests/test_wd_query_parsing.py +22 -1
- snapquery-0.2.5/snapquery/__init__.py +0 -1
- snapquery-0.2.5/tests/action_stats.py +0 -43
- {snapquery-0.2.5 → snapquery-0.2.6}/.github/workflows/upload-to-pypi.yml +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/.gitignore +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/.project +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/.pydevproject +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/LICENSE +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/docs/index.md +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/mkdocs.yml +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/scripts/blackisort +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/scripts/doc +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/scripts/fixdomain +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/scripts/install +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/scripts/qlv +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/scripts/release +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/scripts/restore_db +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/scripts/test +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/scripts/test_queries +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/authorization.py +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/basequeryview.py +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/ceurws.py +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/dblp.py +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/error_filter.py +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/execution.py +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/graph.py +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/models/__init__.py +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/models/person.py +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/models/sparql_components.py +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/mwlogin.py +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/namespace_stats_view.py +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/orcid.py +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/params_view.py +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/person_selector.py +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/pid.py +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/qlever.py +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/query_annotate.py +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/query_selector.py +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/query_set_tool.py +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/query_set_tool_view.py +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/resources/sparql_language.json +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/samples/WikiProject_LSEThesisProject.wiki +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/samples/ceur-ws.json +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/samples/dblp.json +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/samples/endpoints_optional.yaml +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/samples/federated-query-examples.json +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/samples/graphs.yaml +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/samples/meta_query.yaml +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/samples/orkg.json +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/samples/qlever.json +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/samples/qlever_performance.json +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/samples/query-sets/yaml/ceur-ws.yaml +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/samples/query-sets/yaml/dblp.yaml +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/samples/query-sets/yaml/federated-query-examples.yaml +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/samples/query-sets/yaml/hartig-eqs-2025-12-16.yaml +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/samples/query-sets/yaml/orkg.yaml +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/samples/query-sets/yaml/qlever-issues-2025-12-05.yaml +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/samples/query-sets/yaml/qlever.yaml +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/samples/query-sets/yaml/qlever_performance.yaml +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/samples/query-sets/yaml/scholia-2025-12-04.yaml +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/samples/query-sets/yaml/scholia-2025-12-16.yaml +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/samples/query-sets/yaml/scholia-qlever-2025-12-16.yaml +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/samples/query-sets/yaml/scholia.yaml +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/samples/query-sets/yaml/sib-2025-12-04.yaml +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/samples/query-sets/yaml/snapquery.yaml +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/samples/query-sets/yaml/wikidata-WikidataThesisToolkit.yaml +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/samples/query-sets/yaml/wikidata-WikidataThesisToolkitAlt.yaml +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/samples/query-sets/yaml/wikidata-examples-2025-12-04.yaml +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/samples/query-sets/yaml/wikidata-examples.yaml +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/samples/query-sets/yaml/wikidata-short-urls-2025-12-06.yaml +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/samples/query-sets/yaml/wikidata-short-urls.yaml +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/samples/query_stats.yaml +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/samples/scholia.json +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/samples/snapquery.json +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/samples/wikidata-WikidataThesisToolkit.json +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/samples/wikidata-WikidataThesisToolkitAlt.json +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/samples/wikidata-examples.json +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/samples/wikidata-short-urls.json +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/sib_sparql_examples.py +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/snapquery_cmd.py +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/snapquery_view.py +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/sparql_analyzer.py +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/stats_view.py +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery/wd_short_url.py +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery.puml +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/snapquery.yaml +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/tests/__init__.py +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/tests/query_extractors/__init__.py +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/tests/query_extractors/sparql_standard_queries.py +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/tests/resources/error_messages/qlever/ask_unsupported.txt +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/tests/resources/error_messages/qlever/invalid_literal.txt +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/tests/resources/error_messages/qlever/invalid_regex_func.txt +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/tests/resources/error_messages/qlever/memory_limit.txt +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/tests/resources/error_messages/qlever/timeout.txt +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/tests/resources/error_messages/triplydb/parser_error.txt +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/tests/resources/error_messages/wdqs/duplicate_prefix.txt +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/tests/resources/error_messages/wdqs/invalid_iri_declaration.txt +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/tests/resources/error_messages/wdqs/invalid_sparql_syntax.txt +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/tests/resources/error_messages/wdqs/timeout.txt +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/tests/resources/error_messages/wdqs/undefined_prefix.txt +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/tests/test_authorization.py +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/tests/test_ceurws.py +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/tests/test_error_filter.py +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/tests/test_graph.py +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/tests/test_oauth.py +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/tests/test_orcid.py +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/tests/test_qlever.py +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/tests/test_query_annotate.py +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/tests/test_query_execution.py +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/tests/test_query_name.py +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/tests/test_query_set_tool.py +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/tests/test_scholia_q.py +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/tests/test_sib_examples.py +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/tests/test_sparql_analyzer.py +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/tests/test_sparql_components.py +0 -0
- {snapquery-0.2.5 → snapquery-0.2.6}/tests/test_wd_short_url.py +0 -0
|
@@ -29,7 +29,8 @@ authors:
|
|
|
29
29
|
# orcid: 'https://orcid.org/0000-0003-0250-9655'
|
|
30
30
|
identifiers:
|
|
31
31
|
- type: doi
|
|
32
|
-
value: 10.5281/zenodo.
|
|
32
|
+
value: 10.5281/zenodo.17802424
|
|
33
|
+
description: Concept DOI (all versions) on Zenodo
|
|
33
34
|
repository-code: 'https://github.com/WolfgangFahl/snapquery'
|
|
34
35
|
url: 'https://snapquery.bitplan.com'
|
|
35
36
|
abstract: >-
|
|
@@ -45,5 +46,3 @@ keywords:
|
|
|
45
46
|
- Query Set
|
|
46
47
|
- FAIR
|
|
47
48
|
license: Apache-2.0
|
|
48
|
-
version: v0.2.2
|
|
49
|
-
date-released: '2025-12-03'
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
2
|
Name: snapquery
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.6
|
|
4
4
|
Summary: Just Query wikidata and other SPARQL endpoints by query name - a frontend to Introduce Named Queries and Named Query Middleware to wikidata and other SPARQL endpoints
|
|
5
5
|
Project-URL: Home, https://github.com/WolfgangFahl/snapquery
|
|
6
6
|
Project-URL: Documentation, https://wiki.bitplan.com/index.php/snapquery
|
|
@@ -32,8 +32,8 @@ Requires-Dist: pandas>=2.3.3
|
|
|
32
32
|
Requires-Dist: py-3rdparty-mediawiki>=0.18.1
|
|
33
33
|
Requires-Dist: py-ez-wikidata>=0.3.2
|
|
34
34
|
Requires-Dist: pybasemkit>=0.1.6
|
|
35
|
-
Requires-Dist: pylodstorage>=0.
|
|
36
|
-
Requires-Dist: pyopensourceprojects>=0.
|
|
35
|
+
Requires-Dist: pylodstorage>=0.19.9
|
|
36
|
+
Requires-Dist: pyopensourceprojects>=0.5.0
|
|
37
37
|
Requires-Dist: python-slugify>=8.0.4
|
|
38
38
|
Requires-Dist: ratelimit>=2.2.1
|
|
39
39
|
Requires-Dist: requests
|
|
@@ -65,10 +65,24 @@ The technology behind the backend knowlede graphs such as RDF, SPARQL, SQL, CSV,
|
|
|
65
65
|
| :--- | :--- |
|
|
66
66
|
| **PyPi** | [](https://pypi.python.org/pypi/snapquery/) [](https://www.apache.org/licenses/LICENSE-2.0) [](https://pypi.org/project/snapquery/) [](https://pypi.org/project/snapquery/) [](https://pypi.org/project/snapquery/) |
|
|
67
67
|
| **GitHub** | [](https://github.com/WolfgangFahl/snapquery/actions/workflows/build.yml) [](https://github.com/WolfgangFahl/snapquery/releases) [](https://github.com/WolfgangFahl/snapquery/graphs/contributors) [](https://github.com/WolfgangFahl/snapquery/commits/) [](https://github.com/WolfgangFahl/snapquery/issues) [](https://github.com/WolfgangFahl/snapquery/issues/?q=is%3Aissue+is%3Aclosed) |
|
|
68
|
-
| **Code** | [](https://github.com/psf/black) [](https://pycqa.github.io/isort/) |
|
|
68
|
+
| **Code** | [](https://github.com/psf/black) [](https://pycqa.github.io/isort/) [](https://github.com/WolfgangFahl/snapquery/discussions) |
|
|
69
69
|
| **Docs** | [](https://WolfgangFahl.github.io/snapquery/) [](https://github.com/PyCQA/docformatter) [](https://google.github.io/styleguide/pyguide.html#s3.8-comments-and-docstrings) |
|
|
70
|
-
[](https://doi.org/10.5281/zenodo.17802424) |
|
|
71
|
+
|
|
72
|
+
## Cite as
|
|
73
|
+
|
|
74
|
+
If you use snapquery in your research, please cite it via its Zenodo concept DOI
|
|
75
|
+
(which always resolves to the latest version):
|
|
76
|
+
|
|
77
|
+
> Fahl, W., Holzheim, T., Hoyt, C. T., Priskorn, D., & Willighagen, E.
|
|
78
|
+
> *SnapQuery — FAIR Management of Query Sets to Mitigate Query Rot in Knowledge Graphs.*
|
|
79
|
+
> Zenodo. https://doi.org/10.5281/zenodo.17802424
|
|
80
|
+
|
|
81
|
+
Machine-readable metadata is available in [`CITATION.cff`](./CITATION.cff);
|
|
82
|
+
GitHub's "Cite this repository" button and Zenodo pick it up automatically.
|
|
83
|
+
For a specific release, use the version DOI shown on the corresponding
|
|
84
|
+
[Zenodo record](https://doi.org/10.5281/zenodo.17802424).
|
|
85
|
+
|
|
72
86
|
## Demos
|
|
73
87
|
|
|
74
88
|
* [wikimedia toolhub](https://toolhub.wikimedia.org/tools/snapquery)
|
|
@@ -20,10 +20,24 @@ The technology behind the backend knowlede graphs such as RDF, SPARQL, SQL, CSV,
|
|
|
20
20
|
| :--- | :--- |
|
|
21
21
|
| **PyPi** | [](https://pypi.python.org/pypi/snapquery/) [](https://www.apache.org/licenses/LICENSE-2.0) [](https://pypi.org/project/snapquery/) [](https://pypi.org/project/snapquery/) [](https://pypi.org/project/snapquery/) |
|
|
22
22
|
| **GitHub** | [](https://github.com/WolfgangFahl/snapquery/actions/workflows/build.yml) [](https://github.com/WolfgangFahl/snapquery/releases) [](https://github.com/WolfgangFahl/snapquery/graphs/contributors) [](https://github.com/WolfgangFahl/snapquery/commits/) [](https://github.com/WolfgangFahl/snapquery/issues) [](https://github.com/WolfgangFahl/snapquery/issues/?q=is%3Aissue+is%3Aclosed) |
|
|
23
|
-
| **Code** | [](https://github.com/psf/black) [](https://pycqa.github.io/isort/) |
|
|
23
|
+
| **Code** | [](https://github.com/psf/black) [](https://pycqa.github.io/isort/) [](https://github.com/WolfgangFahl/snapquery/discussions) |
|
|
24
24
|
| **Docs** | [](https://WolfgangFahl.github.io/snapquery/) [](https://github.com/PyCQA/docformatter) [](https://google.github.io/styleguide/pyguide.html#s3.8-comments-and-docstrings) |
|
|
25
|
-
[](https://doi.org/10.5281/zenodo.17802424) |
|
|
26
|
+
|
|
27
|
+
## Cite as
|
|
28
|
+
|
|
29
|
+
If you use snapquery in your research, please cite it via its Zenodo concept DOI
|
|
30
|
+
(which always resolves to the latest version):
|
|
31
|
+
|
|
32
|
+
> Fahl, W., Holzheim, T., Hoyt, C. T., Priskorn, D., & Willighagen, E.
|
|
33
|
+
> *SnapQuery — FAIR Management of Query Sets to Mitigate Query Rot in Knowledge Graphs.*
|
|
34
|
+
> Zenodo. https://doi.org/10.5281/zenodo.17802424
|
|
35
|
+
|
|
36
|
+
Machine-readable metadata is available in [`CITATION.cff`](./CITATION.cff);
|
|
37
|
+
GitHub's "Cite this repository" button and Zenodo pick it up automatically.
|
|
38
|
+
For a specific release, use the version DOI shown on the corresponding
|
|
39
|
+
[Zenodo record](https://doi.org/10.5281/zenodo.17802424).
|
|
40
|
+
|
|
27
41
|
## Demos
|
|
28
42
|
|
|
29
43
|
* [wikimedia toolhub](https://toolhub.wikimedia.org/tools/snapquery)
|
|
@@ -26,7 +26,7 @@ dependencies = [
|
|
|
26
26
|
# https://github.com/WolfgangFahl/nicegui_widgets
|
|
27
27
|
"ngwidgets>=0.30.3",
|
|
28
28
|
# https://pypi.org/project/pyLodStorage/
|
|
29
|
-
"pyLodStorage>=0.
|
|
29
|
+
"pyLodStorage>=0.19.9",
|
|
30
30
|
# https://pypi.org/project/py-3rdparty-mediawiki/
|
|
31
31
|
"py-3rdparty-mediawiki>=0.18.1",
|
|
32
32
|
"wikitextparser",
|
|
@@ -51,7 +51,7 @@ dependencies = [
|
|
|
51
51
|
# https://pypi.org/project/nameparser/
|
|
52
52
|
"nameparser>=1.1.3",
|
|
53
53
|
# https://github.com/WolfgangFahl/pyOpenSourceProjects
|
|
54
|
-
"pyOpenSourceProjects>=0.
|
|
54
|
+
"pyOpenSourceProjects>=0.5.0"
|
|
55
55
|
]
|
|
56
56
|
|
|
57
57
|
requires-python = ">=3.10"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.2.6"
|
|
@@ -23,7 +23,7 @@ class GitHub:
|
|
|
23
23
|
repo: str,
|
|
24
24
|
branch: Optional[str] = None,
|
|
25
25
|
token: Optional[str] = None,
|
|
26
|
-
session: Optional[requests.Session] = None
|
|
26
|
+
session: Optional[requests.Session] = None,
|
|
27
27
|
):
|
|
28
28
|
"""
|
|
29
29
|
Initialize GitHub client.
|
|
@@ -39,7 +39,6 @@ class GitHub:
|
|
|
39
39
|
self.repo = repo
|
|
40
40
|
self.branch = branch
|
|
41
41
|
|
|
42
|
-
|
|
43
42
|
self.base_url = f"https://api.github.com/repos/{owner}/{repo}"
|
|
44
43
|
|
|
45
44
|
# Use provided token or read from file
|
|
@@ -48,7 +47,6 @@ class GitHub:
|
|
|
48
47
|
# Use custom session or create new one
|
|
49
48
|
self.session = session or requests.Session()
|
|
50
49
|
|
|
51
|
-
|
|
52
50
|
def _headers(self) -> Dict[str, str]:
|
|
53
51
|
headers = {"Accept": "application/vnd.github.v3+json"}
|
|
54
52
|
if self.token:
|
|
@@ -92,7 +90,6 @@ class GitHub:
|
|
|
92
90
|
response.raise_for_status()
|
|
93
91
|
return response.json()
|
|
94
92
|
|
|
95
|
-
|
|
96
93
|
def list_files_recursive(self, path: str = "", suffix: Optional[str] = None) -> List[Dict[str, Any]]:
|
|
97
94
|
"""
|
|
98
95
|
Recursively list files under a given path. Optionally filter by file suffix.
|
|
@@ -32,13 +32,14 @@ class PersonLookup:
|
|
|
32
32
|
self.wikidata_search = WikidataSearch()
|
|
33
33
|
self.dblp_person_lookup = DblpPersonLookup(self.nqm)
|
|
34
34
|
|
|
35
|
-
def suggest_from_wikidata(self, search_name: str, limit: int = 10) -> List[Person]:
|
|
35
|
+
def suggest_from_wikidata(self, search_name: str, limit: int = 10, endpoint_name: str = "wikidata") -> List[Person]:
|
|
36
36
|
"""
|
|
37
37
|
Suggest persons using WikidataSearch.
|
|
38
38
|
|
|
39
39
|
Args:
|
|
40
40
|
search_name (str): The name to search for suggestions.
|
|
41
41
|
limit (int): The maximum number of results to return.
|
|
42
|
+
endpoint_name (str): the endpoint to query, default wikidata.
|
|
42
43
|
|
|
43
44
|
Returns:
|
|
44
45
|
List[Person]: A list of suggested persons from Wikidata.
|
|
@@ -88,6 +89,7 @@ WHERE
|
|
|
88
89
|
person_lod, stats = self.nqm.execute_query(
|
|
89
90
|
named_query=named_query,
|
|
90
91
|
params_dict=params_dict,
|
|
92
|
+
endpoint_name=endpoint_name,
|
|
91
93
|
limit=limit,
|
|
92
94
|
with_stats=False,
|
|
93
95
|
)
|
|
@@ -78,11 +78,10 @@ class QueryPrefixMerger(Enum):
|
|
|
78
78
|
Returns:
|
|
79
79
|
merged query
|
|
80
80
|
"""
|
|
81
|
+
merged_query = query_str
|
|
81
82
|
prefixes_str = endpoint.get_prefixes(PrefixConfigs.get_instance())
|
|
82
|
-
if
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
merged_query = Prefixes.merge_prefixes(query_str, prefixes_str)
|
|
83
|
+
if prefixes_str.strip():
|
|
84
|
+
merged_query = Prefixes.merge_prefixes(query_str, prefixes_str)
|
|
86
85
|
return merged_query
|
|
87
86
|
|
|
88
87
|
@classmethod
|
|
@@ -3,14 +3,16 @@ Created on 2025-12-16
|
|
|
3
3
|
|
|
4
4
|
@author: wf
|
|
5
5
|
"""
|
|
6
|
+
|
|
6
7
|
import os
|
|
7
8
|
import re
|
|
8
9
|
import textwrap
|
|
9
|
-
from typing import
|
|
10
|
+
from typing import Any, Dict, List, Optional
|
|
10
11
|
|
|
11
12
|
from lodstorage.params import Param
|
|
12
13
|
from lodstorage.query import Query
|
|
13
|
-
|
|
14
|
+
|
|
15
|
+
from snapquery.snapquery_core import NamedQuery, NamedQuerySet
|
|
14
16
|
|
|
15
17
|
|
|
16
18
|
class QueryParameterizer:
|
|
@@ -26,49 +28,49 @@ class QueryParameterizer:
|
|
|
26
28
|
# Defaults for specific Scholia Aspects
|
|
27
29
|
# derived from the prompt list
|
|
28
30
|
ASPECT_DEFAULTS = {
|
|
29
|
-
"author": "Q80",
|
|
31
|
+
"author": "Q80", # Tim Berners-Lee
|
|
30
32
|
"authors": "Q80",
|
|
31
|
-
"award": "Q616568",
|
|
33
|
+
"award": "Q616568", # Turing Award
|
|
32
34
|
"catalogue": "Q2463660", # British Library catalogue
|
|
33
|
-
"chemical": "Q18216",
|
|
34
|
-
"cito": "Q1054942",
|
|
35
|
-
"clinical": "Q12136",
|
|
36
|
-
"complex": "Q417724",
|
|
37
|
-
"countries": "Q183",
|
|
35
|
+
"chemical": "Q18216", # Aspirin
|
|
36
|
+
"cito": "Q1054942", # citation intent
|
|
37
|
+
"clinical": "Q12136", # Common Cold (disease context)
|
|
38
|
+
"complex": "Q417724", # Protein complex
|
|
39
|
+
"countries": "Q183", # Germany
|
|
38
40
|
"country": "Q183",
|
|
39
|
-
"dataset": "Q1172284",
|
|
40
|
-
"disease": "Q12136",
|
|
41
|
-
"event": "Q2020153",
|
|
42
|
-
"gene": "Q7191",
|
|
43
|
-
"index": "Q1",
|
|
44
|
-
"language": "Q1860",
|
|
45
|
-
"lexeme": "Q151326",
|
|
46
|
-
"license": "Q20007257",
|
|
47
|
-
"location": "Q64",
|
|
48
|
-
"ontology": "Q324254",
|
|
49
|
-
"organization": "Q95",
|
|
41
|
+
"dataset": "Q1172284", # Data set
|
|
42
|
+
"disease": "Q12136", # Common Cold
|
|
43
|
+
"event": "Q2020153", # WWW Conference
|
|
44
|
+
"gene": "Q7191", # p53
|
|
45
|
+
"index": "Q1", # Universe (generic fallback)
|
|
46
|
+
"language": "Q1860", # English
|
|
47
|
+
"lexeme": "Q151326", # Word
|
|
48
|
+
"license": "Q20007257", # CC BY 4.0
|
|
49
|
+
"location": "Q64", # Berlin
|
|
50
|
+
"ontology": "Q324254", # Ontology
|
|
51
|
+
"organization": "Q95", # Google
|
|
50
52
|
"organizations": "Q95",
|
|
51
|
-
"pathway": "Q26487",
|
|
52
|
-
"podcast": "Q24634210",
|
|
53
|
-
"printer": "Q11226",
|
|
54
|
-
"project": "Q5562725",
|
|
55
|
-
"property": "P31",
|
|
56
|
-
"protein": "Q11060",
|
|
57
|
-
"publisher": "Q203019",
|
|
58
|
-
"retraction": "Q45263695",
|
|
59
|
-
"series": "Q245209",
|
|
60
|
-
"software": "Q28865",
|
|
61
|
-
"sponsor": "Q95",
|
|
62
|
-
"taxon": "Q140",
|
|
63
|
-
"topic": "Q21198",
|
|
53
|
+
"pathway": "Q26487", # Metabolic pathway
|
|
54
|
+
"podcast": "Q24634210", # The Ozymandias Project
|
|
55
|
+
"printer": "Q11226", # Printer (the device/person)
|
|
56
|
+
"project": "Q5562725", # WikiProject
|
|
57
|
+
"property": "P31", # Instance of
|
|
58
|
+
"protein": "Q11060", # Green fluorescent protein
|
|
59
|
+
"publisher": "Q203019", # Elsevier
|
|
60
|
+
"retraction": "Q45263695", # Retracted paper example
|
|
61
|
+
"series": "Q245209", # Book series
|
|
62
|
+
"software": "Q28865", # Python
|
|
63
|
+
"sponsor": "Q95", # Google
|
|
64
|
+
"taxon": "Q140", # Lion
|
|
65
|
+
"topic": "Q21198", # Computer Science
|
|
64
66
|
"topics": "Q21198",
|
|
65
67
|
"use": "Q1",
|
|
66
68
|
"uses": "Q1",
|
|
67
|
-
"venue": "Q180445",
|
|
69
|
+
"venue": "Q180445", # Nature (Journal)
|
|
68
70
|
"venues": "Q180445",
|
|
69
71
|
"wikiproject": "Q5562725",
|
|
70
|
-
"work": "Q13442814",
|
|
71
|
-
"works": "Q13442814"
|
|
72
|
+
"work": "Q13442814", # Scientific Article
|
|
73
|
+
"works": "Q13442814",
|
|
72
74
|
}
|
|
73
75
|
|
|
74
76
|
def __init__(self, debug: bool = False):
|
|
@@ -87,7 +89,7 @@ class QueryParameterizer:
|
|
|
87
89
|
details = {"type": "string", "default": "Q80"}
|
|
88
90
|
|
|
89
91
|
# 1. Identify Type based on variable name
|
|
90
|
-
if var_name in [
|
|
92
|
+
if var_name in ["q", "target", "item", "person", "work", "venue", "gene", "disease"]:
|
|
91
93
|
details["type"] = "WikidataItem"
|
|
92
94
|
|
|
93
95
|
# 2. Assign Default Value based on Aspect
|
|
@@ -95,39 +97,39 @@ class QueryParameterizer:
|
|
|
95
97
|
details["default"] = self.ASPECT_DEFAULTS[aspect]
|
|
96
98
|
|
|
97
99
|
# 3. Fallback defaults if aspect is missing or generic
|
|
98
|
-
elif var_name ==
|
|
100
|
+
elif var_name == "person":
|
|
99
101
|
details["default"] = "Q80" # Tim Berners-Lee
|
|
100
|
-
elif var_name ==
|
|
102
|
+
elif var_name == "work":
|
|
101
103
|
details["default"] = "Q13442814"
|
|
102
104
|
else:
|
|
103
105
|
details["default"] = "Q80"
|
|
104
106
|
|
|
105
|
-
elif var_name in [
|
|
107
|
+
elif var_name in ["p", "property"]:
|
|
106
108
|
details["type"] = "WikidataProperty"
|
|
107
109
|
details["default"] = "P31"
|
|
108
|
-
elif var_name in [
|
|
110
|
+
elif var_name in ["limit"]:
|
|
109
111
|
details["type"] = "int"
|
|
110
112
|
details["default"] = 10
|
|
111
|
-
elif var_name in [
|
|
113
|
+
elif var_name in ["lang", "language"]:
|
|
112
114
|
details["type"] = "string"
|
|
113
115
|
details["default"] = "en"
|
|
114
116
|
|
|
115
117
|
return details
|
|
116
118
|
|
|
117
|
-
def get_queries_by_aspect(self,query_list:List[Query])->Dict[str,List[Query]]:
|
|
119
|
+
def get_queries_by_aspect(self, query_list: List[Query]) -> Dict[str, List[Query]]:
|
|
118
120
|
"""
|
|
119
121
|
get queries by aspect
|
|
120
122
|
"""
|
|
121
123
|
queries_by_aspect = {}
|
|
122
124
|
for query in query_list:
|
|
123
|
-
aspect=self.get_aspect(query.name)
|
|
125
|
+
aspect = self.get_aspect(query.name)
|
|
124
126
|
if aspect in self.ASPECT_DEFAULTS:
|
|
125
127
|
if aspect not in queries_by_aspect:
|
|
126
128
|
queries_by_aspect[aspect] = []
|
|
127
129
|
queries_by_aspect[aspect].append(query)
|
|
128
130
|
return queries_by_aspect
|
|
129
131
|
|
|
130
|
-
def store_query_list(self,query_list:List[Query],tag:str,path:str="/tmp/queries"):
|
|
132
|
+
def store_query_list(self, query_list: List[Query], tag: str, path: str = "/tmp/queries"):
|
|
131
133
|
"""
|
|
132
134
|
Store query list sorted by aspect into separate YAML files.
|
|
133
135
|
|
|
@@ -136,7 +138,7 @@ class QueryParameterizer:
|
|
|
136
138
|
tag (str): Tag to include in filename.
|
|
137
139
|
path (str): Directory path where YAML files will be stored.
|
|
138
140
|
"""
|
|
139
|
-
queries_by_aspect=self.get_queries_by_aspect(query_list)
|
|
141
|
+
queries_by_aspect = self.get_queries_by_aspect(query_list)
|
|
140
142
|
# Create directory if it doesn't exist
|
|
141
143
|
os.makedirs(path, exist_ok=True)
|
|
142
144
|
|
|
@@ -150,11 +152,10 @@ class QueryParameterizer:
|
|
|
150
152
|
# work around https://github.com/yaml/pyyaml/issues/411
|
|
151
153
|
if query.sparql:
|
|
152
154
|
clean_sparql = textwrap.dedent(query.sparql).strip()
|
|
153
|
-
yaml_str=query.to_yaml()
|
|
155
|
+
yaml_str = query.to_yaml()
|
|
154
156
|
f.write(yaml_str)
|
|
155
157
|
pass
|
|
156
158
|
|
|
157
|
-
|
|
158
159
|
def parameterize_query_set(self, query_set: NamedQuerySet) -> List[Query]:
|
|
159
160
|
"""
|
|
160
161
|
Parameterize the given query set to produce a list of LoDStorage queries.
|
|
@@ -171,11 +172,11 @@ class QueryParameterizer:
|
|
|
171
172
|
query_list.append(query)
|
|
172
173
|
return query_list
|
|
173
174
|
|
|
174
|
-
def get_aspect(self,name:str)->str:
|
|
175
|
+
def get_aspect(self, name: str) -> str:
|
|
175
176
|
aspect = None
|
|
176
177
|
if name:
|
|
177
178
|
# Split by hyphen first, as that is the standard separator in the example
|
|
178
|
-
parts = re.split(r
|
|
179
|
+
parts = re.split(r"[-_]", name)
|
|
179
180
|
if parts:
|
|
180
181
|
aspect = parts[0].lower()
|
|
181
182
|
return aspect
|
|
@@ -198,47 +199,32 @@ class QueryParameterizer:
|
|
|
198
199
|
# 0. Determine Aspect
|
|
199
200
|
# Naming convention: {aspect}-{subname} or {aspect}_{subname}
|
|
200
201
|
# e.g., "venue-curation_missing-author-item" -> "venue"
|
|
201
|
-
aspect=self.get_aspect(nq.name)
|
|
202
|
+
aspect = self.get_aspect(nq.name)
|
|
202
203
|
|
|
203
204
|
raw_sparql = nq.sparql
|
|
204
205
|
|
|
205
206
|
# 1. Remove Jinja imports
|
|
206
207
|
# e.g., {% import 'sparql-helpers.sparql' as sparql_helpers -%}
|
|
207
|
-
txt = re.sub(r
|
|
208
|
+
txt = re.sub(r"\{%\s*import\s*.*?%\}", "", raw_sparql, flags=re.DOTALL)
|
|
208
209
|
|
|
209
210
|
# 2. Replace Label/Description Macros
|
|
210
211
|
# Matches: {{ sparql_helpers.labels(["?mol"], languages) }}
|
|
211
|
-
txt = re.sub(
|
|
212
|
-
r"\{\{\s*sparql_helpers\.(labels|descriptions).*?\}\}",
|
|
213
|
-
self.LABEL_SERVICE,
|
|
214
|
-
txt,
|
|
215
|
-
flags=re.DOTALL
|
|
216
|
-
)
|
|
212
|
+
txt = re.sub(r"\{\{\s*sparql_helpers\.(labels|descriptions).*?\}\}", self.LABEL_SERVICE, txt, flags=re.DOTALL)
|
|
217
213
|
|
|
218
214
|
# 3. Detect Variables to build Param list
|
|
219
215
|
found_vars = set(re.findall(r"\{\{\s*([a-zA-Z0-9_]+)\s*\}\}", txt))
|
|
220
|
-
found_vars.discard(
|
|
216
|
+
found_vars.discard("sparql_helpers")
|
|
221
217
|
|
|
222
218
|
# Create lodstorage Query object
|
|
223
219
|
clean_sparql = txt.strip()
|
|
224
220
|
|
|
225
|
-
query_obj = Query(
|
|
226
|
-
name=nq.name,
|
|
227
|
-
query=clean_sparql,
|
|
228
|
-
title=nq.title,
|
|
229
|
-
description=nq.description,
|
|
230
|
-
lang='sparql'
|
|
231
|
-
)
|
|
221
|
+
query_obj = Query(name=nq.name, query=clean_sparql, title=nq.title, description=nq.description, lang="sparql")
|
|
232
222
|
|
|
233
223
|
# 4. Attach Parameters with Aspect context
|
|
234
224
|
param_list = []
|
|
235
225
|
for var in sorted(found_vars):
|
|
236
226
|
details = self._infer_param_details(var, aspect=aspect)
|
|
237
|
-
p = Param(
|
|
238
|
-
name=var,
|
|
239
|
-
type=details["type"],
|
|
240
|
-
default_value=details["default"]
|
|
241
|
-
)
|
|
227
|
+
p = Param(name=var, type=details["type"], default_value=details["default"])
|
|
242
228
|
param_list.append(p)
|
|
243
229
|
|
|
244
230
|
query_obj.param_list = param_list
|
|
@@ -4,19 +4,20 @@ Created on 2025-12-04
|
|
|
4
4
|
@author: wf
|
|
5
5
|
"""
|
|
6
6
|
|
|
7
|
-
from argparse import ArgumentParser, Namespace
|
|
8
7
|
import sys
|
|
8
|
+
from argparse import ArgumentParser, Namespace
|
|
9
9
|
|
|
10
10
|
from basemkit.base_cmd import BaseCmd
|
|
11
|
+
from tqdm import tqdm
|
|
12
|
+
|
|
11
13
|
from snapquery.qlever import QLever
|
|
12
14
|
from snapquery.query_set_tool import QuerySetTool
|
|
13
|
-
from snapquery.scholia import
|
|
15
|
+
from snapquery.scholia import GitHubQueries, ScholiaQueries
|
|
14
16
|
from snapquery.sib_sparql_examples import SibSparqlExamples
|
|
15
17
|
from snapquery.snapquery_core import NamedQueryManager
|
|
16
18
|
from snapquery.version import Version
|
|
17
19
|
from snapquery.wd_page_query_extractor import WikidataQueryExtractor
|
|
18
20
|
from snapquery.wd_short_url import ShortUrl
|
|
19
|
-
from tqdm import tqdm
|
|
20
21
|
|
|
21
22
|
|
|
22
23
|
class QuerySetCmdVersion(Version):
|
|
@@ -214,7 +215,6 @@ class QuerySetCmd(BaseCmd):
|
|
|
214
215
|
self._handle_random_short_urls(args)
|
|
215
216
|
return True
|
|
216
217
|
|
|
217
|
-
|
|
218
218
|
return False
|
|
219
219
|
|
|
220
220
|
def _handle_convert(self, args: Namespace) -> None:
|
|
@@ -263,13 +263,12 @@ class QuerySetCmd(BaseCmd):
|
|
|
263
263
|
extension=args.github_extension,
|
|
264
264
|
domain=args.domain,
|
|
265
265
|
namespace=args.namespace,
|
|
266
|
-
debug=args.debug
|
|
266
|
+
debug=args.debug,
|
|
267
267
|
)
|
|
268
268
|
|
|
269
269
|
gh_queries.extract_queries(limit=args.limit, show_progress=args.progress)
|
|
270
270
|
self._output_dataset(gh_queries.named_query_set, args)
|
|
271
271
|
|
|
272
|
-
|
|
273
272
|
def _handle_scholia(self, args: Namespace) -> None:
|
|
274
273
|
"""
|
|
275
274
|
Handle the standard Scholia import workflow using defaults.
|
|
@@ -292,12 +291,11 @@ class QuerySetCmd(BaseCmd):
|
|
|
292
291
|
repo="scholia",
|
|
293
292
|
branch="qlever",
|
|
294
293
|
namespace="named_queries_qlever",
|
|
295
|
-
debug=args.debug
|
|
294
|
+
debug=args.debug,
|
|
296
295
|
)
|
|
297
296
|
scholia_qlever.extract_queries(limit=args.limit, show_progress=args.progress)
|
|
298
297
|
self._output_dataset(scholia_qlever.named_query_set, args)
|
|
299
298
|
|
|
300
|
-
|
|
301
299
|
def _handle_wikidata_examples(self, args: Namespace) -> None:
|
|
302
300
|
"""
|
|
303
301
|
Handle the Wikidata Examples import workflow.
|
|
@@ -4,23 +4,9 @@
|
|
|
4
4
|
endpoints:
|
|
5
5
|
wikidata:
|
|
6
6
|
description: |
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
endpoint: https://query-legacy-full.wikidata.org/sparql
|
|
11
|
-
website: https://query-legacy-full.wikidata.org
|
|
12
|
-
database: blazegraph
|
|
13
|
-
method: POST
|
|
14
|
-
calls_per_minute: 30
|
|
15
|
-
auto_update: true
|
|
16
|
-
data_seeded: 2012-10-29
|
|
17
|
-
uptime_days: 4500
|
|
18
|
-
mtriples: 22000
|
|
19
|
-
prefix_sets:
|
|
20
|
-
- rdf
|
|
21
|
-
- wikidata
|
|
22
|
-
- blazegraph
|
|
23
|
-
- commons
|
|
7
|
+
abstract name of the Wikidata endpoint, an alias resolved to a concrete entry;
|
|
8
|
+
a host redirects it in ~/.pylodstorage/endpoints.yaml, e.g. to a local copy
|
|
9
|
+
alias: wikidata-main
|
|
24
10
|
|
|
25
11
|
wikidata-main:
|
|
26
12
|
description: WDQS Graph Split — main (non-scholarly).
|
|
@@ -89,6 +75,30 @@ endpoints:
|
|
|
89
75
|
- wikidata
|
|
90
76
|
- commons
|
|
91
77
|
|
|
78
|
+
wikidata-next:
|
|
79
|
+
description: Wikimedia QLever Wikidata full graph (query-next).
|
|
80
|
+
lang: sparql
|
|
81
|
+
method: POST
|
|
82
|
+
database: qlever
|
|
83
|
+
endpoint: https://query-next.wikidata.org/sparql
|
|
84
|
+
website: https://query-next.wikidata.org/
|
|
85
|
+
calls_per_minute: 60
|
|
86
|
+
prefix_sets:
|
|
87
|
+
- rdf
|
|
88
|
+
- wikidata
|
|
89
|
+
|
|
90
|
+
wikidata-scholarly-next:
|
|
91
|
+
description: Wikimedia QLever Wikidata scholarly graph (query-scholarly-next).
|
|
92
|
+
lang: sparql
|
|
93
|
+
method: POST
|
|
94
|
+
database: qlever
|
|
95
|
+
endpoint: https://query-scholarly-next.wikidata.org/sparql
|
|
96
|
+
website: https://query-scholarly-next.wikidata.org/
|
|
97
|
+
calls_per_minute: 60
|
|
98
|
+
prefix_sets:
|
|
99
|
+
- rdf
|
|
100
|
+
- wikidata
|
|
101
|
+
|
|
92
102
|
wikidata-triply:
|
|
93
103
|
description: TriplyDB mirror.
|
|
94
104
|
lang: sparql
|
|
@@ -5,13 +5,16 @@ Created on 2024-05-04
|
|
|
5
5
|
|
|
6
6
|
@author: wf
|
|
7
7
|
"""
|
|
8
|
+
|
|
9
|
+
from typing import Optional
|
|
10
|
+
|
|
8
11
|
import requests
|
|
9
12
|
from tqdm import tqdm
|
|
10
|
-
from typing import Optional
|
|
11
13
|
|
|
12
14
|
from snapquery.github_access import GitHub
|
|
13
15
|
from snapquery.snapquery_core import NamedQuery, NamedQueryManager, NamedQuerySet
|
|
14
16
|
|
|
17
|
+
|
|
15
18
|
class GitHubQueries:
|
|
16
19
|
"""
|
|
17
20
|
A general class to handle the extraction and management of queries
|
|
@@ -29,7 +32,7 @@ class GitHubQueries:
|
|
|
29
32
|
domain: Optional[str] = None,
|
|
30
33
|
namespace: Optional[str] = None,
|
|
31
34
|
target_graph: str = "wikidata",
|
|
32
|
-
debug: bool = False
|
|
35
|
+
debug: bool = False,
|
|
33
36
|
):
|
|
34
37
|
"""
|
|
35
38
|
Constructor
|
|
@@ -138,6 +141,7 @@ class ScholiaQueries(GitHubQueries):
|
|
|
138
141
|
"""
|
|
139
142
|
Specific implementation for Scholia Queries with configurable repo/owner/branch.
|
|
140
143
|
"""
|
|
144
|
+
|
|
141
145
|
def __init__(
|
|
142
146
|
self,
|
|
143
147
|
nqm: NamedQueryManager,
|
|
@@ -146,7 +150,7 @@ class ScholiaQueries(GitHubQueries):
|
|
|
146
150
|
branch: Optional[str] = None,
|
|
147
151
|
domain: str = "scholia.toolforge.org",
|
|
148
152
|
namespace: str = "named_queries",
|
|
149
|
-
debug: bool = False
|
|
153
|
+
debug: bool = False,
|
|
150
154
|
):
|
|
151
155
|
super().__init__(
|
|
152
156
|
nqm=nqm,
|
|
@@ -157,5 +161,5 @@ class ScholiaQueries(GitHubQueries):
|
|
|
157
161
|
extension=".sparql",
|
|
158
162
|
domain=domain,
|
|
159
163
|
namespace=namespace,
|
|
160
|
-
debug=debug
|
|
161
|
-
)
|
|
164
|
+
debug=debug,
|
|
165
|
+
)
|