54
SPARQL

SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

SPARQL

Page 2: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

Semantic  Web  Stack  (2007)

Page 3: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

SPARQLとは?

▪  RDFデータを検索するためのクエリ言語 (RDBMSにおけるSQLに相当) –  http://www.w3.org/TR/rdf-sparql-query/ –  http://www.asahi-net.or.jp/~ax2s-kmtn/

internet/rdf/rdf-sparql-query.html (日本語訳)

–  http://www.w3.org/TR/sparql11-overview ▪  ver.1.0は2008年1月にW3C勧告 ▪  ver.1.1は2013年3月にW3C勧告

Page 4: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

RDFデータストア

▪  RDFデータを格納し,SPARQLによるクエリなどを可能にするアプリケーション

▪  SPARQLエンドポイントを提供 –  queryパラメータ値にURLエンコードしたSPARQLクエリを与えることで,結果を得ることができるWeb API

▪  本講義ではVirtuosoを利用 –  http://virtuoso.openlinksw.com –  フリーソフトウェアのため各自ダウンロードしてインストールすることも可能

▪  以下のURLから本日の講義で説明するSPARQLクエリを実行可能 –  http://gloria.comp.ae.keio.ac.jp/sparql/

Page 5: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

Turtle

▪  RDFフォーマットの一種 ▪  RDF/XML構文よりも簡潔にRDF文書を表現可能 – http://www.w3.org/TR/turtle/

▪  以下のサンプルRDF文書はTurtleで記述

Page 6: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

SPARQL Query Syntax

Select ?x ?y (値を返す変数) (From データセット) Where { 検索条件} (出力書式) Construct (テンプレート内の変数を具象化してRDFを返す) Describe(条件部を含むRDFを返す) Ask(RDFグラフの有無 true/false)

Page 7: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

練習問題

▪  SPARQL –  サンプルRDF文書

•  ex002.ttl, ex012.ttl, ex054.ttl, ex069.ttl, ex100.ttl, ex104.ttl, ex115.ttl, ex145.ttl –  基本的なクエリ

•  ex003.rq, ex008.rq, ex010.rq, ex013.rq, ex070.rq –  FILTER(文字列値,数値などの制限)

•  ex021.rq, ex067.rq, ex105.rq, ex109.rq, ex112.rq –  OPTIONAL(オプション)

•  ex057.rq, ex061.rq –  DISTINCT(重複を除去)

•  ex094.rq –  UNION(代替グラフパターンマッチ)

•  ex103.rq –  LIMIT(表示結果数の上限を指定)

•  ex116.rq –  ORDER BY(ソート)

•  ex146.rq, ex148.rq, ex149.rq, ex151.rq –  GROUP BY, MAX, AVG, SUM, COUNT(グループ化, 大,平均,合計,個数を数える)

•  ex153.rq, ex156.rq, ex160.rq, ex162.rq

–  リモートのSPARQLエンドポイントへのクエリ •  ex170.rq, ex172.rq

▪  演習問題1, 演習問題2

Page 8: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

RDF文書: ex002.ttl

#  filename:  ex002./l    @prefix  ab:  <h/p://learningsparql.com/ns/addressbook#>  .    ab:richard  ab:homeTel  "(229)  276-­‐5135"  .    ab:richard  ab:email      "[email protected]"  .      ab:cindy  ab:homeTel  "(245)  646-­‐5488"  .    ab:cindy  ab:email      "[email protected]"  .      ab:craig  ab:homeTel  "(194)  966-­‐1505"  .    ab:craig  ab:email      "[email protected]"  .    ab:craig  ab:email      "[email protected]"  .  

講義概要

Page 9: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

SPARQLクエリ: ex003.rq

#  filename:  ex003.rq    PREFIX  ab:  <h/p://learningsparql.com/ns/addressbook#>      SELECT  ?craigEmail  WHERE  {  ab:craig  ab:email  ?craigEmail  .  }

Graph  IRI:  h/p://gloria.comp.ae.keio.ac.jp/ex002

講義概要

Page 10: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

RDF文書: ex002.ttl

#  filename:  ex002./l    @prefix  ab:  <h/p://learningsparql.com/ns/addressbook#>  .    ab:richard  ab:homeTel  "(229)  276-­‐5135"  .    ab:richard  ab:email      "[email protected]"  .      ab:cindy  ab:homeTel  "(245)  646-­‐5488"  .    ab:cindy  ab:email      "[email protected]"  .      ab:craig  ab:homeTel  "(194)  966-­‐1505"  .    ab:craig  ab:email      "[email protected]"  .    ab:craig  ab:email      "[email protected]"  .  

