21
SPARQL advanced 山本 泰智 (@yayamamo) ライフサイエンス統合データベースセンター a bit

t SPARQL advanced - s3-eu-west-1.amazonaws.com · 実践sparql 5/17 @ 日本オラクル株式会社 山本 泰智 プロパティパス(p118) sparqlならではの強力な検索機能!

  • Upload
    lyliem

  • View
    220

  • Download
    1

Embed Size (px)

Citation preview

Page 1: t SPARQL advanced - s3-eu-west-1.amazonaws.com · 実践sparql 5/17 @ 日本オラクル株式会社 山本 泰智 プロパティパス(p118) sparqlならではの強力な検索機能!

SPARQL advanced山本 泰智 (@yayamamo)

ライフサイエンス統合データベースセンター

a bit

Page 2: t SPARQL advanced - s3-eu-west-1.amazonaws.com · 実践sparql 5/17 @ 日本オラクル株式会社 山本 泰智 プロパティパス(p118) sparqlならではの強力な検索機能!

実践SPARQL 5/17 @ 日本オラクル株式会社 山本 泰智

お題

プロパティパス

代入 (BIND/VALUES)

Federated Queries (SERVICE)

CONSTRUCT、ASK、DESCRIBE

(更新系)

Page 3: t SPARQL advanced - s3-eu-west-1.amazonaws.com · 実践sparql 5/17 @ 日本オラクル株式会社 山本 泰智 プロパティパス(p118) sparqlならではの強力な検索機能!

実践SPARQL 5/17 @ 日本オラクル株式会社 山本 泰智

始めに

データサンプルは Turtle 形式で記述します

スペースの都合上、多くのprefixを記述していなかったり、元テキストからの変更を行ったりしています

オープンデータ時代の標準WEB API SPAQL (インプレス刊)の図やクエリを利用しています

Page 4: t SPARQL advanced - s3-eu-west-1.amazonaws.com · 実践sparql 5/17 @ 日本オラクル株式会社 山本 泰智 プロパティパス(p118) sparqlならではの強力な検索機能!

http://www.w3.org/TR/sparql11-query/

Page 5: t SPARQL advanced - s3-eu-west-1.amazonaws.com · 実践sparql 5/17 @ 日本オラクル株式会社 山本 泰智 プロパティパス(p118) sparqlならではの強力な検索機能!

実践SPARQL 5/17 @ 日本オラクル株式会社 山本 泰智

プロパティパス(p118)

SPARQLならではの強力な検索機能

述語のパターンを柔軟に表現可能

複雑なグラフパターンをシンプルに表現可能

Page 6: t SPARQL advanced - s3-eu-west-1.amazonaws.com · 実践sparql 5/17 @ 日本オラクル株式会社 山本 泰智 プロパティパス(p118) sparqlならではの強力な検索機能!

実践SPARQL 5/17 @ 日本オラクル株式会社 山本 泰智

プロパティパス例

:taro foaf:knows / foaf:interest ?t .

?t ^foaf:interest :taro .

:taro foaf:interest ?t .

:taro foaf:interest | foaf:publications ?t .

:taro foaf:knows+ ?p .

同じ

Page 7: t SPARQL advanced - s3-eu-west-1.amazonaws.com · 実践sparql 5/17 @ 日本オラクル株式会社 山本 泰智 プロパティパス(p118) sparqlならではの強力な検索機能!

実践SPARQL 5/17 @ 日本オラクル株式会社 山本 泰智

プロパティパス例2

?l

?tp1p3 p2

?t ^p3 / ^p2 / p1 ?l .

以上のような構造のグラフパターンのうち、?tと?lの関係だけに焦点をあてて検索する

Page 8: t SPARQL advanced - s3-eu-west-1.amazonaws.com · 実践sparql 5/17 @ 日本オラクル株式会社 山本 泰智 プロパティパス(p118) sparqlならではの強力な検索機能!

実践SPARQL 5/17 @ 日本オラクル株式会社 山本 泰智

代入: BINDとVALUES(p116)

クエリ中の変数に演算結果や定数値などを代入できる

BINDは一変数に対する一つの値の代入が可能

VALUESは複数変数それぞれに対して複数値の代入が可能

Page 9: t SPARQL advanced - s3-eu-west-1.amazonaws.com · 実践sparql 5/17 @ 日本オラクル株式会社 山本 泰智 プロパティパス(p118) sparqlならではの強力な検索機能!

実践SPARQL 5/17 @ 日本オラクル株式会社 山本 泰智

BIND

?p * (1 - ?discount) を ?price に代入SELECT ?title ?price { ?x ns:price ?p . ?x ns:discount ?discount BIND (?p * (1 - ?discount) AS ?price) FILTER(?price < 20) ?x dc:title ?title . }

