Skip to content

Commit 45ba559

Browse files
committed
Update SPARQL examples to type-normalized shapes
1 parent dc46926 commit 45ba559

1 file changed

Lines changed: 52 additions & 66 deletions

File tree

docs/howto/sparql_examples.sv.md

Lines changed: 52 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,7 @@ Observera att enklare frågor också kan besvaras med hjälp av [sök-API:et](..
3030
PREFIX : <https://id.kb.se/vocab/>
3131
3232
SELECT (COUNT(DISTINCT ?novel) as ?count) {
33-
?gf (:exactMatch|^:exactMatch|:sameAs|^:sameAs)* marc:Novel .
34-
?novel :instanceOf/:genreForm ?gf ;
33+
?novel :instanceOf/:category/(:broader|:broadMatch)* <https://id.kb.se/term/saogf/Romaner> ;
3534
:publication [ :year "2019" ; :country ctry:sw ] .
3635
}
3736
```
@@ -47,16 +46,17 @@ för att inte behöva skriva ut varje trippel i sin helhet.
4746
### Vilka språk finns Selma Lagerlöf översatt till?
4847
```sparql
4948
PREFIX : <https://id.kb.se/vocab/>
49+
PREFIX rel: <https://id.kb.se/relator/>
5050
5151
SELECT DISTINCT ?language ?langName {
5252
[] :contribution [ a :PrimaryContribution ;
5353
:role rel:author ;
5454
:agent <https://libris.kb.se/qn247n18248vs58#it> ] ;
55-
:translationOf/a :Work ;
55+
:translationOf [] ;
5656
:language ?language .
5757
?language :prefLabel ?langName .
5858
59-
FILTER(lang(?langName) = 'sv')
59+
FILTER(lang(?langName) = 'sv')
6060
}
6161
```
6262
**Kommentar:**
@@ -85,34 +85,22 @@ Vi kan nämligen ta reda på verkets originalspråk via `:translationOf`, därem
8585
PREFIX : <https://id.kb.se/vocab/>
8686
8787
SELECT DISTINCT ?spanishInstance ?spanishTitle ?swedishTitle {
88-
VALUES ?genreForm {
89-
marc:FictionNotFurtherSpecified
90-
marc:Drama
91-
marc:Essay
92-
marc:Novel
93-
marc:HumorSatiresEtc
94-
marc:Letter
95-
marc:ShortStory
96-
marc:MixedForms
97-
marc:Poetry
98-
}
99-
100-
?gf (:exactMatch|^:exactMatch|:sameAs|^:sameAs)* ?genreForm .
10188
10289
?spanishInstance :publication/:year "1990" ;
10390
:instanceOf ?work .
104-
?work :genreForm ?gf ;
91+
?work :category/:broader* <https://id.kb.se/term/saogf/Sk%C3%B6nlitteratur> ;
10592
:language lge:spa ;
10693
:translationOf [ a :Work ; :language lge:swe ] .
94+
10795
OPTIONAL {
10896
?spanishInstance :hasTitle [ a :Title ; :mainTitle ?spanishTitle ] .
10997
}
11098
OPTIONAL {
11199
?work :hasTitle [ a :Title ; :mainTitle ?swedishTitle ] .
112100
}
113-
}
101+
}
114102
```
115-
**Kommentar:**
103+
**Kommentar:**
116104
Tyvärr är det inte möjligt att få fram vilka svenska verk som översatts till spanska då det kräver att verket ligger länkat under `bf2:translationOf`. I dagsläget får vi nöja oss med spanska instanser som översatts _från_ svenska.
117105

118106
Det vore även önskvärt att kunna ange _en_ term för _all_ skönlitteratur. Visserligen finns `saogf:Sk%C3%B6nlitteratur` men den har hittills för lite användning och dess relation till marc-termerna är inte heller definierad.
@@ -122,22 +110,18 @@ Det vore även önskvärt att kunna ange _en_ term för _all_ skönlitteratur. V
122110
PREFIX : <https://id.kb.se/vocab/>
123111
124112
SELECT DISTINCT ?cartoonist (CONCAT(?givenName, " ", ?familyName) as ?name) {
125-
VALUES ?genreForm {
126-
marc:ComicStrip
127-
marc:ComicOrGraphicNovel
128-
}
129113
130-
?gf (:exactMatch|^:exactMatch|:sameAs|^:sameAs)* ?genreForm .
131-
[] :instanceOf [ :genreForm ?gf ;
114+
?gf :broader* <https://id.kb.se/term/saogf/Tecknade%20serier>.
115+
[] :instanceOf [ :category ?gf ;
132116
:language lge:swe ;
133-
:translationOf/a :Work ;
117+
:translationOf/a/rdfs:subClassOf* :Work ;
134118
:contribution [ a :PrimaryContribution ;
135119
:agent ?cartoonist ] ] ;
136-
:publication/:year ?year .
120+
:publication/:year ?year .
137121
OPTIONAL {
138122
?cartoonist :givenName ?givenName ;
139123
:familyName ?familyName .
140-
}
124+
}
141125
142126
FILTER(str(?year) >= "1980" && str(?year) < "2020")
143127
FILTER(isIri(?cartoonist))
@@ -149,19 +133,20 @@ Serietecknare som ligger som lokala entiteter (blanknoder) under `:agent` filtre
149133
### Hur många franska barnböcker översättes till svenska under 1980-2020?
150134
```sparql
151135
PREFIX : <https://id.kb.se/vocab/>
136+
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
152137
153138
SELECT (COUNT(DISTINCT ?book) AS ?count) {
154139
?audience (:exactMatch|^:exactMatch|:sameAs|^:sameAs)* marc:Juvenile .
155-
?book :issuanceType :Monograph ;
156-
:instanceOf [ a :Text ;
140+
?book :instanceOf [ a :Monograph ;
141+
:category <https://id.kb.se/term/rda/Text> ;
157142
:intendedAudience ?audience ;
158143
:language lge:swe ;
159144
:translationOf [ a :Work ;
160145
:language lge:fre ] ] ;
161146
:publication/:year ?year .
162147
163148
FILTER(str(?year) >= "1980" && str(?year) < "2020")
164-
}
149+
}
165150
```
166151
**Kommentar:**
167152
Här frågar vi snarare efter antalet svenska resurser som översatts _från_ franska. Det omvända kräver att verken ligger länkade under `:translationOf`, vilket inte är fallet i dagsläget.
@@ -186,25 +171,25 @@ SELECT ?year ?audience ?genre (COUNT(?book) AS ?count) {
186171
lge:sms
187172
lge:sjk
188173
}
189-
190-
?book :issuanceType :Monograph ;
191-
:instanceOf [ a :Text ;
174+
?book :instanceOf [ a :Monograph ;
192175
:language ?language ;
193176
:intendedAudience ?audience ;
194-
:genreForm ?genre ] ;
177+
:category ?genre ] ;
195178
:publication/:year ?year .
196179
197-
FILTER(isIri(?genre))
180+
FILTER(isIri(?genre) && EXISTS { ?genre a :GenreForm })
198181
}
199182
GROUP BY ?year ?audience ?genre
200183
ORDER BY ?year ?audience ?genre
201184
```
202-
**Kommentar:**
185+
**Kommentar:**
203186
Det finns ingen URI som representerar alla samiska språk, utan vi får inkludera samtliga varieteter.
204187

205188
### Hur många facklitterära böcker gav förlaget Natur och Kultur ut mellan åren 1920-2000?
206189
```sparql
207190
PREFIX : <https://id.kb.se/vocab/>
191+
PREFIX ktg: <https://id.kb.se/term/ktg/>
192+
PREFIX kbrda: <https://id.kb.se/term/rda/>
208193
209194
SELECT (COUNT(DISTINCT ?book) AS ?count) {
210195
VALUES ?agentLabel {
@@ -214,10 +199,9 @@ SELECT (COUNT(DISTINCT ?book) AS ?count) {
214199
"Natur och Kultur"
215200
"N&K"
216201
}
217-
?gf (:exactMatch|^:exactMatch|:sameAs|^:sameAs)* marc:NotFictionNotFurtherSpecified .
218-
?book :issuanceType :Monograph ;
219-
:instanceOf [ a :Text ;
220-
:genreForm marc:NotFictionNotFurtherSpecified ] ;
202+
?gf :broader* ktg:NonFictionLiterature . # saogf:Facklitteratur .
203+
?book :instanceOf [ a :Monograph ;
204+
:category kbrda:Text, ?gf ] ;
221205
:publication [ a :PrimaryPublication ;
222206
:agent/:label ?agentLabel ;
223207
:year ?year ] .
@@ -232,10 +216,11 @@ Det vore önskvärt att kunna referera till en URI som representerar förlaget N
232216
### Hur många böcker ges ut av egenutgivare varje år?
233217
```sparql
234218
PREFIX : <https://id.kb.se/vocab/>
219+
PREFIX kbrda: <https://id.kb.se/term/rda/>
235220
236221
SELECT ?year (COUNT(DISTINCT ?book) AS ?count) {
237-
?book :issuanceType :Monograph ;
238-
:instanceOf/a :Text ;
222+
?book :instanceOf [ a :Monograph ;
223+
:category kbrda:Text ] ;
239224
:publication [ a :PrimaryPublication ;
240225
:year ?year ] ;
241226
^:itemOf/:hasComponent?/:cataloguersNote "nbegenutg" .
@@ -248,10 +233,9 @@ ORDER BY ?year
248233
PREFIX : <https://id.kb.se/vocab/>
249234
250235
SELECT ?year (COUNT(DISTINCT ?book) AS ?count) {
251-
?audience (:exactMatch|^:exactMatch|:sameAs|^:sameAs)* marc:Juvenile .
252-
?book :issuanceType :Monograph ;
253-
:instanceOf [ a :Text ;
254-
:intendedAudience marc:Juvenile ] ;
236+
?book :instanceOf [ a :Monograph ;
237+
:category <https://id.kb.se/term/rda/Text> ;
238+
:intendedAudience marc:Juvenile ] ;
255239
:publication [ a :PrimaryPublication ;
256240
:country ctry:sw ;
257241
:year ?year ] .
@@ -268,8 +252,8 @@ Vill man undanta årtal som avviker från formen "yyyy" kan man lägga till det
268252
PREFIX : <https://id.kb.se/vocab/>
269253
270254
SELECT ?year (COUNT(DISTINCT ?book) AS ?count) {
271-
?book :issuanceType :Monograph ;
272-
:instanceOf/a :Text ;
255+
?book :instanceOf [ a :Monograph ;
256+
:category <https://id.kb.se/term/rda/Text> ] ;
273257
:publication [ a :PrimaryPublication ;
274258
:country ctry:sw ;
275259
:year ?year ] .
@@ -283,8 +267,8 @@ ORDER BY ?year
283267
PREFIX : <https://id.kb.se/vocab/>
284268
285269
SELECT (COUNT(DISTINCT ?digiBook) AS ?count) {
286-
?digiBook :issuanceType :Monograph ;
287-
:instanceOf/a :Text ;
270+
?digiBook :instanceOf [ a :Monograph ;
271+
:category <https://id.kb.se/term/rda/Text> ] ;
288272
:production/:date "2020" ;
289273
^:mainEntity/:bibliography lib:DIGI .
290274
}
@@ -327,9 +311,8 @@ Om utgivare var länkade skulle vi också få ett mer exakt resultat, tack vare
327311
PREFIX : <https://id.kb.se/vocab/>
328312
329313
SELECT (COUNT(DISTINCT ?book) AS ?count) {
330-
?audience (:exactMatch|^:exactMatch|:sameAs|^:sameAs)* marc:Juvenile .
331-
?book :issuanceType :Monograph ;
332-
:instanceOf [ a :Text ;
314+
?book :instanceOf [ a :Monograph ;
315+
:category <https://id.kb.se/term/rda/Text> ;
333316
:intendedAudience marc:Juvenile ;
334317
:language ?language ] ;
335318
:publication [ a :PrimaryPublication ;
@@ -378,9 +361,9 @@ SELECT (COUNT(DISTINCT ?instance) AS ?count) {
378361
```sparql
379362
PREFIX : <https://id.kb.se/vocab/>
380363
381-
SELECT ?month (COUNT(?instance) AS ?count) {
382-
?instance a :Print ;
383-
:issuanceType :Monograph .
364+
SELECT ?month (COUNT(?instance) AS ?count) {
365+
?instance a :PhysicalResource ;
366+
:instanceOf/a :Monograph .
384367
?hold :itemOf ?instance ;
385368
:heldBy lib:S .
386369
?holdMeta :mainEntity ?hold ;
@@ -399,11 +382,12 @@ Med katalogiserades menar vi här när beståndspost skapades. Svaret visar anta
399382
```sparql
400383
PREFIX : <https://id.kb.se/vocab/>
401384
402-
SELECT ?month (COUNT(DISTINCT ?instance) AS ?count) {
403-
?instance a :Electronic ;
404-
:issuanceType :Serial .
385+
SELECT ?month (COUNT(DISTINCT ?instance) AS ?count) {
386+
?instance a :DigitalResource ;
387+
:instanceOf ?work .
388+
?work a :Serial .
405389
?hold :itemOf ?instance ;
406-
:heldBy lib:S .
390+
:heldBy <https://libris.kb.se/library/S> .
407391
?holdMeta :mainEntity ?hold ;
408392
:created ?date .
409393
@@ -417,10 +401,12 @@ ORDER BY ?month
417401
### Hur många monografier inom DDK 320 katalogiserades av Umeå universitetsbibliotek 2019?
418402
```sparql
419403
PREFIX : <https://id.kb.se/vocab/>
404+
PREFIX lib: <https://libris.kb.se/library/>
420405
421-
SELECT (COUNT(DISTINCT ?instance) AS ?count) {
422-
?instance :issuanceType :Monograph ;
423-
:instanceOf/:classification [ a :ClassificationDdc ;
406+
SELECT (COUNT(DISTINCT ?instance) AS ?count) {
407+
?instance :instanceOf ?work .
408+
?work a :Monograph ;
409+
:classification [ a :ClassificationDdc ;
424410
:code ?code ] .
425411
?hold :itemOf ?instance ;
426412
:heldBy lib:Q .
@@ -436,7 +422,7 @@ SELECT (COUNT(DISTINCT ?instance) AS ?count) {
436422
```sparql
437423
PREFIX : <https://id.kb.se/vocab/>
438424
439-
SELECT (COUNT(DISTINCT ?instance) AS ?count) {
425+
SELECT (COUNT(DISTINCT ?instance) AS ?count) {
440426
?instance :instanceOf/:subject sao:Mission%C3%A4rer ;
441427
^:itemOf ?hold .
442428
?holdMeta :mainEntity ?hold ;

0 commit comments

Comments
 (0)