Page 11: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

SPARQLクエリ: ex008.rq

#  filename:  ex008.rq    PREFIX  ab:  <h/p://learningsparql.com/ns/addressbook#>      SELECT  ?person  WHERE  {  ?person  ab:homeTel  "(229)  276-­‐5135"  .  }  

Graph  IRI:  h/p://gloria.comp.ae.keio.ac.jp/ex002

講義概要

Page 12: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

RDF文書: ex002.ttl

#  filename:  ex002./l    @prefix  ab:  <h/p://learningsparql.com/ns/addressbook#>  .    ab:richard  ab:homeTel  "(229)  276-­‐5135"  .    ab:richard  ab:email      "[email protected]"  .      ab:cindy  ab:homeTel  "(245)  646-­‐5488"  .    ab:cindy  ab:email      "[email protected]"  .      ab:craig  ab:homeTel  "(194)  966-­‐1505"  .    ab:craig  ab:email      "[email protected]"  .    ab:craig  ab:email      "[email protected]"  .  

Page 13: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

SPARQLクエリ: ex010.rq

#  filename:  ex010.rq    PREFIX  ab:  <h/p://learningsparql.com/ns/addressbook#>      SELECT  ?propertyName  ?propertyValue  WHERE  {  ab:cindy  ?propertyName  ?propertyValue  .  }  

Graph  IRI:  h/p://gloria.comp.ae.keio.ac.jp/ex002

講義概要

Page 14: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

RDF文書: ex002.ttl

#  filename:  ex002./l    @prefix  ab:  <h/p://learningsparql.com/ns/addressbook#>  .    ab:richard  ab:homeTel  "(229)  276-­‐5135"  .    ab:richard  ab:email      "[email protected]"  .      ab:cindy  ab:homeTel  "(245)  646-­‐5488"  .    ab:cindy  ab:email      "[email protected]"  .      ab:craig  ab:homeTel  "(194)  966-­‐1505"  .    ab:craig  ab:email      "[email protected]"  .    ab:craig  ab:email      "[email protected]"  .  

Page 15: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

RDF文書: ex012.ttl#  filename:  ex012./l    @prefix  ab:  <h/p://learningsparql.com/ns/addressbook#>  .  @prefix  d:    <h/p://learningsparql.com/ns/data#>  .    d:i0432  ab:firstName  "Richard"  .    d:i0432  ab:lastName    "Mu/"  .    d:i0432  ab:homeTel      "(229)  276-­‐5135"  .  d:i0432  ab:email          "[email protected]"  .      d:i9771  ab:firstName  "Cindy"  .    d:i9771  ab:lastName    "Marshall"  .    d:i9771  ab:homeTel      "(245)  646-­‐5488"  .    d:i9771  ab:email          "[email protected]"  .      d:i8301  ab:firstName  "Craig"  .    d:i8301  ab:lastName    "Ellis"  .    d:i8301  ab:email          "[email protected]"  .    d:i8301  ab:email          "[email protected]"  .  

講義概要

Page 16: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

SPARQLクエリ: ex013.rq

#  filename:  ex013.rq    PREFIX  ab:  <h/p://learningsparql.com/ns/addressbook#>      SELECT  ?craigEmail  WHERE  {      ?person  ab:firstName  "Craig"  .        ?person  ab:email  ?craigEmail  .    }  

Graph  IRI:  h/p://gloria.comp.ae.keio.ac.jp/ex012

講義概要

Page 17: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

RDF文書: ex012.ttl#  filename:  ex012./l    @prefix  ab:  <h/p://learningsparql.com/ns/addressbook#>  .  @prefix  d:    <h/p://learningsparql.com/ns/data#>  .    d:i0432  ab:firstName  "Richard"  .    d:i0432  ab:lastName    "Mu/"  .    d:i0432  ab:homeTel      "(229)  276-­‐5135"  .  d:i0432  ab:email          "[email protected]"  .      d:i9771  ab:firstName  "Cindy"  .    d:i9771  ab:lastName    "Marshall"  .    d:i9771  ab:homeTel      "(245)  646-­‐5488"  .    d:i9771  ab:email          "[email protected]"  .      d:i8301  ab:firstName  "Craig"  .    d:i8301  ab:lastName    "Ellis"  .    d:i8301  ab:email          "[email protected]"  .    d:i8301  ab:email          "[email protected]"  .  

