スマートフォン用の表示で見るcrssnkyの。先日のアイマスハッカソンで某氏から、im@sparqlに関するある要望を受けた「言語タグを持つ文字列リテラルを、どの言語かを意識することなくSPARQLのクエリに埋め込みたい」ハッカソン当時のアイドルのインスタンスには、アイドル名がschema:nameにxml:lang="ja"として格納されていた。xml:lang="ja">如月千早</schema:name>この言語タグを付けたプロパティはよくある文字列型(xsd:String)ではなく、言語タグ付き文字列型(rdf:langString)として認識される。"如月千早".}では検索できない。"如月千早"@ja.}といった具合に、言語を指定してあげる必要がある。「この@jaって、"如月千早"が日本語タグで書かれてると知ってないと書けないよね」と言う話になった。たしかに、実は"如月千早"が中国語として登録されていれば、日本語だと思って@jaを付ける人は「検索にヒットしねぇ...」と呟くことになる。そこで冒頭の「言語タグを持つ文字列リテラルを、どの言語かを意識することなくSPARQLのクエリに埋め込みたい」に繋がる。"如月千早"@ANY_LANGUAGE.}のような(上記の書き方はできない)感じで検索したいということだ。filter(str(?o)="如月千早")}といった感じで、str()関数でrdf:langStringをxsd:stringに型変換してフィルタリングすると実現できる。スマートじゃないよねって結論だけど。疑問SPARQL触ったことある方は、上の背景を読んだだけで「言語タグ付き文字型リテラルで検索すれば良いじゃん」と思うでしょう。SPARQLはリテラルに^^を付けて後ろに型を書くと、その型リテラルになる。rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#langString">如月千早</schema:name>といった具合に、RDF側を調整してみることにした。言語タグ付き文字型を明示的に宣言した。"如月千早"^^rdf:langString.}で見事、検索にヒットさせることができた。"如月千早"@ja.}で検索することができなくなってしまった。言語タグの情報が死んでしまった。Chihaya</schema:name>のように、英語名も並んでいる。言語タグ情報が死んでいるので、完全に並列な情報として並んでしまってる。「言語タグを持つ文字列リテラルを、どの言語かを意識することなくSPARQLのクエリに埋め込みたい」はどうすりゃいいんでしょうね。4日目(月曜日)南地区"リ"01a特定のRDFの変更に合わせて、それを基にクエリを実行させて別のRDFを作るCircleCIRDFまたはSPARQLの問題点・疑問に関するポエム月別アーカイブはてなブログをはじめよう!crssnkyさんは、はてなブログを使っています。あなたもはてなブログをはじめてみませんか?はてなブログをはじめる(無料)はてなブログとはcrssnkyの。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。