User:Awinkler3
https://orcid.org/0000-0002-9145-7238
Works for digiS Berlin (Research and Competence Centre Digitalisation Berlin (Q51845259))
Member of the Committee for Digital Resources of the International Association for Neo-Latin Studies (Q16319503) [1]
Possible ToDos[edit]
Add nicknames of members of Italian learned societies[edit]
Currently, the most commonly used data model doesn't appear to be appropriate (mostly the nickname is given as pseudonym (P742), cf. the following query:
SELECT ?pers ?persLabel ?society ?societyLabel ?name WHERE {
?pers wdt:P31 wd:Q5 ;
wdt:P463 ?society ;
wdt:P1810| wdt:P742 | wdt:P1449 ?name .
?society wdt:P17 wd:Q38 .
SERVICE wikibase:label { bd:serviceParam wikibase:language "it". }
It would be better (I think) to add the nickname as a qualifier subject named as (P1810) in a member of (P463):
SELECT ?pers ?persLabel ?society ?societyLabel ?name WHERE {
?pers wdt:P31 wd:Q5 ;
p:P463 ?statement .
?statement ps:P463 ?society ;
pq:P742| pq:P1810 ?name .
?society wdt:P17 wd:Q38 .
SERVICE wikibase:label { bd:serviceParam wikibase:language "it". }
Neo-Latin[edit]
Resources[edit]
Slides for digital@IANLS sessions on "Wikidata for Neolatinists": https://doi.org/10.5281/zenodo.7638227, https://doi.org/10.5281/zenodo.7674768
[edit]
- Database of Neo-Latin epic poems (uses Wikidata Q-IDs to identify authors and subjects).
SPARQL queries[edit]
Mastodon on Wikidata[edit]
Zeiteiste mit GLAMs auf Wikidata
#defaultView:Timeline
SELECT DISTINCT ?inst ?instLabel ?mastodon ?coords ?startDate
WHERE {
{ ?inst wdt:P31/wdt:P279* wd:Q33506 } UNION #Museums
{ ?inst wdt:P31/wdt:P279* wd:Q7075 } UNION #Libraries
{ ?inst wdt:P31/wdt:P279* wd:Q5003624 } UNION #Gedenkstätte
{ ?inst wdt:P31/wdt:P279* wd:Q166118 } # Archives
?inst wdt:P4033 ?mastodon .
OPTIONAL { ?inst wdt:P625 ?coords . }
OPTIONAL { ?inst p:P4033 [ pq:P580 ?startDate ] . }
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
Alle aktiven GLAM-Mastodon-Accounts (ohne "endDate" qualifier):
#defaultView:Timeline
SELECT DISTINCT ?inst ?instLabel ?mastodon ?coords ?startDate
WHERE {
{ ?inst wdt:P31/wdt:P279* wd:Q33506 } UNION #Museums
{ ?inst wdt:P31/wdt:P279* wd:Q7075 } UNION #Libraries
{ ?inst wdt:P31/wdt:P279* wd:Q5003624 } UNION #Gedenkstätte
{ ?inst wdt:P31/wdt:P279* wd:Q166118 } # Archives
?inst wdt:P4033 ?mastodon .
?inst p:P4033 ?statement .
?statement pq:P580 ?startDate .
MINUS { ?statement pq:P582 ?endDate . }
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
Alle Mastodon-Accounts auf Wikidata
SELECT DISTINCT ?inst ?instLabel ?mastodon
WHERE {
?inst wdt:P4033 ?mastodon .
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
Aktuellste Followerzahlen für Mastodonaccounts auf Wikidata
#title: Get most recent Mastodon follower count
# adapted from: https://stackoverflow.com/questions/36181713/sparql-query-to-get-only-results-with-the-most-recent-date
SELECT ?id ?address ?follower ?date WHERE {
?id p:P8687 ?statement .
?statement pq:P4033 ?address ;
pq:P585 ?date ;
ps:P8687 ?follower .
FILTER NOT EXISTS {
?id p:P8687 [ pq:P585 ?date2 ] .
FILTER (?date2 > ?date)
}
}
import requests from tqdm import tqdm from datetime import datetime import sys from SPARQLWrapper import SPARQLWrapper, JSON def getTS(): # Get current datetime now = datetime.now() # Format datetime as required formatted_now = "+"+now.strftime("%Y-%m-%dT00:00:00Z/11") return formatted_now def get_results(endpoint_url, query): user_agent = "WDQS-example Python/%s.%s" % (sys.version_info[0], sys.version_info[1]) # TODO adjust user agent; see https://w.wiki/CX6 sparql = SPARQLWrapper(endpoint_url, agent=user_agent) sparql.setQuery(query) sparql.setReturnFormat(JSON) return sparql.query().convert() def getMastoInfo(acctname): name, instance = acctname.split('@') res = requests.get( f"https://{instance}/api/v1/accounts/lookup?acct={name}" ).json() return { 'name' : name, 'accID' : res.get('id'), 'instance' : instance, 'followers' : res.get('followers_count'), 'following' : res.get('following_count'), 'statuses' : res.get('statuses_count'), 'timestamp' : getTS() } endpoint_url = "https://query.wikidata.org/sparql" query = "" logs = [] with open('followers.csv', 'w') as OUT: for result in tqdm(results["results"]["bindings"]): QID = result['inst']['value'].rpartition('/')[2] try: acctname = result['mastodon']['value'] mastInfo = getMastoInfo(acctname) OUT.write(f"{QID}\tP8687\t{mastInfo.get('followers')}\tP4033\t\"{acctname}\"\tP585\t{mastInfo.get('timestamp')}\n") #print(f"{QID}\tP8687\t{mastInfo.get('followers')}\tP4033\t\"{acctname}\"\tP585\t{mastInfo.get('timestamp')}") except Exception as e: print(e) logs.append(QID)
GLAM[edit]
Resources[edit]
Presentation on Wikidata for GLAMs (in German): Slides and recording
(not my) Projects[edit]
- OpenArtBrowser
- Short poll on Mastodon
SPARQL queries[edit]
Zahl der Objekte (d.h. Items) in #Berliner Museen auf #Wikidata (#SPARQL) je Museum[edit]
#defaultView:BarChart
SELECT ?mus ?musLabel (COUNT(?obj) AS ?n) WHERE {
?mus (wdt:P31|wdt:P31/wdt:P279|wdt:P31/wdt:P279/wdt:P279|wdt:P31/wdt:P279/wdt:P279/wdt:P279) wd:Q33506 ;
wdt:P131/wdt:P131* wd:Q64 .
?obj wdt:P276 ?mus .
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
} GROUP BY ?mus ?musLabel
ORDER BY DESC(?n)
Objects in the Gemäldegalerie Berlin without a depicts statement[edit]
# Objekte der Gemäldegalerie ohne Themenangabe
SELECT ?work ?workLabel ?URL WHERE {
?work wdt:P276 wd:Q165631 ;
wdt:P8923 ?SMBID .
FILTER NOT EXISTS {
?work wdt:P180 ?_ .
}
wd:P8923 wdt:P1630 ?formatterurl .
BIND(IRI(REPLACE(?SMBID, '^(.+)$', ?formatterurl)) AS ?URL).
SERVICE wikibase:label { bd:serviceParam wikibase:language "de,[AUTO_LANGUAGE],en". }
}
Objects in the Gemäldegalerie Berlin without an image property[edit]
#title: Objekte der Berliner Gemäldegalerie ohne image
SELECT DISTINCT ?obj ?objLabel WHERE {
?obj (wdt:P276| wdt:P195) wd:Q165631 .
?obj wdt:P31/wdt:P279+ wd:Q838948 .
MINUS { ?obj wdt:P18 ?img . }
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
How many objects do art museums have on Wikidata and how many statements have the object items on average?[edit]
#title: Wie viele Objekte je Kunstmuseum (Q207694) sind auf Wikidata und wie viele Wikidata-Statements haben die Objekt-Items durchschnittlich?
SELECT ?mus ?musLabel ?objCount ?avgStatements WHERE {
{
SELECT ?mus (COUNT(?obj) AS ?objCount) (AVG(?c) AS ?avgStatements) WHERE {
?mus wdt:P31 wd:Q207694 .
?obj wdt:P276 ?mus;
wikibase:statements ?c
} GROUP BY ?mus ?musLabel }
FILTER ( ?objCount > 100)
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
ORDER BY DESC(?avgStatements)
Average number of references in statements on objects located in German art museum[edit]
#title: Durchschnittliche Zahl an Quellenangabe (URL bzw. Item) bei Objekten in Kunstmuseen
SELECT ?collection ?collectionLabel (AVG(?numberOfReferences) AS ?revAverage)
WITH {
#named Subquery via https://renenyffenegger.ch/notes/development/Data/open/Wikidata/index nach https://w.wiki/5pWb
SELECT ?obj $collection WHERE {
?obj wdt:P276 $collection .
?collection wdt:P31 wd:Q207694;
wdt:P17 wd:Q183 .
}
} AS %objects
WHERE {
SELECT ?collection ?collectionLabel ?obj (COUNT(?refnode) AS ?numberOfReferences)
WHERE {
include %objects
?obj ?x ?statement.
?statement prov:wasDerivedFrom ?refnode.
?refnode (pr:P248| pr:P854) ?ref.
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
GROUP BY ?collection ?collectionLabel ?obj
}
GROUP BY ?collection ?collectionLabel
ORDER BY DESC(?revAverage)
BiB2WD - Bildhauerei in Berlin und Wikidata[edit]
Languages[edit]
Babel user information | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
Users by language |
BEACON -> Quickstatements -> Wikidata[edit]
BEACON -> QS-Files[edit]
curl "<BEACON-URL>" | grep '||' | awk -F"|" '{print $3"\tP<PROPERTY>\t"$1}' | split -d -a 3 -l 3000 - <PREFIX>_
Results in a bunch of files <PREFIX>_000
through <PREFIX>_n
containing QS commands like Q123 P<PROPERTY> ID
.
QS-Files -> Wikidata[edit]
QS-Token can be found here.
for i in <PREFIX>_*; do curl https://quickstatements.toolforge.org/api.php -d action=import -d submit=1 -d format=v1 -d username=Awinkler3 -d "batchname=$i" --data-raw 'token=<QS Token>' --data-urlencode data@$i; done