Page 18: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

SPARQLクエリ: ex021.rq

#  filename:  ex021.rq    PREFIX  ab:  <h/p://learningsparql.com/ns/addressbook#>      SELECT  *  WHERE  {      ?s  ?p  ?o  .        FILTER  (regex(?o,  "yahoo","i"))  }  

Graph  IRI:  h/p://gloria.comp.ae.keio.ac.jp/ex012

iオプションをつけると  大文字・小文字を  区別しなくなる

講義概要

Page 19: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

RDF文書: ex012.ttl#  filename:  ex012./l    @prefix  ab:  <h/p://learningsparql.com/ns/addressbook#>  .  @prefix  d:    <h/p://learningsparql.com/ns/data#>  .    d:i0432  ab:firstName  "Richard"  .    d:i0432  ab:lastName    "Mu/"  .    d:i0432  ab:homeTel      "(229)  276-­‐5135"  .  d:i0432  ab:email          "[email protected]"  .      d:i9771  ab:firstName  "Cindy"  .    d:i9771  ab:lastName    "Marshall"  .    d:i9771  ab:homeTel      "(245)  646-­‐5488"  .    d:i9771  ab:email          "[email protected]"  .      d:i8301  ab:firstName  "Craig"  .    d:i8301  ab:lastName    "Ellis"  .    d:i8301  ab:email          "[email protected]"  .    d:i8301  ab:email          "[email protected]"  .  

Page 20: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

演習問題1

1.  ex012.ttl文書において,登録されている人物の名前(firstName)と苗字(lastName)を表示するSPARQLクエリを作成せよ

2.  ex012.ttl文書において,自宅の電話番号が「(245) 646-5488」である人物の名前と苗字を表示するSPARQLクエリを作成せよ

3.  ex012.ttl文書において,「gmail」を含むメールアドレスを持つ人物の名前と苗字を表示するSPARQLクエリを作成せよ

上記1〜3で作成したクエリをSPARQLエンドポイント上で実行し,結果を確認せよ

Page 21: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

RDF文書: ex054.ttl#  filename:  ex054./l  @prefix  ab:  <h/p://learningsparql.com/ns/addressbook#>  .  @prefix  d:    <h/p://learningsparql.com/ns/data#>  .    d:i0432  ab:firstName  "Richard"  .    d:i0432  ab:lastName    "Mu/"  .    d:i0432  ab:homeTel      "(229)  276-­‐5135"  .    d:i0432  ab:nick            "Dick"  .  d:i0432  ab:email          "[email protected]"  .      d:i9771  ab:firstName  "Cindy"  .    d:i9771  ab:lastName    "Marshall"  .    d:i9771  ab:homeTel      "(245)  646-­‐5488"  .    d:i9771  ab:email          "[email protected]"  .      d:i8301  ab:firstName  "Craig"  .    d:i8301  ab:lastName    "Ellis"  .    d:i8301  ab:workTel      "(245)  315-­‐5486"  .  d:i8301  ab:email          "[email protected]"  .    d:i8301  ab:email          "[email protected]"  .    

講義概要

Page 22: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

SPARQLクエリ: ex057.rq

#  filename:  ex057.rq    PREFIX  ab:  <h/p://learningsparql.com/ns/addressbook#>      SELECT  ?first  ?last  ?workTel  WHERE  {      ?s  ab:firstName  ?first  ;            ab:lastName  ?last  .      OPTIONAL        {  ?s  ab:workTel  ?workTel  .  }  }  

Graph  IRI:  h/p://gloria.comp.ae.keio.ac.jp/ex054

 ?s  ab:firstName  ?first  ;            ab:lastName  ?last  ;            ab:workTel  ?workTel  .    

講義概要

Page 23: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

RDF文書: ex054.ttl#  filename:  ex054./l  @prefix  ab:  <h/p://learningsparql.com/ns/addressbook#>  .  @prefix  d:    <h/p://learningsparql.com/ns/data#>  .    d:i0432  ab:firstName  "Richard"  .    d:i0432  ab:lastName    "Mu/"  .    d:i0432  ab:homeTel      "(229)  276-­‐5135"  .    d:i0432  ab:nick            "Dick"  .  d:i0432  ab:email          "[email protected]"  .      d:i9771  ab:firstName  "Cindy"  .    d:i9771  ab:lastName    "Marshall"  .    d:i9771  ab:homeTel      "(245)  646-­‐5488"  .    d:i9771  ab:email          "[email protected]"  .      d:i8301  ab:firstName  "Craig"  .    d:i8301  ab:lastName    "Ellis"  .    d:i8301  ab:workTel      "(245)  315-­‐5486"  .  d:i8301  ab:email          "[email protected]"  .    d:i8301  ab:email          "[email protected]"  .    

