Jos haku ei jostain syystä onnistunut, kannattaa kokeilla hetken päästä kerran tai kaksi uudelleen, mutta jatkuva toimimattoman haun toistaminen ei tuota toivottua tulosta ja rasittaa vain tarpeettomasti palvelinta. |
Alla on listattu SPARQL-kyselyitä yleisimpiin hakuihin sekä vinkkejä haun mukauttamiseen.
Haut on tehty esimerkkien avulla. Korvaa esimerkkien merkkijonot omilla merkkijonoillasi.
# YSO-haku Fintosta SELECT * |
# Haetaan siirto-loppuisia käsitteitä (*siirto) SELECT * WHERE { ?subject skos:prefLabel ?label . FILTER (regex(?label, "siirto$")) } |
# Etsitään katt-alkuisia ruotsinkielisiä termejä # SELECT * WHERE { ?s ?p ?o . FILTER(lang(?o) = "sv") FILTER (regex(?o, "^katt")) } |
# Haetaan termejä, jotka sisältävät merkkijonon "kirja" missä tahansa kohdassa termiä # SELECT * WHERE { ?subject skos:prefLabel ?label . FILTER (regex(?label, "kirja")) } |
# Etsitään katt-merkkijonon sisältäviä ruotsinkielisiä termejä # SELECT * WHERE { ?s ?p ?o . FILTER(lang(?o) = "sv") FILTER (regex(?o, "katt")) } |
SELECT * WHERE { ?subject yso-meta:oldLabel ?label . FILTER(LANGMATCHES(LANG(?label), "fi")) } |
# Hakee kaikki prefLabelit, joissa on (-merkki ja ne ovat ruotsiksi # SELECT ?conc ?label WHERE { ?conc skos:prefLabel ?label . FILTER (langMatches(lang(?label), "sv")) FILTER (regex(?label, '\\(')) } |
# etsitään käsitteitä, joiden labelissa on kaksi tavuviivaa peräkkäin #SELECT count(?conc) SELECT str(?conc) ?label WHERE { ?conc skos:prefLabel ?label . FILTER (langMatches(lang(?label), "fi")) FILTER (regex(?label, '--')) } |
# Hae kaikki oldLabelit, joille ei ole määritelty kieltä # SELECT * WHERE { ?subject yso-meta:oldLabel ?label . FILTER(LANG(?label) = "") } |
# Listaa labelit, joissa on useampi peräkkäinen välilyönti # #SELECT count(?s) SELECT ?s ?p ?o WHERE { ?s ?p ?o . # Poista rivin alun kommenttimerkki, jos haluat vain tietyntyyppisiä käsitteitä # ?s a kauno:Concept . FILTER( regex(?o, " ")) } |
SELECT ?label WHERE { ?conc skos:prefLabel ?label . FILTER (langMatches(lang(?label), "fi")) FILTER (regex(?label, "^[A-ZÄÖ]")) } |
# Hae kaikki käsitteet, joiden suomenkielinen prefLabel aakkosjärjestyksessä edeltää "oppimiskeskukset"-labelia. # SELECT * WHERE { ?subject skos:prefLabel ?pref FILTER (?pref < "oppimiskeskukset"@fi) } |
# Hae kaikki käsitteet, joiden pref tai altlabelissa on erikoismerkkejä. Poislukien ä, ö ja ruotsalainen å. # SELECT ?sub ?obj WHERE { { ?sub skos:prefLabel ?obj . filter regex(?obj,"[^\\x00-\\x7F]+") . filter ( !contains(lcase(?obj), "ä") ) . filter ( !contains(lcase(?obj), "ö") ) . filter ( !contains(lcase(?obj), "å") ) } UNION { ?sub skos:altLabel ?obj . filter regex(?obj,"[^\\x00-\\x7F]+") filter ( !contains(lcase(?obj), "ä") ) . filter ( !contains(lcase(?obj), "ö") ) . filter ( !contains(lcase(?obj), "å") ) } } |
# muokattu 2021-06-24 JS, OS # deprekoidut poistettu ja suomenkieliset labelit näytetään SELECT ?o ?s1 ?s2 ?s1fi ?s2fi WHERE { GRAPH <http://www.yso.fi/onto/yso/> { ?s1 skos:prefLabel ?o . ?s2 skos:prefLabel ?o . FILTER NOT EXISTS {?s2 a skosext:DeprecatedConcept } FILTER NOT EXISTS {?s1 a skosext:DeprecatedConcept } FILTER ( str(?s1) < str(?s2) ) FILTER (lang(?o) = "en") ?s1 skos:prefLabel ?s1fi . FILTER(LANG(?s1fi)='fi') ?s2 skos:prefLabel ?s2fi . FILTER(LANG(?s2fi)='fi') } } ORDER BY ?o |
# Etsi käsitteet, joilla ei ole eng-termiä. Toimii erotettujen kielilabelien kanssa # #SELECT (count(?concept) as ?count) SELECT * WHERE { ?concept skos:prefLabel ?plfi . FILTER(lang(?plfi) = "fi") MINUS{ ?concept skos:prefLabel ?plen . FILTER(lang(?plen) = "en") } } |
SELECT * WHERE { ?concept skos:prefLabel ?plfi . FILTER(lang(?plfi) = "fi") ?concept skos:prefLabel ?plen . FILTER(lang(?plen) = "en") FILTER ( str(?plfi) = str(?plen) ) } |
#Haetaan käsitteitä, joilla on kommentti SELECT * WHERE { ?subject rdfs:comment ?comment . } |
# Haetaan kaikki kommentit, jotka alkavat pienellä kirjaimella SELECT * WHERE { ?sub rdfs:comment ?obj . FILTER(REGEX(STR(?obj), "^[a-zäö]")) } |
SELECT * #SELECT count(?l) WHERE { { ?s yso-meta:ysaComment ?l . FILTER(regex(lcase(?l), "vuodesta|vuoteen")) } UNION { ?s rdfs:comment ?l . FILTER(regex(lcase(?l), "vuodesta|vuoteen")) } } |
# Huom! Dollarimerkki ei ole osa URIa, mutta on tärkeä lisätä URIn perään SELECT * WHERE { ?subject a ysometa:Concept . FILTER regex(str(?subject), "^http://www.yso.fi/onto/yso/p30149$") . } |
# Etsi ne YSO-käsitteet, joilla on sulkutarkenne sekä exactmatch-suhde YSAan. Rajaus tehty YSA-nimiavaruudella. PREFIX yso: <http://www.yso.fi/onto/yso-meta/> PREFIX skos: <http://www.w3.org/2004/02/skos/core#> PREFIX ysa: <http://www.yso.fi/onto/ysa/> SELECT * WHERE { SERVICE <http://api.finto.fi/sparql> { GRAPH <http://www.yso.fi/onto/yso/> { ?ysoconcept skos:prefLabel ?label . ?ysoconcept a yso:Concept . FILTER (lang(?label) = 'fi') FILTER (regex(?label, '\\(')) ?ysoconcept skos:exactMatch ?ysa . FILTER (strstarts(str(?ysa), str(ysa:))) } } } |
Kysely hakee YSOn yleis- ja yksilökäsitteet, joiden URI on p1000 ja p2000 välissä.
SELECT ?s ?num
WHERE {
?s a ?allowed .
VALUES ?allowed { yso-meta:Concept yso-meta:Individual }
BIND(xsd:integer(REPLACE(STR(?s), "http://www.yso.fi/onto/yso/p", "")) AS ?num)
FILTER (?num > 1000)
FILTER(?num < 2000)
}
Hae sellaiset JUHO-käsitteet, jotka eivät ole ekvivalentteja jonkin YSO-käsitteen kanssa ja joiden yläkäsitteenä on jokin FILTER-lausekkeessa luetelluista YSO-käsitteistä (käsitteet sisältyvät YSOn toiminta-hierarkiaan). Huom! Kysely tehty Yasguissa.
PREFIX skos: <http://www.w3.org/2004/02/skos/core#> #SELECT (count(?sub) as ?count) SELECT ?label (GROUP_CONCAT(?ylalabel) as ?ylakasitteet) WHERE { GRAPH <http://www.yso.fi/onto/afo/> { ?sub a <http://www.yso.fi/onto/afo-meta/Concept> . ?sub skos:broader ?ylakasite . FILTER ( ?ylakasite = <http://www.yso.fi/onto/yso/p3027> || ?ylakasite = <http://www.yso.fi/onto/yso/p14> || ?ylakasite = <http://www.yso.fi/onto/yso/p5192> || ?ylakasite = <http://www.yso.fi/onto/yso/p5427> || ?ylakasite = <http://www.yso.fi/onto/yso/p649> || ?ylakasite = <http://www.yso.fi/onto/yso/p6561> || ?ylakasite = <http://www.yso.fi/onto/yso/p317> || ?ylakasite = <http://www.yso.fi/onto/yso/p15232> || ?ylakasite = <http://www.yso.fi/onto/yso/p4389> || ?ylakasite = <http://www.yso.fi/onto/yso/p464> || ?ylakasite = <http://www.yso.fi/onto/yso/p1452> || ?ylakasite = <http://www.yso.fi/onto/yso/p2697> || ?ylakasite = <http://www.yso.fi/onto/yso/p5637> || ?ylakasite = <http://www.yso.fi/onto/yso/p1744> || ?ylakasite = <http://www.yso.fi/onto/yso/p193> || ?ylakasite = <http://www.yso.fi/onto/yso/p2375> || ?ylakasite = <http://www.yso.fi/onto/yso/p976> || ?ylakasite = <http://www.yso.fi/onto/yso/p889> || ?ylakasite = <http://www.yso.fi/onto/yso/p5440> || ?ylakasite = <http://www.yso.fi/onto/yso/p355> || ?ylakasite = <http://www.yso.fi/onto/yso/p721> || ?ylakasite = <http://www.yso.fi/onto/yso/p42> || ?ylakasite = <http://www.yso.fi/onto/yso/p277> || ?ylakasite = <http://www.yso.fi/onto/yso/p1945> || ?ylakasite = <http://www.yso.fi/onto/yso/p2715> || ?ylakasite = <http://www.yso.fi/onto/yso/p2954> ) FILTER NOT EXISTS { ?sub skos:exactMatch ?obj . } OPTIONAL { ?sub skos:prefLabel ?label . FILTER(LANGMATCHES(LANG(?label), "fi")) } OPTIONAL { ?ylakasite skos:prefLabel ?ylalabel . FILTER(LANGMATCHES(LANG(?ylalabel), "fi")) } } } GROUP BY ?label ?ylakasitteet |
PTO-ontologiassa on useita käsitetyyppejä. Hae kaikki PTO-käsitteet, jotka kuuluvat toimintahierarkian alle.
PREFIX inspire: <http://paikkatiedot.fi/def/1001000/InspireConcept> PREFIX paikhak: <http://paikkatiedot.fi/def/1001000/PaikhakConcept> PREFIX tsk: <http:paikkatiedot.fi/def/1001000/TskConcept> PREFIX ryhma: <http://paikkatiedot.fi/def/1001000/InspireThematicGroup> PREFIX skos: <http://www.w3.org/2004/02/skos/core#> #SELECT (count(?sub) as ?count) SELECT ?label (GROUP_CONCAT(?ylalabel) as ?ylakasitteet) WHERE { GRAPH <http://www.yso.fi/onto/pto/> { ?sub a ?allowed . VALUES ?allowed { inspire: paikhak: tsk: ryhma: } ?sub skos:broader+ <http://www.yso.fi/onto/yso/p8090> . ?sub skos:broader ?ylakasite . } ?sub skos:prefLabel ?label . FILTER(LANGMATCHES(LANG(?label), "fi")) OPTIONAL { ?sub skos:broader ?ylakasite . ?ylakasite skos:prefLabel ?ylalabel . FILTER(LANGMATCHES(LANG(?ylalabel), "fi")) } } GROUP BY ?label ?ylakasitteet LIMIT 10000 |
Tällä haulla saa kätevästi esitettyä samalla rivillä taulukossa YSO:n käsitteitä suomeksi, ruotsiksi ja englanniksi. Hakua on kätevä muokata rivillä 8 olevan säännöllisen lausekkeen avulla.
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX skos: <http://www.w3.org/2004/02/skos/core#> SELECT * WHERE { ?concept skos:prefLabel ?plfi . FILTER regex(str(?concept), "^http://www.yso.fi/onto/yso/") . FILTER(lang(?plfi) = "fi") FILTER (regex(?plfi, "^[Aa]")) OPTIONAL{ ?concept skos:prefLabel ?plen . FILTER(lang(?plen) = "en") } OPTIONAL{ ?concept skos:prefLabel ?plsv . FILTER(lang(?plsv) = "sv") } } LIMIT 100 |
#tee tämä haku Wikdatassa: https://query.wikidata.org/ SELECT * WHERE { SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". } OPTIONAL { ?item wdt:P2347 ?YSO_tunniste. } ?item rdfs:label ?label_se filter (lang(?label_se) = "se"). ?item rdfs:label ?label_fi filter (lang(?label_fi) = "fi"). # ?item rdfs:label ?label_sv filter (lang(?label_sv) = "sv"). # ?item rdfs:label ?label_en filter (lang(?label_en) = "en"). } LIMIT 10 |
# LIST All subclasses of Q as $s # https://query.wikidata.org/ PREFIX wd: <http://www.wikidata.org/entity/> PREFIX wdt: <http://www.wikidata.org/prop/direct/> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT ?s ?fi_desc ?sv_desc ?en_desc $sLabel WHERE { ?s wdt:P279+ wd:Q1318295 . # vaihda tähän käsite, jonka alakäsitteitä haluat listata OPTIONAL { { ?s rdfs:label ?en_desc filter (lang(?en_desc) = "en"). } { ?s rdfs:label ?fi_desc filter (lang(?fi_desc) = "fi"). } { ?s rdfs:label ?sv_desc filter (lang(?sv_desc) = "sv"). } } SERVICE wikibase:label { bd:serviceParam wikibase:language "en","fi","sv". } # Helps get the label in your language, if not, then en language } limit 100 |
# Tee tämä haku Wikidatassa: https://w.wiki/6aT4 SELECT ?paikkatyyppi ?paikkatyyppiLabel ?Paikannimirekisterin_paikkatyyppitunniste WHERE { SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". } ?paikkatyyppi wdt:P31 wd:Q106589826. OPTIONAL { ?paikkatyyppi wdt:P9230 ?Paikannimirekisterin_paikkatyyppitunniste. } } |
PREFIX skos: <http://www.w3.org/2004/02/skos/core#> PREFIX ykl: <http://urn.fi/URN:NBN:fi:au:ykl:> SELECT (?s AS ?URI) ?label ?note WHERE { GRAPH ykl: { ?s skos:scopeNote ?note . ?s skos:prefLabel ?label . } } |
Suora linkki hakuun: https://api.triplydb.com/s/QwgEchRQu
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX skos: <http://www.w3.org/2004/02/skos/core#> prefix hklj: <http://urn.fi/URN:NBN:fi:au:hklj:> prefix skos: <http://www.w3.org/2004/02/skos/core#> prefix ykl: <http://urn.fi/URN:NBN:fi:au:ykl:> prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> prefix owl: <http://www.w3.org/2002/07/owl#> #SELECT (count(?alt) as ?lkm) WHERE { SELECT ?c ?pref ?alt WHERE { GRAPH <http://urn.fi/URN:NBN:fi:au:ykl:> { ?c a skos:Concept . ?c skos:prefLabel ?pref . filter (lang(?pref) = "fi") ?c skos:altLabel ?alt . filter (lang(?alt) = "fi") } } # linkki hakuun https://api.triplydb.com/s/lpdA9L2L3 |
PREFIX skos: <http://www.w3.org/2004/02/skos/core#> PREFIX ykl: <http://urn.fi/URN:NBN:fi:au:ykl:> SELECT (COUNT(distinct ?s) AS ?lkm) WHERE { GRAPH ykl: { ?s skos:scopeNote ?note . } } |
Suora linkki hakuun: https://api.triplydb.com/s/9nRb_Hywr
# Listaa kaikki YSO-käsitteet, jotka perustuvat johonkin YSA-asiasanaan SELECT * WHERE { ?subject om:definedConcept ?object . FILTER regex(str(?object), "^http://www.yso.fi/onto/ysa/") . } |
# YSO-käsitteet, joille ei ole määritelty vastaavaa asiasanaa YSAsta SELECT * WHERE { ?subject a <http://www.yso.fi/onto/yso-meta/2007-03-02/Concept>. FILTER NOT EXISTS {?subject om:definedConcept ?object FILTER regex(str(?object), "^http://www.yso.fi/onto/ysa/"). } } |
# YSO-käsitteet, joilla closeMatch-suhde SELECT ?s ?map WHERE { ?subject <http://www.yso.fi/onto/yso-peilaus/2007-03-02/closeMatch> ?map . ?subject skos:prefLabel ?s FILTER(LANG(?s) = "fi") } |
Hae kaikki käsitteet, jotka on luotu 1.1.2015 jälkeen.
SELECT *
WHERE {
?subject dcterms:created ?date .
FILTER (?date > "2015-01-01"^^xsd:date)
}
PREFIX ysometa: <http://www.yso.fi/onto/yso-meta/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
SELECT ?subject
WHERE {
?subject ysometa:singularPrefLabel ?yksikko .
FILTER(LANGMATCHES(LANG(?yksikko), "fi"))
?subject skos:prefLabel ?pref .
FILTER(LANGMATCHES(LANG(?pref), "fi"))
FILTER (regex(?pref, '\\('))
}
PREFIX ysometa: <http://www.yso.fi/onto/yso-meta/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX yso: <http://www.yso.fi/onto/yso/>
SELECT *
WHERE {
GRAPH <http://www.yso.fi/onto/yso/> {
?subject skos:prefLabel ?pref .
?subject ysometa:singularPrefLabel ?yksikko .
?subject ysometa:singularAltLabel ?altyksikko .
FILTER(LANGMATCHES(LANG(?pref), "fi"))
FILTER(LANGMATCHES(LANG(?yksikko), "fi"))
FILTER(LANGMATCHES(LANG(?altyksikko), "fi"))
FILTER (regex(?altyksikko, '\\('))
}
}
Vertaillaan labeleita kahdesta eri graafista
PREFIX yso: <http://www.yso.fi/onto/yso-meta/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
SELECT *
WHERE {
SERVICE <http://api.finto.fi/sparql> {
GRAPH <http://www.yso.fi/onto/yso/> {
?ysoconcept skos:prefLabel ?label .
?ysoconcept a yso:Concept .
FILTER (lang(?label) = 'fi')
FILTER (regex(?label, '\\('))
?ysoconcept skos:exactMatch ?ysa .
}
}
GRAPH <http://www.yso.fi/onto/ysa/> {
?ysa skos:prefLabel ?ysalabel .
FILTER (lang(?ysalabel) = 'fi')
FILTER NOT EXISTS { FILTER (regex(?ysalabel, '\\(')) }
}
}
Etsi käsitteet, joilla on close/broader/narrower match linkki kohteeseen, jonka tunnisteessa on html. (LCSH-linkit pitäisi tehdä käyttäen käsitteen pysyvää URIa, ei käsitteen html-sivua.)
SELECT ?subject ?object
WHERE {
?subject a ?allowed .
VALUES ?allowed { ysometa:Concept ysometa:Individual }
?subject ?match ?object .
VALUES ?match { skos:closeMatch skos:broadMatch skos:narrowMatch }
FILTER regex(str(?object), "html")
}
Hae kaikki preflabelit, joissa on sulkumerkki, mutta ei "kooste"-sanaa)
SELECT ?conc ?label
WHERE {
?conc skos:prefLabel ?label .
FILTER (langMatches(lang(?label), "fi"))
FILTER (regex(?label, '\\('))
FILTER NOT EXISTS
{
FILTER(regex(?label, 'kooste'))
}
}
Ilmoita erikseen, kuinka monta käsitettä on kunkin YSOn ryhmittelevän käsitteen alaisessa hierarkiassa. Huom! Kysely ei huomioi tapauksia, joissa lukumäärä on nolla.
SELECT ?ryhma (COUNT(?s) as ?lukumaara)
WHERE {
?s a ?allowed .
VALUES ?allowed { yso-meta:Concept yso-meta:Individual }
?s rdfs:subClassOf+ ?ryhma .
?ryhma a yso-meta:GroupConcept .
}
GROUP BY ?ryhma
Hae kaikki muuttaminen-käsitteen alakäsitteet ja niiden alakäsitteet ja niiden alakäsitteet ja niiden alakäsitteet ad infinitum. Huom! Plusmerkki on tärkeä! Ja ilmoita kunkin käsitteen YSA-ryhmä jos sellainen on.
SELECT *
WHERE {
?subject rdfs:subClassOf+ <http://www.yso.fi/onto/yso/p19378> .
OPTIONAL{?subject yso-meta:hasThematicGroup ?g .}
}
SPARQL-kyselyillä saattaa tulla sama käsite useaan kertaan tuloslistaukseen, mikäli käsitteellä on useita arvoja jossakin kentässä. Nämä saa niputettua yhteen ja kyselytuloksen helpommin luettavaksi GROUP_CONCAT-toiminnolla. Esimerkissä on haettu käsitteitä, joiden oldlabelissa esiintyy "matka". Ilman GROUP_CONCAT-toimintoa tuloksiin olisi tullut tuplia, sillä joillakin käsitteillä on useampi kuin yksi oldlabel, jossa esiintyy "matka".
SELECT ?subject
(GROUP_CONCAT(?old) as ?oldlabelit)
WHERE {
?subject ysometa:oldLabel ?old .
FILTER (langMatches(lang(?old), "fi"))
FILTER (regex(?old, 'matka'))
}
GROUP BY ?subject ?oldlabelit
Oheinen listaus tuottaa hieman yli sata tuhatta riviä (100.000) ja listaa prefLabel, altLabel ja hiddenLabel arvot kolmena sarakkeena.
# dc:creator "Osma Suominen"
# dc:date "2022-02-02"
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
SELECT
(?uri AS ?_id)
('finto' as ?type)
(GROUP_CONCAT(DISTINCT ?prefLabel; separator='|') AS ?prefLabels)
(GROUP_CONCAT(DISTINCT ?altLabel; separator='|') AS ?altLabels)
(GROUP_CONCAT(DISTINCT ?hiddenLabel; separator='|') AS ?hiddenLabels)
WHERE {
VALUES ?graph {
<http://www.yso.fi/onto/yso/>
<http://www.yso.fi/onto/ysa/>
<http://www.yso.fi/onto/allars/>
}
GRAPH ?graph {
?uri a skos:Concept .
FILTER NOT EXISTS { ?uri owl:deprecated true }
?uri skos:prefLabel ?prefLabel .
OPTIONAL {
?uri skos:altLabel ?altLabel
}
OPTIONAL {
?uri skos:hiddenLabel ?hiddenLabel
}
}
}
GROUP BY ?uri
Ontologiaeditorin lisäksi SPARQL-kyselyjä voi tehdä myös verkossa yasgui.org-osoitteessa.
Tässä esimerkkikysely (hakee kaikki tao-ontologian käsitteet, joilla on exachmatch-suhde):
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
#SELECT (count(?sub) as ?count)
SELECT ?sub
WHERE {
GRAPH <http://www.yso.fi/onto/tao/> {
?sub skos:exactMatch ?obj .
?sub a <http://www.yso.fi/onto/tao-meta/Concept> .
}
}
LIMIT 10000
JUPO-käsitteet, joilla on ekvivalenssi YSO-käsitteeseen, mutta joiden prefLabelit eivät ole samat
PREFIX jupometa: <http://www.yso.fi/onto/jupo-meta/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
SELECT *
#SELECT str(?jupoconcept) ?jupolabel str(?ysoconcept) ?ysolabel
WHERE {
# käväistään Finton SPARQL endpointin puolella...
SERVICE <http://api.finto.fi/sparql> {
# JUPOsta ekvivalenssiyhteys ja prefLabel
GRAPH <http://www.yso.fi/onto/jupo/> {
?jupoconcept skos:prefLabel ?jupolabel .
?jupoconcept a jupometa:Concept .
FILTER (lang(?jupolabel) = 'fi')
?jupoconcept skos:exactMatch ?ysoconcept .
}
# haetaan YSOsta käsitteen tuorein prefLabel
GRAPH <http://www.yso.fi/onto/yso/> {
?ysoconcept skos:prefLabel ?ysolabel .
FILTER (lang(?ysolabel) = 'fi')
}
}
FILTER(?jupolabel != ?ysolabel)
}
JUPOn ja YSOn käsitteillä on sama prefLabel, mutta näiden käsitteiden välillä ei ole ekvivalenssiyhteyttä
PREFIX jupometa: <http://www.yso.fi/onto/jupo-meta/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
SELECT *
#SELECT str(?jupoconcept) str(?ysoconcept) ?label
WHERE {
# käväistään Finton SPARQL endpointin puolella...
SERVICE <http://api.finto.fi/sparql> {
# JUPOsta prefLabel
GRAPH <http://www.yso.fi/onto/jupo/> {
?jupoconcept skos:prefLabel ?label .
?jupoconcept a jupometa:Concept .
FILTER (lang(?label) = 'fi')
# Ei ekvivalenssiyhteyttä YSOn ja JUPOn käsitteen välillä
NOT EXISTS{ ?jupoconcept skos:exactMatch ?ysoconcept .}
}
# haetaan YSOsta samalabelinen käsite
GRAPH <http://www.yso.fi/onto/yso/> {
?ysoconcept skos:prefLabel ?label .
}
}
}
Etsi PUHOsta käsitteet, joiden altlabel on sama kuin jonkin YSO-käsitteen preflabel ilman, että näillä on ekvivalenssisuhdetta.
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
SELECT ?puhopref ?puhoalt ?ysok
WHERE {
GRAPH <http://www.yso.fi/onto/puho/> {
?sub a <http://www.yso.fi/onto/puho-meta/Concept> .
?sub skos:prefLabel ?puhopref .
?sub skos:altLabel ?puhoalt .
FILTER(lang(?puhoalt) = "fi")
?ysok skos:prefLabel ?puhoalt .
FILTER NOT EXISTS { ?sub skos:exactMatch ?ysok }
}
}
Haun lisäksi SPARQL-kielellä voi myös suorittaa erilaisia muokkaustoimenpiteitä käsitteille.
Siirtää kaikki kauno-käsitteet ylimääräisen käsitteen alle
INSERT{
?s rdfs:subClassOf kauno:kauno-kasitteet .
}
#SELECT *
WHERE {
?s a kauno:Concept .
}
Poistaa ongelmat-käsitteen alta kaikki siellä olevat käsitteet. Huom! SPARQL ei poista itse käsitteitä vaan vain niiden yläkäsitesuhteen.
DELETE{
?s rdfs:subClassOf ongelmat .
}
WHERE {
?s rdfs:subClassOf ongelmat .
}
Kopioidaan JUHO-ontologian juho-meta:ysoSvAlt-kentästä kaikki sisältö skos:altlabel-kenttään.
INSERT {
?subject skos:altLabel ?oo }
WHERE {
?subject a juho-meta:Concept.
?subject juho-meta:ysoSvAlt ?oo .
}
Lisää kaikille niille kommenteille, joista puuttuu kielikoodi, kieleksi suomi.
INSERT {
?s rdfs:comment ?oo }
WHERE {
?s yso-meta:ysaComment ?o
BIND( strlang(?o, "fi") AS ?oo)
}
Luo uuden yleikäsitteen YSOon, jonka suomenkielinen preflabel on "UUSI KÄSITE". Mikäli luodaan yksilökäsite, hierarkisoiva käsite tai ryhmittelevä käsite, käsitetyyppi pitää vaihtaa tämän SPARQL:n jälkeen.
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX dct: <http://purl.org/dc/terms/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX yso: <http://www.yso.fi/onto/yso/>
PREFIX yso-update: <http://www.yso.fi/onto/yso-update/>
PREFIX yso-meta: <http://www.yso.fi/onto/yso-meta/>
INSERT {
?uusi rdf:type skos:Concept, owl:Class, yso-meta:Concept;
skos:prefLabel 'UUSI KÄSITE'@fi ;
dct:created ?now ;
rdfs:subClassOf yso-update:uudet, yso-update:uudetSv, yso-update:uudetEn .
} WHERE {
BIND( IRI(CONCAT(str(yso:),struuid())) as ?uusi )
BIND( xsd:date(SUBSTR( xsd:string(now()), 0, 11)) as ?now )
}