• 検索結果がありません。

組み込み関数 : 文字列系

• strlen

• substr

• ucase

• lcase

• strstarts

• strends

• contains

• strbefore

• strafter

• encode_for_URI

• concat

• langmatches

• regex

• replace

組み込み関数 : 集約系

• COUNT

• SUM

• MIN

• MAX

• AVG

• SAMPLE

• GROUP_CONCAT

GROUP_CONCAT

変数に複数の値が関連付けら れているとき、それらを指定 のデリミタ(省略時には空 白)を用いて列挙した文字列 を返す。

例えば、?x1,5,3,9が関連付 けられているときは、

GROUP_CONCAT(?x)で、

"1 5 3 9"が得られる。

組み込み関数 : 数値演算 / 日付系

数値演算

• abs

• round

• ceil

• floor

• rand

日付

• now

• year

• month

• day

• hours

• minutes

• seconds

• timezone / tz

組み込み関数 : ハッシュ / キャスト系

ハッシュ

• md5

• sha1

• sha256

• sha384

• sha512

キャスト

• xsd:boolean

• xsd:double

• xsd:float

• xsd:decimal

• xsd:integer

• xsd:datetime

• xsd:string

文字列型の互換性

下記の文字列関連関数は2引数が必要で、それらの型は 互換でなくてはならない

STRSTARTS, STRENDS, CONTAINS, STRBEFORE, STRAFTER

互換とは

?

1. 両者ともに単純リテラルかxsd:string

2. 両者ともにプレインリテラルで同じ言語タグ

3. 第一引数が言語タグ付きのプレインリテラルで第二 引数が単純リテラルもしくはxsd:string

キャスト可能な型について

From To str flt dbl dec int dT bool

str Y M M M M M M

flt Y Y Y M M N Y

dbl Y Y Y M M N Y

dec Y Y Y Y Y N Y

int Y Y Y Y Y N Y

dT Y N N N N Y N

bool Y Y Y Y Y N Y

IRI Y N N N N N N

ltrl Y M M M M M M

bool = xsd:boolean dbl = xsd:double flt = xsd:float

str = xsd:string IRI = IRI

ltrl = simple literal dec = xsd:decimal

int = xsd:integer dT = xsd:dateTime

演算子の適用対象の型

=, !=, <, >, <=, >=

数値、単純リテラル、xsd:stringxsd:booleanxsd:dateTime

上記の2項演算子については下記の型へ適用できる

さらに、=!=についてはRDFターム全般に適用できる xsd:booleanの大小については

True > False と定められている

関連ツール

YASGUI

クエリ構築を支援

http://legacy.yasgui.org/

Sparklis

クエリを明示的に書かずにデータを閲覧

http://www.irisa.fr/LIS/ferre/sparklis/osparklis.html

Fuseki

すでに紹介済みですが、手元からSERVICEを用いて好きなエンド ポイントにクエリを発行できる

SPARQLES

様々なエンドポイントを複数の見地から定期的に調査 http://sparqles.ai.wu.ac.at/

プログラムからアクセス

Python: SPARQLWrapper

https://rdflib.github.io/sparqlwrapper/

R: SPARQL Package

https://cran.r-project.org/web/packages/SPARQL/index.html

Ruby: SPARQL Client for RDF.rb

https://github.com/ruby-rdf/sparql-client

Java: Apache Jena

http://jena.apache.org/

Java: Eclipse RDF4J

http://rdf4j.org/

JavaScript: SPARQL.js etc.

https://github.com/RubenVerborgh/SPARQL.js

curl でアクセス

$ curl -gLH 'Accept: text/tab-separated-values' 'http://ja.dbpedia.org/sparql?

query=select+distinct+*+where+{+%3Chttp%3A%2F%2Fja.dbpedia.org%

2Fresource%2F%E6%9D%B1%E4%BA%AC%E9%83%BD%3E+%3Fp+%3Fo+.++}+LIMI T+100'

SPARQLの仕様はHTTPを用いたAPIも含む

HTTP GETでのアクセス例

仕様ではクエリ無しでHTTP GETするとエンドポイ ントのメタデータが得られることになっているが

curl でアクセス

$ echo ¥

'select distinct * where { <http://ja.dbpedia.org/resource/ 京都> ?p ?o . } LIMIT 100' ¥

| curl -gLH 'Accept: text/tab-separated-values' ¥

--data-urlencode query@- 'http://ja.dbpedia.org/sparql'

HTTP POSTでのアクセス例

課題

人口の多い順に列挙

各国の首相を列挙

国ごとの最高峰とその高さや場所を列挙

• DBpedia Japaneseの山に関する情報でWikidata にも情報があるものを列挙する

さらにWikidataからの情報も収集する

エンドポイントは http://query.wikidata.org/sparql

国内のエンドポイントを探す

• http://wp.lodosaka.jp/tool/searchdata/

• http://succi.jp/blog/?p=1437

• https://data.city.osaka.lg.jp/api/

• http://data.allie.dbcls.jp/

• http://lsd.dbcls.jp/

• http://integbio.jp/rdf/

生命科学分野の話題

比較的早いうちからRDF化が行われている

参考: http://id.nii.ac.jp/1001/00163747/

(情報処理学会員以外は2018年6月まで有料)

例のLODクラウドでもそれなりのボリューム

国内でも最近活発に研究・開発

筆者所属のDBCLSはハッカソンを定期的に開催

参加自由ですので、ぜひ!

• http://wiki.lifesciencedb.jp/mw/SPARQLthon

関連したドキュメント