Page 24: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

SPARQLクエリ: ex061.rq

#  filename:  ex061.rq    PREFIX  ab:  <h/p://learningsparql.com/ns/addressbook#>      SELECT  ?first  ?last  ?workTel  ?nick  WHERE  {      ?s  ab:firstName  ?first  ;            ab:lastName  ?last  .      OPTIONAL  {  ?s  ab:workTel  ?workTel  .  }      OPTIONAL  {  ?s  ab:nick  ?nick  .    }  }  

Graph  IRI:  h/p://gloria.comp.ae.keio.ac.jp/ex054

OPTIONAL  {  ?s  ab:workTel  ?workTel;                                                          ab:nick  ?nick  .    }  

講義概要

Page 25: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

RDF文書: ex054.ttl#  filename:  ex054./l  @prefix  ab:  <h/p://learningsparql.com/ns/addressbook#>  .  @prefix  d:    <h/p://learningsparql.com/ns/data#>  .    d:i0432  ab:firstName  "Richard"  .    d:i0432  ab:lastName    "Mu/"  .    d:i0432  ab:homeTel      "(229)  276-­‐5135"  .    d:i0432  ab:nick            "Dick"  .  d:i0432  ab:email          "[email protected]"  .      d:i9771  ab:firstName  "Cindy"  .    d:i9771  ab:lastName    "Marshall"  .    d:i9771  ab:homeTel      "(245)  646-­‐5488"  .    d:i9771  ab:email          "[email protected]"  .      d:i8301  ab:firstName  "Craig"  .    d:i8301  ab:lastName    "Ellis"  .    d:i8301  ab:workTel      "(245)  315-­‐5486"  .  d:i8301  ab:email          "[email protected]"  .    d:i8301  ab:email          "[email protected]"  .    

Page 26: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

SPARQLクエリ: ex067.rq

#  filename:  ex067.rq    PREFIX  ab:  <h/p://learningsparql.com/ns/addressbook#>      SELECT  ?first  ?last      WHERE  {      ?s  ab:firstName  ?first  ;            ab:lastName  ?last  .      FILTER  NOT  EXISTS  {  ?s  ab:workTel  ?workNum  }  }  

Graph  IRI:  h/p://gloria.comp.ae.keio.ac.jp/ex054

講義概要

Page 27: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

RDF文書: ex054.ttl#  filename:  ex054./l  @prefix  ab:  <h/p://learningsparql.com/ns/addressbook#>  .  @prefix  d:    <h/p://learningsparql.com/ns/data#>  .    d:i0432  ab:firstName  "Richard"  .    d:i0432  ab:lastName    "Mu/"  .    d:i0432  ab:homeTel      "(229)  276-­‐5135"  .    d:i0432  ab:nick            "Dick"  .  d:i0432  ab:email          "[email protected]"  .      d:i9771  ab:firstName  "Cindy"  .    d:i9771  ab:lastName    "Marshall"  .    d:i9771  ab:homeTel      "(245)  646-­‐5488"  .    d:i9771  ab:email          "[email protected]"  .      d:i8301  ab:firstName  "Craig"  .    d:i8301  ab:lastName    "Ellis"  .    d:i8301  ab:workTel      "(245)  315-­‐5486"  .  d:i8301  ab:email          "[email protected]"  .    d:i8301  ab:email          "[email protected]"  .    

Page 28: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

RDF文書: ex069.ttl#  filename:  ex069./l    @prefix  ab:  <h/p://learningsparql.com/ns/addressbook#>  .  @prefix  d:    <h/p://learningsparql.com/ns/data#>  .    #  People    d:i0432  ab:firstName  "Richard"  ;                    ab:lastName    "Mu/"  ;                    ab:email          "[email protected]"  .      d:i9771  ab:firstName  "Cindy"  ;                    ab:lastName    "Marshall"  ;                    ab:email          "[email protected]"  .      d:i8301  ab:firstName  "Craig"  ;                    ab:lastName    "Ellis"  ;                    ab:email          "[email protected]"  .      