http://www.w3.org/TR/sparql11-query/より

Page 10: t SPARQL advanced - s3-eu-west-1.amazonaws.com · 実践sparql 5/17 @ 日本オラクル株式会社 山本 泰智 プロパティパス(p118) sparqlならではの強力な検索機能!

実践SPARQL 5/17 @ 日本オラクル株式会社 山本 泰智

VALUES

?book に :book1 と :book3 を順に代入するSELECT ?book ?title ?price { VALUES ?book { :book1 :book3 } ?book dc:title ?title ; ns:price ?price . }

WHEREの外側でも書けるが、対応している実装は少ないSELECT ?book ?title ?price { ?book dc:title ?title ; ns:price ?price . } VALUES (?book ?title){ (UNDEF "SPARQL Tutorial") (:book2 UNDEF) }

http://www.w3.org/TR/sparql11-query/より

Page 11: t SPARQL advanced - s3-eu-west-1.amazonaws.com · 実践sparql 5/17 @ 日本オラクル株式会社 山本 泰智 プロパティパス(p118) sparqlならではの強力な検索機能!

実践SPARQL 5/17 @ 日本オラクル株式会社 山本 泰智

Federated Queries: SERVICE(p114)

一つのSPARQLクエリで複数のSPARQLエンドポイントにクエリを発行して結果をまとめて取得

従来はプログラムを組んで行う必要があった

分散データベース環境に適した仕組みといえる

Page 12: t SPARQL advanced - s3-eu-west-1.amazonaws.com · 実践sparql 5/17 @ 日本オラクル株式会社 山本 泰智 プロパティパス(p118) sparqlならではの強力な検索機能!

実践SPARQL 5/17 @ 日本オラクル株式会社 山本 泰智

サブクエリとSERVICE

クエリの中にクエリ(サブクエリ)を書ける

SERVICEキーワードで問合せ先エンドポイントを指定

SELECT ?p ?o WHERE { SERVICE <http://ja.DBpedia.org/sparql> { SELECT ?p ?o WHERE { dbpedia:東京 ?p ?o .}

}}

Page 13: t SPARQL advanced - s3-eu-west-1.amazonaws.com · 実践sparql 5/17 @ 日本オラクル株式会社 山本 泰智 プロパティパス(p118) sparqlならではの強力な検索機能!

実践SPARQL 5/17 @ 日本オラクル株式会社 山本 泰智

CONSTRUCT(p92)

検索結果とテンプレートに基づく新たなRDFデータを生成する

既存RDFデータに対して、SPARQLが提供する様々な演算を適用した結果をRDFとして取得できる

SERVICEと併用することで複数データセットから必要なデータを収集して新たなRDFデータセットを構築できる

Page 14: t SPARQL advanced - s3-eu-west-1.amazonaws.com · 実践sparql 5/17 @ 日本オラクル株式会社 山本 泰智 プロパティパス(p118) sparqlならではの強力な検索機能!

実践SPARQL 5/17 @ 日本オラクル株式会社 山本 泰智

CONSTRUCTで新たなトリプルを生成

