Contenu connexe
Similaire à 第5回LinkedData勉強会@yayamamo (20)
Plus de yayamamo @ DBCLS Kashiwanoha (20)
第5回LinkedData勉強会@yayamamo
- 6. ng D raft
ll Wo rki
Last Ca
http://www.w3.org/TR/sparql11-query/
- 13. CONSTRUCTで新たなトリプルを生成
SELECTの代わりにCONSTRUCTを用いて結果をトリプルに
CONSTRUCT {
dbpedia:Joseph_Hocking ?dbpProp ?dbpVal .
gp:Hocking_Joseph ?gutenProp ?gutenVal .
}
WHERE {
SERVICE <http://DBpedia.org/sparql>
{ SELECT ?dbpProp ?dbpVal
WHERE {
dbpedia:Joseph_Hocking ?dbpProp ?dpbVal .
}}
SERVICE <http://www4.wiwiss.fu-berlin.de/gutendata/sparql>
{ SELECT ?gutenProp ?gutenVal
WHERE {
gp:Hoking_Joseph ?gutenProp ?gutenVal .
}}}
第5回LinkedData勉強会 7/24 @ DBCLS 山本泰智
- 14. 生成ルールとCONSTRUCT
d:jane ab:hasParent d:gene . pat
d:gene ab:hasParent d:pat ;
ab:gender d:female .
d:joan ab:hasParent d:pat ; gene joan
ab:gender d:female .
d:pat ab:gender d:male . jane mike
d:mike ab:hasParent d:joan .
CONSTRUCT { p の親の親 g がいて、その g を
?p ab:hasAunt ?aunt . }
WHERE {
親に持つ女性 aunt がいる。
?p ab:hasParent ?parent . かつ、aunt は p の親ではない。
?parent ab:hasParent ?g .
?aunt ab:hasParent ?g ;
ab:gender d:female . そのとき、p は aunt というおば
FILTER (?parent != ?aunt)
}
を持つ。
第5回LinkedData勉強会 7/24 @ DBCLS 山本泰智
- 16. CONSTRUCTでデータ変換
PREFIX v: <http://www.w3.org/2006/vcard/ns#>
PREFIX : <http://example.com/myaddressbook#>
CONSTRUCT {
?s v:given-name ?firstName ;
v:family-name ?lastName ;
v:email ?email ;
v:homeTel ?homeTel .
}
WHERE {
?s :firstName ?firstName ;
:lastName ?lastName ;
:email ?email .
OPTIONAL {
?s :homeTel ?homeTel . }
}
第5回LinkedData勉強会 7/24 @ DBCLS 山本泰智
- 17. CONSTRUCTで内容確認
CONSTRUCT {
?item dm:problem dm:prob00 .
dm:prob00 rdfs:label "Amount must be an integer." .
}
WHERE {
?item dm:amount ?amount .
FILTER ((datatype(?amount)) != xsd:integer)
}
第5回LinkedData勉強会 7/24 @ DBCLS 山本泰智
- 19. 基本データ型
XML Schema datatypesで規定されている型
xsd:integer
xsd:decimal
xsd:float
xsd:double
xsd:string
xsd:boolean
xsd:dateTime
@prefix xsd: <http://www.w3.org/2001/XMLSchema#>
第5回LinkedData勉強会 7/24 @ DBCLS 山本泰智
- 21. 関数 1
条件
SELECT ?answer
WHERE {
BIND (
(IF (2 > 3, "Two is bigger","Three is bigger")) AS ?answer)
}
判定
SELECT ?o ?blankTest ?literalTest ?numericTest ?IRITest ?URITest
WHERE { ?s ?p ?o .
BIND (isBlank(?o) as ?blankTest)
BIND (isLiteral(?o) as ?literalTest)
BIND (isNumeric(?o) as ?numericTest)
BIND (isIRI(?o) as ?IRITest)
BIND (isURI(?o) as ?URITest)
}
第5回LinkedData勉強会 7/24 @ DBCLS 山本泰智
- 22. 関数 2
変換
SELECT ?o ?integerTest ?decimalTest ?floatTest ?doubleTest ?
stringTest ?booleanTest ?dateTimeTest
WHERE { ?s ?p ?o .
BIND (xsd:integer(?o) as ?integerTest)
BIND (xsd:decimal(?o) as ?decimalTest)
BIND (xsd:float(?o) as ?floatTest)
BIND (xsd:double(?o) as ?doubleTest)
BIND (xsd:string(?o) as ?stringTest)
BIND (xsd:boolean(?o) as ?booleanTest)
BIND (xsd:dateTime(?o) as ?dateTimeTest)
}
第5回LinkedData勉強会 7/24 @ DBCLS 山本泰智
- 25. 関数を用いてノードとトリプルを作る 1
PREFIX dm: <http:/ /example.com/ns/demo#>
CONSTRUCT { ?locationURI rdf:type dm:Place . }
WHERE {
?item dm:location ?locationValue .
BIND (IF(isURI(?locationValue),
?locationValue,
URI(CONCAT("http:/ /example.com/ns/data#",
ENCODE_FOR_URI(?locationValue)))
) AS ?locationURI
).
}
第5回LinkedData勉強会 7/24 @ DBCLS 山本泰智
- 26. 処理例
入力 @prefix d: <http://example.com/ns/data#> .
@prefix dm: <http:/ /example.com/ns/demo#> .
d:item432 dm:cost 8 ;
dm:location <http://dbpedia.org/resource/Boston> .
d:item857 dm:cost 12 ;
dm:location <http://dbpedia.org/resource/Montreal> .
d:item693 dm:cost 10 ;
dm:location "Heidelberg" .
d:item126 dm:cost 5 ;
dm:location <http://dbpedia.org/resource/Lisbon> .
出力
<http://dbpedia.org/resource/Boston> rdf:type dm:Place .
d:Heidelberg rdf:type dm:Place .
<http://dbpedia.org/resource/Montreal> rdf:type dm:Place .
<http://dbpedia.org/resource/Lisbon> rdf:type dm:Place .
第5回LinkedData勉強会 7/24 @ DBCLS 山本泰智
- 27. 関数を用いてノードとトリプルを作る 2
PREFIX im: <http:/ /example.com/ns/importedData#>
PREFIX u: <http:/ /example.com/ns/units#>
CONSTRUCT { ?s u:amount ?newAmount . }
WHERE {
?s im:product ?prodName ;
im:amount ?amount ;
im:units ?units .
BIND(STRDT(?amount,
URI(CONCAT("http:/ /example.com/ns/units#",?units)))
AS ?newAmount)
}
第5回LinkedData勉強会 7/24 @ DBCLS 山本泰智
- 28. 処理例
@prefix d: <http://example.com/ns/data#> .
@prefix u: <http://example.com/ns/units#> .
入力
@prefix im: <http://example.com/ns/importedData#> .
d:item1 im:product "kerosene" ;
im:amount "14" ;
im:units "liters" .
d:item2 im:product "double-knit polyester" ;
im:amount "10" ;
im:units "squareMeters" .
d:item3 im:product "gold-plated chain" ;
im:amount "30" ;
im:units "centimeters" .
出力
d:item2 u:amount "10"^^u:squareMeters .
d:item1 u:amount "14"^^u:liters .
d:item3 u:amount "30"^^u:centimeters .
第5回LinkedData勉強会 7/24 @ DBCLS 山本泰智
- 29. 言語タグ関係関数
lang と langMatches
:x rdfs:label "french fries"@en-US .
?s rdfs:label ?label
lang(?label) = "en" は false
langMatches(lang(?label)),"en") は true
STRLANG
言語タグ付きリテラルを生成する
STRLANG("truck","en-US")
第5回LinkedData勉強会 7/24 @ DBCLS 山本泰智
- 30. 文字列処理関係関数
判定
?s rdfs:label ?label .
BIND (STRSTARTS(?label,"12") AS ?startsTest)
BIND (STRENDS(?label,"ing") AS ?endsTest)
BIND (CONTAINS(?label," ") AS ?containsTest)
BIND (regex(?label,"d{3}") AS ?regexTest)
その他
BIND (STRLEN(?label) AS ?strlenTest)
BIND (SUBSTR(?label,4,2) AS ?substrTest)
BIND (UCASE(?label) AS ?ucaseTest)
BIND (LCASE(?label) AS ?lcaseTest)
BIND (REPLACE(?label,"ab([a-z]+)","X$1") AS ?repTest)
第5回LinkedData勉強会 7/24 @ DBCLS 山本泰智
- 31. 数値処理関係関数
四則演算や集合演算( AVG, MIN, MAX, SUM, COUNT )の他
?s dm:amount ?amount .
BIND (abs(?amount) AS ?absTest )
BIND (round(?amount) AS ?roundTest )
BIND (ceil(?amount) AS ?ceilTest )
BIND (floor(?amount) AS ?floorTest )
BIND (rand() AS ?randTest )
第5回LinkedData勉強会 7/24 @ DBCLS 山本泰智
- 32. 日時や時間関係関数
SELECT ?mtg ?yearTest ?monthTest ?dayTest ?hoursTest ?
minutesTest ?secondsTest ?timezoneTest ?tzTest ?cT
WHERE {
?mtg t:starts ?startTime .
BIND (year(?startTime) AS ?yearTest)
BIND (month(?startTime) AS ?monthTest)
BIND (day(?startTime) AS ?dayTest)
BIND (hours(?startTime) AS ?hoursTest)
BIND (minutes(?startTime) AS ?minutesTest)
BIND (seconds(?startTime) AS ?secondsTest)
BIND (timezone(?startTime) AS ?timezoneTest)
BIND (tz(?startTime) AS ?tzTest)
BIND (now() AS ?cT)
}
第5回LinkedData勉強会 7/24 @ DBCLS 山本泰智
- 33. ある条件を満たさないデータを検索する
SELECT ?first ?last WHERE {
?s ab:firstName ?first ;
ab:lastName ?last .
OPTIONAL { ?s ab:workTel ?workNum . }
FILTER (!bound(?workNum))
}
SELECT ?first ?last WHERE {
ab:workTelが無い
?s ab:firstName ?first ; データを見つける
ab:lastName ?last .
NOT EXISTS { ?s ab:workTel ?workNum }
}
SELECT ?first ?last WHERE {
?s ab:firstName ?first ;
ab:lastName ?last .
MINUS { ?s ab:workTel ?workNum }
}
第5回LinkedData勉強会 7/24 @ DBCLS 山本泰智
Notes de l'éditeur
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n