#  Courses    d:course34  ab:courseTitle  "Modeling  Data  with  OWL"  .  d:course71  ab:courseTitle  "Enhancing  Websites  with  RDFa"  .  d:course59  ab:courseTitle  "Using  SPARQL  with  non-­‐RDF  Data"  .  d:course85  ab:courseTitle  "Updalng  Data  with  SPARQL"  .    #  Who's  taking  which  courses    d:i8301  ab:takingCourse  d:course59  .    d:i9771  ab:takingCourse  d:course34  .    d:i0432  ab:takingCourse  d:course85  .    d:i0432  ab:takingCourse  d:course59  .    d:i9771  ab:takingCourse  d:course59  .    

講義概要

Page 29: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

SPARQLクエリ: ex070.rq

#  filename:  ex070.rq    PREFIX  ab:  <h/p://learningsparql.com/ns/addressbook#>      SELECT  ?last  ?first  ?courseName    WHERE  {      ?s  ab:firstName  ?first  ;            ab:lastName  ?last  ;            ab:takingCourse  ?course  .          ?course  ab:courseTitle  ?courseName  .    }  

Graph  IRI:  h/p://gloria.comp.ae.keio.ac.jp/ex069

講義概要

Page 30: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

SPARQLクエリ: ex094.rq

#  filename:  ex094.rq    PREFIX  ab:  <h/p://learningsparql.com/ns/addressbook#>    SELECT  DISTINCT  ?first  ?last    WHERE  {      ?s  ab:takingCourse  ?class  ;            ab:firstName  ?first  ;            ab:lastName  ?last  .    }  

Graph  IRI:  h/p://gloria.comp.ae.keio.ac.jp/ex069

SELECT  ?first  ?last  WHERE  {      ?s  ab:takingCourse  ?class  ;            ab:firstName  ?first  ;            ab:lastName  ?last  .    }  

講義概要

Page 31: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

RDF文書: ex100.ttl#  filename:  ex100./l    @prefix  ab:  <h/p://learningsparql.com/ns/addressbook#>  .  @prefix  d:      <h/p://learningsparql.com/ns/data#>  .    d:i0432  ab:firstName    "Richard"  ;                  ab:lastName      "Mu/"  ;                  ab:instrument  "sax"  ;                  ab:instrument  "clarinet"  .      d:i9771  ab:firstName    "Cindy"  ;                  ab:lastName      "Marshall"  ;                  ab:instrument  "drums"  .      d:i8301  ab:firstName    "Craig"  ;                  ab:lastName      "Ellis"  ;                    ab:instrument  "trumpet"  .    

講義概要

Page 32: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

SPARQLクエリ: ex103.rq

#  filename:  ex103.rq    PREFIX  ab:  <h/p://learningsparql.com/ns/addressbook#>    SELECT  ?first  ?last  ?instrument    WHERE  {          ?person  ab:firstName  ?first  ;                          ab:lastName  ?last  ;                          ab:instrument  ?instrument  .              {  ?person  ab:instrument  "sax"  .  }            UNION            {  ?person  ab:instrument  "trumpet"  .  }    }  

Graph  IRI:  h/p://gloria.comp.ae.keio.ac.jp/ex100

講義概要

Page 33: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

RDF文書: ex104.ttl#  filename:  ex104./l    @prefix  dm:  <h/p://learningsparql.com/ns/demo#>  .  @prefix  d:    <h/p://learningsparql.com/ns/data#>  .    d:item432  dm:cost  8  ;                      dm:localon  <h/p://dbpedia.org/resource/Boston>  .  d:item857  dm:cost  12  ;                      dm:localon  <h/p://dbpedia.org/resource/Montreal>  .  d:item693  dm:cost  10  ;                        dm:localon  "Heidelberg"  .    d:item126  dm:cost  5  ;                      dm:localon  <h/p://dbpedia.org/resource/Lisbon>  .      

講義概要

Page 34: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

SPARQLクエリ: ex105.rq

#  filename:  ex105.rq    PREFIX  dm:  <h/p://learningsparql.com/ns/demo#>      SELECT  ?s  ?cost  WHERE  {      ?s  dm:cost  ?cost  .      FILTER  (?cost  <  10)  }  

Graph  IRI:  h/p://gloria.comp.ae.keio.ac.jp/ex104

講義概要

Page 35: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

