A set of SPARQL examples that are used in different TGX resources
License: https://www.gnu.org/licenses/gpl-3.0
Uses method in: https://github.com/WDscholia/scholia/tree/master/scholia/app/templates/podcast-season_data.sparql
Podcast-season aspect: data
PREFIX p: <http://www.wikidata.org/prop/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
PREFIX target: <http://www.wikidata.org/entity/Q124266519>
SELECT DISTINCT ?description ?value ?valueUrl
WHERE {
BIND(target: AS ?series)
{
BIND(1 AS ?order)
BIND("Title" AS ?description)
?series wdt:P1476 ?value .
}
UNION
{
?series wdt:P179 ?iri .
BIND(SUBSTR(STR(?iri), 32) AS ?q)
?iri rdfs:label ?value_string .
FILTER (LANG(?value_string) = 'en')
BIND(STR(?value_string) AS ?value)
BIND(CONCAT("../podcast/", ?q) AS ?valueUrl)
BIND(2 AS ?order)
BIND("Podcast" AS ?description)
}
UNION
{
SELECT ?description ?order (MAX(?value_) AS ?value) WHERE {
BIND(target: AS ?series)
?series wdt:P1113 ?value_ .
BIND(3 AS ?order)
BIND("Number of episodes" AS ?description)
} GROUP BY ?description ?order
}
UNION
{
?series wdt:P155 ?iri .
BIND(SUBSTR(STR(?iri), 32) AS ?q)
?iri rdfs:label ?value_string .
FILTER (LANG(?value_string) = 'en')
BIND(STR(?value_string) AS ?value)
BIND(CONCAT("../podcast-season/", ?q) AS ?valueUrl)
BIND(6 AS ?order)
BIND("Previous season" AS ?description)
}
UNION
{
?series wdt:P156 ?iri .
BIND(SUBSTR(STR(?iri), 32) AS ?q)
?iri rdfs:label ?value_string .
FILTER (LANG(?value_string) = 'en')
BIND(STR(?value_string) AS ?value)
BIND(CONCAT("../podcast-season/", ?q) AS ?valueUrl)
BIND(7 AS ?order)
BIND("Next season" AS ?description)
}
}
ORDER BY ?order
graph TD
classDef projected fill:lightgreen;
classDef literal fill:orange;
classDef iri fill:yellow;
v10("?description"):::projected
v6("?iri")
v10("?order")
v10("?q")
v9("?series")
v10("?value"):::projected
v10("?valueUrl"):::projected
v9("?value_")
v5("?value_string")
bind0[/"http://www.wikidata.org/entity/Q124266519"/]
bind0 --as--o v9
subgraph union0[" Union "]
subgraph union0l[" "]
style union0l fill:#abf,stroke-dasharray: 3 3;
subgraph union1[" Union "]
subgraph union1l[" "]
style union1l fill:#abf,stroke-dasharray: 3 3;
subgraph union2[" Union "]
subgraph union2l[" "]
style union2l fill:#abf,stroke-dasharray: 3 3;
subgraph union3[" Union "]
subgraph union3l[" "]
style union3l fill:#abf,stroke-dasharray: 3 3;
f1[["?value_string = 'en'"]]
f1 --> v5
v9 --"p:direct/P156"--> v6
bind2[/"substring(str(?iri),'32^^xsd:integer')"/]
v6 --o bind2
bind2 --as--o v10
v6 --"rdfs:label"--> v5
bind3[/"str(?value_string)"/]
v5 --o bind3
bind3 --as--o v10
bind4[/"concat('../podcast-season/',?q)"/]
v10 --o bind4
bind4 --as--o v10
bind5[/"'7^^xsd:integer'"/]
bind5 --as--o v10
bind6[/"'Next season'"/]
bind6 --as--o v10
end
subgraph union3r[" "]
style union3r fill:#abf,stroke-dasharray: 3 3;
f7[["?value_string = 'en'"]]
f7 --> v5
v9 --"p:direct/P155"--> v6
bind8[/"substring(str(?iri),'32^^xsd:integer')"/]
v6 --o bind8
bind8 --as--o v10
v6 --"rdfs:label"--> v5
bind9[/"str(?value_string)"/]
v5 --o bind9
bind9 --as--o v10
bind10[/"concat('../podcast-season/',?q)"/]
v10 --o bind10
bind10 --as--o v10
bind11[/"'6^^xsd:integer'"/]
bind11 --as--o v10
bind12[/"'Previous season'"/]
bind12 --as--o v10
end
union3r <== or ==> union3l
end
end
subgraph union2r[" "]
style union2r fill:#abf,stroke-dasharray: 3 3;
bind13[/"http://www.wikidata.org/entity/Q124266519"/]
bind13 --as--o v9
v9 --"p:direct/P1113"--> v9
bind14[/"'3^^xsd:integer'"/]
bind14 --as--o v10
bind15[/"'Number of episodes'"/]
bind15 --as--o v10
bind17[/"max(?value_)"/]
v9 --o bind17
bind17 --as--o v10
end
union2r <== or ==> union2l
end
end
subgraph union1r[" "]
style union1r fill:#abf,stroke-dasharray: 3 3;
f18[["?value_string = 'en'"]]
f18 --> v5
v9 --"p:direct/P179"--> v6
bind19[/"substring(str(?iri),'32^^xsd:integer')"/]
v6 --o bind19
bind19 --as--o v10
v6 --"rdfs:label"--> v5
bind20[/"str(?value_string)"/]
v5 --o bind20
bind20 --as--o v10
bind21[/"concat('../podcast/',?q)"/]
v10 --o bind21
bind21 --as--o v10
bind22[/"'2^^xsd:integer'"/]
bind22 --as--o v10
bind23[/"'Podcast'"/]
bind23 --as--o v10
end
union1r <== or ==> union1l
end
end
subgraph union0r[" "]
style union0r fill:#abf,stroke-dasharray: 3 3;
bind24[/"'1^^xsd:integer'"/]
bind24 --as--o v10
bind25[/"'Title'"/]
bind25 --as--o v10
v9 --"p:direct/P1476"--> v10
end
union0r <== or ==> union0l
end