Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
SPARQL
Semantic Web Stack (2007)
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勧告
RDFデータストア
▪ RDFデータを格納し,SPARQLによるクエリなどを可能にするアプリケーション
▪ SPARQLエンドポイントを提供 – queryパラメータ値にURLエンコードしたSPARQLクエリを与えることで,結果を得ることができるWeb API
▪ 本講義ではVirtuosoを利用 – http://virtuoso.openlinksw.com – フリーソフトウェアのため各自ダウンロードしてインストールすることも可能
▪ 以下のURLから本日の講義で説明するSPARQLクエリを実行可能 – http://gloria.comp.ae.keio.ac.jp/sparql/
Turtle
▪ RDFフォーマットの一種 ▪ RDF/XML構文よりも簡潔にRDF文書を表現可能 – http://www.w3.org/TR/turtle/
▪ 以下のサンプルRDF文書はTurtleで記述
SPARQL Query Syntax
Select ?x ?y (値を返す変数) (From データセット) Where { 検索条件} (出力書式) Construct (テンプレート内の変数を具象化してRDFを返す) Describe(条件部を含むRDFを返す) Ask(RDFグラフの有無 true/false)
練習問題
▪ 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
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]" .
講義概要
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
講義概要
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]" .
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
講義概要
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]" .
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
講義概要
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]" .
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]" .
講義概要
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
講義概要
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]" .
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オプションをつけると 大文字・小文字を 区別しなくなる
講義概要
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]" .
演習問題1
1. ex012.ttl文書において,登録されている人物の名前(firstName)と苗字(lastName)を表示するSPARQLクエリを作成せよ
2. ex012.ttl文書において,自宅の電話番号が「(245) 646-5488」である人物の名前と苗字を表示するSPARQLクエリを作成せよ
3. ex012.ttl文書において,「gmail」を含むメールアドレスを持つ人物の名前と苗字を表示するSPARQLクエリを作成せよ
上記1〜3で作成したクエリを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]" .
講義概要
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 .
講義概要
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]" .
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 . }
講義概要
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]" .
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
講義概要
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]" .
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 .
講義概要
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
講義概要
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 . }
講義概要
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" .
講義概要
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
講義概要
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> .
講義概要
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
講義概要
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> .
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
講義概要
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> .
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
講義概要
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> .
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" .
講義概要
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
講義概要
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 .
講義概要
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
講義概要
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
講義概要
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
講義概要
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
講義概要
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
講義概要
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
講義概要
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
講義概要
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
講義概要
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: 空にする
講義概要
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: 空にする
講義概要
演習問題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#>
参考文献
▪ Bob DuCharme: "Learning SPARQL", O'REILLY, ISBN: 1449306594
▪ SPARQL Cheat Sheet: http://www.iro.umontreal.ca/~lapalme/ift6281/sparql-1_1-cheat-sheet.pdf