RDF文書: ex104.ttl#  filename:  ex104./l    @prefix  dm:  <h/p://learningsparql.com/ns/demo#>  .  @prefix  d:    <h/p://learningsparql.com/ns/data#>  .    d:item432  dm:cost  8  ;                      dm:localon  <h/p://dbpedia.org/resource/Boston>  .  d:item857  dm:cost  12  ;                      dm:localon  <h/p://dbpedia.org/resource/Montreal>  .  d:item693  dm:cost  10  ;                        dm:localon  "Heidelberg"  .    d:item126  dm:cost  5  ;                      dm:localon  <h/p://dbpedia.org/resource/Lisbon>  .      

Page 36: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

SPARQLクエリ: ex109.rq

#  filename:  ex109.rq    PREFIX  dm:    <h/p://learningsparql.com/ns/demo#>  PREFIX  db:  <h/p://dbpedia.org/resource/>    SELECT  ?s  ?cost  ?localon  WHERE  {      ?s  dm:localon  ?localon  ;            dm:cost  ?cost  .        FILTER  (?localon  IN  (db:Montreal,  db:Lisbon))  .    }  

Graph  IRI:  h/p://gloria.comp.ae.keio.ac.jp/ex104

講義概要

Page 37: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

RDF文書: ex104.ttl#  filename:  ex104./l    @prefix  dm:  <h/p://learningsparql.com/ns/demo#>  .  @prefix  d:    <h/p://learningsparql.com/ns/data#>  .    d:item432  dm:cost  8  ;                      dm:localon  <h/p://dbpedia.org/resource/Boston>  .  d:item857  dm:cost  12  ;                      dm:localon  <h/p://dbpedia.org/resource/Montreal>  .  d:item693  dm:cost  10  ;                        dm:localon  "Heidelberg"  .    d:item126  dm:cost  5  ;                      dm:localon  <h/p://dbpedia.org/resource/Lisbon>  .      

Page 38: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

SPARQLクエリ: ex112.rq 

#  filename:  ex112.rq    PREFIX  dm:    <h/p://learningsparql.com/ns/demo#>  PREFIX  db:  <h/p://dbpedia.org/resource/>    SELECT  ?s  ?cost  ?localon  WHERE  {      ?s  dm:localon  ?localon  ;            dm:cost  ?cost  .        FILTER  (?localon  NOT  IN  (db:Montreal,  db:Lisbon))  .    }  

Graph  IRI:  h/p://gloria.comp.ae.keio.ac.jp/ex104

講義概要

Page 39: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

RDF文書: ex104.ttl#  filename:  ex104./l    @prefix  dm:  <h/p://learningsparql.com/ns/demo#>  .  @prefix  d:    <h/p://learningsparql.com/ns/data#>  .    d:item432  dm:cost  8  ;                      dm:localon  <h/p://dbpedia.org/resource/Boston>  .  d:item857  dm:cost  12  ;                      dm:localon  <h/p://dbpedia.org/resource/Montreal>  .  d:item693  dm:cost  10  ;                        dm:localon  "Heidelberg"  .    d:item126  dm:cost  5  ;                      dm:localon  <h/p://dbpedia.org/resource/Lisbon>  .      

Page 40: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

RDF文書: ex115.ttl#  filename:  ex115./l    @prefix  d:        <h/p://learningsparql.com/ns/data#>  .  @prefix  rdfs:  <h/p://www.w3.org/2000/01/rdf-­‐schema#>  .      d:one      rdfs:label  "one"  .    d:two      rdfs:label  "two"  .    d:three  rdfs:label  "three"  .    d:four    rdfs:label  "four"  .    d:five    rdfs:label  "five"  .    d:six      rdfs:label  "six"  .    

講義概要

Page 41: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

SPARQLクエリ: ex116.rq

#  filename:  ex116.rq    PREFIX  rdfs:  <h/p://www.w3.org/2000/01/rdf-­‐schema#>    SELECT  ?label    WHERE  {  ?s  rdfs:label  ?label  .  }  LIMIT  2  

Graph  IRI:  h/p://gloria.comp.ae.keio.ac.jp/ex115

講義概要

Page 42: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

