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/software_data.sparql
Software aspect: data
PREFIX p: <http://www.wikidata.org/prop/>
PREFIX psv: <http://www.wikidata.org/prop/statement/value/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
PREFIX wikibase: <http://wikiba.se/ontology#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX target: <http://www.wikidata.org/entity/Q1635410>
SELECT DISTINCT ?description ?value ?valueUrl
WHERE {
BIND(target: AS ?software)
{
BIND(1 AS ?order)
BIND("Title" AS ?description)
?software wdt:P1476 ?value .
}
UNION
{
SELECT
(2 AS ?order)
("Developers" AS ?description)
(GROUP_CONCAT(?value_; separator=", ") AS ?value)
(CONCAT("../authors/", GROUP_CONCAT(?q; separator=",")) AS ?valueUrl)
{
BIND(1 AS ?dummy)
target: wdt:P178 ?iri .
BIND(SUBSTR(STR(?iri), 32) AS ?q)
?iri rdfs:label ?value_string .
FILTER (LANG(?value_string) = 'en')
BIND(COALESCE(?value_string, ?q) AS ?value_)
}
GROUP BY ?dummy
}
UNION
{
BIND(2 AS ?order)
BIND("Programming language" AS ?description)
?software wdt:P277 ?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("../topic/", ?q) AS ?valueUrl)
}
UNION
{
BIND(3 AS ?order)
BIND("License" AS ?description)
?software wdt:P275 ?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("../license/", ?q) AS ?valueUrl)
}
UNION
{
BIND(4 AS ?order)
BIND("Publication date" AS ?description)
?software p:P577 / psv:P577 ?publication_date_value .
?publication_date_value wikibase:timePrecision ?time_precision ;
wikibase:timeValue ?publication_date .
BIND(IF(?time_precision = 9, YEAR(?publication_date), xsd:date(?publication_date)) AS ?value)
}
UNION
{
SELECT
(5 AS ?order)
("Uses" AS ?description)
(GROUP_CONCAT(?value_; separator=", ") AS ?value)
(CONCAT("../topics/", GROUP_CONCAT(?q; separator=",")) AS ?valueUrl)
{
BIND(1 AS ?dummy)
target: wdt:P366 ?iri .
BIND(SUBSTR(STR(?iri), 32) AS ?q)
?iri rdfs:label ?value_string .
FILTER (LANG(?value_string) = 'en')
BIND(COALESCE(?value_string, ?q) AS ?value_)
}
GROUP BY ?dummy
}
UNION
{
BIND(11 AS ?order)
BIND("Homepage" AS ?description)
?software wdt:P856 ?valueUrl .
BIND(STR(?valueUrl) AS ?value)
}
}
ORDER BY ?order
graph TD
classDef projected fill:lightgreen;
classDef literal fill:orange;
classDef iri fill:yellow;
v10("?_anon_d5635a4148474aba9b1ec2d6f2e48935121")
v15("?_anon_d5635a4148474aba9b1ec2d6f2e48935132")
v16("?description"):::projected
v15("?dummy")
v7("?iri")
v16("?order")
v14("?publication_date")
v12("?publication_date_value")
v15("?q")
v2("?software")
v13("?time_precision")
v16("?value"):::projected
v16("?valueUrl"):::projected
v15("?value_")
v5("?value_string")
a1((" "))
c3([http://www.wikidata.org/entity/Q1635410]):::iri
bind0[/"http://www.wikidata.org/entity/Q1635410"/]
bind0 --as--o v2
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;
subgraph union4[" Union "]
subgraph union4l[" "]
style union4l fill:#abf,stroke-dasharray: 3 3;
subgraph union5[" Union "]
subgraph union5l[" "]
style union5l fill:#abf,stroke-dasharray: 3 3;
bind1[/"'11^^xsd:integer'"/]
bind1 --as--o v16
bind2[/"'Homepage'"/]
bind2 --as--o v16
v2 --"p:direct/P856"--> v16
bind3[/"str(?valueUrl)"/]
v16 --o bind3
bind3 --as--o v16
end
subgraph union5r[" "]
style union5r fill:#abf,stroke-dasharray: 3 3;
f4[["?value_string = 'en'"]]
f4 --> v5
bind5[/"'1^^xsd:integer'"/]
bind5 --as--o v15
c3 --"p:direct/P366"--> v7
bind6[/"substring(str(?iri),'32^^xsd:integer')"/]
v7 --o bind6
bind6 --as--o v15
v7 --"rdfs:label"--> v5
bind7[/"?value_string?q"/]
v5 --o bind7
v15 --o bind7
bind7 --as--o v15
bind10[/"?q"/]
v15 --o bind10
bind10 --as--o v15
bind11[/"'5^^xsd:integer'"/]
bind11 --as--o v16
bind12[/"'Uses'"/]
bind12 --as--o v16
bind13[/"?value_"/]
v15 --o bind13
bind13 --as--o v16
bind14[/"concat('../topics/',)"/]
null --o bind14
bind14 --as--o v16
end
union5r <== or ==> union5l
end
end
subgraph union4r[" "]
style union4r fill:#abf,stroke-dasharray: 3 3;
bind15[/"'4^^xsd:integer'"/]
bind15 --as--o v16
bind16[/"'Publication date'"/]
bind16 --as--o v16
v2 --"p:P577"--> a1
a1 --"p:statement/value/P577"--> v12
v12 --"wikibase:timePrecision"--> v13
v12 --"wikibase:timeValue"--> v14
bind17[/"if(?time_precision = '9^^xsd:integer',year-from-dateTime(?publication_date),http://www.w3.org/2001/XMLSchema#date(?publication_date))"/]
v13 --o bind17
v14 --o bind17
bind17 --as--o v16
end
union4r <== or ==> union4l
end
end
subgraph union3r[" "]
style union3r fill:#abf,stroke-dasharray: 3 3;
f18[["?value_string = 'en'"]]
f18 --> v5
bind19[/"'3^^xsd:integer'"/]
bind19 --as--o v16
bind20[/"'License'"/]
bind20 --as--o v16
v2 --"p:direct/P275"--> v7
bind21[/"substring(str(?iri),'32^^xsd:integer')"/]
v7 --o bind21
bind21 --as--o v15
v7 --"rdfs:label"--> v5
bind22[/"str(?value_string)"/]
v5 --o bind22
bind22 --as--o v16
bind23[/"concat('../license/',?q)"/]
v15 --o bind23
bind23 --as--o v16
end
union3r <== or ==> union3l
end
end
subgraph union2r[" "]
style union2r fill:#abf,stroke-dasharray: 3 3;
f24[["?value_string = 'en'"]]
f24 --> v5
bind25[/"'2^^xsd:integer'"/]
bind25 --as--o v16
bind26[/"'Programming language'"/]
bind26 --as--o v16
v2 --"p:direct/P277"--> v7
bind27[/"substring(str(?iri),'32^^xsd:integer')"/]
v7 --o bind27
bind27 --as--o v15
v7 --"rdfs:label"--> v5
bind28[/"str(?value_string)"/]
v5 --o bind28
bind28 --as--o v16
bind29[/"concat('../topic/',?q)"/]
v15 --o bind29
bind29 --as--o v16
end
union2r <== or ==> union2l
end
end
subgraph union1r[" "]
style union1r fill:#abf,stroke-dasharray: 3 3;
f30[["?value_string = 'en'"]]
f30 --> v5
bind31[/"'1^^xsd:integer'"/]
bind31 --as--o v15
c3 --"p:direct/P178"--> v7
bind32[/"substring(str(?iri),'32^^xsd:integer')"/]
v7 --o bind32
bind32 --as--o v15
v7 --"rdfs:label"--> v5
bind33[/"?value_string?q"/]
v5 --o bind33
v15 --o bind33
bind33 --as--o v15
bind36[/"?q"/]
v15 --o bind36
bind36 --as--o v10
bind37[/"'2^^xsd:integer'"/]
bind37 --as--o v16
bind38[/"'Developers'"/]
bind38 --as--o v16
bind39[/"?value_"/]
v15 --o bind39
bind39 --as--o v16
bind40[/"concat('../authors/',)"/]
null --o bind40
bind40 --as--o v16
end
union1r <== or ==> union1l
end
end
subgraph union0r[" "]
style union0r fill:#abf,stroke-dasharray: 3 3;
bind41[/"'1^^xsd:integer'"/]
bind41 --as--o v16
bind42[/"'Title'"/]
bind42 --as--o v16
v2 --"p:direct/P1476"--> v16
end
union0r <== or ==> union0l
end