調べても意外に載っていなかったので,ちょこっと書きます。
SPARQLのクエリでは,出力する文字列を編集してURI化できます。
SELECT文の場合
ここでは,これまで文字列だったObjectをURIにして出力するというクエリを書きます。
以下の例では,casNumberが文字列(例:"13292-46-1")だったものを,http://bio2rdf.org/cas:13292-46-1
のようにURIにします。
PREFIX dbowl: <http://dbpedia.org/ontology/> #prefixを使って簡略的に書きます。
SELECT distinct ?oo
WHERE {?s dbowl:casNumber ?o.
FILTER ( !(?o = "")) #空白文字を除く
BIND (URI(CONCAT("http://bio2rdf.org/cas:",?o)) as ?oo)
}
ORDER BY ?o #番号順に並び替え
CONSTRUCT文の場合
ちなみにRDFの形で出力したい場合には,CONSTRUCTを使えばOKです。
PREFIX dbowl: <http://dbpedia.org/ontology/>
CONSTRUCT
{?s dbowl:casNumber ?oo}
WHERE {?s dbowl:casNumber ?o.
FILTER ( !(?o = ""))
BIND (URI(CONCAT("http://bio2rdf.org/cas:",?o)) as ?oo)
}
ORDER BY ?o
元データまで変更する場合
もとのRDFデータまで変更したい場合には(RDFのトリプルストアによっては挿入・削除の機能をサポートしています。)以下のようにUpdate用のクエリを投げれば,もとのデータまで変更してくれます。
PREFIX dbowl: <http://dbpedia.org/ontology/>
DELETE {?s dbowl:casNumber ?o }
INSERT {?s dbowl:casNumber ?oo }
WHERE {?s dbowl:casNumber ?o.
FILTER ( !(?o = ""))
BIND (URI(CONCAT("http://bio2rdf.org/cas:",?o)) as ?oo)
}
これが出来ると,もともとは文字列だったけれどもURIを発見した時や,もう少しその文字列に説明を加えたい場合(URIにするとObjectをSubjectやPredicateに出来る)外部で公開されているデータと繋げたい場合(URIの方が繋げやすい)に便利です。
おまけ
こちらにデータを載せておいたので,お気軽にSPARQLクエリを投げてみてください。
CONSTRUCTは使えません。悪しからず…
元データを変更した場合にはもとに戻しておいてください(え)