RDF文書: ex145.ttl#  filename:  ex145./l    @prefix  e:  <h/p://learningsparql.com/ns/expenses#>  .  @prefix  d:  <h/p://learningsparql.com/ns/data#>  .    d:m40392  e:descriplon  "breakfast"  ;                    e:date  "2011-­‐10-­‐14"  ;                    e:amount  6.53  .      d:m40393  e:descriplon  "lunch"  ;                    e:date  "2011-­‐10-­‐14"  ;                    e:amount  11.13  .      d:m40394  e:descriplon  "dinner"  ;                    e:date  "2011-­‐10-­‐14"  ;                    e:amount  28.30  .      

d:m40395  e:descriplon  "breakfast"  ;                    e:date  "2011-­‐10-­‐15"  ;                    e:amount  4.32  .      d:m40396  e:descriplon  "lunch"  ;                    e:date  "2011-­‐10-­‐15"  ;                    e:amount  9.45  .      d:m40397  e:descriplon  "dinner"  ;                    e:date  "2011-­‐10-­‐15"  ;                    e:amount  31.45  .      d:m40398  e:descriplon  "breakfast"  ;                    e:date  "2011-­‐10-­‐16"  ;                    e:amount  6.65  .      d:m40399  e:descriplon  "lunch"  ;                    e:date  "2011-­‐10-­‐16"  ;                    e:amount  10.00  .      d:m40400  e:descriplon  "dinner"  ;                    e:date  "2011-­‐10-­‐16"  ;                    e:amount  25.05  .    

講義概要

Page 43: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

SPARQLクエリ: ex146.rq

#  filename:  ex146.rq    PREFIX  e:  <h/p://learningsparql.com/ns/expenses#>    SELECT  ?descriplon  ?date  ?amount  WHERE  {      ?meal  e:descriplon  ?descriplon  ;                  e:date  ?date  ;                  e:amount  ?amount  .    }  ORDER  BY  ?amount  

Graph  IRI:  h/p://gloria.comp.ae.keio.ac.jp/ex145

講義概要

Page 44: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

SPARQLクエリ: ex148.rq

#  filename:  ex148.rq    PREFIX  e:  <h/p://learningsparql.com/ns/expenses#>    SELECT  ?descriplon  ?date  ?amount  WHERE  {      ?meal  e:descriplon  ?descriplon  ;                  e:date  ?date  ;                  e:amount  ?amount  .    }    ORDER  BY  DESC(?amount)  

Graph  IRI:  h/p://gloria.comp.ae.keio.ac.jp/ex145

講義概要

Page 45: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

SPARQLクエリ: ex149.rq

#  filename:  ex149.rq    PREFIX  e:  <h/p://learningsparql.com/ns/expenses#>    SELECT  ?descriplon  ?date  ?amount  WHERE  {      ?meal  e:descriplon  ?descriplon  ;                  e:date  ?date  ;                  e:amount  ?amount  .    }    ORDER  BY  ?descriplon  DESC(?amount)  

Graph  IRI:  h/p://gloria.comp.ae.keio.ac.jp/ex145

講義概要

Page 46: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

SPARQLクエリ: ex151.rq

#  filename:  ex151.rq    PREFIX  e:  <h/p://learningsparql.com/ns/expenses#>    SELECT  ?descriplon  ?date  ?amount  WHERE  {      ?meal  e:descriplon  ?descriplon  ;                  e:date  ?date  ;                  e:amount  ?amount  .    }    ORDER  BY  DESC(?amount)  LIMIT  1  

Graph  IRI:  h/p://gloria.comp.ae.keio.ac.jp/ex145

講義概要

Page 47: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

SPARQLクエリ: ex153.rq

#  filename:  ex153.rq    PREFIX  e:  <h/p://learningsparql.com/ns/expenses#>      SELECT  (MAX(?amount)  as  ?maxAmount)    WHERE  {  ?meal  e:amount  ?amount  .  }  

Graph  IRI:  h/p://gloria.comp.ae.keio.ac.jp/ex145

講義概要

Page 48: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

SPARQLクエリ: ex156.rq

#  filename:  ex156.rq    PREFIX  e:  <h/p://learningsparql.com/ns/expenses#>      SELECT  (AVG(?amount)  as  ?avgAmount)    WHERE  {  ?meal  e:amount  ?amount  .  }  

Graph  IRI:  h/p://gloria.comp.ae.keio.ac.jp/ex145

講義概要

Page 49: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

SPARQLクエリ: ex160.rq

#  filename:  ex160.rq    PREFIX  e:  <h/p://learningsparql.com/ns/expenses#>      SELECT  ?descriplon  (SUM(?amount)  AS  ?mealTotal)  WHERE  {      ?meal  e:descriplon  ?descriplon  ;                  e:amount  ?amount  .    }  GROUP  BY  ?descriplon  