SELECTの代わりにCONSTRUCTを用いて結果をトリプルにCONSTRUCT { :taro :knows ?who . ?who foaf:birthday ?birth_date . }WHERE { :taro :likes ?who . SERVICE <http://DBpedia.org/sparql> { SELECT ?who ?birth_date WHERE { ?who dbpedia-owl:birthDate ?birth_date . }}}

パターンとテンプレートが同じ場合は短縮表記が可能CONSTRUCT WHERE { ?x foaf:name ?name }

Page 15: t SPARQL advanced - s3-eu-west-1.amazonaws.com · 実践sparql 5/17 @ 日本オラクル株式会社 山本 泰智 プロパティパス(p118) sparqlならではの強力な検索機能!

実践SPARQL 5/17 @ 日本オラクル株式会社 山本 泰智

ASK(p93)

パターンにマッチするトリプルの有無をみる

結果は真偽値

ASK WHERE {?s foaf:knows ?o }

Page 16: t SPARQL advanced - s3-eu-west-1.amazonaws.com · 実践sparql 5/17 @ 日本オラクル株式会社 山本 泰智 プロパティパス(p118) sparqlならではの強力な検索機能!

実践SPARQL 5/17 @ 日本オラクル株式会社 山本 泰智

DESCRIBE(p93)

特定のリソースに関する情報をRDFで取得する

対象リソースが主語か目的語のトリプル一覧が得られることが多い

リソースIRIを参照解決可能(dereferenceable)にするため利用される

Page 17: t SPARQL advanced - s3-eu-west-1.amazonaws.com · 実践sparql 5/17 @ 日本オラクル株式会社 山本 泰智 プロパティパス(p118) sparqlならではの強力な検索機能!

実践SPARQL 5/17 @ 日本オラクル株式会社 山本 泰智

DESCRIBE例

DESCRIBE <http://ja.dbpedia.org/resource/東京都>

DESCRIBE ?who WHERE { :taro faof:knows ?who .}

Page 18: t SPARQL advanced - s3-eu-west-1.amazonaws.com · 実践sparql 5/17 @ 日本オラクル株式会社 山本 泰智 プロパティパス(p118) sparqlならではの強力な検索機能!

実践SPARQL 5/17 @ 日本オラクル株式会社 山本 泰智

参照解決(dereferenceable)例$ curl -stderr /dev/null -LH 'Accept: application/rdf+xml' 'http://ja.dbpedia.org/resource/%E6%9D%B1%E4%BA%AC%E9%83%BD' <?xml version="1.0" encoding="utf-8" ?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:prop-ja="http://ja.dbpedia.org/property/" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:prov="http://www.w3.org/ns/prov#" xmlns:dbpedia-owl="http://dbpedia.org/ontology/" > <rdf:Description rdf:about="http://ja.dbpedia.org/resource/Colorvariation"> <dbpedia-owl:wikiPageWikiLink rdf:resource="http://ja.dbpedia.org/resource/東京都" /> </rdf:Description> <rdf:Description rdf:about="http://ja.dbpedia.org/resource/KM-MARKIT"> <dbpedia-owl:wikiPageWikiLink rdf:resource="http://ja.dbpedia.org/resource/東京都" /> </rdf:Description> <rdf:Description rdf:about="http://ja.dbpedia.org/resource/Ryoko"> <dbpedia-owl:wikiPageWikiLink rdf:resource="http://ja.dbpedia.org/resource/東京都" /> </rdf:Description> <rdf:Description rdf:about="http://ja.dbpedia.org/resource/おかわりシスターズ"> <dbpedia-owl:wikiPageWikiLink rdf:resource="http://ja.dbpedia.org/resource/東京都" /> </rdf:Description> <rdf:Description rdf:about="http://ja.dbpedia.org/resource/たまらん坂"> <dbpedia-owl:wikiPageWikiLink rdf:resource="http://ja.dbpedia.org/resource/東京都" /> </rdf:Description> <rdf:Description rdf:about="http://ja.dbpedia.org/resource/ふぁみ魂家郎"> <dbpedia-owl:wikiPageWikiLink rdf:resource="http://ja.dbpedia.org/resource/東京都" /> </rdf:Description> ...

Page 19: t SPARQL advanced - s3-eu-west-1.amazonaws.com · 実践sparql 5/17 @ 日本オラクル株式会社 山本 泰智 プロパティパス(p118) sparqlならではの強力な検索機能!

実践SPARQL 5/17 @ 日本オラクル株式会社 山本 泰智

更新系クエリ(p94~)

SPARQL1.1ではデータベースの値を更新する様々な仕様が追加された

LOAD / CLEAR / DROP / ADD / COPY / MOVE / CREATE / INSERT DATA / DELETE DATA / INSERT / DELETE

Page 20: t SPARQL advanced - s3-eu-west-1.amazonaws.com · 実践sparql 5/17 @ 日本オラクル株式会社 山本 泰智 プロパティパス(p118) sparqlならではの強力な検索機能!

実践SPARQL 5/17 @ 日本オラクル株式会社 山本 泰智

IRIを一部置換してデータ更新(p194)

クラス http://dbpedia.org/ontology/City のインスタンスIRIについて、http://ja.dbpedia.org/resource/ に当たる部分を、http://sparqlbook.jp/city/ に置換して対象DBを更新WITH <http://sparqlbook.jp/graph> DELETE { ?old_iri a <http://dbpedia.org/ontology/City> . } INSERT { ?new_iri a <http://dbpedia.org/ontology/City> . } WHERE { ?old_iri a <http://dbpedia.org/ontology/City> . BIND(STR(?old_iri) AS ?old_iri_string) BIND("http://ja.dbpedia.org/resource/", AS ?old_prefix) BIND("http://sparqlbook.jp/city/", AS ?new_prefix) BIND(IRI(REPLACE(?old_iri_string, ?old_prefix, ?new_prefix)) AS ?new_iri) }

Page 21: t SPARQL advanced - s3-eu-west-1.amazonaws.com · 実践sparql 5/17 @ 日本オラクル株式会社 山本 泰智 プロパティパス(p118) sparqlならではの強力な検索機能!

Questions?

@yayamamo [email protected]