-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathqueries.py
More file actions
296 lines (275 loc) · 8.64 KB
/
queries.py
File metadata and controls
296 lines (275 loc) · 8.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
All example queries from Libris
https://github.com/libris/librisxl/blob/develop/SPARQL-example-queries.md
Written by Magnus Pettersson @2021
"""
query = list()
# 0. Hur många romaner gavs ut under 2019?
query.append("""
SELECT COUNT(DISTINCT ?novel) AS ?count {
?novel bf2:instanceOf/bf2:genreForm/(owl:sameAs|skos:exactMatch)* marc:Novel ; # noqa
kbv:publication/kbv:year "2019"
}
""")
# 1. Vilka språk finns Selma Lagerlöf översatt till?
query.append("""
SELECT DISTINCT ?language ?langName {
[] bf2:contribution [
a kbv:PrimaryContribution ;
bf2:role rel:author ;
bf2:agent <https://libris.kb.se/qn247n18248vs58#it>
] ;
bf2:translationOf/a bf2:Work ;
bf2:language ?language .
?language skos:prefLabel ?langName
FILTER(lang(?langName) = 'sv')
}
""")
# 2. Vilka språk har svensk utgivning översatts till mellan åren 2000-2010?
query.append("""
SELECT DISTINCT ?language ?langName {
[] bf2:instanceOf [
bf2:language ?language ;
bf2:translationOf/bf2:language lge:swe
] ;
kbv:publication/kbv:year ?year .
?language skos:prefLabel ?langName
FILTER(str(?year) >= "2000" && str(?year) < "2010")
FILTER(lang(?langName) = 'sv')
}
""")
# 3. Vilka svenska skönlitterära titlar har översatts till spanska 1990?
query.append("""
SELECT ?spanishInstance ?spanishTitle ?swedishTitle {
VALUES ?genre {
marc:FictionNotFurtherSpecified
marc:Drama
marc:Essay
marc:Novel
marc:HumorSatiresEtc
marc:Letter
marc:ShortStory
marc:MixedForms
marc:Poetry
}
?spanishInstance kbv:publication/kbv:year "1990" ;
bf2:instanceOf ?work .
?work bf2:genreForm/(owl:sameAs|skos:exactMatch)* ?genre ;
bf2:language lge:spa ;
bf2:translationOf [
a bf2:Work ;
bf2:language lge:swe
]
OPTIONAL {
?spanishInstance bf2:title [
a bf2:Title ;
bf2:mainTitle ?spanishTitle
]
}
OPTIONAL {
?work bf2:title [ a bf2:Title ;
bf2:mainTitle ?swedishTitle ]
}
}
""")
# 4. Vilka serietecknare har översatts till svenska under 1980-2020?
query.append("""
SELECT DISTINCT ?cartoonist CONCAT(?givenName, " ", ?familyName) {
VALUES ?genre {
marc:ComicStrip
marc:ComicOrGraphicNovel
}
[] bf2:instanceOf [ bf2:genreForm/(owl:sameAs|skos:exactMatch)* ?genre ; # noqa
bf2:language lge:swe ;
bf2:translationOf/a bf2:Work ;
bf2:contribution [ a kbv:PrimaryContribution ;
bf2:agent ?cartoonist ] ] ;
kbv:publication/kbv:year ?year
OPTIONAL {
?cartoonist foaf:givenName ?givenName ;
foaf:familyName ?familyName
}
FILTER(str(?year) >= "1980" && str(?year) < "2020")
FILTER(!isBlank(?cartoonist))
}
""")
# 5. Hur många franska barnböcker översättes till svenska under 1980-2020?
query.append("""
SELECT COUNT(DISTINCT ?book) AS ?count {
?book bf2:issuance kbv:Monograph ;
bf2:instanceOf [ a bf2:Text ;
bf2:intendedAudience/(owl:sameAs|skos:exactMatch)* marc:Juvenile ;
bf2:language lge:swe ;
bf2:translationOf [ a bf2:Work ;
bf2:language lge:fre ] ] ;
kbv:publication/kbv:year ?year
FILTER(str(?year) >= "1980" && str(?year) < "2020")
}
""")
# 6. Hur många böcker gavs ut på samiska utifrån aspekterna genre, målgrupp och utgivningsår? # noqa
query.append("""
SELECT ?year ?audience ?genre COUNT(?book) AS ?count {
VALUES ?language {
lge:smi
lge:smj
lge:sme
lge:sjd
lge:sju
lge:sma
lge:smn
lge:sje
lge:sia
lge:sjt
lge:sms
lge:sjk
}
?book bf2:issuance kbv:Monograph ;
bf2:instanceOf [
a bf2:Text ;
bf2:language ?language ;
bf2:intendedAudience ?audience ;
bf2:genreForm ?genre
];
kbv:publication/kbv:year ?year
FILTER(!isBlank(?genre))
}
ORDER BY ?year ?audience ?genre
""")
# 7. Hur många facklitterära böcker gav förlaget Natur och Kultur ut mellan åren 1920-2000? # noqa
query.append("""
SELECT COUNT(DISTINCT ?book) AS ?count {
?book bf2:issuance kbv:Monograph ;
bf2:instanceOf [
a bf2:Text ;
bf2:genreForm/(owl:sameAs|skos:exactMatch)* marc:NotFictionNotFurtherSpecified # noqa
] ;
kbv:publication [
a kbv:PrimaryPublication ;
bf2:agent/rdfs:label ?agent ;
kbv:year ?year
]
FILTER(regex(?agent, "Natur (&|och) Kultur|^N&K$", "i"))
FILTER(str(?year) >= "1920" && str(?year) < "2000")
}
""")
# 8. Hur många böcker ges ut av egenutgivare varje år?
query.append("""
SELECT ?year COUNT(DISTINCT ?book) AS ?count {
?book bf2:issuance kbv:Monograph ;
bf2:instanceOf/a bf2:Text ;
kbv:publication [
a kbv:PrimaryPublication ;
kbv:year ?year
] ;
^bf2:itemOf/kbv:cataloguersNote "nbegenutg"
}
ORDER BY ?year
""")
# 9. Hur många böcker har det getts ut inom barnlitteratur i Sverige varje år?
query.append("""
SELECT ?year COUNT(DISTINCT ?book) AS ?count {
?book bf2:issuance kbv:Monograph ;
bf2:instanceOf [
a bf2:Text ;
bf2:intendedAudience/(owl:sameAs|skos:exactMatch)* marc:Juvenile
] ;
kbv:publication [
a kbv:PrimaryPublication ;
kbv:country ctry:sw ;
kbv:year ?year
]
}
ORDER BY ?year
""")
# 10. Hur många böcker ges ut i Sverige totalt varje år?
query.append("""
SELECT ?year COUNT(DISTINCT ?book) AS ?count {
?book bf2:issuance kbv:Monograph ;
bf2:instanceOf/a bf2:Text ;
kbv:publication [
a kbv:PrimaryPublication ;
kbv:country ctry:sw ;
kbv:year ?year
]
}
ORDER BY ?year
""")
# 11. Hur många böcker har digitaliserats under 2020?
query.append("""
SELECT COUNT(DISTINCT ?digiBook) AS ?count {
?digiBook bf2:issuance kbv:Monograph ;
bf2:instanceOf/a bf2:Text ;
kbv:publication/kbv:year "2020" ;
^foaf:primaryTopic/kbv:bibliography <https://libris.kb.se/library/DIGI>
}
""")
# 12. Vilka titlar digitaliserades 2019?
query.append("""
SELECT ?digi ?title {
?digi kbv:publication/kbv:year "2019" ;
^foaf:primaryTopic/kbv:bibliography <https://libris.kb.se/library/DIGI> . # noqa
OPTIONAL {
?digi bf2:title [
a bf2:Title ;
bf2:mainTitle ?title
]
}
}
ORDER BY ?title
""")
# 13. Hur många svenska utgivare fanns det 1970?
query.append("""
SELECT COUNT(DISTINCT ?publisher) AS ?count {
[] a kbv:PrimaryPublication ;
kbv:country ctry:sw ;
kbv:year "1970" ;
bf2:agent/rdfs:label ?publisher
}
""")
# 14. Hur många barnböcker gavs ut på ett annat språk än svenska av svenska utgivare 2019? # noqa
query.append("""
SELECT COUNT(DISTINCT ?book) AS ?count {
?book bf2:issuance kbv:Monograph ;
bf2:instanceOf [
a bf2:Text ;
bf2:intendedAudience/(owl:sameAs|skos:exactMatch)* marc:Juvenile ;
bf2:language ?language
] ;
kbv:publication [
a kbv:PrimaryPublication ;
kbv:country ctry:sw ;
kbv:year "2019"
]
FILTER(?language != lge:swe)
}
""")
# 15. Vilka titlar har getts ut om coronapandemin 2019-2020 och coronaviruset?
query.append("""
SELECT DISTINCT ?instance ?title {
VALUES ?subject {
sao:Covid-19
sao:Coronapandemin%202019-2020%20
sao:Coronavirus
}
?instance bf2:instanceOf/bf2:subject ?subject
OPTIONAL {
?instance bf2:title [
a bf2:Title ;
bf2:mainTitle ?title
]
}
}
""")
# 16. Hur många titlar har getts ut om coronapandemin 2019-2020 och coronaviruset? # noqa
query.append("""
SELECT COUNT(DISTINCT ?instance) {
VALUES ?subject {
sao:Covid-19
sao:Coronapandemin%202019-2020%20
sao:Coronavirus
}
?instance bf2:instanceOf/bf2:subject ?subject
}
""")