Graph  IRI:  h/p://gloria.comp.ae.keio.ac.jp/ex145

講義概要

Page 50: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

SPARQLクエリ: ex162.rq

#  filename:  ex162.rq    SELECT  ?p  (COUNT(?p)  AS  ?pTotal)  WHERE  {  ?s  ?p  ?o  .  }  GROUP  BY  ?p  

Graph  IRI:  h/p://gloria.comp.ae.keio.ac.jp/ex145

講義概要

Page 51: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

SPARQLクエリ: ex170.rq

#  filename:  ex170.rq    PREFIX  rdf:    <h/p://www.w3.org/1999/02/22-­‐rdf-­‐syntax-­‐ns#>  PREFIX  rdfs:  <h/p://www.w3.org/2000/01/rdf-­‐schema#>  PREFIX  gp:      <h/p://wifo5-­‐04.informalk.uni-­‐mannheim.de/gutendata/resource/people/>    SELECT  ?p  ?o    WHERE  {        SERVICE  <h/p://wifo5-­‐04.informalk.uni-­‐mannheim.de/gutendata/sparql>      {  gp:Hocking_Joseph  ?p  ?o  .  }  }  

Graph  IRI:  空にする

講義概要

Page 52: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

SPARQLクエリ: ex172.rq

#  filename:  ex172.rq    PREFIX  cat:    <h/p://dbpedia.org/resource/Category:>  PREFIX  foaf:  <h/p://xmlns.com/foaf/0.1/>  PREFIX  gp:      <h/p://wifo5-­‐04.informalk.uni-­‐mannheim.de/gutendata/resource/people/>  PREFIX  owl:    <h/p://www.w3.org/2002/07/owl#>  PREFIX  rdf:    <h/p://www.w3.org/1999/02/22-­‐rdf-­‐syntax-­‐ns#>  PREFIX  rdfs:  <h/p://www.w3.org/2000/01/rdf-­‐schema#>  PREFIX  skos:  <h/p://www.w3.org/2004/02/skos/core#>    SELECT  ?dbpProperty  ?dbpValue  ?gutenProperty  ?gutenValue    WHERE  {      SERVICE  <h/p://DBpedia.org/sparql>      {          <h/p://dbpedia.org/resource/Joseph_Hocking>  ?dbpProperty  ?dbpValue  .      }        SERVICE  <h/p://wifo5-­‐04.informalk.uni-­‐mannheim.de/gutendata/sparql>      {          gp:Hocking_Joseph  ?gutenProperty  ?gutenValue  .        }  }  

Graph  IRI:  空にする

講義概要

Page 53: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

演習問題2

▪  日本語Wikipediaオントロジー(JWO)のSPARQLエンドポイントを利用して,以下のクエリを作成せよ –  検索:http://www.wikipediaontology.org/search.html –  SPARQLエンドポイント:http://www.wikipediaontology.org/query/

1.  日本映画クラスのインスタンスについて,rdfs:labelプロパティ値を昇順でソートして,10件表示するクエリを作成せよ –  LIMITはフォーム上から入力すること –  JWOのクラス,プロパティ,インスタンスの名前空間は以下を利用

•  PREFIX jwo-class:<http://www.wikipediaontology.org/class/> •  PREFIX jwo-prop:<http://www.wikipediaontology.org/property/> •  PREFIX jwo-instance:<http://www.wikipediaontology.org/instance/>

2.  夏目漱石インスタンスの代表作を昇順でソートして表示するクエリを作成せよ 3.  自動車を会社名に含むインスタンスについて,会社名,代表者名,従業員数を,

会社名を昇順にソートして表示するクエリを作成せよ –  代表者と従業員数はオプションとする

–  会社のインスタンスは,「?company jwo:hyper ?jwo-class:会社 .」により取得 –  PREFIX jwo:<http://www.wikipediaontology.org/vocabulary#>

Page 54: SPARQLRDFデータストア RDFデータを格納し,SPARQLによるクエリなどを可能にす るアプリケーション SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えること

参考文献

▪  Bob DuCharme: "Learning SPARQL", O'REILLY, ISBN: 1449306594

▪  SPARQL Cheat Sheet: http://www.iro.umontreal.ca/~lapalme/ift6281/sparql-1_1-cheat-sheet.pdf