Difference between revisions of "Snapquery"
Jump to navigation
Jump to search
(→Usage) |
|||
Line 24: | Line 24: | ||
= Usage = | = Usage = | ||
+ | == Web == | ||
+ | === nominate === | ||
+ | To nominate a query you need to first identify you with a persistent indentifier such as: | ||
+ | * ORCID e.g. [https://orcid.org/0000-0003-1279-3709 0000-0003-1279-3709 (Tim Berners-Lee) | ||
+ | * Wikidata ID e.g. [https://www.wikidata.org/wiki/Q80 Q80 (Tim Berners-Lee)] | ||
+ | * dblp author ID e.g. [https://dblp.org/pid/b/TimBernersLee.html b/TimBernersLee (Tim-Berners Lee)] | ||
+ | You can either enter such an ID directly or use the lookup functionality to do so. | ||
+ | |||
== RESTFul API == | == RESTFul API == | ||
http://snapquery.bitplan.com/docs | http://snapquery.bitplan.com/docs | ||
Line 238: | Line 246: | ||
Imported 298 named queries from samples/wikidata-examples.json. | Imported 298 named queries from samples/wikidata-examples.json. | ||
</source> | </source> | ||
+ | |||
= Links = | = Links = | ||
* https://etherpad.wikimedia.org/p/wmh2024-Wikimedia_Hackathon_2024_Closing | * https://etherpad.wikimedia.org/p/wmh2024-Wikimedia_Hackathon_2024_Closing |
Revision as of 11:57, 28 May 2024
OsProject
OsProject | |
---|---|
id | snapquery |
state | active |
owner | WolfgangFahl |
title | snapquery |
url | https://github.com/WolfgangFahl/snapquery |
version | 0.0.7 |
description | Just Query wikidata and other SPARQL endpoints by qury name - a frontend to Introduce Named Queries and Named Query Middleware to wikidata and other SPARQL endpoints |
date | 2024-05-07 |
since | 2024-05-03 |
until |
Motivation
Querying Knowledge Graphs such as wikidata that are based on SPARQL is too complex for mere mortals. A simple
snapquery cats
should work. See https://snapquery.bitplan.com/query/wikidata-examples/cats for an example
Demos
Usage
Web
nominate
To nominate a query you need to first identify you with a persistent indentifier such as:
- ORCID e.g. [https://orcid.org/0000-0003-1279-3709 0000-0003-1279-3709 (Tim Berners-Lee)
- Wikidata ID e.g. Q80 (Tim Berners-Lee)
- dblp author ID e.g. b/TimBernersLee (Tim-Berners Lee)
You can either enter such an ID directly or use the lookup functionality to do so.
RESTFul API
http://snapquery.bitplan.com/docs
query
curl 'https://snapquery.bitplan.com/api/query/wikidata-examples/cats.mediawiki?limit=5'
cats
query
SELECT ?item ?itemLabel
WHERE {
?item wdt:P31 wd:Q146. # Must be a cat
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
LIMIT 5
result
item | itemLabel |
---|---|
http://www.wikidata.org/entity/Q378619 | CC |
http://www.wikidata.org/entity/Q498787 | Muezza |
http://www.wikidata.org/entity/Q677525 | Orangey |
http://www.wikidata.org/entity/Q851190 | Mrs. Chippy |
http://www.wikidata.org/entity/Q893453 | Unsinkable Sam |
sparql
curl 'https://snapquery.bitplan.com/api/sparql/wikidata-examples/cats'
SELECT ?item ?itemLabel
WHERE {
?item wdt:P31 wd:Q146. # Must be a cat
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
Commandline
Help
snapquery -h
usage: snapquery [-h] [-a] [--apache APACHE] [-c] [-d]
[--debugServer DEBUGSERVER] [--debugPort DEBUGPORT]
[--debugRemotePath DEBUGREMOTEPATH]
[--debugLocalPath DEBUGLOCALPATH] [-l] [-i INPUT] [-rol]
[--host HOST] [--port PORT] [-s] [-V] [-ep ENDPOINTPATH]
[-en ENDPOINTNAME] [-le]
Introduce Named Queries and Named Query Middleware to wikidata
options:
-h, --help show this help message and exit
-a, --about show about info [default: False]
--apache APACHE create an apache configuration file for the given
domain
-c, --client start client [default: False]
-d, --debug show debug info [default: False]
--debugServer DEBUGSERVER
remote debug Server
--debugPort DEBUGPORT
remote debug Port
--debugRemotePath DEBUGREMOTEPATH
remote debug Server path mapping - remotePath - path
on debug server
--debugLocalPath DEBUGLOCALPATH
remote debug Server path mapping - localPath - path on
machine where python runs
-l, --local run with local file system access [default: False]
-i INPUT, --input INPUT
input file
-rol, --render_on_load
render on load [default: False]
--host HOST the host to serve / listen from [default: localhost]
--port PORT the port to serve from [default: 9862]
-s, --serve start webserver [default: False]
-V, --version show program's version number and exit
-ep ENDPOINTPATH, --endpointPath ENDPOINTPATH
path to yaml file to configure endpoints to use for
queries
-en ENDPOINTNAME, --endpointName ENDPOINTNAME
Name of the endpoint to use for queries - use
--listEndpoints to list available endpoints
-le, --listEndpoints show the list of available endpoints
List Endpoints
snapquery --listEndpoints
wikidata:https://query.wikidata.org:https://query.wikidata.org/sparql(POST)
qlever-wikidata:https://qlever.cs.uni-freiburg.de/wikidata:https://qlever.cs.uni-freiburg.de/api/wikidata(POST)
Run Query
cats
snapquery -qn cats --limit 10 -f mediawiki
query
SELECT ?item ?itemLabel
WHERE {
?item wdt:P31 wd:Q146. # Must be a cat
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
result
item | itemLabel |
---|---|
http://www.wikidata.org/entity/Q378619 | CC |
http://www.wikidata.org/entity/Q498787 | Muezza |
http://www.wikidata.org/entity/Q677525 | Orangey |
http://www.wikidata.org/entity/Q851190 | Mrs. Chippy |
http://www.wikidata.org/entity/Q893453 | Unsinkable Sam |
http://www.wikidata.org/entity/Q1050083 | Catmando |
http://www.wikidata.org/entity/Q1185550 | Oscar |
http://www.wikidata.org/entity/Q1201902 | Tama |
http://www.wikidata.org/entity/Q1207136 | Dewey Readmore Books |
http://www.wikidata.org/entity/Q1371145 | Socks |
scholia author_list-of-publications with parameter Q80 (papers by Tim-Berners-Lee)
snapquery --namespace scholia -qn author_list-of-publications --params q=Q80 --limit 2 -f mediawiki
query
#defaultView:Table
PREFIX target: <http://www.wikidata.org/entity/Q80>
SELECT
(MIN(?dates) AS ?date)
?work ?workLabel
(GROUP_CONCAT(DISTINCT ?type_label; separator=", ") AS ?type)
(SAMPLE(?pages_) AS ?pages)
?venue ?venueLabel
(GROUP_CONCAT(DISTINCT ?author_label; separator=", ") AS ?authors)
(CONCAT("../authors/", GROUP_CONCAT(DISTINCT SUBSTR(STR(?author), 32); separator=",")) AS ?authorsUrl)
WHERE {
?work wdt:P50 target: .
?work wdt:P50 ?author .
OPTIONAL {
?author rdfs:label ?author_label_ . FILTER (LANG(?author_label_) = 'en')
}
BIND(COALESCE(?author_label_, SUBSTR(STR(?author), 32)) AS ?author_label)
OPTIONAL { ?work wdt:P31 ?type_ . ?type_ rdfs:label ?type_label . FILTER (LANG(?type_label) = 'en') }
?work wdt:P577 ?datetimes .
BIND(xsd:date(?datetimes) AS ?dates)
OPTIONAL { ?work wdt:P1104 ?pages_ }
OPTIONAL { ?work wdt:P1433 ?venue }
SERVICE wikibase:label { bd:serviceParam wikibase:language "en,da,de,es,fr,jp,no,ru,sv,zh". }
}
GROUP BY ?work ?workLabel ?venue ?venueLabel
ORDER BY DESC(?date)
LIMIT 2
result
date | work | workLabel | type | venue | venueLabel | authors | authorsUrl | pages |
---|---|---|---|---|---|---|---|---|
2023-07-07 | http://www.wikidata.org/entity/Q125750037 | Linked Data - The Story So Far | chapter | http://www.wikidata.org/entity/Q125750044 | Linking the World’s Information | Christian Bizer, Tom Heath, Tim Berners-Lee | ../authors/Q17744291,Q17744272,Q80 | |
2017-01-01 | http://www.wikidata.org/entity/Q30096408 | Linked Data Notifications: A Resource-Centric Communication Protocol | scholarly article | http://www.wikidata.org/entity/Q30092087 | The Semantic Web: 14th International Conference, ESWC 2017, Portorož, Slovenia, May 28 – June 1, 2017, Proceedings, Part I | Christoph Lange, Amy Guy, Sarven Capadisli, Sören Auer, Tim Berners-Lee | ../authors/Q30276490,Q30086138,Q30078591,Q27453085,Q80 | 17 |
Mass Import Queries
snapquery --import samples/scholia.json
Importing Named Queries: 100%|████████████| 372/372 [00:00<00:00, 226127.69it/s]
Imported 372 named queries from samples/scholia.json.
Installation
pip install snapquery
# alternatively if your pip is not a python3 pip
pip3 install snapquery
# local install from source directory of snapquery
pip install .
upgrade
pip install snapquery -U
# alternatively if your pip is not a python3 pip
pip3 install snapquery -U
Initial database import
scripts/restore_db
Importing Named Queries: 100%|██████████████████| 28/28 [00:25<00:00, 1.09it/s]
Imported 28 named queries from samples/ceur-ws.json.
Importing Named Queries: 100%|████████████| 372/372 [00:00<00:00, 210308.81it/s]
Imported 372 named queries from samples/scholia.json.
Importing Named Queries: 100%|████████████| 298/298 [00:00<00:00, 252149.00it/s]
Imported 298 named queries from samples/wikidata-examples.json.