ãæ³¨æã ãã®ããã¥ã¡ã³ãã¯ãW3Cã®SPARQL Query Language for RDF W3C Recommendation 15 January 2008ã®å訳ã§ãã
ãã®ããã¥ã¡ã³ãã®æ£å¼çã¯W3Cã®ãµã¤ãä¸ã«ããè±èªçã§ããããã®ããã¥ã¡ã³ãã«ã¯ç¿»è¨³ã«èµ·å ãã誤ãããããã¾ãã誤訳ã誤æ¤ãªã©ã®ãææã¯ã訳è
ã¾ã§ãé¡ãè´ãã¾ãã
First Update: 2013å¹´7æ21æ¥
è¦ç´RDFã¯ãã¦ã§ãä¸ã§æ å ±ã表ãããã®ãæåæ§ã®ãã©ãã«ä»ããããã°ã©ãã»ãã¼ã¿å½¢å¼ã§ãããã®ä»æ§ã§ã¯ãRDFã«å¯¾ããSPARQLã¯ã¨ãªè¨èªã®æ§æã¨ã»ãã³ãã£ã¯ã¹ãå®ç¾©ãã¦ãã¾ããSPARQLã¯ããã¼ã¿ãRDFãã®ãã®ã¨ãã¦ä¿åããã¦ããããããã«ã¦ã§ã¢ãéãã¦RDFã¨ãã¦è¦ããã®ãã«ãããããããã¾ãã¾ãªãã¼ã¿æ å ±æºã«ã¾ãããã¯ã¨ãªã表ãããã«ä½¿ç¨ã§ãã¾ããSPARQLã«ã¯ãå¿ é ããã³ä»»æã®ã°ã©ãã»ãã¿ã¼ã³ããã®è«çç©ã¨è«çåã¨ã¨ãã«åãåãããæ§è½ãå«ã¾ãã¦ãã¾ããSPARQLã¯ãã½ã¼ã¹RDFã°ã©ãã«ããæ¡å¼µå¯è½ãªå¤ãã¹ããã¯ã¨ãªã®å¶ç´ããµãã¼ããã¾ããSPARQLã¯ã¨ãªã®çµæã¯ãçµæéåã¾ãã¯RDFã°ã©ãã§ãããã¾ãã
ä»é²RDFã¯ãã¦ã§ãä¸ã§æ å ±ã表ãããã®ãæåæ§ã®ãã©ãã«ä»ããããã°ã©ãã»ãã¼ã¿ã®å½¢å¼ã§ããRDFã¯ãç°ãªãæ å ±æºãçµ±åããææ®µã®æä¾ã«å ããã¨ããããå人çãªæ å ±ãã½ã¼ã·ã£ã«ã»ãããã¯ã¼ã¯ããã¸ã¿ã«ã»ã¢ã¼ãã£ãã¡ã¯ãã«é¢ããã¡ã¿ãã¼ã¿ã表ãããã«ãã°ãã°ä½¿ç¨ããã¾ãããã®ä»æ§ã§ã¯ãRDFç¨ã¯ã¨ãªè¨èªSPARQLã®æ§æããã³ã»ãã³ãã£ã¯ã¹ãå®ç¾©ãã¦ãã¾ãã
RDFç¨ã¯ã¨ãªè¨èªSPARQLã¯ãRDFãã¼ã¿ã»ã¢ã¯ã»ã¹ã»ã¦ã¼ã¹ã±ã¼ã¹ããã³è¦ä»¶[UCNR]ã§RDFãã¼ã¿ã»ã¢ã¯ã»ã¹ã»ã¯ã¼ãã³ã°ã°ã«ã¼ããæå®ãã¦ããã¦ã¼ã¹ã±ã¼ã¹ããã³è¦ä»¶ãæºããããã«è¨è¨ããã¦ãã¾ãã
SPARQLã¯ã¨ãªè¨èªã¯ã次ã®ä»æ§ã¨å¯æ¥ã«é¢é£ãã¦ãã¾ãã
é ã®å é ã§ç¹ã«æ³¨è¨ããªããã°ããã®ããã¥ã¡ã³ãã®ãã¹ã¦ã®é ã¨ä»é²ã¯è¦ç¯çã§ãã
ããã¥ã¡ã³ãã®ãã®é ï¼1é ï¼ã§ã¯ãSPARQLã¯ã¨ãªè¨èªã®ä»æ§ãç´¹ä»ãã¾ãããã®ä»æ§ããã¥ã¡ã³ãã®æ§æã¨ã仿§ã§ä½¿ç¨ããã¦ããæ £ç¿ã示ãã¾ãã
仿§ã®2é ã§ã¯ãä¸é£ã®ã¯ã¨ãªã¨ã¯ã¨ãªçµæã®ä¾ã«ãããSPARQLã¯ã¨ãªè¨èªèªä½ãç´¹ä»ãã¾ãã3é ã§ã¯ãã¯ã¨ãªã®çµæã«ç¾ããRDFç¨èªã«ããã¦å¶ç´ã表ç¾ããSPARQLã®æ§è½ã示ãä¾ãããå¤ãç¨ãã¦ãSPARQLã¯ã¨ãªè¨èªã®ç´¹ä»ãç¶ç¶ãã¦è¡ãã¾ãã
4é ã§ã¯ãSPARQLã¯ã¨ãªè¨èªã®æ§æã®è©³ç´°ã示ãã¾ããããã¯ãè¨èªã®å®å ¨ãªæ§æã¸ã®æå¼ãã§ãããææ³æ§é ãã©ã®ããã«IRIã空ç½ãã¼ãããªãã©ã«ã夿°ã表ãããå®ç¾©ãã¾ãã4é ã§ã¯ãããåé·ãªè¡¨ç¾ã«å¯¾ããç³è¡£æ§æã¨ãã¦å½¹ç«ã¤ããã¤ãã®ææ³æ§é ã®æå³ãå®ç¾©ãã¾ãã
5é ã§ã¯ãåºæ¬ã°ã©ãã»ãã¿ã¼ã³ã¨ã°ã«ã¼ãã»ã°ã©ãã»ãã¿ã¼ã³ãããè¤éãªSPARQLã¯ã¨ãªã»ãã¿ã¼ã³ã®æ§æè¦ç´ ãç´¹ä»ãã¾ãã6ã7ã8é ã§ã¯ãSPARQLã°ã©ãã»ãã¿ã¼ã³ããã大ããªã°ã©ãã»ãã¿ã¼ã³ã«çµã¿åãããæ§æåãæç¤ºãã¾ããç¹ã«ã6é ã§ã¯ãã¯ã¨ãªã»ãªãã·ã§ã³ã®ä¸é¨ã使ããæ§è½ãç´¹ä»ãã7é ã§ã¯ã代æ¿ã°ã©ãã»ãã¿ã¼ã³ã®è«çåãè¡¨ãæ§è½ãç´¹ä»ããããã¦ã8é ã§ã¯ãã¯ã¨ãªã®ä¸é¨ãç¹å®ã®ã½ã¼ã¹ã»ã°ã©ãã«å¶ç´ããæ§è½ãç´¹ä»ãã¾ãã8é ã§ã¯ãã¯ã¨ãªã«å¯¾ãã¦ã½ã¼ã¹ã»ã°ã©ããå®ç¾©ããSPARQLã®ä»çµã¿ãæç¤ºãã¾ãã
9é ã¯ãé åºä»ããã¹ã©ã¤ã¹ãããã¸ã§ã¯ã·ã§ã³ãå¶éãã½ãªã¥ã¼ã·ã§ã³ã®ã·ã¼ã±ã³ã¹ããã®éè¤ã®æé¤ã«ããã¯ã¨ãªã®ã½ãªã¥ã¼ã·ã§ã³ã«å½±é¿ããæ§æåãå®ç¾©ãã¾ãã
10é ã§ã¯ãç°ãªãå½¢å¼ã®çµæãçã4種é¡ã®SPARQLã¯ã¨ãªãå®ç¾©ãã¾ãã
11é ã§ã¯ãSPARQLã®æ¡å¼µå¯è½ãªå¤ãã¹ãã®æ çµã¿ãå®ç¾©ãã¾ããã¾ããã¯ã¨ãªã®çµæã«ç¾ããå¤ãå¶ç´ããããã«ä½¿ç¨ã§ãã颿°ã¨æ¼ç®åãæç¤ºãã¾ãã
12é ã¯ãSPARQLã°ã©ãã»ãã¿ã¼ã³ã¨ã½ãªã¥ã¼ã·ã§ã³ä¿®é£¾åã®è©ä¾¡ã«é¢ããå½¢å¼çãªå®ç¾©ã§ãã
ä»é²Aã¯ãEBNFè¡¨è¨æ³ã§ç¤ºããã¦ããææ³ã§è¦å®ããã¦ãããããªãSPARQLã¯ã¨ãªè¨èªã®æ§æã®è¦ç¯çãªå®ç¾©ãå«ãã§ãã¾ãã
1.2 ãã¥ã¡ã³ãã®æ £ç¿ 1.2.1 åå空éãã®ããã¥ã¡ã³ãã§ã¯ãç¹ã«æ³¨è¨ããªããã°ãä¾ã§ã¯ã次ã®åå空éã¯æ¥é è¾ãã¤ã³ãã£ã³ã°ãæ³å®ãã¦ãã¾ãã
æ¥é è¾ IRIrdf:
http://www.w3.org/1999/02/22-rdf-syntax-ns#
rdfs:
http://www.w3.org/2000/01/rdf-schema#
xsd:
http://www.w3.org/2001/XMLSchema#
fn:
http://www.w3.org/2005/xpath-functions#
1.2.2 ãã¼ã¿ã®è¨è¿°
ãã®ããã¥ã¡ã³ãã§ã¯ãåããªãã«ãæç¤ºçã«è¡¨ç¤ºããããã«Turtle[TURTLE]ã使ç¨ãã¾ããTurtleã§ã¯ãæ¥é è¾ãç¨ãã¦IRIãçç¥ãããã¨ãèªãããã¦ãã¾ãã
@prefix dc: <http://purl.org/dc/elements/1.1/> . @prefix : <http://example.org/book/> . :book1 dc:title "SPARQL Tutorial" .1.2.3 çµæã®è¨è¿°
çµæéåã¯ã表形å¼ã§ç¤ºããã¾ãã
x y z "Alice"<http://example/a>
ããã¤ã³ãã£ã³ã°ãã¯ãï¼å¤æ°ãRDFç¨èªï¼ã®å¯¾ã§ãããã®çµæéåã«ã¯ãx
ãy
ãz
ï¼åã®è¦åºãã¨ãã¦ç¤ºããã¦ããï¼ã¨ãã3ã¤ã®å¤æ°ãããã¾ããåã½ãªã¥ã¼ã·ã§ã³ã¯ãè¡¨ã®æ¬æã®1ã¤ã®åã¨ãã¦ç¤ºããã¦ãã¾ããããã§ã¯ã1ã¤ã®ã½ãªã¥ã¼ã·ã§ã³ãããã夿°x
ã¯"Alice"
ã«ãã¤ã³ãããã¦ããã夿°y
ã¯<http://example/a>
ã«ãã¤ã³ãããã¦ããã夿°z
ã¯RDFç¨èªã«ãã¤ã³ãããã¦ãã¾ãããã½ãªã¥ã¼ã·ã§ã³ã§ã¯ã夿°ã¯ããã¤ã³ãããã¦ããå¿
è¦ã¯ããã¾ããã
SPARQLè¨èªã«ã¯ãã¹ãã¼ã¹ãçç¥ããRDF URIåç §ã®ãµãã»ããã§ããIRIãå«ã¾ãã¦ãã¾ããSPARQLã¯ã¨ãªã§ã¯ããã¹ã¦ã®IRIã絶対çã§ãããã¨ã«æ³¨æãã¦ãã ãããIRIã«ã¯ããã©ã°ã¡ã³ãèå¥å[RFC3987ã3.1é ]ãå«ããã¨ãå«ã¾ãªããã¨ãå¯è½ã§ããIRIã«ã¯ãURI[RFC3986]ã¨URLãå«ã¾ãã¾ããSPARQLæ§æã®çç¥å½¢ï¼ç¸å¯¾IRIããã³æ¥é è¾ä»ãååï¼ã解決ãããã¨ã絶対IRIã使ããã¾ãã
次ã®ç¨èªã¯ãRDFæ¦å¿µããã³æ½è±¡æ§æ [CONCEPTS]ã§å®ç¾©ããã¦ãããSPARQLã§ä½¿ç¨ããã¾ãã
RDF URI reference
ï¼ã«å¯¾å¿ï¼datatype URI
ï¼ã¨ããç¨èªã«å¯¾å¿ï¼SPARQLã¯ã¨ãªã®ã»ã¨ãã©ã®å½¢å¼ã«ã¯ãåºæ¬ã°ã©ãã»ãã¿ã¼ã³ã¨å¼ã°ãã1çµã®ããªãã«ã»ãã¿ã¼ã³ãå«ã¾ãã¦ãã¾ããããããã®ä¸»èªãè¿°èªãç®çèªã夿°ã§ãããããã¨ãé¤ããããªãã«ã»ãã¿ã¼ã³ã¯RDFããªãã«ã«é¡ä¼¼ãã¦ãã¾ãããµãã°ã©ãããã®RDFç¨èªã夿°ã«ä»£æ¿ã§ããçµæããµãã°ã©ãã«åçãªRDFã°ã©ãã§ããå ´åãåºæ¬ã°ã©ãã»ãã¿ã¼ã³ã¯ãã®RDFãã¼ã¿ã®ãµãã°ã©ãã«ããããã¾ãã
2.1 ã·ã³ãã«ãªã¯ã¨ãªã®è¨è¿°æ¬¡ã®ä¾ã¯ãä¸ãããããã¼ã¿ã»ã°ã©ãããæ¸åï¼titleï¼ãçºè¦ããããã®SPARQLã¯ã¨ãªã示ãã¦ãã¾ããã¯ã¨ãªã¯ã次ã®2ã¤ã§æ§æããã¦ãã¾ããSELECT
å¥ã¯ã¯ã¨ãªã®çµæã«ç¾ãã夿°ãèå¥ããWHERE
å¥ã¯ãã¼ã¿ã»ã°ã©ãã«ãããããåºæ¬ã°ã©ãã»ãã¿ã¼ã³ãæä¾ãã¾ãããã®ä¾ã®åºæ¬ã°ã©ãã»ãã¿ã¼ã³ã¯ãç®çèªã®ä½ç½®ã«1ã¤ã®å¤æ°ï¼?title
ï¼ãæã¤ã1ã¤ã®ããªãã«ã»ã®ãã¿ã¼ã³ããæãã¾ãã
ãã¼ã¿:
<http://example.org/book/book1> <http://purl.org/dc/elements/1.1/title> "SPARQL Tutorial" .
ã¯ã¨ãª:
SELECT ?title WHERE{ <http://example.org/book/book1> <http://purl.org/dc/elements/1.1/title> ?title . }
ä¸è¨ã®ãã¼ã¿ã®ãã®ã¯ã¨ãªã«ã¯ã次ã®1ã¤ã®ã½ãªã¥ã¼ã·ã§ã³ãããã¾ãã
ã¯ã¨ãªçµæ:
2.2 è¤æ°ãããã¯ã¨ãªã®çµæã¯ãã¯ã¨ãªã®ã°ã©ãã»ãã¿ã¼ã³ããã¼ã¿ã«ãããããæ¹æ³ã«å¾ã£ãã½ãªã¥ã¼ã·ã§ã³ã»ã·ã¼ã±ã³ã¹ã§ããã¯ã¨ãªã«å¯¾ãã0ã1ã¾ãã¯è¤æ°ã®ã½ãªã¥ã¼ã·ã§ã³ããããã¾ãã
ãã¼ã¿:
@prefix foaf: <http://xmlns.com/foaf/0.1/> . _:a foaf:name "Johnny Lee Outlaw" . _:a foaf:mbox <mailto:jlow@example.com> . _:b foaf:name "Peter Goodguy" . _:b foaf:mbox <mailto:peter@example.org> . _:c foaf:mbox <mailto:carol@example.org> .
ã¯ã¨ãª:
PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?name ?mbox WHERE { ?x foaf:name ?name . ?x foaf:mbox ?mbox }
ã¯ã¨ãªçµæ:
name mbox "Johnny Lee Outlaw" <mailto:jlow@example.com> "Peter Goodguy" <mailto:peter@example.org>åã½ãªã¥ã¼ã·ã§ã³ã¯ãã¯ã¨ãªã»ãã¿ã¼ã³ããã¼ã¿ã«ãããããããã«ã鏿ããã夿°ãRDFç¨èªã«ãã¤ã³ãã§ãã1ã¤ã®æ¹æ³ãæç¤ºãã¾ããçµæéåã¯ããã¹ã¦ã®å¯è½ãªã½ãªã¥ã¼ã·ã§ã³ã示ãã¾ããä¸ä¾ã§ã¯ã次ã®2ã¤ã®ãã¼ã¿ã®ãµãã»ããã2ã¤ã®ããããããããã¾ããã
_:a foaf:name "Johnny Lee Outlaw" . _:a foaf:box <mailto:jlow@example.com> .
_:b foaf:name "Peter Goodguy" . _:b foaf:box <mailto:peter@example.org> .
ããã¯ãåºæ¬ã°ã©ãã»ãã¿ã¼ã³ã»ãããã§ãã¯ã¨ãªã»ãã¿ã¼ã³ã§ä½¿ç¨ããããã¹ã¦ã®å¤æ°ããã¹ã¦ã®ã½ãªã¥ã¼ã·ã§ã³ã«ãã¤ã³ãããã¦ããªããã°ãªãã¾ããã
2.3 RDFãªãã©ã«ã®ãããã³ã°æ¬¡ã®ãã¼ã¿ã«ã¯ã3ã¤ã®RDFãªãã©ã«ãå«ã¾ãã¦ãã¾ãã
@prefix dt: <http://example.org/datatype#> .
@prefix ns: <http://example.org/ns#> .
@prefix : <http://example.org/ns#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
:x ns:p "cat"@en .
:y ns:p "42"^^xsd:integer .
:z ns:p "abc"^^dt:specialDatatype .
Turtleã§ã¯"cat"@en
ãåå¥å½¢å¼ãcatãã¨è¨èªen
ãæã¤RDFãªãã©ã«ã§ãããã¨ã«æ³¨æãã¦ãã ããã"42"^^xsd:integer
ã¯ããã¼ã¿åhttp://www.w3.org/2001/XMLSchema#integer
ãæã¤åä»ããªãã©ã«ã§ããã"abc"^^dt:specialDatatype
ã¯ããã¼ã¿åhttp://example.org/datatype#specialDatatype
ãæã¤åä»ããªãã©ã«ã§ãã
ãã®RDFãã¼ã¿ã¯ã2.3.1ï½2.3.3é ã®ã¯ã¨ãªã®ä¾ã«ç¨ãããã¼ã¿ã»ã°ã©ãã§ãã
2.3.1 ãªãã©ã«ã¨è¨èªã¿ã°ã¨ã®ãããã³ã°SPARQLã®è¨èªã¿ã°ã¯ããã¹ãã»ã³ã¢ã³ã»ãã©ã¯ãã£ã¹47[BCP47]ã§å®ãããã¦ããããã«ã@
ã¨è¨èªã¿ã°ãç¨ãã¦è¡¨ããã¾ãã
次ã®ã¯ã¨ãªã§ã¯ã"cat"
ã"cat"@en
ã¨åãRDFãªãã©ã«ã§ã¯ãªããããã½ãªã¥ã¼ã·ã§ã³ã¯ããã¾ããã
SELECT ?v WHERE { ?v ?p "cat" }
ããããæ¬¡ã®ã¯ã¨ãªã¯ãè¨èªã¿ã°ãæå®ããã¦ãããä¸ãããããã¼ã¿ã«ãããããããã夿°v
ã:x
ã«ãã¤ã³ãããã¦ããã½ãªã¥ã¼ã·ã§ã³ãè¦ã¤ããã§ãããã
SELECT ?v WHERE { ?v ?p "cat"@en }v <http://example.org/ns#x> 2.3.2 ãªãã©ã«ã¨æ°å¤åã¨ã®ãããã³ã°
SPARQLã¯ã¨ãªã®æ´æ°ã¯ããã¼ã¿åxsd:integer
ãæã¤RDFåä»ããªãã©ã«ã§ããä¾ãã°ã42
ã¯ã"42"^^<http://www.w3.org/2001/XMLSchema#integer>
ã®çç¥å½¢ã§ãã
次ã®ã¯ã¨ãªã®ãã¿ã¼ã³ã«ã¯ã:y
ã«ãã¤ã³ãããã¦ãã夿°v
ãæã¤ã½ãªã¥ã¼ã·ã§ã³ãããã¾ãã
SELECT ?v WHERE { ?v ?p 42 }v <http://example.org/ns#y>
4.1.2é
ã§ã¯ãxsd:float
ã¨xsd:double
ã®SPARQLçç¥å½¢ãå®ç¾©ãã¦ãã¾ãã
次ã®ã¯ã¨ãªã«ã¯ã:z
ã«ãã¤ã³ãããã¦ãã夿°v
ãæã¤ã½ãªã¥ã¼ã·ã§ã³ãããã¾ããã¯ã¨ãªã»ããã»ããµããã¼ã¿åã®ã¹ãã¼ã¹ã®å¤ãçè§£ãã¦ããå¿
è¦ã¯ããã¾ãããåå¥å½¢å¼ã¨ãã¼ã¿åIRIã®ä¸¡æ¹ããããããããããªãã©ã«ã¯ããããã¾ãã
SELECT ?v WHERE { ?v ?p "abc"^^<http://example.org/datatype#specialDatatype> }v <http://example.org/ns#z> 2.4 ã¯ã¨ãªçµæã®ç©ºç½ãã¼ãã»ã©ãã«
ã¯ã¨ãªã®çµæã«ã¯ã空ç½ãã¼ããå«ããã¨ãã§ãã¾ãããã®ããã¥ã¡ã³ãã®ä¾ã§ã¯ãçµæéåã®ç©ºç½ãã¼ãã¯ã"_:"ã®å¾ã«ç©ºç½ãã¼ãã»ã©ãã«ãç¶ãå½¢ã§æ¸ããã¦ãã¾ãã
空ç½ãã¼ãã»ã©ãã«ã¯çµæéåï¼ãSPARQLã¯ã¨ãªçµæXMLãã©ã¼ããããã§å®ãããã¦ããããã«ï¼ã§æå¹ã§ãããCONSTRUCT
ã¯ã¨ãªå½¢å¼ã®å ´åã¯çµæã°ã©ãã§æå¹ã§ããçµæéåå
ã§ã®åãã©ãã«ã®ä½¿ç¨ã¯ãåã空ç½ãã¼ãã表ãã¾ãã
ãã¼ã¿:
@prefix foaf: <http://xmlns.com/foaf/0.1/> . _:a foaf:name "Alice" . _:b foaf:name "Bob" .
ã¯ã¨ãª:
PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?x ?name WHERE { ?x foaf:name ?name }x name _:c "Alice" _:d "Bob"
ä¸è¨ã®çµæã¯ãçµæã«ãããã©ãã«ãã½ãªã¥ã¼ã·ã§ã³å ã®RDFç¨èªãåããç°ãªããã示ãã ãã§ãããããç°ãªã空ç½ãã¼ãã»ã©ãã«ã§ãåããå¾ããã¨ãã§ãã¾ãã
x name _:r "Alice" _:s "Bob"ãããã®2ã¤ã®çµæã¯åãæ
å ±ãæã£ã¦ãã¾ããã2ã¤ã®ã½ãªã¥ã¼ã·ã§ã³ã§ã¯ãã¯ã¨ãªã«ããããããããã«ç¨ãããã空ç½ãã¼ããç°ãªã£ã¦ãã¾ããçµæéåã®ã©ãã«_:a
ã¨ãåãã©ãã«ãæã¤ãã¼ã¿ã»ã°ã©ãã®ç©ºç½ãã¼ãã¨ã®éã«é¢ä¿ãããå¿
è¦ã¯ããã¾ããã
ã¢ããªã±ã¼ã·ã§ã³ã®ä½æè ã¯ãã¯ã¨ãªã®ç©ºç½ãã¼ãã»ã©ãã«ããã¼ã¿ã®ç¹å®ã®ç©ºç½ãã¼ããåç §ãããã¨ãæå¾ ãã¹ãã§ã¯ããã¾ããã
2.5 RDFã°ã©ãã®æ§ç¯SPARQLã«ã¯ãããã¤ãã®ã¯ã¨ãªå½¢å¼ãããã¾ããSELECT
ã¨ããã¯ã¨ãªå½¢å¼ã¯ã夿°ãã¤ã³ãã£ã³ã°ãè¿ãã¾ããCONSTRUCT
ã¨ããã¯ã¨ãªå½¢å¼ã¯RDFã°ã©ããè¿ãã¾ããã°ã©ãã¯ãã¯ã¨ãªã®ã°ã©ãã»ãã¿ã¼ã³ããããã³ã°ããçµæã«åºã¥ãRDFããªãã«ã使ããããã«ç¨ãããããã³ãã¬ã¼ãã«åºã¥ãã¦æ§ç¯ããã¾ãã
ãã¼ã¿:
@prefix org: <http://example.com/ns#> . _:a org:employeeName "Alice" . _:a org:employeeId 12345 . _:b org:employeeName "Bob" . _:b org:employeeId 67890 .
ã¯ã¨ãª:
PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX org: <http://example.com/ns#> CONSTRUCT { ?x foaf:name ?name } WHERE { ?x org:employeeName ?name }
çµæ:
@prefix org: <http://example.com/ns#> . _:x foaf:name "Alice" . _:y foaf:name "Bob" .
ããã¯ã次ã®ã¨ãããRDF/XMLã§ã·ãªã¢ã«åã§ãã¾ãã
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:foaf="http://xmlns.com/foaf/0.1/" > <rdf:Description> <foaf:name>Alice</foaf:name> </rdf:Description> <rdf:Description> <foaf:name>Bob</foaf:name> </rdf:Description> </rdf:RDF>3 RDFç¨èªå¶ç´ï¼åèæ å ±ï¼
ã°ã©ãã»ãã¿ã¼ã³ã»ãããã³ã°ã¯ã½ãªã¥ã¼ã·ã§ã³ã»ã·ã¼ã±ã³ã¹ã使ãããã®åã½ãªã¥ã¼ã·ã§ã³ã¯ãRDFç¨èªã«å¯¾ãã夿°ãã¤ã³ãã£ã³ã°ã®éåãæã¡ã¾ããSPARQLã®FILTER
ã¯ããã£ã«ã¿ã®å¼ãçï¼TRUE
ï¼ã§ãããã®ã«ã½ãªã¥ã¼ã·ã§ã³ãå¶éãã¾ãã
ãã®é
ã§ã¯ãSPARQLã®FILTER
ã«é¢ããéå½¢å¼çãªæå¼ããæä¾ãã¾ãããã®ã»ãã³ãã£ã¯ã¹ã¯ã11é
å¤ã®ãã¹ãã§å®ãããã¦ãã¾ãããã®é
ã®ä¾ã§ã¯ã次ã®1ã¤ã®å
¥åã°ã©ããå
±ç¨ãã¦ãã¾ãã
ãã¼ã¿:
@prefix dc: <http://purl.org/dc/elements/1.1/> . @prefix : <http://example.org/book/> . @prefix ns: <http://example.org/ns#> . :book1 dc:title "SPARQL Tutorial" . :book1 ns:price 42 . :book2 dc:title "The Semantic Web" . :book2 ns:price 23 .3.1 æååã®å¤ã®å¶é
regex
ã®ãããªSPARQLã®FILTER
颿°ã¯ãRDFãªãã©ã«ããã¹ãã§ãã¾ããregex
ã¯ãè¨èªã¿ã°ãæããªããã¬ã¼ã³ã»ãªãã©ã«ã®ã¿ã«ããããã¾ããregex
ã¯ãstr颿°ãç¨ãã¦ä»ã®ãªãã©ã«ã®åå¥å½¢å¼ã«ããããããããã«ä½¿ç¨ã§ãã¾ãã
ã¯ã¨ãª:
PREFIX dc: <http://purl.org/dc/elements/1.1/> SELECT ?title WHERE { ?x dc:title ?title FILTER regex(?title, "^SPARQL") }
ã¯ã¨ãªçµæ:
æ£è¦è¡¨ç¾ãããã§ã¯ããi
ããã©ã°ãç¨ãã¦å¤§æåã»å°æåãåºå¥ããªãããã«ãããã¨ãã§ãã¾ãã
ã¯ã¨ãª:
PREFIX dc: <http://purl.org/dc/elements/1.1/> SELECT ?title WHERE { ?x dc:title ?title FILTER regex(?title, "web", "i" ) }
ã¯ã¨ãªçµæ:
æ£è¦è¡¨ç¾è¨èªã¯ãXQuery 1.0ã¨XPath 2.0颿°ããã³æ¼ç®åã§å®ãããã¦ãããXMLã¹ãã¼ãæ£è¦è¡¨ç¾ã«åºã¥ãã¦ãã¾ãã
3.2 æ°å¤ã®å¶éSPARQLã®FILTER
ã¯ãè¨ç®å¼ãå¶éã§ãã¾ãã
ã¯ã¨ãª:
PREFIX dc: <http://purl.org/dc/elements/1.1/> PREFIX ns: <http://example.org/ns#> SELECT ?title ?price WHERE { ?x ns:price ?price . FILTER (?price < 30.5) ?x dc:title ?title . }
ã¯ã¨ãªçµæ:
title price "The Semantic Web" 23:book2
ã®ã¿ã30.5
æªæºã®ä¾¡æ ¼ãæã£ã¦ãããããprice
夿°ãå¶ç´ãããã¨ã§ããã£ã«ã¿æ¡ä»¶ã®è¦æ±ã«å¾ãã:book2
ã®ã¿ãã¯ã¨ãªã«ããããã¾ãã
æ°å¤åã«å ããSPARQLã¯ãxsd:string
ãxsd:boolean
ãxsd:dateTime
ã¨ããåããµãã¼ããã¦ãã¾ãï¼11.1 ãªãã©ã³ãã»ãã¼ã¿åãåç
§ãã¦ãã ããï¼ã11.3 æ¼ç®åãããã³ã°ã«ã¯ãBOUND
ãisLITERAL
ãlangMATCHES
ãå«ããã¹ã颿°ã¨ãSTR
ãLANG
ãDATATYPE
ãå«ãã¢ã¯ã»ãµããªã¹ãã¢ããããã¦ãã¾ãã11.5 ã³ã³ã¹ãã©ã¯ã¿é¢æ°ã«ã¯ãããåããå¥ã®åã«å¤ããã£ã¹ãããããã®SPARQLè¨èªã«å«ã¾ãã¦ããXMLã¹ãã¼ãã»ã³ã³ã¹ãã©ã¯ã¿é¢æ°ããªã¹ãã¢ããããã¦ãã¾ãã
ãã®é ã§ã¯ãRDFç¨èªããã³ããªãã«ã»ãã¿ã¼ã³ã«å¯¾ãã¦SPARQLãç¨ããæ§æãã«ãã¼ãã¦ãã¾ããå®å ¨ãªææ³ã¯ä»é²Aã§ç¤ºãã¾ãã
4.1 RDFç¨èªæ§æ 4.1.1 IRIã®æ§æIRIrefçæè¦åã¯ãIRI[RFC3987]ã®éåãæå®ãã¾ããIRIã¯ãURI[RFC3986]ãä¸è¬åãããã®ã§ãããURIããã³URLã¨å®å ¨ã«äºææ§ãããã¾ããPrefixedNameçæè¦åã¯ãæ¥é è¾åãæå®ãã¾ããæ¥é è¾åããIRIã¸ã®ãããã³ã°ã«ã¤ãã¦ã以ä¸ã§èª¬æãã¦ãã¾ããIRIåç §ï¼ç¸å¯¾çã¾ãã¯çµ¶å¯¾çãªIRIï¼ã¯ãIRI_REFçæè¦åã«ãã£ã¦æå®ãããã<ãã¨ã>ãã®åºåãè¨å·ã¯IRIåç §ã®ä¸é¨ã«ã¯ãªãã¾ãããç¸å¯¾IRIã¯ã[RFC3987]ã®2.2 IRIåç §ã¨IRIã«å¯¾ããABNFã®é ã®irelative-refã«ãããããä¸è¨ã®IRIã«è§£æ±ºããã¾ãã
SPARQLç¨èªã«ã¯IRIãå«ã¾ãã¦ãã¾ãããRDFæ¦å¿µããã³æ½è±¡æ§æã§å®ç¾©ããã¦ããRDFç¨èªã«ã¯RDF URIåç
§ãå«ã¾ãã¦ãã¾ããã<
ããã>
ããã"
ãï¼ããã«å¼ç¨ç¬¦ï¼ãã¹ãã¼ã¹ãã{
ããã}
ããã|
ããã\
ããã^
ããã`
ããå«ãRDF URIåç
§ã¯ãIRIã§ã¯ããã¾ããããã®ãããªRDF URIåç
§ã§æ§æãããRDFã¹ãã¼ãã¡ã³ãã«å¯¾ããSPARQLã¯ã¨ãªã®åä½ã¯å®ãããã¦ãã¾ããã
PREFIX
ãã¼ã¯ã¼ãã¯ãæ¥é è¾ã©ãã«ãIRIã«é¢é£ä»ãã¾ããæ¥é è¾åã¯ãã³ãã³ã:
ãã«ãã£ã¦åºåããããæ¥é è¾ã©ãã«ã¨ãã¼ã«ã«é¨åï¼local partï¼ã§ããæ¥é è¾åã¯ãæ¥é è¾ã«é¢é£ä»ããããIRIã¨ãã¼ã«ã«é¨åã¨ãé£çµãããã¨ã«ãã£ã¦ãIRIã«ãããã³ã°ããã¾ããæ¥é è¾ã©ãã«ã¾ãã¯ãã¼ã«ã«é¨åã¯ã空ã§ãããã¾ããå
é æ¡ï¼leading digitï¼ã¯ãXMLãã¼ã«ã«åã§ã¯èªãããã¦ãã¾ããããSPARQLãã¼ã«ã«åã§ã¯èªãããã¦ãããã¨ã«æ³¨æãã¦ãã ããã
ç¸å¯¾IRIã¯ãURIï¼Uniform Resource Identifierï¼: ä¸è¬çæ§æ[RFC3986]ã«ããã¨ããã5.2é ã®åºæ¬ã¢ã«ã´ãªãºã ã®ã¿ãç¨ãã¦ãåºåºIRIã«çµã¿åãããã¾ããæ§æã«åºã¥ãæ£è¦åãã¹ãã¼ã ã«åºã¥ãæ£è¦åãï¼RFC3986ã®6.2.2ããã³6.2.3é ã«è¨è¿°ããã¦ããï¼å®è¡ããã¾ãããIRIåç §ã§è¿½å çã«èªãããã¦ããæåã¯ãIRIï¼Internationalized Resource Identifiersï¼[RFC3987]ã®6.5é ã«ããã¨ãããURIåç §ã§ç¡å¶éã®æåãæ±ããã¦ããã®ã¨åãæ¹æ³ã§æ±ããã¾ãã
BASE
ãã¼ã¯ã¼ãã¯ãRFC3986ã®5.1.1é
ãã³ã³ãã³ãå
ã«çµã¿è¾¼ã¾ããåºåºURIãã«ããã¨ãããç¸å¯¾IRIã解決ããããã«ç¨ããããåºåºIRIãå®ãã¾ãã5.1.2é
ãã«ãã»ã«åãããã¨ã³ãã£ãã£ã¼ããã®åºåºURIãã¯ãxml:baseæç¤ºåãæã¤SOAPã¨ã³ããã¼ããContent-Locationãããã¼ãæã¤ãã¤ã ã»ãã«ããã¼ãã»ããã¥ã¡ã³ãã®ãããªã«ãã»ã«åãããããã¥ã¡ã³ããããã©ã®ããã«åºåºIRIãæã£ã¦ãããã¨ãã§ããããå®ãã¦ãã¾ãã5.1.3ãæ¤ç´¢URIããã®åºåºURIãã§èå¥ããããæ¤ç´¢URIãã¯ãç¹å®ã®SPARQLã¯ã¨ãªãæ¤ç´¢ãããURLã§ããä¸è¨ã®ã©ãããåºåºURIãæå®ããªãå ´åã¯ãããã©ã«ãåºåºURIï¼5.1.4é
ãããã©ã«ãåºåºURIããåç
§ï¼ãç¨ãããã¾ãã
次ã®ãã©ã°ã¡ã³ãã¯ãåãIRIãè¨è¿°ããå¥ã ã®æ¹æ³ã®ä¸é¨ã§ãã
<http://example.org/book/book1>
BASE <http://example.org/book/> <book1>
PREFIX book: <http://example.org/book/> book:book14.1.2 ãªãã©ã«ã®æ§æ
ãªãã©ã«ã®ä¸è¬çãªæ§æã¯ãè¨èªã¿ã°ã®ãªãã·ã§ã³ï¼@
ã§å°å
¥ãããï¼ãããã¼ã¿åIRIã¾ãã¯æ¥é è¾åã®ãªãã·ã§ã³ï¼^^
ã§å°å
¥ãããï¼ãã®ã©ã¡ãããæã¤æååï¼ããã«å¼ç¨ç¬¦"..."
ãã¾ãã¯ãã·ã³ã°ã«å¼ç¨ç¬¦'...'
ã§å²ã¾ãã)ã§ãã
便å®ä¸ãæ´æ°ãç´æ¥è¨è¿°ï¼å¼ç¨ç¬¦ã¨æç¤ºçãªãã¼ã¿åIRIãªãã«ï¼ã§ããããã¯ãã¼ã¿åxsd:integer
ã®åä»ããªãã©ã«ã¨ãã¦è§£éãããæ°åã®ä¸ã«ã.ããããããã©ãææ°ããªãå°æ°ã¯xsd:decimal
ã¨è§£éãããææ°ãããæ°ã¯xsd:double
ã¨è§£éããã¾ããåxsd:boolean
ã®å¤ã¯ãçï¼true
ï¼ã¾ãã¯å½ï¼false
ï¼ã¨è¨è¿°ã§ãã¾ãã
èªèº«ã«å¼ç¨ç¬¦ãå«ããã¾ãã¯ãé·ãã¦æ¹è¡æåãå«ããªãã©ã«å¤ã®è¨è¿°ã容æã«ããããã«ãSPARQLã§ã¯ããªãã©ã«ã3ã¤ã®ã·ã³ã°ã«å¼ç¨ç¬¦ã¾ãã¯ããã«å¼ç¨ç¬¦ã§å²ãã å¼ç¨æ§æåãæä¾ããã¦ãã¾ãã
SPARQLã®ãªãã©ã«æ§æã®ä¾ã¯ã次ã®ã¨ããã§ãã
"chat"
'chat'@fr
"xyz"^^<http://example.org/ns/userDatatype>
"abc"^^appNS:appDataType
'''The librarian said, "Perhaps you would enjoy 'War and Peace'."'''
1
ãããã¯"1"^^xsd:integer
ã¨åã1.3
ã ããã¯"1.3"^^xsd:decimal
ã¨åã1.300
ã ããã¯"1.300"^^xsd:decimal
ã¨åã1.0e6
ã ããã¯"1.0e6"^^xsd:double
ã¨åãtrue
ã ããã¯"true"^^xsd:boolean
ã¨åãfalse
ã ããã¯"false"^^xsd:boolean
ã¨åãçæè¦åINTEGERãDECIMALãDOUBLEãBooleanLiteralã«ããããããã¼ã¯ã³ã¯ããã¼ã¯ã³ã®åå¥å¤ã¨ã対å¿ãããã¼ã¿åï¼xsd:integer
ãxsd:decimal
ãxsd:double
ãxsd:boolean
ï¼ãæã¤åä»ããã©ã«ã¨åçã§ãã
SPARQLã¯ã¨ãªã®ã¯ã¨ãªå¤æ°ã¯ãã°ãã¼ãã«ãªç¯å²ãæã£ã¦ãã¾ããä¸ãããã夿°åãã¯ã¨ãªå
ã®ä»»æã®å ´æã§ç¨ããã¨ãåã夿°ãèå¥ãã¾ãã夿°ã®åã«ã¯ã?ããã$ãã®ã©ã¡ãããç½®ããã¾ãããã?ããã$ãã¯å¤æ°åã®ä¸é¨ã§ã¯ããã¾ãããã¯ã¨ãªã§ã¯ã$abc
�abc
ã¯åã夿°ãèå¥ãã¾ããSPARQLææ³ã§ã¯ã夿°ã«å¯¾ãã¦å¯è½ãªååãä¸ãããã¾ãã
ã°ã©ãã»ãã¿ã¼ã³ã®ç©ºç½ãã¼ãã¯ãåãåãããããã¼ã¿ã®ç¹å®ã®ç©ºç½ãã¼ãã®åç §ã¨ãã¦ã§ã¯ãªããéèå¥å¤æ°ã¨ãã¦æ©è½ãã¾ãã
空ç½ãã¼ãã¯ãã_:abc
ããªã©ã®ã©ãã«å½¢å¼ããçç¥å½¢ã[]
ãã®ã©ã¡ããã§ç¤ºããã¾ããã¯ã¨ãªæ§æã®1ç®æã§ãã使ããã¨ãã§ããªã空ç½ãã¼ãã¯[]
ã§ç¤ºããã¨ãã§ãã¾ããã¦ãã¼ã¯ãªç©ºç½ãã¼ãã¯ãããªãã«ã»ãã¿ã¼ã³ãå½¢æããããã«ç¨ããããã§ããããã©ãã«ãabc
ããæã¤ç©ºç½ãã¼ãã«å¯¾ãã空ç½ãã¼ãã»ã©ãã«ã¯ã_:abc
ãã¨æ¸ããã¾ããåã空ç½ãã¼ãã»ã©ãã«ã¯ãåãã¯ã¨ãªå
ã®2ã¤ã®ç°ãªãåºæ¬ã°ã©ãã»ãã¿ã¼ã³ã«ä½¿ç¨ãããã¨ã¯ã§ãã¾ããã
[:p :v]
æ§æåã¯ãããªãã«ã»ãã¿ã¼ã³ã§ç¨ãããã¨ãã§ãã¾ããããã¯ããã¹ã¦ãå«ãã è¿°èª-ç®çèªã®å¯¾ã®ä¸»èªã¨ãã¦ç¨ãããã空ç½ãã¼ãã»ã©ãã«ã使ãã¾ãã使ããã空ç½ãã¼ãã¯ãããã«ä»ã®ããªãã«ã»ãã¿ã¼ã³ã®ä¸»èªã¨ç®çèªã®ä½ç½®ã§ã使ç¨ã§ãã¾ãã
次ã®2ã¤ã®å½¢å¼
[ :p "v" ] .
[] :p "v" .
ã¯ãã¦ãã¼ã¯ãªç©ºç½ãã¼ãã»ã©ãã«ï¼ããã§ã¯ãb57
ãï¼ãå²ãå½ã¦ãã¨ã次ã®è¨è¿°ã¨åçã§ãã
_:b57 :p "v" .
å²ãå½ã¦ããããã®ç©ºç½ãã¼ãã»ã©ãã«ã¯ãããã«å¥ã®ããªãã«ã»ãã¿ã¼ã³ã®ä¸»èªã¾ãã¯ç®çèªã¨ãã¦ä½¿ç¨ã§ãã¾ããä¾ãã°ã主èªã¨ãã¦ç¨ããã¨æ¬¡ã®ããã«ãªãã¾ãã
[ :p "v" ] :q "w" .
ããã¯ã次ã®2ã¤ã®ããªãã«ã¨åçã§ãã
_:b57 :p "v" . _:b57 :q "w" .
ããã¦ãç®çèªã¨ãã¦ç¨ããã¨æ¬¡ã®ããã«ãªãã¾ãã
:x :q [ :p "v" ] .
ããã¯ã次ã®2ã¤ã®ããªãã«ã¨åçã§ãã
:x :q _:b57 . _:b57 :p "v" .
çç¥åããã空ç½ãã¼ãæ§æã¯ãå ±éã®ä¸»èªã¨å ±éã®è¿°èªã«å¯¾ããä»ã®çç¥èªã¨çµã¿åããããã¨ãã§ãã¾ãã
[ foaf:name ?name ; foaf:mbox <mailto:alice@example.org> ]
ããã¯ãããã¦ãã¼ã¯ã«å²ãå½ã¦ããã空ç½ãã¼ãã»ã©ãã«ãb18
ãã«å¯¾ããæ¬¡ã®åºæ¬ã°ã©ãã»ãã¿ã¼ã³ã®è¨è¿°ã¨åãã§ãã
_:b18 foaf:name ?name . _:b18 foaf:mbox <mailto:alice@example.org> .4.2 ããªãã«ã»ãã¿ã¼ã³ã®æ§æ
ããªãã«ã»ãã¿ã¼ã³ã¯ãã¹ãã¼ã¹ã§åºåããã主èªãè¿°èªãç®çèªã®ãªã¹ãã¨ãã¦æ¸ããã¾ããããã¤ãã®å ±éããããªãã«ã»ãã¿ã¼ã³æ§æåãçç¥ãã¦æ¸ãæ¹æ³ãããã¾ãã
次ã®ä¾ã¯ãåãã¯ã¨ãªã表ãã¾ãã
PREFIX dc: <http://purl.org/dc/elements/1.1/> SELECT ?title WHERE { <http://example.org/book/book1> dc:title ?title }
PREFIX dc: <http://purl.org/dc/elements/1.1/> PREFIX : <http://example.org/book/> SELECT $title WHERE { :book1 dc:title $title }
BASE <http://example.org/book/> PREFIX dc: <http://purl.org/dc/elements/1.1/> SELECT $title WHERE { <book1> dc:title ?title }4.2.1 è¿°èª-ç®çèªã®ãªã¹ã
å
±éã®ä¸»èªãæã¤ããªãã«ã»ãã¿ã¼ã³ã¯ã主èªã1度ã ãè¨è¿°ããã;
ãè¡¨è¨æ³ãç¨ãã¦1ã¤ä»¥ä¸ã®ããªãã«ã»ãã¿ã¼ã³ã§ç¨ããããããã«è¨è¿°ã§ãã¾ãã
?x foaf:name ?name ; foaf:mbox ?mbox .
ããã¯ã次ã®ããªãã«ã»ãã¿ã¼ã³ã®è¨è¿°ã¨åãã§ãã
?x foaf:name ?name . ?x foaf:mbox ?mbox .4.2.2 ç®çèªã®ãªã¹ã
ããªãã«ã»ãã¿ã¼ã³ã主èªã¨è¿°èªã®ä¸¡æ¹ãå
±æããå ´åãç®çèªãã,
ãã§åºåããã¨ãã§ãã¾ãã
?x foaf:nick "Alice" , "Alice_" .
ä¸è¨ã¯ã次ã®ããªãã«ã»ãã¿ã¼ã³ã®è¨è¿°ã¨åãã§ãã
?x foaf:nick "Alice" . ?x foaf:nick "Alice_" .
次ã®ããã«ãç®çèªã®ãªã¹ããè¿°èª-ç®çèªã®ãªã¹ãã¨çµã¿åããããã¨ãã§ãã¾ãã
?x foaf:name ?name ; foaf:nick "Alice" , "Alice_" .
ããã¯ã次ã¨åçã§ãã
?x foaf:name ?name . ?x foaf:nick "Alice" . ?x foaf:nick "Alice_" .4.2.3 RDFã³ã¬ã¯ã·ã§ã³
ã(element1 element2 ...)ãã¨ããæ§æãç¨ãã¦ããªãã«ã»ãã¿ã¼ã³ã«RDFã³ã¬ã¯ã·ã§ã³ãè¨è¿°ã§ãã¾ããå½¢å¼ã()
ãã¯ãhttp://www.w3.org/1999/02/22-rdf-syntax-ns#nil
ã¨ããIRIã®ä»£æ¿ã§ãã(1 ?x 3 4)
ã®ãããªã³ã¬ã¯ã·ã§ã³è¦ç´ ã¨ã¨ãã«ç¨ããã°ã空ç½ãã¼ããæã¤ããªãã«ã»ãã¿ã¼ã³ãã³ã¬ã¯ã·ã§ã³ã«å²ãå½ã¦ããã¾ããã³ã¬ã¯ã·ã§ã³ã®å
é ã®ç©ºç½ãã¼ãã¯ãä»ã®ããªãã«ã»ãã¿ã¼ã³ã®ä¸»èªã¾ãã¯ç®çèªã¨ãã¦ä½¿ç¨ã§ãã¾ããã³ã¬ã¯ã·ã§ã³æ§æã§å²ãå½ã¦ããã空ç½ãã¼ãã¯ãã¯ã¨ãªã®ã»ãã®å ´æã§ã¯åºç¾ãã¾ããã
(1 ?x 3 4) :p "w" .
ä¸è¨ã¯ã次ã«å¯¾ããç³è¡£æ§æã§ãï¼b0
ãb1
ãb2
ãb3
ãã¯ã¨ãªã®ä»ã®ã©ããã§åºç¾ããªããã¨ãæå³ããï¼ã
_:b0 rdf:first 1 ; rdf:rest _:b1 . _:b1 rdf:first ?x ; rdf:rest _:b2 . _:b2 rdf:first 3 ; rdf:rest _:b3 . _:b3 rdf:first 4 ; rdf:rest rdf:nil . _:b0 :p "w" .
RDFã³ã¬ã¯ã·ã§ã³ã¯ãå ¥ãåã«ãããã¨ãã§ããä»ã®æ§æãå«ããã¨ãã§ãã¾ãã
(1 [:p :q] ( 2 ) ) .
ä¸è¨ã¯ã次ã«å¯¾ããç³è¡£æ§æã§ãã
_:b0 rdf:first 1 ; rdf:rest _:b1 . _:b1 rdf:first _:b2 . _:b2 :p :q . _:b1 rdf:rest _:b3 . _:b3 rdf:first _:b4 . _:b4 rdf:first 2 ; rdf:rest rdf:nil . _:b3 rdf:rest rdf:nil .4.2.4 rdf:type
ãã¼ã¯ã¼ããa
ãã¯ãããªãã«ã»ãã¿ã¼ã³ã§è¿°èªã¨ãã¦ä½¿ç¨ã§ããhttp://www.w3.org/1999/02/22-rdf-syntax-ns#type
ã¨ããIRIã®ä»£æ¿ã§ãããã®ãã¼ã¯ã¼ãã¯å¤§æåã»å°æåãåºå¥ãã¾ãã
?x a :Class1 . [ a :appClass ] :p "v" .
ä¸è¨ã¯ã次ã«å¯¾ããç³è¡£æ§æã§ãã
?x rdf:type :Class1 . _:b0 rdf:type :appClass . _:b0 :p "v" .5 ã°ã©ãã»ãã¿ã¼ã³
SPARQLã¯ã°ã©ãã»ãã¿ã¼ã³ã»ãããã³ã°ãåºæ¬ã¨ãã¦ãã¾ããããè¤éãªã°ã©ãã»ãã¿ã¼ã³ã¯ãå°ããªãã¿ã¼ã³ãæ§ã ãªæ¹æ³ã§çµã¿åããã¦ä½æã§ãã¾ãã
ãã®é ã§ã¯ãè«çç©ã§ãã¿ã¼ã³ãçµã¿åããã2ã¤ã®å½¢å¼ã«ã¤ãã¦èª¬æãã¾ãããããã¯ãããªãã«ã»ãã¿ã¼ã³ãçµã¿åãããåºæ¬ã°ã©ãã»ãã¿ã¼ã³ã¨ãä»ã®ãã¹ã¦ã®ãã¿ã¼ã³ãçµã¿åãããã°ã«ã¼ãã»ã°ã©ãã»ãã¿ã¼ã³ã§ãã
æãå¤å´ã®ã¯ã¨ãªã®ã°ã©ãã»ãã¿ã¼ã³ã¯ãã¯ã¨ãªã»ãã¿ã¼ã³ã¨å¼ã°ãã¾ããããã¯ãææ³ä¸ã次ã®GroupGraphPattern
ã§èå¥ããã¾ãã
åºæ¬ã°ã©ãã»ãã¿ã¼ã³ã¯ããªãã«ã»ãã¿ã¼ã³ã®éåã§ããSPARQLã®ã°ã©ãã»ãã¿ã¼ã³ã»ãããã³ã°ã¯ããããããåºæ¬ã°ã©ãã»ãã¿ã¼ã³ã®çµæãçµã¿åãããã¨ãã観ç¹ã§å®ç¾©ããã¾ãã
ãã£ã«ã¿ã®å²ãè¾¼ã¿ããã£ãããªãã«ã»ãã¿ã¼ã³ã®ã·ã¼ã±ã³ã¹ã¯ã1ã¤ã®åºæ¬ã°ã©ãã»ãã¿ã¼ã³ããæãã¾ããä»»æã®ã°ã©ãã»ãã¿ã¼ã³ããåºæ¬ã°ã©ãã»ãã¿ã¼ã³ãçµäºããã¾ãã
5.1.1 空ç½ãã¼ãã»ã©ãã«å½¢å¼_:abc
ã®ç©ºç½ãã¼ããç¨ããã¨ãã«ã¯ã空ç½ãã¼ãã®ã©ãã«ã¯åºæ¬ã°ã©ãã»ãã¿ã¼ã³ã§æå¹ã§ãã1ã¤ã®ã©ãã«ã¯ãä»»æã®ã¯ã¨ãªã«ããã1ã¤ã®åºæ¬ã°ã©ãã»ãã¿ã¼ã³ã®ã¿ã§ä½¿ç¨ã§ãã¾ãã
SPARQLã¯ãRDFã°ã©ããã·ã³ãã«ãªå«æã«ããããããããã«å®ç¾©ããã¾ãã以ä¸ã®è¨è¿°ã®ãããªãããç¹å®ã®ç¶æ³ãä¸ããããã°ãSPARQLãä»ã®å½¢å¼ã®å«æã«æ¡å¼µã§ãã¾ãã
5.2 ã°ã«ã¼ãã»ã°ã©ãã»ãã¿ã¼ã³SPARQLã®ã¯ã¨ãªæååã§ã¯ãã°ã«ã¼ãã»ã°ã©ãã»ãã¿ã¼ã³ã¯ä¸æ¬å¼§ï¼{}
ï¼ã§åºåããã¾ããä¾ãã°ããã®ã¯ã¨ãªã®ã¯ã¨ãªã»ãã¿ã¼ã³ã¯ã1ã¤ã®åºæ¬ã°ã©ãã»ãã¿ã¼ã³ãããªãã°ã«ã¼ãã»ã°ã©ãã»ãã¿ã¼ã³ã§ãã
PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?name ?mbox WHERE { ?x foaf:name ?name . ?x foaf:mbox ?mbox . }
ããªãã«ã»ãã¿ã¼ã³ã2ã¤ã®åºæ¬ã°ã©ãã»ãã¿ã¼ã³ã«ã°ã«ã¼ãã³ã°ããã¯ã¨ãªããåãã½ãªã¥ã¼ã·ã§ã³ãå¾ãããã§ããããä¾ãã°ã次ã®ã¯ã¨ãªã¯ãç°ãªãæ§é ãæã£ã¦ãã¾ãããä¸è¨ã®ã¯ã¨ãªã¨åãã½ãªã¥ã¼ã·ã§ã³ãããããã§ãããã
PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?name ?mbox WHERE { { ?x foaf:name ?name . } { ?x foaf:mbox ?mbox . } }5.2.1 空ã®ã°ã«ã¼ãã»ãã¿ã¼ã³
ã°ã«ã¼ãã»ãã¿ã¼ã³
{ }
ã¯ãä»»æã®ã°ã©ãï¼ç©ºã®ã°ã©ããå«ãï¼ãã夿°ããã¤ã³ãããªã1ã¤ã®ã½ãªã¥ã¼ã·ã§ã³ã«ãããããã¾ããä¾ãã°ã
SELECT ?x WHERE {}
ã¯ã夿°x
ããã¤ã³ãããã¦ããªã1ã¤ã®ã½ãªã¥ã¼ã·ã§ã³ã¨ããããã¾ãã
FILTER
ãã¼ã¯ã¼ãã«ãã£ã¦è¡¨ãããå¶ç´ã¯ããã£ã«ã¿ãåºç¾ãããã¹ã¦ã®ã°ã«ã¼ãã«ã¾ãããã½ãªã¥ã¼ã·ã§ã³ã«å¯¾ããå¶éã§ããæ¬¡ã®ãã¿ã¼ã³ã¯ãã¹ã¦ãåãã½ãªã¥ã¼ã·ã§ã³ãæã¡ã¾ãã
{ ?x foaf:name ?name . ?x foaf:mbox ?mbox . FILTER regex(?name, "Smith") }
{ FILTER regex(?name, "Smith") ?x foaf:name ?name . ?x foaf:mbox ?mbox . }
{ ?x foaf:name ?name . FILTER regex(?name, "Smith") ?x foaf:mbox ?mbox . }5.2.3 ã°ã«ã¼ãã»ã°ã©ãã»ãã¿ã¼ã³ã®ä¾
{ ?x foaf:name ?name . ?x foaf:mbox ?mbox . }
ã¯ã1ã¤ã®åºæ¬ã°ã©ãã»ãã¿ã¼ã³ãããªãã°ã«ã¼ãã§ããã®åºæ¬ã°ã©ãã»ãã¿ã¼ã³ã¯ã2ã¤ã®ããªãã«ã»ãã¿ ã¼ã³ããæ§æããã¦ãã¾ãã
{ ?x foaf:name ?name . FILTER regex(?name, "Smith") ?x foaf:mbox ?mbox . }
ã¯ã1ã¤ã®åºæ¬ã°ã©ãã»ãã¿ã¼ã³ã¨ãã£ã«ã¿ãããªãã°ã«ã¼ãã§ããã®åºæ¬ã°ã©ãã»ãã¿ã¼ã³ã¯ã2ã¤ã®ããªãã«ã»ãã¿ã¼ã³ããæ§æããã¦ãã¾ãããã£ã«ã¿ã¯åºæ¬ã°ã©ãã»ãã¿ã¼ã³ã2ã¤ã®åºæ¬ã°ã©ãã»ãã¿ã¼ã³ã«åå²ãã¾ããã
{ ?x foaf:name ?name . {} ?x foaf:mbox ?mbox . }
ã¯ã1ã¤ã®ããªãã«ã»ãã¿ã¼ã³ãããªãåºæ¬ã°ã©ãã»ãã¿ã¼ã³ã空ã®ã°ã«ã¼ãã1ã¤ã®ããªãã«ã»ãã¿ã¼ã³ãããªãå¥ã®åºæ¬ã°ã©ãã»ãã¿ã¼ã³ã¨ããã3ã¤ã®è¦ç´ ã®ã°ã«ã¼ãã§ãã
6 ãªãã·ã§ã³å¤ã®çµã¿è¾¼ã¿åºæ¬ã°ã©ãã»ãã¿ã¼ã³ã§ã¯ãã¢ããªã±ã¼ã·ã§ã³ã¯ãã½ãªã¥ã¼ã·ã§ã³ãçæãããããã«ã¯ã¨ãªã»ãã¿ã¼ã³ã®å ¨ä½ããããããªããã°ãªããªããããªã¯ã¨ãªã使ã§ãã¾ããå°ãªãã¨ã1ã¤ã®åºæ¬ã°ã©ãã»ãã¿ã¼ã³ãæã¤ã°ã«ã¼ãã»ã°ã©ãã»ãã¿ã¼ã³ã®ã¿ãå«ãã¯ã¨ãªã®ãã¹ã¦ã®ã½ãªã¥ã¼ã·ã§ã³ã§ã¯ããã¹ã¦ã®å¤æ°ã¯ãããã½ãªã¥ã¼ã·ã§ã³ã®ããRDFç¨èªã«ãã¤ã³ãããã¾ãããããããã¹ã¦ã®RDFã°ã©ãã«ããã¦ãæ£è¦ã®ãå®å ¨ãªæ§æãæ³å®ãããã¨ã¯ã§ãã¾ãããæ å ±ãå©ç¨ã§ããã½ãªã¥ã¼ã·ã§ã³ã«æ å ±ã追å ã§ããã¯ã¨ãªãæã¤ãã¨ãã§ããã¨ä¾¿å©ã§ãããã¯ã¨ãªã»ãã¿ã¼ã³ã®ä¸é¨ããããããªãã¨ããçç±ã§ã½ãªã¥ã¼ã·ã§ã³ãæçµ¶ãã¹ãã§ã¯ããã¾ããããªãã·ã§ã³ã®ãããã³ã°ã¯ããã®æ©è½ãæä¾ãã¾ãããªãã·ã§ã³é¨åããããããªãå ´åã¯ããã¤ã³ãã£ã³ã°ã使ãã¾ããããã½ãªã¥ã¼ã·ã§ã³ã¯æé¤ãã¾ããã
6.1 ãªãã·ã§ã³ã®ãã¿ã¼ã³ã»ãããã³ã°ã°ã©ãã»ãã¿ã¼ã³ã®ãªãã·ã§ã³é¨åã¯ã次ã®ã°ã©ãã»ãã¿ã¼ã³ã«å½ã¦ã¯ã¾ãOPTIONALãã¼ã¯ã¼ãã§æ§æçã«æå®ããã¾ãã
pattern OPTIONAL { pattern }
æ§æå½¢å¼
{ OPTIONAL { pattern } }
ã¯æ¬¡ã¨åçã§ãã
{ { } OPTIONAL { pattern } }
OPTIONAL
ãã¼ã¯ã¼ãã¯å·¦çµåçã§ã
pattern OPTIONAL { pattern } OPTIONAL { pattern }
次ã¨åãã§ãã
{ pattern OPTIONAL { pattern } } OPTIONAL { pattern }
ãªãã·ã§ã³ã®ãããã§ã¯ããªãã·ã§ã³ã®ã°ã©ãã»ãã¿ã¼ã³ãã°ã©ãã«ããããããã®çµæã1ã¤ä»¥ä¸ã®ã½ãªã¥ã¼ã·ã§ã³ã«å¯¾ãããã¤ã³ãã£ã³ã°ãå®ç¾©ã追å ãããã追å ã®ãã¤ã³ãã£ã³ã°ãå ããã«ã½ãªã¥ã¼ã·ã§ã³ããã®ã¾ã¾ã«ãã¾ãã
ãã¼ã¿:
@prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . _:a rdf:type foaf:Person . _:a foaf:name "Alice" . _:a foaf:mbox <mailto:alice@example.com> . _:a foaf:mbox <mailto:alice@work.example> . _:b rdf:type foaf:Person . _:b foaf:name "Bob" .
ã¯ã¨ãª:
PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?name ?mbox WHERE { ?x foaf:name ?name . OPTIONAL { ?x foaf:mbox ?mbox } }
ä¸è¨ã®ãã¼ã¿ãç¨ããã¨ãã¯ã¨ãªçµæã¯æ¬¡ã®éãã§ãã
name mbox "Alice" <mailto:alice@example.com> "Alice" <mailto:alice@work.example> "Bob"ååã"Bob"
ã§ããã½ãªã¥ã¼ã·ã§ã³ã®mbox
ã®å¤ã¯ããã¾ããã
ãã®ã¯ã¨ãªã¯ãã¼ã¿å
ã®äººåãçºè¦ãã¾ããè¿°èªmbox
ã¨ãåã主èªãæã¤ããªãã«ãããå ´åãã½ãªã¥ã¼ã·ã§ã³ã«ã¯ãã®ããªãã«ã®ç®çèªãå«ã¾ããã§ãããããã®ä¾ã§ã¯ãã¯ã¨ãªã®ãªãã·ã§ã³ã®ãããé¨åã§ã¯1ã¤ã®ããªãã«ã»ãã¿ã¼ã³ã®ã¿ãå¾ããã¾ãããä¸è¬ã«ããªãã·ã§ã³ã®é¨åã¯ä»»æã®ã°ã©ãã»ãã¿ã¼ã³ã§ãããã¾ãããªãã·ã§ã³ã®ã°ã©ãã»ãã¿ã¼ã³ã®å
¨ä½ã¯ãã¯ã¨ãªã®ã½ãªã¥ã¼ã·ã§ã³ã«å½±é¿ããããã«ããªãã·ã§ã³ã®ã°ã©ãã»ãã¿ã¼ã³ã«ãããããªããã°ãªãã¾ããã
ãªãã·ã§ã³ã®ã°ã©ãã»ãã¿ã¼ã³ã§ã¯ãå¶ç´ãä»ä¸ã§ãã¾ããä¾ãã°ã次ã®ã¨ããã§ãã
@prefix dc: <http://purl.org/dc/elements/1.1/> . @prefix : <http://example.org/book/> . @prefix ns: <http://example.org/ns#> . :book1 dc:title "SPARQL Tutorial" . :book1 ns:price 42 . :book2 dc:title "The Semantic Web" . :book2 ns:price 23 .
PREFIX dc: <http://purl.org/dc/elements/1.1/> PREFIX ns: <http://example.org/ns#> SELECT ?title ?price WHERE { ?x dc:title ?title . OPTIONAL { ?x ns:price ?price . FILTER (?price < 30) } }title price "SPARQL Tutorial" "The Semantic Web" 23
ãSPARQL Tutorialãã¨ããã¿ã¤ãã«ã®æ¬ã«ã¯ãä¾¡æ ¼ã表示ããã¾ããããªããªãã°ããªãã·ã§ã³ã®ã°ã©ãã»ãã¿ã¼ã³ã夿°ãprice
ããä¼´ãã½ãªã¥ã¼ã·ã§ã³ããããããªãã£ãããã§ãã
ã°ã©ãã»ãã¿ã¼ã³ã¯å帰çã«å®ç¾©ããã¾ããã°ã©ãã»ãã¿ã¼ã³ã¯0以ä¸ã®ãªãã·ã§ã³ã®ã°ã©ãã»ãã¿ã¼ã³ãæã¤ãã¨ãã§ããã¯ã¨ãªã»ãã¿ã¼ã³ã®ã©ã®é¨åããªãã·ã§ã³é¨åãæã¤ãã¨ãã§ãã¾ãããã®ä¾ã«ã¯ã2ã¤ã®ãªãã·ã§ã³ã®ã°ã©ãã»ãã¿ã¼ã³ãããã¾ãã
ãã¼ã¿:
@prefix foaf: <http://xmlns.com/foaf/0.1/> . _:a foaf:name "Alice" . _:a foaf:homepage <http://work.example.org/alice/> . _:b foaf:name "Bob" . _:b foaf:mbox <mailto:bob@work.example> .
ã¯ã¨ãª:
PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?name ?mbox ?hpage WHERE { ?x foaf:name ?name . OPTIONAL { ?x foaf:mbox ?mbox } . OPTIONAL { ?x foaf:homepage ?hpage } }
ã¯ã¨ãªçµæ:
name mbox hpage "Alice" <http://work.example.org/alice/> "Bob" <mailto:bob@work.example> 7 代æ¿ã®ãããã³ã°SPARQLã¯ãããã¤ãã®ä»£æ¿ã°ã©ãã»ãã¿ã¼ã³ã®1ã¤ããããããããã«ã°ã©ãã»ãã¿ã¼ã³ãçµã¿åãããæ¹æ³ãåãã¦ãã¾ãã1ã¤ä»¥ä¸ã®ä»£æ¿ããããããã°ããã¹ã¦ã®ãããããã¿ã¼ã³ã®ã½ãªã¥ã¼ã·ã§ã³ãè¦ã¤ããã¾ãã
ãã¿ã¼ã³ä»£æ¿ã¯ãUNION
ãã¼ã¯ã¼ãã§æ§æçã«æå®ããã¾ãã
ãã¼ã¿:
@prefix dc10: <http://purl.org/dc/elements/1.0/> . @prefix dc11: <http://purl.org/dc/elements/1.1/> . _:a dc10:title "SPARQL Query Language Tutorial" . _:a dc10:creator "Alice" . _:b dc11:title "SPARQL Protocol Tutorial" . _:b dc11:creator "Bob" . _:c dc10:title "SPARQL" . _:c dc11:title "SPARQL (updated)" .
ã¯ã¨ãª:
PREFIX dc10: <http://purl.org/dc/elements/1.0/> PREFIX dc11: <http://purl.org/dc/elements/1.1/> SELECT ?title WHERE { { ?book dc10:title ?title } UNION { ?book dc11:title ?title } }
ã¯ã¨ãªçµæ:
title "SPARQL Protocol Tutorial" "SPARQL" "SPARQL (updated)" "SPARQL Query Language Tutorial"ãã®ã¯ã¨ãªã¯ããã¼ã¸ã§ã³1.0ããã¼ã¸ã§ã³1.1ã®ã©ã¡ãã®ãããªã³ã»ã³ã¢ã®ããããã£ã¼ãç¨ãã¦ã¿ã¤ãã«ãè¨é²ããã¦ãããã«é¢ä¿ãªãããã¼ã¿ä¸ã®æ¬ã®ã¿ã¤ãã«ãçºè¦ãã¾ããæ å ±ã®è¨é²æ¹æ³ãå³å¯ã«å¤å¥ããããã«ãã¯ã¨ãªã¯2ã¤ã®ä»£æ¿ã«å¯¾ãã¦ç°ãªã夿°ãç¨ãããã¨ãã§ãã¾ãã
PREFIX dc10: <http://purl.org/dc/elements/1.0/> PREFIX dc11: <http://purl.org/dc/elements/1.1/> SELECT ?x ?y WHERE { { ?book dc10:title ?x } UNION { ?book dc11:title ?y } }x y "SPARQL (updated)" "SPARQL Protocol Tutorial" "SPARQL" "SPARQL Query Language Tutorial"
ããã¯ãUNION
ã®å·¦è¾ºã®ã½ãªã¥ã¼ã·ã§ã³ã«ãã¤ã³ãããã夿°x
ã¨ãå³è¾ºã®ã½ãªã¥ã¼ã·ã§ã³ã«ãã¤ã³ããããy
ãæã£ãçµæãè¿ãã§ããããUNION
ãã¿ã¼ã³ã®ã©ã¡ãã®é¨åã«ããããããªãå ´åãã°ã©ãã»ãã¿ã¼ã³ã¯ãããããªãã§ãããã
UNION
ãã¿ã¼ã³ã¯ã°ã©ãã»ãã¿ã¼ã³ãçµã¿åããã¾ããããããã®ä»£æ¿ã«ã1ã¤ä»¥ä¸ã®ããªãã«ã»ãã¿ã¼ã³ãå«ããã¨ãã§ãã¾ãã
PREFIX dc10: <http://purl.org/dc/elements/1.0/> PREFIX dc11: <http://purl.org/dc/elements/1.1/> SELECT ?title ?author WHERE { { ?book dc10:title ?title . ?book dc10:creator ?author } UNION { ?book dc11:title ?title . ?book dc11:creator ?author } }author title "Alice" "SPARQL Protocol Tutorial" "Bob" "SPARQL Query Language Tutorial"
ãããªã³ã»ã³ã¢ã®åããã¼ã¸ã§ã³ã®ã¿ã¤ãã«ã¨èè ã®ä¸¡æ¹ã®è¿°èªãããå ´åã«ã®ã¿ããã®ã¯ã¨ãªã¯æ¬ã«ãããããã§ãããã
8 RDFãã¼ã¿ã»ããRDFãã¼ã¿ã»ã¢ãã«ã¯ã主èªãè¿°èªãç®çèªã®ããªãã«ããæãã°ã©ãã¨ãã¦æ å ±ã表ãã¾ããå¤ãã®RDFãã¼ã¿ãèç©ããã¨ãè¤æ°ã®RDFã°ã©ãã¨åã°ã©ãã«é¢ããè¨é²æ å ±ãä¿æãããããã«ãã£ã¦ãã¢ããªã±ã¼ã·ã§ã³ã¯1ã¤ä»¥ä¸ã®ã°ã©ãã®æ å ±ãå«ãã¯ã¨ãªã使ã§ãã¾ãã
SPARQLã®ã¯ã¨ãªã¯ãã°ã©ãã®ã³ã¬ã¯ã·ã§ã³ã表ãRDFãã¼ã¿ã»ããã«å¯¾ãã¦å®è¡ããã¾ãã1ã¤ã®RDFãã¼ã¿ã»ããã¯ãååã®ãªã1ã¤ã®ã°ã©ãï¼ããã©ã«ãã»ã°ã©ãï¼ã¨ãååä»ãã°ã©ããããããã«IRIã§èå¥ããã0以ä¸ã®ååä»ãã°ã©ãããæãã¾ããSPARQLã®ã¯ã¨ãªã¯ã8.3 ãã¼ã¿ã»ããã®ã¯ã¨ãªã®é ã§è¿°ã¹ãããã«ãã¯ã¨ãªã»ãã¿ã¼ã³ã®ç°ãªãé¨åãç°ãªãã°ã©ãã«å¯¾ãã¦ãããããããã¨ãã§ãã¾ãã
RDFãã¼ã¿ã»ããã«ã¯ã0ã®ååä»ãã°ã©ããå«ããã¨ãã§ãã¾ããRDFãã¼ã¿ã»ããã«ã¯ã常ã«1ã¤ã®ããã©ã«ãã»ã°ã©ããå«ã¾ãã¾ããã¯ã¨ãªã¯ãããã©ã«ãã»ã°ã©ãã®ãããã³ã°ãå«ãå¿ è¦ã¯ããã¾ãããã¯ã¨ãªã¯ãååä»ãã°ã©ãã®ãããã³ã°ãå«ããã¨ãã§ããã ãã§ãã
åºæ¬ã°ã©ãã»ãã¿ã¼ã³ããããã³ã°ãããããã«ç¨ããã°ã©ãã¯ãã¢ã¯ãã£ãã»ã°ã©ãã§ããåé
ã¾ã§ã¯ããã¹ã¦ã®ã¯ã¨ãªã¯ãã¢ã¯ãã£ãã»ã°ã©ãã¨ãã¦ã®RDFãã¼ã¿ã»ããã®ããã©ã«ãã»ã°ã©ãã§ããã1ã¤ã®ã°ã©ãã«å¯¾ãã¦å®è¡ãããã®ã示ãã¦ãã¾ãããGRAPH
ãã¼ã¯ã¼ãã¯ãã¢ã¯ãã£ãã»ã°ã©ãããã¯ã¨ãªã®ä¸é¨ã«å¯¾ãããã¼ã¿ã»ããå
ã®ãã¹ã¦ã®ååä»ãã°ã©ãã®ãã¡ã®1ã¤ã«ããããã«ç¨ãããã¾ãã
RDFãã¼ã¿ã»ããã®å®ç¾©ã¯ãååä»ãã°ã©ãã¨ããã©ã«ãã»ã°ã©ãã®é¢ä¿ãå¶éãã¾ãããç°ãªãã°ã©ãã§æ å ±ãç¹°ãè¿ããã¨ãã§ããã°ã©ãéã®é¢ä¿ãå ¬éã§ãã¾ããæ¬¡ã®2ã¤ã®æçãªå¦çãããã¾ãã
# Default graph @prefix dc: <http://purl.org/dc/elements/1.1/> . <http://example.org/bob> dc:publisher "Bob" . <http://example.org/alice> dc:publisher "Alice" .
# Named graph: http://example.org/bob @prefix foaf: <http://xmlns.com/foaf/0.1/> . _:a foaf:name "Bob" . _:a foaf:mbox <mailto:bob@oldcorp.example.org> .
# Named graph: http://example.org/alice @prefix foaf: <http://xmlns.com/foaf/0.1/> . _:a foaf:name "Alice" . _:a foaf:mbox <mailto:alice@work.example.org> .
ãã®ä¾ã§ã¯ãããã©ã«ãã»ã°ã©ãã«ã¯ã2ã¤ã®ååä»ãã°ã©ãã®å ¬éè åãå«ã¾ãã¦ãã¾ããååä»ãã°ã©ãã®ããªãã«ã¯ããã®ä¾ã®ããã©ã«ãã»ã°ã©ãã§ã¯è¡¨ç¤ºããã¾ããã
ä¾2:
RDFãã¼ã¿ã¯ãã°ã©ãã®RDFãã¼ã¸[RDF-MT]ã«ãã£ã¦çµã¿åãããã¨ãã§ãã¾ããRDFãã¼ã¿ã»ããã«ããããã°ã©ãã®1ã¤ã®å¯è½ãªå¦çã¯ãããã©ã«ãã»ã°ã©ããååä»ãã°ã©ãã®æ å ±ã®ä¸é¨ã¾ãã¯ãã¹ã¦ã®RDFãã¼ã¸ã«ãããã¨ã§ãã
次ã®ä¾ã§ã¯ãååä»ãã°ã©ãã«ã¯ã以åã¨åãããªãã«ãå«ã¾ãã¦ãã¾ããRDFãã¼ã¿ã»ããã¯ãããã©ã«ãã»ã°ã©ãã«ååä»ãã°ã©ãã®RDFãã¼ã¸ãå«ãã§ãããåã©ãã«ä»ããè¡ã£ã¦ç©ºç½ãã¼ããç°ãªã£ããã®ã«ãã¦ããã¾ãã
# Default graph @prefix foaf: <http://xmlns.com/foaf/0.1/> . _:x foaf:name "Bob" . _:x foaf:mbox <mailto:bob@oldcorp.example.org> . _:y foaf:name "Alice" . _:y foaf:mbox <mailto:alice@work.example.org> .
# Named graph: http://example.org/bob @prefix foaf: <http://xmlns.com/foaf/0.1/> . _:a foaf:name "Bob" . _:a foaf:mbox <mailto:bob@oldcorp.example.org> .
# Named graph: http://example.org/alice @prefix foaf: <http://xmlns.com/foaf/0.1/> . _:a foaf:name "Alice" . _:a foaf:mbox <mailto:alice@work.example> .
RDFãã¼ã¸ã§ã¯ããã¼ã¸ãããã°ã©ãã®ç©ºç½ãã¼ãã¨ããã¼ã¸ããã¦ããã°ã©ãããã®ç©ºç½ãã¼ãã¨ã¯å ±æããã¾ããã
8.2 RDFãã¼ã¿ã»ããã®æå®SPARQLã¯ã¨ãªã¯ãRDFãã¼ã¿ã»ãããè¨è¿°ããããã«ãFROM
å¥ã¨FROM NAMED
å¥ãç¨ãã¦ããããã³ã°ã«ç¨ãããã¼ã¿ã»ãããæå®ã§ãã¾ããã¯ã¨ãªããã®ãããªãã¼ã¿ã»ããã®è¨è¿°ãæä¾ãã¦ããã°ãããã¯ããã¼ã¿ã»ããã®è¨è¿°ãã¯ã¨ãªã§æä¾ãããªãå ´åã«ã¯ã¨ãªã»ãµã¼ãã¹ã使ç¨ããä»»æã®ãã¼ã¿ã»ããã®ä»£ããã«ä½¿ç¨ãã¦ãã¾ããã¾ããRDFãã¼ã¿ã»ããã¯ãSPARQLãããã³ã«è¦æ±ã§æå®ãããã¨ãã§ãã¾ãããã®å ´åããããã³ã«ã®è¨è¿°ã«ãããã¯ã¨ãªèªä½ã®ããããè¨è¿°ã¯ç¡å¹ã«ãªãã¾ããã¯ã¨ãªã»ãµã¼ãã¹ããã¼ã¿ã»ããã®è¨è¿°ã許容ã§ããªãå ´åã«ã¯ããµã¼ãã¹ã¯ã¯ã¨ãªè¦æ±ãæå¦ããããããã¾ããã
FROM
ã¨FROM NAMED
ãã¼ã¯ã¼ãã«ãã£ã¦ãã¯ã¨ãªã¯åç
§ã«ãã£ã¦RDFãã¼ã¿ã»ãããæå®ã§ãã¾ããããã¯ããã¼ã¿ã»ããããä¸ããããIRIï¼ããªãã¡ãä¸ããããIRIåç
§ã®çµ¶å¯¾å½¢å¼ï¼ã«ãã£ã¦èå¥ãããè³æºã®è¡¨ç¾ããå¾ãããã°ã©ããå«ãã¹ãã§ããã¨ãããã¨ã示ãã¦ãã¾ããããã¤ãã®FROM
ã¨FROM NAMED
å¥ããçãããã¼ã¿ã»ããã¯æ¬¡ã®éãã§ãã
FROM
å¥ã§åç
§ãããã°ã©ãã®RDFãã¼ã¸ããæãããã©ã«ãã»ã°ã©ããããã³FROM NAMED
å¥ãã1ã¤ãã¤ãFROM
å¥ã¯ãªãããã©ãè¤æ°ã®FROM NAMED
å¥ãããå ´åã¯ããã¼ã¿ã»ããã«ã¯ããã©ã«ãã»ã°ã©ãã«å¯¾ãã空ã®ã°ã©ããå«ã¾ãã¦ãã¾ãã
åFROM
å¥ã«ã¯ãããã©ã«ãã»ã°ã©ãã使ããããã«ç¨ããã°ã©ãã示ãIRIãå«ã¾ãã¦ãã¾ããããã¯ãã°ã©ããååä»ãã°ã©ãã¨ãã¦ä½ç½®ã¥ãããã®ã§ã¯ããã¾ããã
ãã®ä¾ã§ã¯ãRDFãã¼ã¿ã»ããã¯ã1ã¤ã®ããã©ã«ãã»ã°ã©ããå«ã¿ãååä»ãã°ã©ããå«ãã§ãã¾ããã
# Default graph (stored at http://example.org/foaf/aliceFoaf) @prefix foaf: <http://xmlns.com/foaf/0.1/> . _:a foaf:name "Alice" . _:a foaf:mbox <mailto:alice@work.example> .
PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?name FROM <http://example.org/foaf/aliceFoaf> WHERE { ?x foaf:name ?name }
ã¯ã¨ãªã1ã¤ä»¥ä¸ã®FROM
å¥ãæä¾ããããã©ã«ãã»ã°ã©ãã示ãããã«1ã¤ä»¥ä¸ã®IRIãæä¾ããå ´åãããã©ã«ãã»ã°ã©ãã¯ä¸ããããIRIã«ãã£ã¦èå¥ãããè³æºã®è¡¨ç¾ããå¾ãããã°ã©ãã®RDFãã¼ã¸ã«åºã¥ãã¦ãã¾ãã
FROM NAMED
å¥ãç¨ããã°ãã¯ã¨ãªã¯ãRDFãã¼ã¿ã»ããã®ååä»ãã°ã©ãã«IRIãæä¾ã§ãã¾ããåIRIã¯ãRDFãã¼ã¿ã»ããã®1ã¤ã®ååä»ãã°ã©ããæä¾ããããã«ç¨ãããã¾ãã2ã¤ä»¥ä¸ã®FROM NAMED
å¥ã§åãIRIãç¨ããã¨ããã¼ã¿ã»ããã«ç¾ããå½è©²IRIãæã¤1ã¤ã®ååä»ãã°ã©ãã«ãªãã¾ãã
# Graph: http://example.org/bob @prefix foaf: <http://xmlns.com/foaf/0.1/> . _:a foaf:name "Bob" . _:a foaf:mbox <mailto:bob@oldcorp.example.org> .
# Graph: http://example.org/alice @prefix foaf: <http://xmlns.com/foaf/0.1/> . _:a foaf:name "Alice" . _:a foaf:mbox <mailto:alice@work.example> .
... FROM NAMED <http://example.org/alice> FROM NAMED <http://example.org/bob> ...
FROM NAMED
æ§æã¯ãIRIã対å¿ããã°ã©ããèå¥ããã¨ãããã¨ã示åãã¾ãããRDFãã¼ã¿ã»ããã®IRIã¨ã°ã©ãã¨ã®é¢ä¿ã¯éæ¥çã§ããIRIãè³æºãèå¥ããè³æºã¯ã°ã©ãã§ï¼ãããã¯ãããæ£ç¢ºã«ã¯ãã°ã©ããã·ãªã¢ã«åããããã¥ã¡ã³ãã§ï¼è¡¨ããã¾ãã詳細ã«ã¤ãã¦ã¯[WEBARCH]ãåç
§ãã¦ãã ããã
FROM
å¥ã¨FROM NAMED
å¥ã¯ãåãã¯ã¨ãªå
ã§ä½¿ç¨ã§ãã¾ãã
# Default graph (stored at http://example.org/dft.ttl) @prefix dc: <http://purl.org/dc/elements/1.1/> . <http://example.org/bob> dc:publisher "Bob Hacker" . <http://example.org/alice> dc:publisher "Alice Hacker" .
# Named graph: http://example.org/bob @prefix foaf: <http://xmlns.com/foaf/0.1/> . _:a foaf:name "Bob" . _:a foaf:mbox <mailto:bob@oldcorp.example.org> .
# Named graph: http://example.org/alice @prefix foaf: <http://xmlns.com/foaf/0.1/> . _:a foaf:name "Alice" . _:a foaf:mbox <mailto:alice@work.example.org> .
PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX dc: <http://purl.org/dc/elements/1.1/> SELECT ?who ?g ?mbox FROM <http://example.org/dft.ttl> FROM NAMED <http://example.org/alice> FROM NAMED <http://example.org/bob> WHERE { ?g dc:publisher ?who . GRAPH ?g { ?x foaf:mbox ?mbox } }
ãã®ã¯ã¨ãªã«å¯¾ããRDFãã¼ã¿ã»ããã«ã¯ã1ã¤ã®ããã©ã«ãã»ã°ã©ãã¨2ã¤ã®ååä»ãã°ã©ããå«ã¾ãã¦ãã¾ããGRAPH
ãã¼ã¯ã¼ãã«é¢ãã¦ã¯ã以ä¸ã§èª¬æãã¦ãã¾ãã
ãã¼ã¿ã»ãããæ§ç¯ããããã«å¿
è¦ãªã¢ã¯ã·ã§ã³ã¯ããã¼ã¿ã»ããã®è¨è¿°ã®ã¿ã§ã¯æ±ºãããã¾ããã2ã¤ã®FROM
å¥ãã¾ãã¯ã1ã¤ã®FROM
å¥ã¨1ã¤ã®FROM NAMED
å¥ãç¨ãã¦ãã¼ã¿ã»ããã®è¨è¿°ã«IRIã2度ä»ä¸ããã¦ããå ´åã¯ããã£ãã1åã¾ãã¯ããã£ãã2åã®è©¦ã¿ã§IRIã«é¢é£ä»ãããã1ã¤ã®RDFã°ã©ããå¾ãã¨ã¯æ³å®ãã¾ããããããã£ã¦ããã¼ã¿ã»ããã®è¨è¿°ã«åå¨ãã2ã¤ããå¾ãããããªãã«ä¸ã®ç©ºç½ãã¼ãã®ã¢ã¤ãã³ãã£ãã£ã«é¢ããæ³å®ãè¡ãã¾ãããæ¦ãã¦ãã°ã©ãã®åçæ§ã«é¢ããæ³å®ãè¡ãã¾ããã
ã°ã©ãã®ã³ã¬ã¯ã·ã§ã³ã«ã¯ã¨ãªãå®è¡ããéã«ã¯ãGRAPH
ãã¼ã¯ã¼ããç¨ãã¦ãååä»ãã°ã©ãã«å¯¾ãã¦ãã¿ã¼ã³ããããã³ã°ããã¾ããGRAPH
ã¯ãIRIãæä¾ãã¦1ã¤ã®ã°ã©ãã鏿ããããã¯ã¨ãªã®RDFãã¼ã¿ã»ããå
ã®ãã¹ã¦ã®ååä»ãã°ã©ãã®IRIã®ç¯å²ãã«ãã¼ãã夿°ã使ç¨ã§ãã¾ãã
GRAPH
ãç¨ããã°ãã¯ã¨ãªã®ä¸é¨ã§åºæ¬ã°ã©ãã»ãã¿ã¼ã³ããããã³ã°ãããããã®ã¢ã¯ãã£ãã»ã°ã©ãã夿´ããã¾ããGRAPH
ãç¨ããªãå ´åã¯ãããã©ã«ãã»ã°ã©ãã¯åºæ¬ã°ã©ãã»ãã¿ã¼ã³ã«ãã£ã¦ãããã³ã°ããã¾ãã
以ä¸ã®ä¾ã§ã¯ã次ã®2ã¤ã®ã°ã©ããç¨ãã¾ãã
# Named graph: http://example.org/foaf/aliceFoaf @prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . _:a foaf:name "Alice" . _:a foaf:mbox <mailto:alice@work.example> . _:a foaf:knows _:b . _:b foaf:name "Bob" . _:b foaf:mbox <mailto:bob@work.example> . _:b foaf:nick "Bobby" . _:b rdfs:seeAlso <http://example.org/foaf/bobFoaf> . <http://example.org/foaf/bobFoaf> rdf:type foaf:PersonalProfileDocument .
# Named graph: http://example.org/foaf/bobFoaf @prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . _:z foaf:mbox <mailto:bob@work.example> . _:z rdfs:seeAlso <http://example.org/foaf/bobFoaf> . _:z foaf:nick "Robert" . <http://example.org/foaf/bobFoaf> rdf:type foaf:PersonalProfileDocument .8.3.1 ã°ã©ãåã¸ã®ã¢ã¯ã»ã¹
次ã®ã¯ã¨ãªã¯ããã¼ã¿ã»ããã®åååä»ãã°ã©ãã«ã°ã©ãã»ãã¿ã¼ã³ããããã³ã°ããããããããã°ã©ãã®IRIã«ãã¤ã³ããããsrc
夿°ãæã¤ã½ãªã¥ã¼ã·ã§ã³ã使ãã¾ããã°ã©ãã»ãã¿ã¼ã³ã¯ããã¼ã¿ã»ããã®åååä»ãã°ã©ãã§ããã¢ã¯ãã£ãã»ã°ã©ãã¨ããããã¾ãã
PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?src ?bobNick FROM NAMED <http://example.org/foaf/aliceFoaf> FROM NAMED <http://example.org/foaf/bobFoaf> WHERE { GRAPH ?src { ?x foaf:mbox <mailto:bob@work.example> . ?x foaf:nick ?bobNick } }
ã¯ã¨ãªã®çµæã¯ãæ å ±ãçºè¦ãããã°ã©ãã®ååã¨ãBobã®nickã®å¤ãæç¤ºãã¾ãã
src bobNick <http://example.org/foaf/aliceFoaf> "Bobby" <http://example.org/foaf/bobFoaf> "Robert" 8.3.2 ã°ã©ãIRIã«ããå¶éã¯ã¨ãªã¯ãã°ã©ãIRIã®æä¾ã«ãããç¹å®ã®ã°ã©ãã«é©ç¨ããããããã³ã°ãå¶éã§ãã¾ããããã¯ãIRIã§ååä»ããããã°ã©ãã«ãã¢ã¯ãã£ãã»ã°ã©ããè¨å®ãã¾ãããã®ã¯ã¨ãªã¯ãã°ã©ãhttp://example.org/foaf/bobFoaf
ã§ç¤ºããã¦ããããã«ãBobã®nickãæ¤ç´¢ãã¾ãã
PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX data: <http://example.org/foaf/> SELECT ?nick FROM NAMED <http://example.org/foaf/aliceFoaf> FROM NAMED <http://example.org/foaf/bobFoaf> WHERE { GRAPH data:bobFoaf { ?x foaf:mbox <mailto:bob@work.example> . ?x foaf:nick ?nick } }
ããã«ãããæ¬¡ã®1ã¤ã®ã½ãªã¥ã¼ã·ã§ã³ãå¾ããã¾ãã
8.3.3 ããããã°ã©ãIRFã®å¶éGRAPH
å¥ã§ç¨ãããã夿°ã¯ããã1ã¤ã®GRAPH
å¥ãã¾ãã¯ããã¼ã¿ã»ããã®ããã©ã«ãã»ã°ã©ãã«ãããããã°ã©ãã»ãã¿ã¼ã³ã§ã使ç¨ã§ãã¾ãã
次ã®ã¯ã¨ãªã¯ãBobã®ãããã£ã¼ã«ã»ããã¥ã¡ã³ããçºè¦ããããã«IRI http://example.org/foaf/aliceFoaf
ãæã¤ã°ã©ããç¨ãã¦ããããã®ã°ã©ãã«å¥ã®ãã¿ã¼ã³ããããããã¾ããAliceã®FOAFãã¡ã¤ã«ãããã¡ã¤ã«ã®å¤æ°whom
ã«ãããã³ã°ãããããç¨ãããã空ç½ãã¼ãã¯ããããã£ã¼ã«ã»ããã¥ã¡ã³ãã®ç©ºç½ãã¼ãã¨åãã§ã¯ãªãããï¼ç°ãªãã°ã©ãã«åå¨ããï¼ã2çªç®ã®GRAPH
å¥ã®ãã¿ã¼ã³ã¯ãæåã®GRAPH
å¥ï¼å¤æ°whom
ï¼ã§çºè¦ãããã®ã¨åãã¡ã¼ã«ããã¯ã¹ï¼å¤æ°mbox
ã«ãã£ã¦ç¤ºãããï¼ãæã¤äººã®ç©ºç½ãã¼ãï¼å¤æ°w
ï¼ãçºè¦ãã¾ãã
PREFIX data: <http://example.org/foaf/> PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT ?mbox ?nick ?ppd FROM NAMED <http://example.org/foaf/aliceFoaf> FROM NAMED <http://example.org/foaf/bobFoaf> WHERE { GRAPH data:aliceFoaf { ?alice foaf:mbox <mailto:alice@work.example> ; foaf:knows ?whom . ?whom foaf:mbox ?mbox ; rdfs:seeAlso ?ppd . ?ppd a foaf:PersonalProfileDocument . } . GRAPH ?ppd { ?w foaf:mbox ?mbox ; foaf:nick ?nick } }mbox nick ppd <mailto:bob@work.example> "Robert" <http://example.org/foaf/bobFoaf>
夿°nick
ãå«ããã¿ã¼ã³ãppd
ã«ãã£ã¦ç¹å®ã®ãã¼ã½ãã«ã»ãããã£ã¼ã«ã»ããã¥ã¡ã³ãã«å¶éããã¦ãããããBobã®nick
ã示ãã¦ããAliceã®FOAFãã¡ã¤ã«ã®ããªãã«ã¯ãBobã«nickãæä¾ããããã«ç¨ãããã¦ãã¾ããã
ã¯ã¨ãªã»ãã¿ã¼ã³ã¯ãããã©ã«ãã»ã°ã©ãã¨ååä»ã°ã©ãã®ä¸¡æ¹ãå«ããã¨ãã§ãã¾ãããã®ä¾ã§ã¯ãã¢ã°ãªã²ã¼ã¿ã¯ã2åã®å¥ã®æ©ä¼ã«1ã¤ã®ã¦ã§ãè³æºãèªã¿è¾¼ã¿ã¾ãããã°ã©ãã«ã¯ãã¢ã°ãªã²ã¼ã¿ã«èªã¿è¾¼ã¾ãããã³ã«ããã¼ã«ã«ã»ã·ã¹ãã ã«ãã£ã¦IRIãä¸ãããã¾ãããããã®ã°ã©ãã¯ã»ã¼åãã§ããããBobãã®Eã¡ã¼ã«ã»ã¢ãã¬ã¹ã夿´ããã¾ããã
ãã®ä¾ã§ã¯ãããã©ã«ãã»ã°ã©ãã¯ãæ¥æ´æ å ±ãè¨é²ããããã«ç¨ãããã¦ãããå®éã«èªã¿è¾¼ã¾ããRDFãã¼ã¿ã¯2ã¤ã®å¥ã ã®ã°ã©ãã«ä¿æãããã·ã¹ãã ã¯ããããã«ç°ãªãIRIãä¸ãã¾ããRDFãã¼ã¿ã»ããã¯ã2ã¤ã®ååä»ãã°ã©ãã¨ãããã«é¢ããæ å ±ã§æ§æããã¾ãã
RDFãã¼ã¿ã»ãã:
# Default graph @prefix dc: <http://purl.org/dc/elements/1.1/> . @prefix g: <tag:example.org,2005-06-06:> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . g:graph1 dc:publisher "Bob" . g:graph1 dc:date "2004-12-06"^^xsd:date . g:graph2 dc:publisher "Bob" . g:graph2 dc:date "2005-01-10"^^xsd:date .
# Graph: locally allocated IRI: tag:example.org,2005-06-06:graph1 @prefix foaf: <http://xmlns.com/foaf/0.1/> . _:a foaf:name "Alice" . _:a foaf:mbox <mailto:alice@work.example> . _:b foaf:name "Bob" . _:b foaf:mbox <mailto:bob@oldcorp.example.org> .
# Graph: locally allocated IRI: tag:example.org,2005-06-06:graph2 @prefix foaf: <http://xmlns.com/foaf/0.1/> . _:a foaf:name "Alice" . _:a foaf:mbox <mailto:alice@work.example> . _:b foaf:name "Bob" . _:b foaf:mbox <mailto:bob@newcorp.example.org> .
ãã®ã¯ã¨ãªã¯ãEã¡ã¼ã«ã»ã¢ãã¬ã¹ãçºè¦ãã人åã¨æ å ±ãçºè¦ãããæ¥æã詳細åãã¾ãã
PREFIX foaf: <http://xmlns.com/foaf/0.1/>PREFIX dc: <http://purl.org/dc/elements/1.1/> SELECT ?name ?mbox ?date WHERE { ?g dc:publisher ?name ; dc:date ?date . GRAPH ?g { ?person foaf:name ?name ; foaf:mbox ?mbox } }
çµæã¯ããBobãã®Eã¡ã¼ã«ã»ã¢ãã¬ã¹ã夿´ããããã¨ã示ãã¾ãã
name mbox date "Bob" <mailto:bob@oldcorp.example.org> "2004-12-06"^^xsd:date "Bob" <mailto:bob@newcorp.example.org> "2005-01-10"^^xsd:dateæ¥æã®ãã¼ã¿åã«é¢ããIRIã¯ãçµæã§ã¯ãæç¢ºãã®ããã«çç¥åããã¦ãã¾ãã
9 ã½ãªã¥ã¼ã·ã§ã³ã»ã·ã¼ã±ã³ã¹ã¨ä¿®é£¾åã¯ã¨ãªã»ãã¿ã¼ã³ã¯ãåã½ãªã¥ã¼ã·ã§ã³ã夿°ããRDFç¨èªã¸ã®é¨å颿°ã§ãããé ä¸åã®ã½ãªã¥ã¼ã·ã§ã³ã®ã³ã¬ã¯ã·ã§ã³ã使ãã¾ããæ¬¡ã«ããããã®ã½ãªã¥ã¼ã·ã§ã³ã¯ãã·ã¼ã±ã³ã¹ï¼ã½ãªã¥ã¼ã·ã§ã³ã»ã·ã¼ã±ã³ã¹ï¼ã¨ãã¦å¦çããã¾ããæåã¯ç¹ã«é åºä»ãã®ãªãã·ã¼ã±ã³ã¹ã§ãå¾ã§ãä»»æã®ã·ã¼ã±ã³ã¹ä¿®é£¾åãé©ç¨ãã¦å¥ã®ã·ã¼ã±ã³ã¹ã使ãã¾ããæçµçã«ããã®å¾è ã®ã·ã¼ã±ã³ã¹ãç¨ãã¦ãSPARQLã¯ã¨ãªå½¢å¼ã®çµæã®1ã¤ãçæãã¾ãã
ã½ãªã¥ã¼ã·ã§ã³ã»ã·ã¼ã±ã³ã¹ä¿®é£¾åã¯ã次ã®ãããã1ã¤ã§ãã
修飾åã¯ãä¸è¨ãªã¹ãã§ç¤ºããã¦ããé åºã§é©ç¨ããã¾ãã
9.1 ORDER BYORDER BY
å¥ã¯ãã½ãªã¥ã¼ã·ã§ã³ã»ã·ã¼ã±ã³ã¹ã®é åºãå®ãã¾ãã
ORDER BY
å¥ã®å¾ã«ã¯ãå¼ã¨ããªãã·ã§ã³ã®é åºä¿®é£¾åï¼ASC()
ãDESC()
ã®ã©ã¡ããï¼ã§æ§æãããé åºã³ã³ãã¬ã¼ã¿ï¼order comparatorï¼ã®ã·ã¼ã±ã³ã¹ãç¶ãã¾ããåé åºä»ãã³ã³ãã¬ã¼ã¿ã¯ãæé ï¼ASC()
修飾åãã¾ãã¯ã修飾åãªãã§ç¤ºãããï¼ããéé ï¼DESC()
修飾åã§ç¤ºãããï¼ã§ãã
PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?name WHERE { ?x foaf:name ?name } ORDER BY ?name
PREFIX : <http://example.org/ns#> PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> SELECT ?name WHERE { ?x foaf:name ?name ; :empId ?emp } ORDER BY DESC(?emp)
PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?name WHERE { ?x foaf:name ?name ; :empId ?emp } ORDER BY ?name DESC(?emp)
ã<ãã¨ããæ¼ç®åï¼æ¼ç®åãããã³ã°ããã³11.3.1 æ¼ç®åã®æ¡å¼µæ§ãåç
§ï¼ã¯ãæ°å¤ï¼numerics
ï¼ãã·ã³ãã«ãªãªãã©ã«ï¼simple literals
ï¼ãxsd:strings
ãxsd:booleans
ãxsd:dateTimes
ã®å¯¾ã®ç¸å¯¾é åºãå®ãã¾ããIRIã®å¯¾ã¯ãsimple literals
ã¨ãã¦æ¯è¼ããé åºä»ãããã¾ãã
SPARQLã¯ã次ã®ãå¥ã®æ¹æ³ã§ã¯é åºä»ããããªãæ°ç¨®ã®RDFç¨èªéã®é åºãå®ãã¾ãã
ãã¬ã¼ã³ã»ãªãã©ã«ã¯ãåãåå¥å½¢å¼ã®åxsd:string
ãæã¤RDFãªãã©ã«ãããé åºãä½ãã§ãã
SPARQLã¯ãå¯è½ãªéãã®ããããRDFç¨èªã®å ¨ä½çãªé åºä»ããå®ããããã§ã¯ããã¾ããã以ä¸ã¯ãç¸å¯¾é åºãå®ãããã¦ããªã対ã®ç¨èªã®ããã¤ãã®ä¾ã§ãã
ãã®å¤æ°ãã¤ã³ãã£ã³ã°ã®ãªã¹ãã¯ãæé ã§ãã
RDFã®ç¨èª çç± ãã¤ã³ãããã¦ããªãçµæãæåã«ã½ã¼ãããã¾ãã_:z
ãã¤ã³ãããã¦ããªããã®ã®æ¬¡ã¯ç©ºç½ãã¼ãã§ãã _:a
空ç½ãã¼ãã«ã¯ç¸å¯¾çãªé åºä»ããããã¾ããã <http://script.example/Latin>
空ç½ãã¼ãã®æ¬¡ã¯IRIã§ãã <http://script.example/Кириллица>
23çªç®ã«ä½ç½®ããæåãКãã¯ãUnicodeã®ã³ã¼ããã¤ã³ã0x41Aãæã£ã¦ãããããã¯0x4Cï¼ãLãï¼ããé åºãé«ãã§ãã <http://script.example/漢字>
23çªç®ã«ä½ç½®ããæåãæ¼¢ãã¯ãUnicodeã®ã³ã¼ããã¤ã³ã0x6F22ãæã£ã¦ãããããã¯0x41Aï¼ãКãï¼ããé åºãé«ãã§ãã "http://script.example/Latin"
IRIã®æ¬¡ã¯ã·ã³ãã«ãªãªãã©ã«ã§ãã "http://script.example/Latin"^^xsd:string
ã·ã³ãã«ãªãªãã©ã«ã®æ¬¡ã¯xsd:stringã§ãã
é åºä»ãã³ã³ãã¬ã¼ã¿ã«å¯¾ãã2ã¤ã®ã½ãªã¥ã¼ã·ã§ã³ã®æé ã¯ãã½ãªã¥ã¼ã·ã§ã³ã®ãã¤ã³ãã£ã³ã°ãå¼ã«ä»£å ¥ãããããã<ãæ¼ç®åã§æ¯è¼ãããã¨ã§å®ãããã¨ãã§ãã¾ããéé ã¯æé ã®éã§ãã
2ã¤ã®ã½ãªã¥ã¼ã·ã§ã³ã®ç¸å¯¾é åºã¯ãã·ã¼ã±ã³ã¹å ã®æåã®é åºä»ãã³ã³ãã¬ã¼ã¿ã«å¯¾ãã2ã¤ã®ã½ãªã¥ã¼ã·ã§ã³ã®ç¸å¯¾é åºã§ããã½ãªã¥ã¼ã·ã§ã³ã»ãã¤ã³ãã£ã³ã°ã®ç½®æãåãRDFç¨èªã使ããã½ãªã¥ã¼ã·ã§ã³ã®å ´åã¯ãé åºã¯æ¬¡ã®é åºä»ãã³ã³ãã¬ã¼ã¿ã«å¯¾ãã2ã¤ã®ã½ãªã¥ã¼ã·ã§ã³ã®ç¸å¯¾é åºã§ãã2ã¤ã®ã½ãªã¥ã¼ã·ã§ã³ã«å¯¾ãã¦è©ä¾¡ãè¡ãããé åºã®å¼ãå¥ã ã®RDFç¨èªã使ããªãå ´åã2ã¤ã®ã½ãªã¥ã¼ã·ã§ã³ã®ç¸å¯¾é åºã¯æªå®ç¾©ã§ãã
ã½ãªã¥ã¼ã·ã§ã³ã®ã·ã¼ã±ã³ã¹ã®é åºä»ãã¯ã常ã«ããã®å é¨ã«åæ°ã®ã½ãªã¥ã¼ã·ã§ã³ãæã¤ã·ã¼ã±ã³ã¹ã«ãªãã¾ãã
ã½ãªã¥ã¼ã·ã§ã³ã»ã·ã¼ã±ã³ã¹ã§CONSTRUCT
ã¾ãã¯DESCRIBE
ã¯ã¨ãªã«å¯¾ãORDER BY
ã使ç¨ããã¨ãSELECT
ã®ã¿ãçµæã®ã·ã¼ã±ã³ã¹ãè¿ããããç´æ¥çãªå¹æã¯ããã¾ãããLIMIT
ãOFFSET
ã¨çµã¿åããã¦ç¨ããã°ãORDER BY
ã¯ãã½ãªã¥ã¼ã·ã§ã³ã»ã·ã¼ã±ã³ã¹ã®ç°ãªãé¨åããçããçµæãè¿ãããã«ä½¿ç¨ã§ãã¾ããASK
ã¯ã¨ãªã¯ãORDER BY
ãLIMIT
ãã¾ãã¯ãOFFSET
ãå«ã¿ã¾ããã
ã½ãªã¥ã¼ã·ã§ã³ã»ã·ã¼ã±ã³ã¹ã¯å¤æ°ã®ãµãã»ããã®ã¿ãå«ããã®ã«å¤æã§ãã¾ããã·ã¼ã±ã³ã¹ã®åã½ãªã¥ã¼ã·ã§ã³ã«å¯¾ããSELECTã¯ã¨ãªå½¢å¼ãç¨ãã¦å¤æ°ã®æå®é¸æãç¨ãããã¨ã§æ°ããã½ãªã¥ã¼ã·ã§ã³ã使ããã¾ãã
以ä¸ã®ä¾ã§ã¯ãFOAFããããã£ã¼ãç¨ãã¦ãRDFã°ã©ãã§è¨è¿°ããã人åã®ã¿ãæ½åºããããã®ã¯ã¨ãªã示ãã¦ãã¾ãã
@prefix foaf: <http://xmlns.com/foaf/0.1/> . _:a foaf:name "Alice" . _:a foaf:mbox <mailto:alice@work.example> . _:b foaf:name "Bob" . _:b foaf:mbox <mailto:bob@work.example> .
PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?name WHERE { ?x foaf:name ?name }9.3 ã½ãªã¥ã¼ã·ã§ã³ã®è¤è£½
DISTINCT
ã¾ãã¯REDUCED
ã¨ããã¯ã¨ãªä¿®é£¾åãç¨ããªãã½ãªã¥ã¼ã·ã§ã³ã»ã·ã¼ã±ã³ã¹ã¯ãè¤è£½ã®ã½ãªã¥ã¼ã·ã§ã³ãä¿æããã§ãããã
@prefix foaf: <http://xmlns.com/foaf/0.1/> . _:x foaf:name "Alice" . _:x foaf:mbox <mailto:alice@example.com> . _:y foaf:name "Alice" . _:y foaf:mbox <mailto:asmith@example.com> . _:z foaf:name "Alice" . _:z foaf:mbox <mailto:alice.smith@example.com> .
PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?name WHERE { ?x foaf:name ?name }name "Alice" "Alice" "Alice"
DISTINCT
ããã³REDUCED
ã®ä¿®é£¾åã¯ãã¯ã¨ãªã®çµæã«éè¤ãå«ã¾ãããã©ããã«å½±é¿ãä¸ãã¾ãã
DISTINCT
ã½ãªã¥ã¼ã·ã§ã³ä¿®é£¾åã¯ãéè¤ããã½ãªã¥ã¼ã·ã§ã³ãæé¤ãã¾ããå
·ä½çã«ã¯ãå¥ã®ã½ãªã¥ã¼ã·ã§ã³ã¨åãRDFç¨èªã«åã夿°ããã¤ã³ãããåã½ãªã¥ã¼ã·ã§ã³ããã½ãªã¥ã¼ã·ã§ã³éåããæé¤ããã¾ãã
PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT DISTINCT ?name WHERE { ?x foaf:name ?name }
ã½ãªã¥ã¼ã·ã§ã³ã»ã·ã¼ã±ã³ã¹ä¿®é£¾åã®é åºã«ããããã«ãlimitãoffsetã®ãããããé©ç¨ãããåã«éè¤ãæé¤ããããã¨ã«æ³¨æãã¦ãã ããã
9.3.2 REDUCEDDISTINCT
修飾åã¯ãã½ãªã¥ã¼ã·ã§ã³éåããéè¤ããã½ãªã¥ã¼ã·ã§ã³ã確å®ã«æé¤ãã¾ãããREDUCED
ã¯ãåã«ããããæé¤ãããã¨ã許å¯ããã ãã§ããREDUCED
ã½ãªã¥ã¼ã·ã§ã³éåã®å¤æ°ãã¤ã³ãã£ã³ã°éåã®ã«ã¼ãã£ããªãã£ã¼ã¯ãå°ãªãã¨ã1ã§ãå¤ãã¨ãDISTINCT
ã¾ãã¯REDUCED
修飾åãç¨ããªãã½ãªã¥ã¼ã·ã§ã³éåã®ã«ã¼ãã£ããªãã£ã¼ãè¶
ãã¾ãããä¾ãã°ãä¸è¨ã®ãã¼ã¿ãç¨ããå ´åãæ¬¡ã®ã¯ã¨ãªã¯ã
PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT REDUCED ?name WHERE { ?x foaf:name ?name }
1ã2ï¼ããã§ç¤ºãã¦ãããã®ï¼ãã¾ãã¯ã3ã¤ã®ã½ãªã¥ã¼ã·ã§ã³ãæã¤ãã¨ãã§ãã¾ãã
9.4 OFFSETOFFSET
ã¯ãæå®ãããæ°ã®ã½ãªã¥ã¼ã·ã§ã³ã®å¾ã§ã½ãªã¥ã¼ã·ã§ã³ãå§ã¾ãããã«ãã¾ããOFFSET
ã0ã«ããã°å¹æã¯ããã¾ããã
ã¯ã¨ãªã®ã½ãªã¥ã¼ã·ã§ã³ã®ç°ãªããµãã»ããã鏿ããããã«LIMIT
ã¨OFFSET
ãç¨ãã¦ããORDER BY
ãç¨ãã¦é åºãäºæ¸¬ã§ããããã«ããªãã¨ãæå¹ã§ã¯ãªãã§ãããã
PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?name WHERE { ?x foaf:name ?name } ORDER BY ?name LIMIT 5 OFFSET 109.5 LIMIT
LIMIT
å¥ã¯ãè¿ãããã½ãªã¥ã¼ã·ã§ã³ã®æ°ã«ä¸éãè¨ãã¾ããå®éã®ã½ãªã¥ã¼ã·ã§ã³ã®æ°ãlimitãã大ããå ´åã¯ãæå¤§ã§ãlimitã®æ°ã®ã½ãªã¥ã¼ã·ã§ã³ãè¿ãããã§ãããã
PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?name WHERE { ?x foaf:name ?name } LIMIT 20
LIMIT
ã0ã«ããã°ãçµæãè¿ããªãã§ããããlimitã¯è² ã®æ°ã§ãã£ã¦ã¯ãªãã¾ããã
SPARQLã«ã¯ã4ã¤ã®ã¯ã¨ãªå½¢å¼ãããã¾ãããããã®ã¯ã¨ãªå½¢å¼ã¯ããã¿ã¼ã³ã»ãããã³ã°ã®ã½ãªã¥ã¼ã·ã§ã³ãç¨ãã¦ãçµæéåã¾ãã¯RDFã°ã©ãã使ãã¾ããã¯ã¨ãªå½¢å¼ã¯ã次ã®éãã§ãã
- SELECT
- ã¯ã¨ãªã»ãã¿ã¼ã³ã«ãã¤ã³ãããã夿°ã®ããã¹ã¦ã¾ãã¯ãµãã»ãããè¿ãã
- CONSTRUCT
- 1çµã®ããªãã«ã»ãã³ãã¬ã¼ãã«å¤æ°ãä»£å ¥ãã¦æ§ç¯ããRDFã°ã©ããè¿ãã
- ASK
- ã¯ã¨ãªã»ãã¿ã¼ã³ãããããããã©ããã示ããã¼ã«å¤ãè¿ãã
- DESCRIBE
- çºè¦ããè³æºã«é¢ãã¦è¨è¿°ããRDFã°ã©ããè¿ãã
SELECT
ã¯ã¨ãªããã®çµæéåãã¾ãã¯ãASK
ã¯ã¨ãªã®ãã¼ã«æ¼ç®çµæãã·ãªã¢ã«åããããã«SPARQL夿°ãã¤ã³ãã£ã³ã°çµæXMLãã©ã¼ãããã使ç¨ã§ãã¾ãã
çµæã®SELECTå½¢å¼ã¯ã夿°ã¨ãã®ãã¤ã³ãã£ã³ã°ãç´æ¥è¿ãã¾ããæ§æSELECT*
ã¯ãã¯ã¨ãªä¸ã®å¤æ°ã®ãã¹ã¦ã鏿ããããã®çç¥å½¢ã§ãã
@prefix foaf: <http://xmlns.com/foaf/0.1/> . _:a foaf:name "Alice" . _:a foaf:knows _:b . _:a foaf:knows _:c . _:b foaf:name "Bob" . _:c foaf:name "Clare" . _:c foaf:nick "CT" .
PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?nameX ?nameY ?nickY WHERE { ?x foaf:knows ?y ; foaf:name ?nameX . ?y foaf:name ?nameY . OPTIONAL { ?y foaf:nick ?nickY } }nameX nameY nickY "Alice" "Bob" "Alice" "Clare" "CT"
çµæéåã¯ããã¼ã«ã«APIããã¢ã¯ã»ã¹ã§ãã¾ãããXMLãRDFã°ã©ãã®ã©ã¡ããã«ã·ãªã¢ã«åãããã¨ãå¯è½ã§ããXMLãã©ã¼ãããã¯ãSPARQLã¯ã¨ãªçµæXMLãã©ã¼ãããã§è¨è¿°ããã¦ãããæ¬¡ã®ä¾ã§ç¤ºãã¦ãã¾ãã
<?xml version="1.0"?> <sparql xmlns="http://www.w3.org/2005/sparql-results#"> <head> <variable name="nameX"/> <variable name="nameY"/> <variable name="nickY"/> </head> <results> <result> <binding name="nameX"> <literal>Alice</literal> </binding> <binding name="nameY"> <literal>Bob</literal> </binding> </result> <result> <binding name="nameX"> <literal>Alice</literal> </binding> <binding name="nameY"> <literal>Clare</literal> </binding> <binding name="nickY"> <literal>CT</literal> </binding> </result> </results> </sparql>10.2 CONSTRUCT
CONSTRUCT
ã¯ã¨ãªå½¢å¼ã¯ãã°ã©ãã»ãã³ãã¬ã¼ãã§æå®ããã1ã¤ã®RDFã°ã©ããè¿ãã¾ããçµæã¯ãåã¯ã¨ãªã®ã½ãªã¥ã¼ã·ã§ã³ãã½ãªã¥ã¼ã·ã§ã³ã»ã·ã¼ã±ã³ã¹ã«åãè¾¼ã¿ãã°ã©ãã»ãã³ãã¬ã¼ãã«å¤æ°ã代å
¥ããåéåã«ãã£ã¦ããªãã«ã1ã¤ã®RDFã°ã©ãã«çµåãã¦ä½æãããRDFã°ã©ãã§ãã
ãã®ãããªã¤ã³ã¹ã¿ã³ã¹åãã主èªã¾ãã¯è¿°èªã®ä½ç½®ã«ãããªãã©ã«ãªã©ã®ããã¤ã³ãããã¦ããªã夿°ã¾ãã¯ä¸æ£ãªRDFæ§æåãå«ãããªãã«ã使ããå ´åã¯ããã®ããªãã«ã¯åºåRDFã°ã©ãã«å«ã¾ãã¾ãããã°ã©ãã»ãã³ãã¬ã¼ãã¯ã夿°ãæããªãããªãã«ï¼åºåºçã¾ãã¯æç¤ºçãªããªãã«ã¨ãã¦ç¥ãããï¼ãå«ããã¨ãã§ãããããã¯CONSTRUCTã¯ã¨ãªå½¢å¼ãè¿ããåºåRDFã°ã©ãã«ã表示ããã¾ãã
@prefix foaf: <http://xmlns.com/foaf/0.1/> . _:a foaf:name "Alice" . _:a foaf:mbox <mailto:alice@example.org> .
PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#> CONSTRUCT { <http://example.org/person#Alice> vcard:FN ?name } WHERE { ?x foaf:name ?name }
ã¯ãFOAFæ å ±ããvcardããããã£ã¼ã使ãã¾ãã
@prefix vcard: <http://www.w3.org/2001/vcard-rdf/3.0#> . <http://example.org/person#Alice> vcard:FN "Alice" .10.2.1 空ç½ãã¼ããæã¤ãã³ãã¬ã¼ã
ãã³ãã¬ã¼ãã¯ã空ç½ãã¼ããå«ãã RDFã°ã©ãã使ã§ãã¾ãã空ç½ãã¼ãã»ã©ãã«ã¯ãåã½ãªã¥ã¼ã·ã§ã³ã«å¯¾ãããã³ãã¬ã¼ãã§æå¹ã§ããåãã©ãã«ã1ã¤ã®ãã³ãã¬ã¼ãã§2ååºç¾ããå ´åã¯ãåã¯ã¨ãªã»ã½ãªã¥ã¼ã·ã§ã³ã«å¯¾ãã¦ä½æããã1ã¤ã®ç©ºç½ãã¼ããåå¨ããã§ãããããå¥ã®ã¯ã¨ãªã»ã½ãªã¥ã¼ã·ã§ã³ã«ãã£ã¦çæãããããªãã«ã«å¯¾ããå¥ã®ç©ºç½ãã¼ããåå¨ããã§ãããã
@prefix foaf: <http://xmlns.com/foaf/0.1/> . _:a foaf:givenname "Alice" . _:a foaf:family_name "Hacker" . _:b foaf:firstname "Bob" . _:b foaf:surname "Hacker" .
PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#> CONSTRUCT { ?x vcard:N _:v . _:v vcard:givenName ?gname . _:v vcard:familyName ?fname } WHERE { { ?x foaf:firstname ?gname } UNION { ?x foaf:givenname ?gname } . { ?x foaf:surname ?fname } UNION { ?x foaf:family_name ?fname } . }
ã¯ãFOAFæ å ±ã«å¯¾å¿ããvcardããããã£ã¼ã使ãã¾ãã
@prefix vcard: <http://www.w3.org/2001/vcard-rdf/3.0#> . _:v1 vcard:N _:x . _:x vcard:givenName "Alice" . _:x vcard:familyName "Hacker" . _:v2 vcard:N _:z . _:z vcard:givenName "Bob" . _:z vcard:familyName "Hacker" .
ãã³ãã¬ã¼ãã§å¤æ°x
ãç¨ããã¨ï¼ãã®ä¾ã§ã¯ããã¼ã¿å
ã§ã©ãã«_:a
ã¨_:b
ãæã¤ç©ºç½ãã¼ãã«ãã¤ã³ãããã¦ããã§ãããï¼ãçµæã¨ãã¦çæãããRDFã°ã©ãã®ä¸ã«å¥ã®ç©ºç½ãã¼ãã»ã©ãã«ï¼_:v1
ã¨_:v2
ï¼ãçæããã¾ãã
CONSTRUCT
ãç¨ãã¦ãã¿ã¼ã²ããã®RDFãã¼ã¿ã»ããããã°ã©ãã®é¨åã¾ãã¯å
¨ä½ãæ½åºãããã¨ãå¯è½ã§ãããã®æåã®ä¾ã¯ãIRIã©ãã«http://example.org/aGraph
ãæã¤ã°ã©ãï¼ããããã¼ã¿ã»ããã«ããã°ï¼ãè¿ãã¾ãããããªããã°ã空ã®ã°ã©ããè¿ãã¾ãã
CONSTRUCT { ?s ?p ?o } WHERE { GRAPH <http://example.org/aGraph> { ?s ?p ?o } . }
ã°ã©ãã¸ã®ã¢ã¯ã»ã¹ã¯ãä»ã®æ å ±ãæ¡ä»¶ã¨ãã¦ããå ´åãããã¾ããä¾ãã°ãããã©ã«ãã»ã°ã©ãããã¼ã¿ã»ããã®ååä»ãã°ã©ãã«é¢ããã¡ã¿ãã¼ã¿ãå«ãã§ããå ´åãæ¬¡ã®ãããªã¯ã¨ãªã¯ãååä»ãã°ã©ãã«é¢ããæ å ±ã«åºã¥ã1ã¤ã®ã°ã©ããæ½åºã§ãã¾ãã
PREFIX dc: <http://purl.org/dc/elements/1.1/> PREFIX app: <http://example.org/ns#> CONSTRUCT { ?s ?p ?o } WHERE { GRAPH ?g { ?s ?p ?o } . { ?g dc:publisher <http://www.w3.org/> } . { ?g dc:date ?date } . FILTER ( app:customDate(?date) > "2005-02-28T00:00:00Z"^^xsd:dateTime ) . }
ããã§ã¯ãapp:customDate
ãæ¡å¼µé¢æ°ãèå¥ãããã¼ã¿ã»ãã©ã¼ããããxsd:dateTime
ã¨ããRDFç¨èªã«å¤ãã¾ããã
ã¯ã¨ãªã®ã½ãªã¥ã¼ã·ã§ã³ä¿®é£¾åã¯ãCONSTRUCT
ã¯ã¨ãªã®çµæã«å½±é¿ãä¸ãã¾ãããã®ä¾ã§ã¯ãCONSTRUCT
ãã³ãã¬ã¼ãããã®åºåã°ã©ãã¯ãã°ã©ãã»ãã¿ã¼ã³ã»ãããã³ã°2ã¤ã®ã½ãªã¥ã¼ã·ã§ã³ã®ã¿ããå½¢æããã¾ããã¯ã¨ãªã¯ããããçã§æ ¼ä»ããããããã2ã®ãµã¤ããæã¤äººã
ã®ååãæã¤ã°ã©ããåºåãã¾ããRDFã°ã©ãä¸ã®ããªãã«ã¯é åºä»ãããã¦ãã¾ããã
@prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix site: <http://example.org/stats#> . _:a foaf:name "Alice" . _:a site:hits 2349 . _:b foaf:name "Bob" . _:b site:hits 105 . _:c foaf:name "Eve" . _:c site:hits 181 .
PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX site: <http://example.org/stats#> CONSTRUCT { [] foaf:name ?name } WHERE { [] foaf:name ?name ; site:hits ?hits . } ORDER BY desc(?hits) LIMIT 2
@prefix foaf: <http://xmlns.com/foaf/0.1/> . _:x foaf:name "Alice" . _:y foaf:name "Eve" .10.3 ASK
ã¢ããªã±ã¼ã·ã§ã³ã¯ãã¯ã¨ãªã»ãã¿ã¼ã³ã«ã½ãªã¥ã¼ã·ã§ã³ããããå¦ãããã¹ãããããã«ASK
å½¢å¼ã使ç¨ã§ãã¾ããããããã¯ã¨ãªã®ã½ãªã¥ã¼ã·ã§ã³ã«é¢ããæ
å ±ã¯è¿ãããã½ãªã¥ã¼ã·ã§ã³ãåå¨ãã¦ãããå¦ãã®ã¿ã§ãã
@prefix foaf: <http://xmlns.com/foaf/0.1/> . _:a foaf:name "Alice" . _:a foaf:homepage <http://work.example.org/alice/> . _:b foaf:name "Bob" . _:b foaf:mbox <mailto:bob@work.example> .
PREFIX foaf: <http://xmlns.com/foaf/0.1/> ASK { ?x foaf:name "Alice" }
ãã®çµæéåã®SPARQLã¯ã¨ãªçµæXMLãã©ã¼ãããã®å½¢å¼ã¯ã次ã®ããã«ãªãã¾ãã
<?xml version="1.0"?> <sparql xmlns="http://www.w3.org/2005/sparql-results#"> <head></head> <results> <boolean>true</boolean> </results> </sparql>
åããã¼ã¿ãç¨ããå ´åãæ¬¡ã®ä¾ã¯ãAliceã®mbox
ãè¨è¿°ããã¦ããªããããããããè¿ãã¾ããã
PREFIX foaf: <http://xmlns.com/foaf/0.1/> ASK { ?x foaf:name "Alice" ; foaf:mbox <mailto:alice@work.example> }10.4 DESCRIBEï¼åèæ å ±ï¼
DESCRIBE
å½¢å¼ã¯ãè³æºã«é¢ããRDFãã¼ã¿ãå«ãã 1ã¤ã®çµæRDFã°ã©ããè¿ãã¾ããSPARQLã®ã¯ã¨ãªã§ã¯ãã®ãã¼ã¿ã¯è¦å®ããã¦ãããããã®å ´åã«ã¯ãã¯ã¨ãªã®ã¯ã©ã¤ã¢ã³ãããã¼ã¿æ
å ±æºå
ã®RDFã®æ§é ãç¥ã£ã¦ããå¿
è¦ãããã§ããããããã®ä»£ããã«SPARQLã¯ã¨ãªã»ããã»ããµããã®ãã¼ã¿ã決å®ãã¾ããã¯ã¨ãªã»ãã¿ã¼ã³ãç¨ãã¦çµæéåã使ãã¾ããDESCRIBE
å½¢å¼ã¯ãIRIã§ç´æ¥æå®ãããä»»æã®è³æºã¨ä¸ç·ã«ãèå¥ãããåè³æºãã½ãªã¥ã¼ã·ã§ã³ã«åãè¾¼ã¿ãã¿ã¼ã²ããã®RDFãã¼ã¿ã»ãããå«ãã§ããå©ç¨å¯è½ãªä»»æã®æ
å ±ããå¾ããããè¨è¿°ããæã£ã¦ãããã¨ã«ãã£ã¦ã1ã¤ã®RDFã°ã©ããçµã¿ç«ã¦ã¾ããè¨è¿°ã¯ã¯ã¨ãªã»ãµã¼ãã¹ã決å®ãã¾ããDESCRIBE *
ã¨ããæ§æã¯ãã¯ã¨ãªå
ã®ãã¹ã¦ã®å¤æ°ãè¨è¿°ããããã®çç¥å½¢ã§ãã
DESCRIBE
å¥èªèº«ãIRIãåãè¾¼ãã§è³æºãèå¥ãããã¨ãã§ãã¾ããæãã·ã³ãã«ãªDESCRIBE
ã¯ã¨ãªã¯ã次ã®ãããªDESCRIBE
å¥å
ã«IRIã®ã¿ããããã®ã§ãã
DESCRIBE <http://example.org/>10.4.2 è³æºã®èå¥
è¨è¿°ãããè³æºã¯ãã¯ã¨ãªå¤æ°ã¸ã®ãã¤ã³ãã£ã³ã°ããçµæéåã«åãè¾¼ããã¨ãã§ãã¾ããããã«ãã£ã¦ã次ã®ãããªãè³æºãIRIã«ãã£ã¦èå¥ãããã®ãããã¼ã¿ã»ããã®ç©ºç½ãã¼ãã«ãã£ã¦èå¥ãããã®ãã®è¨è¿°ãå¯è½ã«ãªãã¾ãã
PREFIX foaf: <http://xmlns.com/foaf/0.1/> DESCRIBE ?x WHERE { ?x foaf:mbox <mailto:alice@org> }
ããããã£ã¼foaf:mbox
ã¯ãFOAFèªå½ã§ã¯ãé颿°ããããã£ã¼ã§ããã¨å®ç¾©ããã¦ãã¾ãããããããã®ã¨ãã¦å¦çããã¨ããã®ã¯ã¨ãªã¯ãé«ã
1人ã®äººç©ã«é¢ããæ
å ±ãè¿ãã§ããããããããã¯ã¨ãªã»ãã¿ã¼ã³ã«è¤æ°ã®ã½ãªã¥ã¼ã·ã§ã³ãããå ´åã¯ãããããã«å¯¾ããRDFãã¼ã¿ã¯ããã¹ã¦ã®RDFã°ã©ãè¨è¿°ã®åéåã§ãã
PREFIX foaf: <http://xmlns.com/foaf/0.1/> DESCRIBE ?x WHERE { ?x foaf:name "Alice" }
次ã®ããã«ã1ã¤ä»¥ä¸ã®IRIã¾ãã¯å¤æ°ã使ã§ãã¾ãã
PREFIX foaf: <http://xmlns.com/foaf/0.1/> DESCRIBE ?x ?y <http://example.org/> WHERE {?x foaf:knows ?y}10.4.3 è³æºã®è¨è¿°
è¿ãããRDFã¯ãæ å ±ã®çºè¡è ãæ±ºå®ãã¾ããããã¯ããµã¼ãã¹ãè³æºã«ã¤ãã¦æããæçãªæ å ±ã§ããä»ã®è³æºã«é¢ããæ å ±ãå«ããã¨ãã§ãã¾ããä¾ãã°ãæ¬ã®RDFãã¼ã¿ã«ã¯ãèè ã«é¢ãã詳細ãå«ããã¨ãã§ãã¾ãã
次ã®ãããªã·ã³ãã«ãªã¯ã¨ãªã¯ã
PREFIX ent: <http://org.example.com/employees#> DESCRIBE ?x WHERE { ?x ent:employeeId "1234" }
ä¸è¨ã®ãããªã徿¥å¡ã®è¨è¿°ããä½ããã®ä»ã®æ½å¨çã«å½¹ã«ç«ã¤è©³ç´°æ å ±ãè¿ãããããã¾ããã
@prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix vcard: <http://www.w3.org/2001/vcard-rdf/3.0> . @prefix exOrg: <http://org.example.com/employees#> . @prefixrdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix owl: <http://www.w3.org/2002/07/owl#>
_:a exOrg:employeeId "1234" ;foaf:mbox_sha1sum "ABCD1234" ;
vcard:N [ vcard:Family "Smith" ; vcard:Given "John" ] .foaf:mbox_sha1sum rdf:type owl:InverseFunctionalProperty .
ããã«ã¯ãvcardèªå½vcard:Nã«å¯¾ãã空ç½ãã¼ãã»ã¯ãã¼ã¸ã£ãå«ã¾ããã¾ããã©ã®ãããªæ å ±ãè¿ãããæ±ºå®ã§ããä»ã®ã¡ã«ããºã ã«ã¯ãConcise Bounded Descriptions[CBD]ãªã©ãããã¾ãã
FOAFãªã©ã®èªå½ã§ã¯ãé常ã¯ãè³æºã¯ç©ºç½ãã¼ãã§ãããããInverseFunctionalPropertyã§ããfoaf:mbox_sha1sum
ãªã©ã®ãã¼ããèå¥ããã®ã«ååãªæ
å ±ããååããã®ä»ã®è©³ç´°ãã¼ã¿ã¨ãã£ãæ
å ±ãè¿ãã®ãé©åã§ããããä¾ã§ã¯ãWHEREå¥ã«å¯¾ããããããè¿ããã¾ããããããã¯å¿
é ã§ã¯ããã¾ããã
SPARQLã®FILTER
ã¯ãä¸ããããå¼ã«å¾ã£ã¦ã°ã©ãã»ãã¿ã¼ã³ã»ãããã®ã½ãªã¥ã¼ã·ã§ã³ãå¶éãã¾ããå
·ä½çã«ã¯ãFILTER
ã¯ãå¼ã«ä»£å
¥ããã¨ãã«ãå½ï¼false
ï¼ã®æå¹ãªãã¼ã«å¤ã«ãªã£ãããã¨ã©ã¼ãèµ·ããããããã½ãªã¥ã¼ã·ã§ã³ãæé¤ãã¾ããæå¹ãªãã¼ã«å¤ã¯11.2.2 æå¹ãªãã¼ã«å¤ã®é
ã§å®ç¾©ããã¦ãããã¨ã©ã¼ã¯XQuery1.0: XMLã¯ã¨ãªè¨èª[XQUERY]ã®2.3.1, ã¨ã©ã¼ã®ç¨®é¡ã®é
ã§å®ç¾©ããã¦ãã¾ãããããã®ã¨ã©ã¼ã¯ãFILTER
ã®è©ä¾¡ä»¥å¤ã«ã¯å½±é¿ãä¸ãã¾ããã
RDFãªãã©ã«ã¯ããã¼ã¿åIRIãæã¤ãã¨ãã§ãã¾ãã
@prefix a: <http://www.w3.org/2000/10/annotation-ns#> . @prefix dc: <http://purl.org/dc/elements/1.1/> . _:a a:annotates <http://www.w3.org/TR/rdf-sparql-query/> . _:a dc:date "2004-12-31T19:00:00-05:00" . _:b a:annotates <http://www.w3.org/TR/rdf-sparql-query/> . _:b dc:date "2004-12-31T19:01:00-05:00"^^<http://www.w3.org/2001/XMLSchema#dateTime> .
æåã®dc:date
ããªãã«ã®ç®çèªã«ã¯ãåæ
å ±ãå
¨ãããã¾ããã2çªç®ã®ãã®ã«ã¯ãxsd:dateTime
ã¨ãããã¼ã¿åãããã¾ãã
SPARQLã®å¼ã¯ææ³ã«å¾ã£ã¦æ§ç¯ããã颿°ï¼IRIã«ãã£ã¦ååãä»ããããï¼ã¨æ¼ç®å颿°ã¸ã®ã¢ã¯ã»ã¹ãæä¾ãã¾ãï¼SPARQLææ³ã®ãã¼ã¯ã¼ãã¨ã·ã³ãã«ã§å¼ã³åºãããï¼ãSPARQLã®æ¼ç®åã¯ãåä»ãªãã©ã«ã®å¤ãæ¯è¼ããããã«ä½¿ç¨ã§ãã¾ãã
PREFIX a: <http://www.w3.org/2000/10/annotation-ns#> PREFIX dc: <http://purl.org/dc/elements/1.1/> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> SELECT ?annot WHERE { ?annot a:annotates <http://www.w3.org/TR/rdf-sparql-query/> . ?annot dc:date ?date . FILTER ( ?date > "2005-01-01T00:00:00Z"^^xsd:dateTime ) }
SPARQLã®æ¼ç®åã¯ã11.3é ã«è¨è¼ããã¦ãããææ³ä¸ã®çæè¦åã«é¢é£ä»ãããã¦ãã¾ãã
ããã«ãSPARQLã¯ã11.5é ã«è¨è¼ãã¦ãããXPathãã£ã¹ã颿°ã®ãµãã»ãããå«ããä»»æã®é¢æ°ãå¼ã³åºãè½åãæä¾ãã¾ãããããã®é¢æ°ã¯ãååï¼IRIï¼ã«ãã£ã¦SPARQLã¯ã¨ãªã®ä¸ã«å¼ã³åºããã¾ããä¾ãã°æ¬¡ã®ã¨ããã§ãã
... FILTER ( xsd:dateTime(?date) < xsd:dateTime("2005-01-01T00:00:00Z") ) ...
ãã®é ã§ã¯ã次ã®è¡¨è¨ä¸ã®è¦å®ãç¨ãã¦ãã¾ãã
op:
ã§ã©ãã«ä»ãããã¦ãã¾ããXPathæ¼ç®åã«ã¯åå空éããªããop:
ã¯ã©ãã«ä»ãä¸ã®æ
£ç¿ã§ããSPARQLã®é¢æ°ã¨æ¼ç®åã¯ãRDFç¨èªã¨SPARQL夿°ãæ¼ç®ãã¾ãããããã®é¢æ°ããã³æ¼ç®åã®ãµãã»ããã¯ãXQuery 1.0ã¨XPath 2.0颿°ããã³æ¼ç®å[FUNCOP]ããæã£ã¦æ¥ããã®ã§ãXMLã¹ãã¼ãåä»ãå¤ã®å¼æ°ãæã£ã¦ãããåãè¿ãã¾ãããããã®é¢æ°ã¨æ¼ç®åã«å¼æ°ã¨ãã¦æ¸¡ãããRDFåä»ããªãã©ã«ï¼typed literals
ï¼ã¯ãåå¥å½¢å¼ï¼lexical form
ï¼ã®æååã®å¤ãæã¤XMLã¹ãã¼ãã®åä»ãå¤ã¨ãdatatype IRIï¼ãã¼ã¿åIRIï¼ã«å¯¾å¿ããã¢ãããã¯ãªãã¼ã¿åã«ãããã³ã°ããã¾ããè¿ãããåä»ãå¤ã¯ãåæ§ã«RDFã®åä»ããªãã©ã«ï¼typed literals
ï¼ã«ãããã³ã°ãè¿ããã¾ãã
SPARQLã«ã¯ãRDFç¨èªã®ç¹å®ã®ãµãã»ããã«åºã¥ãã¦æ¼ç®ããä»å çãªæ¼ç®åãããã¾ããåã«ã¤ãã¦è¿°ã¹ãã¨ãã«ã¯ã次ã®ç¨èªã¯ãXMLã¹ãã¼ã[XSDT]ã®ãã¼ã¿åIRIã«å¯¾å¿ããåä»ããªãã©ã«ï¼typed literal
ï¼ã表ãã¾ãã
次ã®ç¨èªã¯ãSPARQLå¤ãã¹ãã«ç¨ããããä»å çãªåãèå¥ãã¾ãã
xsd:integer
ãxsd:decimal
ãxsd:float
ãããã³ãxsd:double
ãæã¤åä»ããªãã©ã«ï¼typed literals
ï¼ã表ãã¾ããlanguage tag
ï¼ãæããªããã¬ã¼ã³ã»ãªãã©ã«ï¼plain literal
ï¼ã表ãã¾ããIRI
ããªãã©ã«ï¼literal
ï¼ãããã³ã空ç½ãã¼ãï¼blank node
ï¼ã®åã表ãã¾ããæ¬¡ã®åã¯ãæ°å¤ã®åããå¾ãããæ°å¤å¼æ°ãåã颿°ã¨æ¼ç®åã«å¯¾ããæå¹ãªå¼æ°ã§ãã
xsd:nonPositiveInteger
xsd:negativeInteger
xsd:long
xsd:int
xsd:short
xsd:byte
xsd:nonNegativeInteger
xsd:unsignedLong
xsd:unsignedInt
xsd:unsignedShort
xsd:unsignedByte
xsd:positiveInteger
SPARQLã®è¨èªæ¡å¼µã¯ãä»å çãªåãXMLã¹ãã¼ãã»ãã¼ã¿åããå¾ããããã®ã¨ãã¦æ±ããã¨ãã§ãã¾ãã
11.2 ãã£ã«ã¿è©ä¾¡SPARQLã¯ãXQueryæ¼ç®åãããã³ã°ã§å®ç¾©ããã颿°ã¨æ¼ç®åã®ãµãã»ãããæä¾ãã¾ããXQuery 1.0ã®2.2.3 å¼ã®å¦çã®é ã§ã¯ãXPath颿°ã®å¼ã³åºãã«ã¤ãã¦èª¬æãã¦ãã¾ããæ¬¡ã®è¦åã¯ãXQueryã¨SPARQLã®ãã¼ã¿ã¨å®è¡ã¢ãã«ã®éãã調æ´ãã¾ãã
xsd:boolean
ã«å¼·å¶å¤æããã¾ãã||
ï¼ã¾ãã¯è«çANDï¼&&
ï¼ãé¤ãä»»æã®å¼ã¯ãã¨ã©ã¼ãèµ·ããã§ããããçï¼Tï¼ãå½ï¼Fï¼ãã¨ã©ã¼ï¼Eï¼ã«å¯¾ããè«çANDã¨è«çORã®ççå¤è¡¨ã¯æ¬¡ã®éãã§ãã
A B A || B A && B T T T T T F T F F T T F F F F F T E T E E T T E F E E F E F E F E E E E 11.2.1 å¼ã³åºãSPARQLã¯ã弿°ã®ãªã¹ãã«é¢æ°ã¨æ¼ç®åãå¼ã³åºãããã®æ§æãå®ç¾©ãã¦ãã¾ãããããã¯ã次ã®éãã«å¼ã³åºããã¾ãã
ãããã®ã¹ãããã®ã©ããã失æããã°ãå¼ã³åºãã¯ã¨ã©ã¼ãèµ·ããã¾ããã¨ã©ã¼ã®å½±é¿ã¯ããã£ã«ã¿è©ä¾¡ã§å®ç¾©ããã¦ãã¾ãã
11.2.2 æå¹ãªãã¼ã«å¤ï¼EBVï¼æå¹ãªãã¼ã«å¤ã¯ãè«çANDãè«çORãããã³fn:notã®è«ç颿°ã«å¯¾ãã弿°ãè¨ç®ããããã«ç¨ããããã¾ããFILTER
å¼ã®çµæã®è©ä¾¡ãè¡ãã¾ãã
XQueryã®æå¹ãªãã¼ã«å¤ã®è¦åã¯ãXPathã®fn:booleanã®å®ç¾©ã«ä¾åãã¦ãã¾ãã以ä¸ã®è¦åã¯ãSPARQLã®ã¯ã¨ãªã«åå¨ãã¦ãã弿°ã®åã«é©ç¨ãããfn:boolean
ã®è¦åãåæ ãã¦ãã¾ãã
xsd:boolean
ã¾ãã¯æ°å¤ï¼numericï¼ã§ããä»»æã®ãªãã©ã«ã®EBVã¯ãåå¥å½¢å¼ããã®ãã¼ã¿åï¼ä¾ãã°ã"abc"^^xsd:integerï¼ã«å¯¾ãã¦å½ã§ããå ´åã¯ãå½ã§ããxsd:boolean
ã®ãã¼ã¿åãæã¤åä»ããªãã©ã«ã§ããå ´åãEBVã¯ãã®å¼æ°ã®å¤ã§ããxsd:string
ã®ãã¼ã¿åãæã¤åä»ããªãã©ã«ã§ããå ´åããªãã©ã³ãå¤ã«0ã®é·ãããããªãEBVã¯å½ã§ãããããªããã°EBVã¯çã§ããçï¼true
ï¼ã®EBVã¯ãxsd:boolean
ã®ãã¼ã¿åããã³ãçãã®åå¥å¤ãæã¤åä»ããªãã©ã«ã¨ãã¦è¡¨ããã å½ï¼falseï¼ã®EBVã¯ãxsd:boolean
ã®ãã¼ã¿åããã³ãå½ãã®åå¥å¤ãæã¤åä»ããªãã©ã«ã¨ãã¦è¡¨ããã¾ãã
SPARQLã®ææ³ã¯ãä¸é£ã®æ¼ç®åãèå¥ãï¼ä¾ãã°ã&&ã*ãisIRIï¼ãå¶ç´ãæ§ç¯ããããã«ç¨ãããã¾ãã以ä¸ã®ãã¼ãã«ã¯ããããã®ããããã®ææ³ä¸ã®çæè¦åã¨ãXQuery 1.0ã¨XPath 2.0颿°ããã³æ¼ç®å[FUNCOP]ãã¾ãã¯11.4é
ã®SPARQLæ¼ç®åã®ããããã«ãã£ã¦å®ç¾©ããã¦ããé©åãªãªãã©ã³ãããã³æ¼ç®å颿°ã¨ãé¢é£ä»ãã¾ããä¸é£ã®ãã©ã¡ã¼ã¿ã«å¯¾ããæ¼ç®åå®ç¾©ã鏿ããéã«ã¯ãæãæç¢ºãªãã©ã¡ã¼ã¿ãæã¤å®ç¾©ãé©ç¨ããã¾ããä¾ãã°ãxsd:integer = xsd:signedInt
ãè©ä¾¡ããéã«ã¯ã2ã¤ã®RDFç¨èªãæã¤=
ã«å¯¾ããå®ç¾©ã§ã¯ãªãã2ã¤ã®æ°å¤ï¼numeric
ï¼ãã©ã¡ã¼ã¿ãæã¤=
ã«å¯¾ããå®ç¾©ãé©ç¨ããã¾ãã表ã¯ãæãå®è¡å¯è½æ§ã®ããåè£ãæãæç¢ºã«ãªãããã«é
åããã¦ãã¾ããé©åãªãªãã©ã³ããªãã«å¼ã³åºãããæ¼ç®åã¯ãåã¨ã©ã¼ã«ãªãã¾ãã
SPARQLã¯ãXPathã®æ°å¤åææ ¼ï¼numeric type promotionï¼ã«å¯¾ããã¹ãã¼ã ã¨ãæ°å¤æ¼ç®åã¸ã®å¼æ°ã«å¯¾ããé¨ååç½®æï¼subtype substitutionï¼ã«å¾ãã¾ããæ°å¤ãªãã©ã³ãï¼xsd:integer
ãxsd:decimal
ãxsd:float
ãxsd:double
ãããã³æ°å¤åããå¾ãããåï¼ã®XPathæ¼ç®åãããã³ã°è¦åã¯ãSPARQLæ¼ç®åã«ãé©ç¨ããã¾ãï¼æ°å¤åææ ¼ããã³é¨ååç½®æã®å®ç¾©ã«é¢ãã¦ã¯ãXMLãã¹è¨èªï¼XPathï¼2.0[XPATH20]ãåç
§ãã¦ãã ãã)ãæ¼ç®åã®ä¸é¨ã¯ãå
¥ãåã«ããã颿°å¼ãä¾ãã°fn:not(op:numeric-equal(A, B))
ã«é¢é£ãã¦ãã¾ããXPathã®å®ç¾©ã«ãã£ã¦ãfn:not
ããã³op:numeric-equal
ã¯ã弿°ãã¨ã©ã¼ã§ããå ´åã«ã¯ã¨ã©ã¼ãèµ·ããã¾ãã
fn:compare
ã®ç
§åé åºã¯ãXPathã§å®ç¾©ãããhttp://www.w3.org/2005/xpath-functions/collation/codepoint
ã§èå¥ããã¾ãããã®ç
§åé åºã¯ãã³ã¼ããã¤ã³ãå¤ã«åºã¥ãæååã®æ¯è¼ãå¯è½ã«ãã¾ããã³ã¼ããã¤ã³ãæååã®åçæ§ã¯ãRDFç¨èªã®åçæ§ã§ãã¹ãã§ãã¾ãã
ã(EBV)ãã¨å ±ã«ãã¼ã¯ä»ããããxsd:boolean颿°ã®å¼æ°ã¯ããã®å¼æ°ã®æå¹ãªãã¼ã«å¤ã®è©ä¾¡ã«ããxsd:booleanã«å¼·å¶ããã¾ãã
11.3.1 æ¼ç®åã®æ¡å¼µæ§SPARQLã®è¨èªæ¡å¼µã¯ãæ¼ç®åã¨æ¼ç®å颿°ã®éã®ä»å çãªé¢é£ä»ããæä¾ã§ããããã¯ãä¸è¨ã®è¡¨ã«åãå ãããã¨ã«çããã§ããä»å çãªæ¼ç®åã¯ãä¸è¨ã§å®ç¾©ããã»ãã³ãã£ã¯ã¹ã«ãããåã¨ã©ã¼ä»¥å¤ã®çµæã«ä»£ããçµæããããããªãããããã¾ããããã®è¦åã®çµæã¯ãSPARQLã®æ¡å¼µãå°ãªãã¨ãåãã½ãªã¥ã¼ã·ã§ã³ãæªæ¡å¼µã®å®è£ ã¨ãã¦ä½æããããã¤ãã®ã¯ã¨ãªã«å¯¾ããããå¤ãã®ã½ãªã¥ã¼ã·ã§ã³ã使ãããããããªãã¨ãããã®ã§ãã
ã<ãæ¼ç®åã®è¿½å ãããã³ã°ã¯ãç¹ã«ãORDER BY
å¥ã§ç¨ããããã¨ãã«ããªãã©ã³ãã®ç¸å¯¾çãªé åºä»ããå¶å¾¡ããã¨äºæ³ããã¾ãã
ãã®é ã§ã¯ãSPARQLã¯ã¨ãªè¨èªã§å°å ¥ãããæ¼ç®åãå®ç¾©ãã¾ããä¾ã§ã¯ãé©åãªææ³æ§é ã«ãã£ã¦å¼ã³åºãããéã®æ¼ç®åã®åä½ã示ãã¦ãã¾ãã
11.4.1 ãã¤ã³ãxsd:boolean
bound
(variable
var
)
var
ãå¤ã«ãã¤ã³ãããã¦ããå ´åã¯ãçï¼trueï¼ãè¿ãã¾ããããã§ãªãå ´åã¯ãå½ï¼falseï¼ãè¿ãã¾ããNaNã¾ãã¯INFã®å¤ãæã¤å¤æ°ã¯ããã¤ã³ãããã¦ããã¨ã¿ãªããã¾ãã
ãã¼ã¿:
@prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix dc: <http://purl.org/dc/elements/1.1/> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . _:a foaf:givenName "Alice". _:b foaf:givenName "Bob" . _:b dc:date "2005-04-04T04:04:04Z"^^xsd:dateTime .
PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX dc: <http://purl.org/dc/elements/1.1/> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>SELECT ?name WHERE { ?x foaf:givenName ?givenName . OPTIONAL { ?x dc:date ?date } . FILTER ( bound(?date) ) }
ã¯ã¨ãªçµæ:
夿°ãå°å
¥ããOPTIONAL
ã°ã©ãã»ãã¿ã¼ã³ãæå®ãã夿°ããã¤ã³ãããã¦ããªãï¼not
bound
ï¼ãã¨ã確èªãããã¹ããè¡ããã¨ã«ãã£ã¦ã°ã©ãã»ãã¿ã¼ã³ã表ããã¦ããªããã¨ããã¹ãã§ãã¾ããããã¯è«çããã°ã©ãã³ã°ã§ã¯ã失æã«ããå¦å®ï¼Negation as Failureï¼ã¨å¼ã°ãã¾ãã
ãã®ã¯ã¨ãªã¯ãååï¼name
ï¼ãæã¤ããæ¥ä»ï¼date
ï¼ã®è¡¨ç¾ãæããªã人ã«ããããã¾ãã
PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX dc: <http://purl.org/dc/elements/1.1/> SELECT ?name WHERE { ?x foaf:givenName ?name . OPTIONAL { ?x dc:date ?date } . FILTER (!bound(?date)) }
ã¯ã¨ãªçµæ:
Bobã®dc:date
ã¯æ¢ç¥ã§ãã£ãããã"Bob"
ã¯ã¯ã¨ãªã®ã½ãªã¥ã¼ã·ã§ã³ã«ã¯ãªãã¾ããã§ããã
xsd:boolean
isIRI
(RDF term
term
)xsd:boolean
isURI
(RDF term
term
)
ç¨èªï¼term
ï¼ãIRIã§ããå ´åã¯ãçï¼true
ï¼ãè¿ãã¾ããããã§ãªãå ´åã¯ãå½ï¼false
ï¼ãè¿ãã¾ããisURI
ã¯ãisIRI
æ¼ç®åã®å¥ã®ã¹ãã«ã§ãã
@prefix foaf: <http://xmlns.com/foaf/0.1/> . _:a foaf:name "Alice". _:a foaf:mbox <mailto:alice@work.example> . _:b foaf:name "Bob" . _:b foaf:mbox "bob@work.example" .
ãã®ã¯ã¨ãªã¯ãååï¼name
ï¼ã¨ãIRIã§ããmbox
ãæã¤äººã«ããããã¾ãã
PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?name ?mbox WHERE { ?x foaf:name ?name ; foaf:mbox ?mbox . FILTER isIRI(?mbox) }
ã¯ã¨ãªçµæ:
name mbox "Alice" <mailto:alice@work.example> 11.4.3 isBlankxsd:boolean
isBlank
(RDF term
term
)
ç¨èªï¼term
ï¼ã空ç½ãã¼ãã§ããå ´åã¯ãçï¼true
ï¼ãè¿ãã¾ããããã§ãªãå ´åã¯ãå½ï¼false
ï¼ãè¿ãã¾ãã
@prefix a: <http://www.w3.org/2000/10/annotation-ns#> . @prefix dc: <http://purl.org/dc/elements/1.1/> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . _:a a:annotates <http://www.w3.org/TR/rdf-sparql-query/> . _:a dc:creator "Alice B. Toeclips" . _:b a:annotates <http://www.w3.org/TR/rdf-sparql-query/> . _:b dc:creator _:c . _:c foaf:given "Bob". _:c foaf:family "Smith".
ãã®ã¯ã¨ãªã¯ãååã表ãããã«FOAFèªå½ã®è¿°èªãç¨ãã¦ããdc:creator
ãæã¤äººã«ããããã¾ãã
PREFIX a: <http://www.w3.org/2000/10/annotation-ns#>PREFIX dc: <http://purl.org/dc/elements/1.1/> PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?given ?family WHERE { ?annot a:annotates <http://www.w3.org/TR/rdf-sparql-query/> . ?annot dc:creator ?c . OPTIONAL { ?c foaf:given ?given ; foaf:family ?family } . FILTER isBlank(?c) }
ã¯ã¨ãªçµæ:
given family "Bob" "Smith"ãã®ä¾ã§ã¯ãfoaf:knows
ã¨ããè¿°èªã®ç®çèªã2ã¤ããã¾ãããããã£ã1ã¤ã®ï¼_:c
ï¼ã空ç½ãã¼ãã§ããã
xsd:boolean
isLiteral
(RDF term
term
)
ç¨èªï¼term
ï¼ããªãã©ã«ã§ããå ´åãçï¼true
ï¼ãè¿ãã¾ããããã§ãªãå ´åã¯ãå½ï¼false
ï¼ãè¿ãã¾ãã
@prefix foaf: <http://xmlns.com/foaf/0.1/> . _:a foaf:name "Alice". _:a foaf:mbox <mailto:alice@work.example> . _:b foaf:name "Bob" . _:b foaf:mbox "bob@work.example" .
ãã®ã¯ã¨ãªã¯ãååï¼name
ï¼ã¨ããªãã©ã«ã§ããmbox
ãæã¤äººã«ãããããç¹ãé¤ãã¦ã11.4.2ã®ãã®ã¨é¡ä¼¼ãã¦ãã¾ããããã¯ãã¨ã©ã¼ã®ãããã¼ã¿ãæ¢ãããã«ä½¿ç¨ã§ããã§ãããï¼foaf:mbox
ã¯ãç®çèªã¨ãã¦1ã¤ã®IRIã®ã¿ãæã£ã¦ããã¯ãã§ãï¼ã
PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?name ?mbox WHERE { ?x foaf:name ?name ; foaf:mbox ?mbox . FILTER isLiteral(?mbox) }
ã¯ã¨ãªçµæ:
name mbox "Bob" "bob@work.example" 11.4.5 strsimple literal
str
(literal
ltrl
)simple literal
str
(IRI
rsrc
)
ltrl
ï¼ãªãã©ã«ï¼ã®åå¥å½¢å¼ãè¿ããrsrc
ï¼IRIï¼ã³ã¼ããã¤ã³ã表ç¾ãè¿ãã¾ããããã¯ãIRIã®é¨åãä¾ãã°ããã¹ãåã調ã¹ãã®ã«å½¹ã«ç«ã¡ã¾ãã
@prefix foaf: <http://xmlns.com/foaf/0.1/> . _:a foaf:name "Alice". _:a foaf:mbox <mailto:alice@work.example> . _:b foaf:name "Bob" . _:b foaf:mbox <mailto:bob@home.example> .
ãã®ã¯ã¨ãªã¯ã次ã®ã¨ãããèªåéã®foafãããã£ã¼ã«ã§work.example
ã®ã¢ãã¬ã¹ã使ç¨ãã人ã
ã®éåãé¸ã³åºãã¾ãã
PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?name ?mbox WHERE { ?x foaf:name ?name ; foaf:mbox ?mbox . FILTER regex(str(?mbox), "@work.example") }
ã¯ã¨ãªçµæ:
name mbox "Alice" <mailto:alice@work.example> 11.4.6 langsimple literal
lang
(literal
ltrl
)
ltrl
ã®è¨èªã¿ã°ï¼language tag
ï¼ï¼ãããããå ´åï¼ãè¿ãã¾ããltrl
ã«è¨èªã¿ã°ï¼language tag
ï¼ããªãå ´åã¯ã""
ãè¿ãã¾ããRDFãã¼ã¿ã»ã¢ãã«ã空ã®è¨èªã¿ã°ï¼language tag
ï¼ãæã¤ãªãã©ã«ãå«ãã§ããªããã¨ã«æ³¨æãã¦ãã ããã
@prefix foaf: <http://xmlns.com/foaf/0.1/> . _:a foaf:name "Robert"@EN. _:a foaf:name "Roberto"@ES. _:a foaf:mbox <mailto:bob@work.example> .
ãã®ã¯ã¨ãªã¯ãã¹ãã¤ã³èªã®foaf:name
ã¨foaf:mbox
ãçºè¦ãã¾ãã
PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?name ?mbox WHERE { ?x foaf:name ?name ; foaf:mbox ?mbox . FILTER ( lang(?name) = "ES" ) }
ã¯ã¨ãªçµæ:
name mbox "Roberto"@ES <mailto:bob@work.example> 11.4.7 datatypeIRI
datatype
(typed literal
typedLit
)IRI
datatype
(simple literal
simpleLit
)
typedLit
ã®ãã¼ã¿åIRIï¼datatype IRI
ï¼ãè¿ãããã©ã¡ã¼ã¿ãã·ã³ãã«ãªãªãã©ã«ã§ããå ´åã¯ãxsd:string
ãè¿ãã¾ãã
@prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix eg: <http://biometrics.example/ns#> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . _:a foaf:name "Alice". _:a eg:shoeSize "9.5"^^xsd:float . _:b foaf:name "Bob". _:b eg:shoeSize "42"^^xsd:integer .
ãã®ã¯ã¨ãªã¯ãæ´æ°ã§ããshoeSizeãæã¤ãã¹ã¦ã®äººã®foaf:name
ã¨foaf:shoeSize
ãçºè¦ãã¾ãã
PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> PREFIX eg: <http://biometrics.example/ns#> SELECT ?name ?shoeSize WHERE { ?x foaf:name ?name ; eg:shoeSize ?shoeSize . FILTER ( datatype(?shoeSize) = xsd:integer ) }
ã¯ã¨ãªçµæ:
11.4.8 logical-orxsd:boolean
xsd:boolean
left
||
xsd:boolean
right
å·¦ï¼left
ï¼ã¨å³ï¼right
ï¼ã®è«çåï¼OR
ï¼ãè¿ãã¾ããlogical-or
ããã®å¼æ°ã®æå¹ãªãã¼ã«å¤ã«åºã¥ãã¦æ¼ç®ãè¡ããã¨ã«æ³¨æãã¦ãã ããã
注æ: ||
æ¼ç®åã®ã¨ã©ã¼ã®å¦çã«é¢ãã¦ã¯ã11.2é
ã®ãã£ã«ã¿è©ä¾¡ãåç
§ãã¦ãã ããã
xsd:boolean
xsd:boolean
left
&&
xsd:boolean
right
å·¦ï¼left
ï¼ã¨å³ï¼right
ï¼ã®è«çç©ï¼AND
ï¼ãè¿ãã¾ããlogical-and
ããã®å¼æ°ã®æå¹ãªãã¼ã«å¤ã«åºã¥ãã¦æ¼ç®ãããã¨ã«æ³¨æãã¦ãã ããã
注æ: &&
æ¼ç®åã®ã¨ã©ã¼ã®å¦çã«é¢ãã¦ã¯ã11.2é
ã®ãã£ã«ã¿è©ä¾¡ãåç
§ãã¦ãã ããã
xsd:boolean
RDF term
term1
=
RDF term
term2
RDFï¼Resource Description Frameworkï¼: æ¦å¿µããã³æ½è±¡æ§æ[CONCEPTS]ã§å®ç¾©ããã¦ããã¨ãããterm1
ã¨term2
ãåãRDFç¨èª*ã§ãªãå ´åã¯ãTRUEãè¿ãã¾ãã両æ¹ã®å¼æ°ããªãã©ã«ã§ããããã©ãåãRDFç¨èªã§ã¯ãªãå ´åã¯ãåã¨ã©ã¼ãèµ·ãããããã§ãªãå ´åã¯ãFALSEãè¿ãã¾ããæ¬¡ã®ãããããçã§ããå ´åã¯ãterm1
ã¨term2
ã¯åãã§ãã
term1
ã¨term2
ã¯ã[CONCEPTS]ã®6.4 RDF URIåç
§ã§å®ç¾©ããã¦ããã¨ãããåçãªIRIã§ããterm1
ã¨term2
ã¯ã[CONCEPTS]ã®6.5.1 ãªãã©ã«ã®åçæ§ã§å®ç¾©ããã¦ããã¨ãããåçãªãªãã©ã«ã§ããterm1
ã¨term2
ã¯ã[CONCEPTS]ã®6.6 空ç½ãã¼ãã§è¿°ã¹ããã¦ããã¨ãããåã空ç½ãã¼ãã§ãã@prefix foaf: <http://xmlns.com/foaf/0.1/> . _:a foaf:name "Alice". _:a foaf:mbox <mailto:alice@work.example> . _:b foaf:name "Ms A.". _:b foaf:mbox <mailto:alice@work.example> .
ãã®ã¯ã¨ãªã¯ãè¤æ°ã®foaf:name
ããªãã«ãæã¤äººãçºè¦ãã¾ãã
PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?name1 ?name2 WHERE { ?x foaf:name ?name1 ; foaf:mbox ?mbox1 . ?y foaf:name ?name2 ; foaf:mbox ?mbox2 . FILTER (?mbox1 = ?mbox2 && ?name1 != ?name2) }
ã¯ã¨ãªçµæ:
name1 name2 "Alice" "Ms A." "Ms A." "Alice"å æ¥ï¼2004å¹´ã2005å¹´ï¼ã«ã¢ããã¼ã·ã§ã³ãä»ä¸ãããããã¥ã¡ã³ãã«é¢ãããã®ã¯ã¨ãªã¯ãRDFç¨èªã¯åãã§ã¯ããã¾ããããåçãªå¤ãæã£ã¦ãã¾ãã
@prefix a: <http://www.w3.org/2000/10/annotation-ns#> . @prefix dc: <http://purl.org/dc/elements/1.1/> . _:b a:annotates <http://www.w3.org/TR/rdf-sparql-query/> . _:b dc:date "2004-12-31T19:00:00-05:00"^^<http://www.w3.org/2001/XMLSchema#dateTime> .
PREFIX a: <http://www.w3.org/2000/10/annotation-ns#> PREFIX dc: <http://purl.org/dc/elements/1.1/> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> SELECT ?annotates WHERE { ?annot a:annotates ?annotates . ?annot dc:date ?date . FILTER ( ?date = xsd:dateTime("2005-01-01T00:00:00Z") ) }annotates <http://www.w3.org/TR/rdf-sparql-query/>
2ã¤ã®åä»ããªãã©ã«ã«RDFterm-equalãå¼ã³åºããã¨ã§ãåçãªå¤ããã¹ããã¾ããæ¡å¼µãããå®è£
ã«ã¯ãä»å çãªãã¼ã¿åã®ãµãã¼ããããããããã¾ãããæªãµãã¼ãã®ãã¼ã¿åï¼ããã³ãç°ãªãåå¥å½¢å¼ã¨ãã¼ã¿åIRIï¼ã®åçæ§ããã¹ãããã¯ã¨ãªãå¦çããå®è£
ã¯ã¨ã©ã¼ãè¿ããå¤ãåçãã©ãããæ±ºå®ã§ããªãã£ããã¨ã示ãã¾ããä¾ãã°ã"iiii"^^my:romanNumeral = "iv"^^my:romanNumeral
ã"iiii"^^my:romanNumeral != "iv"^^my:romanNumeral
ã®ããããã®ãã¹ããè¡ã£ãå ´åãæªæ¡å¼µã®å®è£
ã«ã¨ã©ã¼ãçãã¾ãã
xsd:boolean
sameTerm
(RDF term
term1
,RDF term
term2
)
RDFï¼Resource Description Frameworkï¼: æ¦å¿µããã³æ½è±¡æ§æ[CONCEPTS]ã§å®ç¾©ããã¦ããã¨ãããterm1
ã¨term2
ãåãRDFç¨èªã§ããå ´åã¯ãTRUEãè¿ããããã§ãªãå ´åã¯ãFALSEãè¿ãã¾ãã
@prefix foaf: <http://xmlns.com/foaf/0.1/> . _:a foaf:name "Alice". _:a foaf:mbox <mailto:alice@work.example> . _:b foaf:name "Ms A.". _:b foaf:mbox <mailto:alice@work.example> .
ãã®ã¯ã¨ãªã¯ãè¤æ°ã®foaf:name
ããªãã«ãæã¤äººãçºè¦ãã¾ãã
PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?name1 ?name2 WHERE { ?x foaf:name ?name1 ; foaf:mbox ?mbox1 . ?y foaf:name ?name2 ; foaf:mbox ?mbox2 . FILTER (sameTerm(?mbox1, ?mbox2) && !sameTerm(?name1, ?name2)) }
ã¯ã¨ãªçµæ:
name1 name2 "Alice" "Ms A." "Ms A." "Alice"RDFterm-equal
ã¨ã¯ç°ãªããsameTerm
ã¯ãæªãµãã¼ãã®ãã¼ã¿åãæã¤éåçãªåä»ããªãã©ã«ããã¹ãããããã«ä½¿ç¨ã§ãã¾ãã
@prefix : <http://example.org/WMterms#> . @prefix t: <http://example.org/types#> . _:c1 :label "Container 1" . _:c1 :weight "100"^^t:kilos . _:c1 :displacement "100"^^t:liters . _:c2 :label "Container 2" . _:c2 :weight "100"^^t:kilos . _:c2 :displacement "85"^^t:liters . _:c3 :label "Container 3" . _:c3 :weight "85"^^t:kilos . _:c3 :displacement "85"^^t:liters .
PREFIX : <http://example.org/WMterms#> PREFIX t: <http://example.org/types#> SELECT ?aLabel1 ?bLabel WHERE { ?a :label ?aLabel . ?a :weight ?aWeight . ?a :displacement ?aDisp . ?b :label ?bLabel . ?b :weight ?bWeight . ?b :displacement ?bDisp . FILTER ( sameTerm(?aWeight, ?bWeight) && !sameTerm(?aDisp, ?bDisp) }aLabel bLabel "Container 1" "Container 2" "Container 2" "Container 1"
"100"^^t:kilos = "85"^^t:kilos
ã®ãã¹ããããã®çæããããã½ãªã¥ã¼ã·ã§ã³ãæé¤ãã¦ãã¨ã©ã¼ããããããããåãéãã®ç®±ã®ãã¹ãã¯ã=ãæ¼ç®åï¼RDFterm-equalï¼ã§ãè¡ãã¾ãã
xsd:boolean
langMatches
(simple literal
language-tag
,simple literal
language-range
)
language-tag
ï¼æåã®å¼æ°ï¼ãã[RFC4647]ã®3.3.1é
ã§å®ç¾©ããã¦ããåºæ¬çãªãã£ã«ã¿ãªã³ã°ã»ã¹ãã¼ã ã§language-range
ï¼2çªç®ã®å¼æ°ï¼ã«ãããããå ´åã¯ãçï¼true
ï¼ãè¿ãã¾ããlanguage-range
ã¯ã[RFC4647]ã®2.1.é
ã®è¨èªã¿ã°ã®ãããã³ã°ã«ããã¨ããã®åºæ¬è¨èªã®ç¯å²ã§ããã*ãã®language-range
ã¯ãä»»æã®ç©ºã§ãªãlanguage-tag
æååã«ããããã¾ãã
@prefix dc: <http://purl.org/dc/elements/1.1/> . _:a dc:title "That Seventies Show"@en . _:a dc:title "Cette Série des Années Soixante-dix"@fr . _:a dc:title "Cette Série des Années Septante"@fr-BE . _:b dc:title "Il Buono, il Bruto, il Cattivo" .
ãã®ã¯ã¨ãªã§ã¯ãè±èªã§ãThat Seventies Showãã¨ãã¦ç¥ããã¦ããã·ã§ã¼ã«å¯¾ãããã©ã³ã¹èªã®ã¿ã¤ãã«ãçºè¦ããããã«ãlangMatches
ã¨lang
ï¼11.2.3.8é
ã§è¿°ã¹ãï¼ã使ç¨ãã¦ãã¾ãã
PREFIX dc: <http://purl.org/dc/elements/1.1/> SELECT ?title WHERE { ?x dc:title "That Seventies Show"@en ; dc:title ?title . FILTER langMatches( lang(?title), "FR" ) }
ã¯ã¨ãªçµæ:
title "Cette Série des Années Soixante-dix"@fr "Cette Série des Années Septante"@fr-BEæå¥ç表ç¾langMatches( lang( ?v ), "*" )
ã¯ãlang( ?v )
ãç©ºã®æååãè¿ããããè¨èªã¿ã°ãªãã§ã¯ãªãã©ã«ã«ãããããªãã§ãããããã®ããã
PREFIX dc: <http://purl.org/dc/elements/1.1/> SELECT ?title WHERE { ?x dc:title ?title . FILTER langMatches( lang(?title), "*" ) }
ã¯ãè¨èªã¿ã°ãæã¤ã¿ã¤ãã«ã®ãã¹ã¦ãå ±åããã§ãããã
title "That Seventies Show"@en "Cette Série des Années Soixante-dix"@fr "Cette Série des Années Septante"@fr-BE 11.4.13 regexxsd:boolean
regex
(simple literal
text
,simple literal
pattern
)xsd:boolean
regex
(simple literal
text
,simple literal
pattern
,simple literal
flags
)
æ£è¦è¡¨ç¾ãã¿ã¼ã³ï¼pattern
ï¼ã«å¯¾ãã¦ããã¹ãï¼text
ï¼ãããããããããã«XPath fn:matches颿°ãå¼ã³åºãã¾ããæ£è¦è¡¨ç¾è¨èªã¯ãXQuery 1.0ã¨XPath 2.0颿°ããã³æ¼ç®åã®7.6.1 æ£è¦è¡¨ç¾æ§æ[FUNCOP]ã®é
ã§å®ç¾©ããã¦ãã¾ãã
@prefix foaf: <http://xmlns.com/foaf/0.1/> . _:a foaf:name "Alice"._:b foaf:name "Bob" .
PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?name WHERE { ?x foaf:name ?name FILTER regex(?name, "^ali", "i") }
ã¯ã¨ãªçµæ:
11.5 ã³ã³ã¹ãã©ã¯ã¿é¢æ°SPARQLã¯ãXQuery 1.0ã¨XPath 2.0颿°ããã³æ¼ç®å[FUNCOP]ã®17.1 ããªããã£ãåããããªããã£ãåã¸ã®ãã£ã¹ãã£ã³ã°ã§å®ç¾©ããã¦ããXPathã³ã³ã¹ãã©ã¯ã¿é¢æ°ã®ãµãã»ãããã¤ã³ãã¼ããã¾ããSPARQLã³ã³ã¹ãã©ã¯ã¿ã¯ãRDFãã¼ã¿ã»ã¢ãã«ãè¦å®ãã¦ããSPARQLãªãã©ã³ãã»ãã¼ã¿åã¨ä»å çãªãã¼ã¿åã®XPathã³ã³ã¹ãã©ã¯ã¿ã®ãã¹ã¦ãå«ãã§ãã¾ããSPARQLã®ãã£ã¹ãã£ã³ã°ã¯ãæ å ±æºã®åã®ãªãã©ã³ãã«ã¿ã¼ã²ããåã«å¯¾ããã³ã³ã¹ãã©ã¯ã¿é¢æ°ãå¼ã³åºããã¨ã«ãã£ã¦å®è¡ããã¾ãã
XPathã¯ã1ã¤ã®XMLã¹ãã¼ãã»ãã¼ã¿åããå¥ã®ãã¼ã¿åã¸ã®ãã£ã¹ãã®ã¿ãå®ç¾©ãã¦ãã¾ããæ®ãã®ãã£ã¹ãã¯ã次ã®éãå®ç¾©ããã¦ãã¾ãã
xsd:string
ã«ãã£ã¹ãããã¨ããã®IRIãæ§æããã³ã¼ããã¤ã³ãã®åå¥å¤ãæã¤åä»ããªãã©ã«ãããã³xsd:string
ã®ãã¼ã¿åã使ããã¾ããxsd:string
ããã£ã¹ãããã¨ãã®çæç©ã§ããã¨å®ç¾©ããã¾ããæ¬¡ã®è¡¨ã§ã¯ããã£ã¹ãã£ã³ã°æä½ã常ã«è¨±ããããã®ï¼Yï¼ã決ãã¦è¨±ãããªããã®ï¼Nï¼ãåå¥å¤æ¬¡ç¬¬ã®ãã®ï¼Mï¼ã«ã¾ã¨ãã¦ãã¾ããä¾ãã°ãxsd:string
ï¼æåã®è¡ï¼ããxsd:float
ï¼2çªç®ã®åï¼ã¸ã®ãã£ã¹ãã£ã³ã°æä½ã¯ãåå¥å¤ï¼Mï¼æ¬¡ç¬¬ã§ãã
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 11.6 æ¡å¼µå¯è½ãªå¤ãã¹ãbool = xsd:boolean
dbl = xsd:double
flt = xsd:float
dec = xsd:decimal
int = xsd:integer
dT = xsd:dateTime
str = xsd:string
IRI = IRI
ltrl =simple literal
PrimaryExpressionã®ææ³è¦åã¯ãIRIã§æå®ãããæ¡å¼µé¢æ°ã¸ã®å¼ã³åºãã§ãããã¾ããæ¡å¼µé¢æ°ã¯ãRDFç¨èªã®ããã¤ãã弿°ã¨è¦ãªãã¦ãRDFç¨èªãè¿ãã¾ãããããã®é¢æ°ã®ã»ãã³ãã£ã¯ã¹ã¯ã颿°ãèå¥ããIRIã«ãã£ã¦èå¥ããã¾ãã
æ¡å¼µé¢æ°ãç¨ããSPARQLã¯ã¨ãªã¯ãç¸äºéç¨æ§ãå¶éããå¯è½æ§ãããã¾ãã
ä¾ã¨ãã¦ãfunc:even
ã¨å¼ã°ãã颿°ãåãä¸ãã¾ãã
xsd:boolean
func:even
(numeric
value
)
ãã®é¢æ°ã¯ã次ã®ã¨ããããããããã®ã¨ãã¦FILTERã«å¼ã³åºãããã§ãããã
PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX func: <http://example.org/functions#> SELECT ?name ?id WHERE { ?x foaf:name ?name ; func:empId ?id . FILTER (func:even(?id)) }
2çªç®ã®ä¾ã§ã¯ã2ã¤ã®å°ç¹ã®éã®è·é¢ãè¨ç®ãã颿°aGeo:distance
ã«ã¤ãã¦èãã¦ã¿ã¾ããããã§ã¯ããããã°ã«ãã¼ãã«ï¼Grenobleï¼ä»è¿ã®å ´æãçºè¦ããããã«ç¨ãã¾ãã
xsd:double
aGeo:distance
(numeric
x1
,numeric
y1
,numeric
x2
,numeric
y2
)
PREFIX aGeo: <http://example.org/geo#> SELECT ?neighbor WHERE { ?a aGeo:placeName "Grenoble" . ?a aGeo:location ?axLoc . ?a aGeo:location ?ayLoc . ?b aGeo:placeName ?neighbor . ?b aGeo:location ?bxLoc . ?b aGeo:location ?byLoc . FILTER ( aGeo:distance(?axLoc, ?ayLoc, ?bxLoc, ?byLoc) < 10 ) . }
æ¡å¼µé¢æ°ã¯ãã³ã¢SPARQL仿§ã§ãµãã¼ãããã¦ããªãã¢ããªã±ã¼ã·ã§ã³ã»ãã¼ã¿åããã¹ãããããã«ç¨ããããããããããä¾ãã°ããã¯ãå¥ã®æ¥ä»ãã©ã¼ãããããXSD dateTime RDFç¨èªã¸ã®ãã¼ã¿åãã©ã¼ãããéã®å¤æã§ããããããã¾ããã
12 SPARQLã®å®ç¾©ãã®é ã§ã¯ãã¯ã¨ãªæååã¨RDFãã¼ã¿ã»ãããåæã«ãã°ã©ãã»ãã¿ã¼ã³ã¨ã½ãªã¥ã¼ã·ã§ã³ä¿®é£¾åã®è©ä¾¡ã®ã«å¯¾ããæ£ããè¡åãå®ç¾©ãã¾ããããã¯ãSPARQLå®è£ ãããã§å®ç¾©ãããããã»ã¹ã使ç¨ããªããã°ãªããªãã¨ãããã¨ãæå³ãã¾ããã
SPARQLãå®è¡ããçµæã¯ãSPARQLã¯ã¨ãªãæååã¨ãã¦éå§ãããã®æååãæ½è±¡æ§æå½¢å¼ã«å¤ããæ¬¡ã«ããã®æ½è±¡æ§æãSPARQLã®ä»£æ°ã®æ¼ç®åã§æ§æãããSPARQLæ½è±¡ã¯ã¨ãªã«å¤ãããã¨ããä¸é£ã®ã¹ãããã§å®ç¾©ããã¾ãããã®å¾ããã®æ½è±¡ã¯ã¨ãªã¯ãRDFãã¼ã¿ã»ããã§è©ä¾¡ããã¾ãã
12.1 åæå®ç¾© 12.1.1 RDFç¨èªSPARQLã¯ãIRI[RFC3987]ã®ç¨èªã§å®ç¾©ããã¦ãã¾ããIRIã¯ãã¹ãã¼ã¹ãçç¥ããRDF URIåç §ã®ãµãã»ããã§ãã
å®ç¾©: RDFç¨èªIããã¹ã¦ã®IRIã®éåã¨ããã
RDF-Lããã¹ã¦ã®RDFãªãã©ã«ã®éåã¨ããã
RDF-Bããã¹ã¦ã®RDFã°ã©ãã«ããã空ç½ãã¼ãã®éåã¨ããã
RDFç¨èªã®éåãRDF-Tã¯ãI union RDF-L union RDF-Bã§ãã
RDFç¨èªã®ãã®å®ç¾©ã¯ãRDFãã¼ã¿ã»ã¢ãã«ã®ããã¤ãã®åºæ¬çãªæ¦å¿µãã¾ã¨ãã¦ãã¾ãããRDF URIåç §ã§ã¯ãªãIRIãåç §è¨ããããã«æ´æ°ããã¦ãã¾ãã
12.1.2 RDFãã¼ã¿ã»ãã å®ç¾©: RDFãã¼ã¿ã»ããRDFãã¼ã¿ã»ããã¯ä»¥ä¸ã®éåã§ãã
{ G, (<u1>, G1), (<u2>, G2), . . . (<un>, Gn) }
ããã§ã¯ãGã¨åGiã¯ã°ã©ãã§ãããå<ui>ã¯IRIã§ããå<ui>ã¯distinctã§ãã
Gã¯ããã©ã«ãã»ã°ã©ãã¨å¼ã°ãã¾ããï¼<ui>, Giï¼ã¯ååä»ãã°ã©ãã¨å¼ã°ãã¾ãã
å®ç¾©: ã¢ã¯ãã£ãã»ã°ã©ãã¢ã¯ãã£ãã»ã°ã©ãã¯ãåºæ¬ã°ã©ããã¿ã¼ã³ã»ãããã³ã°ã«ç¨ãããããã¼ã¿ã»ããã®ã° ã©ãã§ãã
12.1.3 ã¯ã¨ãªå¤æ° å®ç¾©: ã¯ã¨ãªå¤æ°ã¯ã¨ãªå¤æ°ã¯ãVãç¡éã§ãããRDF-Tã¨äºãã«ç´ ãªéåVã®ã¡ã³ãã¼ã§ãã
12.1.4 ããªãã«ã»ãã¿ã¼ã³ å®ç¾©: ããªãã«ã»ãã¿ã¼ã³ããªãã«ã»ãã¿ã¼ã³ã¯ã次ã®éåã®ã¡ã³ãã¼ã§ãã
(RDF-T union V) x (I union V) x (RDF-T union V)
ããªãã«ã»ãã¿ã¼ã³ã®ãã®å®ç¾©ã«ã¯ããªãã©ã«ã®ä¸»èªãå«ã¾ãã¦ãã¾ããããã¯ãRDF-ã³ã¢ã§æ³¨è¨ããã¦ãã¾ãã
ã[RDFã³ã¢ã»ã¯ã¼ãã³ã°ã°ã«ã¼ãã¯]ãªãã©ã«ã主èªã§ãã£ã¦ã¯ãªããªãçç±ããªããã¨ã æ¿ç¥ãã¦ããã¨è¿°ã¹ã¾ãããããã¦ãããå¶éã®ãªãæ²ç« ãæã¤å°æ¥ã®WGã¯ãã¹ãã¼ãã¡ã³ ãã®ä¸»èªã¨ãã¦ã®ãªãã©ã«ã許容ããããã«æ§æãæ¡å¼µããããããã¾ãããã
RDFã°ã©ãã¯ãªãã©ã«ã®ä¸»èªãå«ã¾ãªããããããªãããããªãã©ã«ã主èªã¨ãã¦æã¤ä»»æã®SPARQLããªãã«ã»ãã¿ã¼ã³ã¯ãã©ããªRDFã°ã©ãã«ããããããªãã§ãããã
12.1.5 åºæ¬ã°ã©ãã»ãã¿ã¼ã³ç©ºã®ã°ã©ãã»ãã¿ã¼ã³ã¯ã空éåã§ããåºæ¬ã°ã©ãã»ãã¿ã¼ã³ã§ãã
12.1.6 ã½ãªã¥ã¼ã·ã§ã³ã»ãããã³ã°ã½ãªã¥ã¼ã·ã§ã³ã»ãããã³ã°ã¯ã1çµã®å¤æ°ãã1çµã®RDFç¨èªã¸ã®ãããã³ã°ã§ããæã ã¯ããããæç¢ºã§ããå ´åã«ãã½ãªã¥ã¼ã·ã§ã³ãã¨ããç¨èªã使ç¨ãã¾ãã
å®ç¾©: ã½ãªã¥ã¼ã·ã§ã³ã»ãããã³ã°ã½ãªã¥ã¼ã·ã§ã³ã»ãããã³ã°ãμã¯ãé¨å颿°μ : V -> Tã§ãã
μã®å®ç¾©åãdom(μ)ã¯ãμãå®ç¾©ããã¦ããå ´åã®Vã®ãµãã»ããã§ãã
12.1.7 ã½ãªã¥ã¼ã·ã§ã³ã»ã·ã¼ã±ã³ã¹ä¿®é£¾å å®ç¾©: ã½ãªã¥ã¼ã·ã§ã³ã»ã·ã¼ã±ã³ã¹ä¿®é£¾åã½ãªã¥ã¼ã·ã§ã³ã»ã·ã¼ã±ã³ã¹ä¿®é£¾åã¯ã次ã®ãã¡ã®1ã¤ã§ãã
ãã®é ã¯ãSPARQLã¯ã¨ãªæååå ã®ã°ã©ãã»ãã¿ã¼ã³ã¨ã½ãªã¥ã¼ã·ã§ã³ä¿®é£¾åãSPARQL代æ°å¼ã«å¤æããããã»ã¹ãå®ç¾©ãã¾ãã
SPARQLã¯ã¨ãªæååãåæãã4é ã§ç¤ºããIRIã¨ããªãã«ã»ãã¿ã¼ã³ã«çç¥å½¢ãé©ç¨ããå¾ã«ã次ã®è¡¨ã§æ§æãããæ½è±¡æ§ææ¨ãããã¾ãã
ãã¿ã¼ã³ 修飾å ã¯ã¨ãªå½¢å¼ RDF terms DISTINCT SELECT triple patterns REDUCED CONSTRUCT Basic graph patterns PROJECT DESCRIBE Groups ORDER BY ASK OPTIONAL LIMIT UNION OFFSET GRAPH FILTERãã®ãããªæ½è±¡æ§ææ¨ã夿ããçµæã¯ã次ã®è¡¨ã®ç¬¦å·ãSPARQL代æ°ã§ç¨ããSPARQLã¯ã¨ãªã§ãã
ã°ã©ãã»ãã¿ã¼ã³ ã½ãªã¥ã¼ã·ã§ã³ä¿®é£¾å BGP ToList Join OrderBy LeftJoin Project Filter Distinct Union Reduced Graph SliceSliceã¯ãOFFSETã¨LIMITãçµã¿åããããã®ã§ããmodã¯ãã½ãªã¥ã¼ã·ã§ã³ä¿®é£¾åã®ãã¡ã®1ã¤ã§ãã
ToListã¯ã°ã©ãã»ãã¿ã¼ã³ã»ãããã³ã°ã®çµæããã·ã¼ã±ã³ã¹ã¸ã®å¤æãèµ·ããå ´åã«ç¨ãããã¾ãã
12.2.1 ã°ã©ãã»ãã¿ã¼ã³ã®å¤æãã®é ã§ã¯ãSPARQLã°ã©ãã»ãã¿ã¼ã³ãSPARQL代æ°å¼ã«å¤æããããã»ã¹ã«ã¤ãã¦è¿°ã¹ã¾ããIRIã¨ããªãã«ã»ãã¿ã¼ã³ã®æ§æä¸ã®çç¥å½¢ã夿ããå¾ã«ãæ§æå½¢å¼ãå帰çã«å¦çãã¦ä»£æ°å¼ã«ãã¾ãã
ã¯ã¼ãã³ã°ã°ã«ã¼ãã¯ãåç´åã®ã¹ããããé©ç¨ãããæç¹ã§ãOPTIONALã«ããã¦ãäºéã«å ¥ãåã«ãªã£ããã£ã«ã¿ã¨ãã¿ã¼ã³ãä¼´ã£ãã¯ã¨ãªã®ããã¾ããªå¤æãçããã¨ãããã¨ãææãã¾ãã
OPTIONAL { { ... FILTER ( ... ?x ... ) } }.
.
次ã®2ã¤ã®è¦ç¯çã§ãªããã¹ãã±ã¼ã¹ã§ãããä¾è¨¼ãã¾ãã
ã¾ãæåã«ã4é ã§ç¤ºããIRIã¨ããªãã«ã»ãã¿ã¼ã³ã®çç¥å½¢ãæ¡å¼µãã¦ãã ããã
WhereClause
ã¯ã次ã®å½¢å¼ããæãGroupGraphPattern
ã§æ§æããã¦ãã¾ãã
ããããã¯ãæ¬¡ã®æé ã§å¤æããã¾ãã
Transform(syntax form)
å½¢å¼ã
TriplesBlock
ã§ããå ´å
The result is BGP(list of triple patterns)
å½¢å¼ã
GroupOrUnionGraphPattern
ã§ããå ´å
Let A := undefined For each element G in the GroupOrUnionGraphPattern If A is undefined A := Transform(G) Else A := Union(A, Transform(G)) The result is A
å½¢å¼ã
GraphGraphPattern
ã§ããå ´å
If the form is GRAPH IRI GroupGraphPattern The result is Graph(IRI, Transform(GroupGraphPattern)) If the form is GRAPH Var GroupGraphPattern The result is Graph(Var, Transform(GroupGraphPattern))
å½¢å¼ã
GroupGraphPattern
ã§ããå ´åæ¬¡ã®ã·ã³ãã«ãå°å ¥ãã¾ãã
- Join(Pattern, Pattern)
- LeftJoin(Pattern, Pattern, expression)
- Filter(expression, Pattern)
Let FS := the empty set Let G := the empty pattern, Z, a basic graph pattern which is the empty set. For each element E in the GroupGraphPattern If E is of the form FILTER(expr) FS := FS set-union {expr} If E is of the form OPTIONAL{P} Then Let A := Transform(P) If A is of the form Filter(F, A2) G := LeftJoin(G, A2, F) else G := LeftJoin(G, A, true) If E is any other form: Let A := Transform(E) G := Join(G, A) If FS is not empty: Let X := Conjunction of expressions in FS G := Filter(X, G) The result is G.
åç´åã®ã¹ããã
1ã¤ã®ã°ã©ãã»ãã¿ã¼ã³ï¼ãã£ã«ã¿ã§ã¯ãªãï¼ã®ã°ã«ã¼ãã¯ãjoin(Z, A)ã«ãªããAã§ç½®ãæãããã¨ãã§ãã¾ãã空ã®ã°ã©ãã»ãã¿ã¼ã³Zã¯ãjoinã¨åå¤ã§ãã
Replace join(Z, A) by A Replace join(A, Z) by A12.2.2 ãããã³ã°ãããã°ã©ãã»ãã¿ã¼ã³ã®ä¾
æ¸ãæãã®ä¾ã®2çªç®ã®å½¢å¼ã¯ã1çªç®ã®ãã®ã«åç´åã®ã¹ãããã§åé¤ãã空ã®ã°ã«ã¼ãã®joinãä»ãããã®ã§ãã
ä¾: 1ã¤ã®ããªãã«ã»ãã¿ã¼ã³ããæã1ã¤ã®åºæ¬ã°ã©ãã»ãã¿ã¼ã³ãæã¤ã°ã«ã¼ã
{ ?s ?p ?o }
Join(Z, BGP(?s ?p ?o) )
BGP(?s ?p ?o)
ä¾: 2ã¤ã®ããªãã«ã»ãã¿ã¼ã³ããæã1ã¤ã®åºæ¬ã°ã©ãã»ãã¿ã¼ã³ãæã¤ã°ã«ã¼ã
{ ?s :p1 ?v1 ; :p2 ?v2 }
BGP( ?s :p1 ?v1 .?s :p2 ?v2 )
ä¾: 2ã¤ã®åºæ¬ã°ã©ãã»ãã¿ã¼ã³ã®åéåããæãã°ã«ã¼ã
{ { ?s :p1 ?v1 } UNION {?s :p2 ?v2 } }
Union(Join(Z, BGP(?s :p1 ?v1)),
Join(Z, BGP(?s :p2 ?v2)) )
Union( BGP(?s :p1 ?v1) , BGP(?s :p2 ?v2) )
ä¾: 1ã¤ã®åéåã¨1ã¤ã®åºæ¬ã°ã©ãã»ãã¿ã¼ã³ã®åéåããæãã°ã«ã¼ã
{ { ?s :p1 ?v1 } UNION {?s :p2 ?v2 } UNION {?s :p3 ?v3 } }
Union(
Union( Join(Z, BGP(?s :p1 ?v1)),
Join(Z, BGP(?s :p2 ?v2))) ,
Join(Z, BGP(?s :p3 ?v3)) )
Union(
Union( BGP(?s :p1 ?v1) ,
BGP(?s :p2 ?v2),
BGP(?s :p3 ?v3))
ä¾: 1ã¤ã®åºæ¬ã°ã©ãã»ãã¿ã¼ã³ã¨1ã¤ã®ãªãã·ã§ã³ã®ã°ã©ãã»ãã¿ã¼ã³ããæãã°ã«ã¼ã
{ ?s :p1 ?v1 OPTIONAL {?s :p2 ?v2 } }
LeftJoin(
Join(Z, BGP(?s :p1 ?v1)),
Join(Z, BGP(?s :p2 ?v2)) ),
true)
LeftJoin(BGP(?s :p1 ?v1), BGP(?s :p2 ?v2), true)
ä¾: 1ã¤ã®åºæ¬ã°ã©ãã»ãã¿ã¼ã³ã¨2ã¤ã®ãªãã·ã§ã³ã®ã°ã©ãã»ãã¿ã¼ã³ããæãã°ã«ã¼ã
{ ?s :p1 ?v1 OPTIONAL {?s :p2 ?v2 } OPTIONAL { ?s :p3 ?v3 } }
LeftJoin(
LeftJoin(
BGP(?s :p1 ?v1),
BGP(?s :p2 ?v2),
true) ,
BGP(?s :p3 ?v3),
true)
ä¾: 1ã¤ã®åºæ¬ã°ã©ãã»ãã¿ã¼ã³ã¨ãã£ã«ã¿ãæã¤1ã¤ã®ãªãã·ã§ã³ã®ã°ã©ãã»ãã¿ã¼ã³ããæãã°ã«ã¼ã
{ ?s :p1 ?v1 OPTIONAL {?s :p2 ?v2 FILTER(?v1<3) } }
LeftJoin(
Join(Z, BGP(?s :p1 ?v1)),
Join(Z, BGP(?s :p2 ?v2)),
(?v1<3) )
LeftJoin(
BGP(?s :p1 ?v1) ,
BGP(?s :p2 ?v2) ,
(?v1<3) )
ä¾: 1ã¤ã®åéåã®ã°ã©ãã»ãã¿ã¼ã³ã¨1ã¤ã®ãªãã·ã§ã³ã®ã°ã©ãã»ãã¿ã¼ã³ããæãã°ã«ã¼ã
{ {?s :p1 ?v1} UNION {?s :p2 ?v2} OPTIONAL {?s :p3 ?v3} }
LeftJoin(
Union(BGP(?s :p1 ?v1),
BGP(?s :p2 ?v2)) ,
BGP(?s :p3 ?v3) ,
true )
ä¾: 1ã¤ã®åºæ¬ã°ã©ãã»ãã¿ã¼ã³ã1ã¤ã®ãã£ã«ã¿ãããã³1ã¤ã®ãªãã·ã§ã³ã®ã°ã©ãã»ãã¿ã¼ã³ããæãã°ã«ã¼ã
{ ?s :p1 ?v1 FILTER (?v1 < 3 ) OPTIONAL {?s :p2 ?v2} } }
Filter( ?v1 < 3 ,
LeftJoin( BGP(?s :p1 ?v1), BGP(?s :p2 ?v2), true) ,
)
ã¹ããã1 : ToList
ToListã¯ãå¤ééåããåãè¦ç´ ã¨ã«ã¼ãã£ããªãã£ã¼ãæã¤ã·ã¼ã±ã³ã¹ã«å¤ãã¾ããã·ã¼ã±ã³ã¹ã«å¯¾ããæé»çãªé åºä»ãã¯ããã¾ãããåããã®ã飿¥ãã¦ããå¿ è¦ã¯ããã¾ããã
Let M := ToList(Pattern)
ã¹ããã2 : ORDER BY
ã¯ã¨ãªæååã«ORDER BYå¥ãããå ´åã
M := OrderBy(M, list of order comparators)
ã¹ããã3 : Projection
M := Project(M, vars)
ããã§ã¯ãvarsã¯ãSELECTå¥ã§è¨è¿°ããã夿°ã®éåã§ããããSELECT *ãç¨ããããå ´åã«ã¯ãã¯ã¨ãªä¸ã®ãã¹ã¦ã®ååä»ã夿°ã§ãã
ã¹ããã4 : DISTINCT
ã¯ã¨ãªãDISTINCTãå«ãã§ããå ´åã
M := Distinct(M)
ã¹ããã5 : REDUCED
ã¯ã¨ãªãREDUCEDãå«ãã§ããå ´åã
M := Reduced(M)
ã¹ããã6 : OFFSETã¨LIMIT
ã¯ã¨ãªããOFFSETéå§ãã¾ãã¯ãLIMITã®é·ãããå«ãã§ããå ´åã
M := Slice(M, start, length)
start defaults to 0
length defaults to (size(M)-start).
å ¨è¬çãªæ½è±¡ã¯ã¨ãªã¯Mã§ãã
12.3 åºæ¬ã°ã©ãã»ãã¿ã¼ã³ã°ã©ãã»ãã¿ã¼ã³ãããããããã¨ãã«ã¯ãå¯è½ãªã½ãªã¥ã¼ã·ã§ã³ã¯ãããã°ï¼bagï¼ã¨ãã¦ãç¥ããã¦ããå¤ééå[multiset]ãå½¢æãã¾ããå¤ééåã¯ãåè¦ç´ ã1å以ä¸åºç¾ãããè¦ç´ ã®é ä¸åã®ã³ã¬ã¯ã·ã§ã³ã§ããããã¯ãå¤ééåå ã®éåã®åè¦ç´ ã®åºç¾åæ°ã示ãã1çµã®è¦ç´ ã¨ã«ã¼ãã£ããªãã£ã¼é¢æ°ã§è¨è¿°ããã¾ãã
ã½ãªã¥ã¼ã·ã§ã³ã»ãããã³ã°ããμã¨è¨è¿°ãã
dom(μ0)ã空ã®éåã§ãããããªãããã³ã°ããμ0ã¨è¨è¿°ãã¾ãã
ã«ã¼ãã£ããªãã£ã¼1ãæã¤ã空ã®ãããã³ã°μ0,ãããã£ããæãå¤ééåããΩ0ã¨è¨è¿°ãã¾ããããã¯ãjoinã¨åå¤ã§ãã
RDFç¨èªt : { (x, t) }ã«å¯¾ããã½ãªã¥ã¼ã·ã§ã³ã»ãããã³ã°å¤æ°xããμ(?x->t)ã¨è¨è¿°ãã¾ãã
ãã£ããμ(?x->t)ããæãå¤ééåãã¤ã¾ããã«ã¼ãã£ããªãã£ã¼1ãæã¤{ { (x, t) } }ããΩ(?x->t)ã¨è¨è¿°ãã¾ãã
å®ç¾©: äºæãããã³ã°2ã¤ã®ã½ãªã¥ã¼ã·ã§ã³ã»ãããã³ã°μ1ã¨μ2ã¯ãdom(μ1)ããã³dom(μ2)ã®ãã¹ã¦ã®å¤æ°vã«å¯¾ããμ1(v) = μ2(v)ã§ããå ´åãäºææ§ãããã¾ãã
μ1ã¨μ2ã«äºææ§ãããå ´åãμ1 set-unionï¼åéåï¼ μ2ããããã³ã°ã§ããμ1 set-union μ2ããmerge(μ1, μ2)ã¨è¨è¿°ãã¾ãã
ãããã³ã°Ωã®å¤ééåã«ãããã½ãªã¥ã¼ã·ã§ã³ã»ãããã³ã°μã®ã«ã¼ãã£ããªãã£ã¼ããcard[Ω](μ)ã¨è¨è¿°ãã¾ãã
12.3.1 SPARQLã®åºæ¬ã°ã©ãã»ãã¿ã¼ã³ã»ãããã³ã°åºæ¬ã°ã©ãã»ãã¿ã¼ã³ã¯ãSPARQLãã¿ã¼ã³ã»ãããã³ã°ã®åºç¤ãå½¢æãã¾ããåºæ¬ã°ã©ãã»ãã¿ã¼ã³ã¯ãã¯ã¨ãªã®å½è©²é¨åã«å¯¾ããã¢ã¯ãã£ãã»ã°ã©ãã«ãããã³ã°ãã¾ãã夿°ã¨ç©ºç½ãã¼ãã®ä¸¡æ¹ãç¨èªã«ç½®ãæãããã¨ã«ãã£ã¦ãã¤ã³ã¹ã¿ã³ã¹ã®2ã¤ã®æ¦å¿µã示ããåºæ¬ã°ã©ãã»ãã¿ã¼ã³ãã¤ã³ã¹ã¿ã³ã¹åã§ãã¾ãã空ç½ãã¼ãã¯ãRDFã¤ã³ã¹ã¿ã³ã¹ã»ãããã³ã° σãç¨ãã¦ç©ºç½ãã¼ãããRDFç¨èªã«ç½®ãæãããã夿°ã¯ãã½ãªã¥ã¼ã·ã§ã³ã»ãããã³ã°ã«ãã£ã¦ã¯ã¨ãªå¤æ°ããRDFç¨èªã«ç½®ãæãããã¾ãã
ä»»æã®ãã¿ã¼ã³ã»ã¤ã³ã¹ã¿ã³ã¹ã»ãããã³ã°ã¯ãããããã¯ã¨ãªå¤æ°ã¨ç©ºç½ãã¼ãã«å¶éãããã¨ã«ãã£ã¦å¾ããããã¦ãã¼ã¯ãªã½ãªã¥ã¼ã·ã§ã³ã»ãããã³ã°ããã³ã¦ãã¼ã¯ãªRDFã¤ã³ã¹ã¿ã³ã¹ã»ãããã³ã°ãå®ç¾©ãã¾ãã
å®ç¾©: åºæ¬ã°ã©ãã»ãã¿ã¼ã³ã»ãããã³ã°BGPãåºæ¬ã°ã©ãã»ãã¿ã¼ã³ã¨ããGãRDFã°ã©ãã¨ãã¾ãã
P(BGP)ãGã®ãµãã°ã©ãã§ãããμãBGPã®ã¯ã¨ãªå¤æ°ã«å¯¾ããPã®å¶éã§ãããããªããã¿ã¼ã³ã»ã¤ã³ã¹ã¿ã³ã¹ã»ãããã³ã°Pãããã¨ããμã¯ãGããã®BGPã®ã½ãªã¥ã¼ã·ã§ã³ã§ãã
card[Ω](μ) = card[Ω]ï¼P = μ(σ) ã§ãããããªç°ãªãRDFã¤ã³ã¹ã¿ã³ã¹ã»ãããã³ã°ã®æ°ãσã¯ãã¿ã¼ã³ã»ã¤ã³ã¹ã¿ã³ã¹ã»ãããã³ã°ã§ãããP(BGP)ã¯Gã®ãµãã°ã©ãã§ãï¼ã
åºæ¬ã°ã©ãã»ãã¿ã¼ã³ã空ã®éåã§ããå ´åãã½ãªã¥ã¼ã·ã§ã³ã¯Ω0ã§ãã
12.3.2 空ç½ãã¼ãã®å¦çãã®å®ç¾©ã«ãã£ã¦ãã½ãªã¥ã¼ã·ã§ã³ã»ãããã³ã°ã¯ãåºæ¬ã°ã©ãã»ãã¿ã¼ã³ã§ããBGPã®å¤æ°ãGã®ç©ºç½ãã¼ãã«ãã¤ã³ãã§ãã¾ããSPARQLã¯ãSPARQLã¯ã¨ãªçµæXMLãã©ã¼ãããããã¥ã¡ã³ãã®ç©ºç½ãã¼ãèå¥åããã®ããã¥ã¡ã³ãã«å¯¾ãã¦æå¹ã§ãããã®ã¨ãã¦æ±ãããããã¼ã¿ã»ããã®ã¢ã¯ãã£ãã»ã°ã©ãã«ããããã¼ããèå¥ãã¦ããã¨ã¯è§£éããã¾ããããããã£ã¦ãDSãã¯ã¨ãªã®ãã¼ã¿ã»ããã§ããå ´åããã¿ã¼ã³ã®ã½ãªã¥ã¼ã·ã§ã³ã¯DSèªèº«ã®ã¢ã¯ãã£ãã»ã°ã©ãããã®ãã®ã§ã¯ãªãRDFã°ã©ãããã®ãã®ã§ããã¨è§£éãããããã¯ã¹ã³ã¼ãã³ã°ã»ã°ã©ãã¨å¼ã°ããDSã®ã¢ã¯ãã£ãã»ã°ã©ãã«å¯¾ãã°ã©ãåçï¼graph-equivalentï¼ã§ããããã©ãDSã¾ãã¯BGPã¨ç©ºç½ãã¼ããå ±æãã¾ãããã¹ã³ã¼ãã³ã°ã»ã°ã©ãã¯ã1ã¤ã®ã¯ã¨ãªã«å¯¾ãããã¹ã¦ã®ã½ãªã¥ã¼ã·ã§ã³ã«ç¨ãããã¾ããã¹ã³ã¼ãã³ã°ã»ã°ã©ãã¯ãç´ç²ã«çè«çæ§ææ¦å¿µï¼theoretical constructï¼ã§ãå®éã«ã¯ãåãªã空ç½ãã¼ãèå¥åã«å¯¾ããããã¥ã¡ã³ãç¯å²ã®æ £ç¿ã«ãã£ã¦å¹æãå¾ããã¾ãã
RDFã®ç©ºç½ãã¼ããå¤ãã®ãã¿ã¼ã³ã«å¯¾ããå¤ãã®éè¤ããã½ãªã¥ã¼ã·ã§ã³ãç¡éã«è¨±ããããå¤ãã®ãã¿ã¼ã³ã®ã½ãªã¥ã¼ã·ã§ã³ï¼ç©ºç½ãã¼ããå¥ã®ç©ºç½ãã¼ãã«ç½®ãæãããã¨ã«ãã£ã¦å¾ãããï¼ãç¡éã«åå¨ããã¾ãããããã£ã¦ãä½ããã®å½¢ã§åºæ¬ã°ã©ãã»ãã¿ã¼ã³ã®ã½ãªã¥ã¼ã·ã§ã³ãåºåãå¿ è¦ãããã¾ããSPARQLã¯ãåºæ¬ã°ã©ãã»ãã¿ã¼ã³ã®ã½ãªã¥ã¼ã·ã§ã³ã決å®ããããã«ããµãã°ã©ãã»ãããã®åºæºãç¨ãã¾ããåºæ¬ã°ã©ãã»ãã¿ã¼ã³ããã¢ã¯ãã£ãã»ã°ã©ãã®ãµãã»ããã«ãããã³ã°ããç°ãªããã¿ã¼ã³ã®ã¤ã³ã¹ã¿ã³ã¹ã«å¯¾ãããããã1ã¤ã®ã½ãªã¥ã¼ã·ã§ã³ãåå¨ãã¾ãã
ããã¯ãéè¤ã®æé¤ãããããè¨ç®ã®å®¹æãã®ããã«æé©åããã¾ããããã«ãã£ã¦ããã¼ã¿ã»ããã®ã¢ã¯ãã£ãã»ã°ã©ããè²§å¼±ã§ããã¨ãã§ããã¯ã¨ãªçµæã«éè¤ãå«ããã¨ãã§ããè«ççã«åçãªãã¼ã¿ã»ãããç°ãªãã¯ã¨ãªçµæãåºããã¨ãå¯è½ã«ãªãã¾ãã
12.4 SPARQL代æ°SPARQLã®æ½è±¡ã¯ã¨ãªã«å ã®åã·ã³ãã«ã«å¯¾ããè©ä¾¡ã®ããã®æ¼ç®åãå®ç¾©ãã¦ãã¾ããåãååã®SPARQLä»£æ°æ¼ç®åã¯ããè©ä¾¡ã»ãã³ãã£ã¯ã¹ãã®é ã§è¨è¿°ããã¦ããããã«ãSPARQLã®æ½è±¡ã¯ã¨ãªã»ãã¼ããè©ä¾¡ããããã«ç¨ãããã¾ãã
å®ç¾©: Filter
Ωãã½ãªã¥ã¼ã·ã§ã³ã»ãããã³ã°ã®å¤ééåã¨ããexprãå¼ã¨ãã¾ããæ¬¡ã®ã¨ããå®ç¾©ãã¾ãã
Filter(expr, Ω) = { μ | μ in Ω and expr(μ) is an expression that has an effective boolean value of true }
card[Filter(expr, Ω)](μ) = card[Ω](μ)
å®ç¾©: Join
Ω1ã¨Ω2ãã½ãªã¥ã¼ã·ã§ã³ã»ãããã³ã°ã®å¤ééåã¨ãã¾ããæ¬¡ã®ã¨ããå®ç¾©ãã¾ãã
Join(Ω1, Ω2) = { merge(μ1, μ2) | μ1 in Ω1and μ2 in Ω2, and μ1 and μ2 are compatible }
card[Join(Ω1, Ω2)](μ) =
for each merge(μ1, μ2), μ1 in Ω1and μ2 in Ω2 such that μ = merge(μ1, μ2),
sum over (μ1, μ2), card[Ω1](μ1)*card[Ω2](μ2)
Joinã«ãããã½ãªã¥ã¼ã·ã§ã³ã»ãããã³ã°μã¯ãç°ãªãã½ãªã¥ã¼ã·ã§ã³ã»ãããã³ã°ãçµåãããå¤ééåã«ãããμ1ã¨μ2ã«ããã¦åºç¾ãããã¨ã¯å¯è½ã§ããμã®ã«ã¼ãã£ããªãã£ã¼ã¯ããã¹ã¦ã®å¯è½æ§ã®ã«ã¼ãã£ããªãã£ã¼ã®åè¨ã§ãã
å®ç¾©: Diff
Ω1ã¨Ω2ãã½ãªã¥ã¼ã·ã§ã³ã»ãããã³ã°ã®å¤ééåã¨ãã¾ããæ¬¡ã®ã¨ããå®ç¾©ãã¾ãã
Diff(Ω1, Ω2, expr) = { μ | μ in Ω1 such that for all μ′ in Ω2, either μ and μ′ are not compatible or μ and μ' are compatible and expr(merge(μ, μ')) has an effective boolean value of false }
card[Diff(Ω1, Ω2, expr)](μ) = card[Ω1](μ)
Diffã¯ãLeftJoinã®å®ç¾©ã®ããã«å é¨çã«ä½¿ç¨ããã¾ãã
å®ç¾©: LeftJoin
Ω1ã¨Ω2ãã½ãªã¥ã¼ã·ã§ã³ã»ãããã³ã°ã®å¤ééåã¨ããexprãå¼ã¨ãã¾ããæ¬¡ã®ã¨ããå®ç¾©ãã¾ãã
LeftJoin(Ω1, Ω2, expr) = Filter(expr, Join(Ω1, Ω2)) set-union Diff(Ω1, Ω2, expr)
card[LeftJoin(Ω1, Ω2, expr)](μ) = card[Filter(expr, Join(Ω1, Ω2))](μ) + card[Diff(Ω1, Ω2, expr)](μ)
ããã¯ãå®å ¨å½¢ã§è¨è¿°ããã°ã次ã®éãã§ãã
LeftJoin(Ω1, Ω2, expr) =
{ merge(μ1, μ2) | μ1 in Ω1and μ2 in Ω2, and μ1 and μ2 are compatible and expr(merge(μ1, μ2)) is true }
set-union
{ μ1 | μ1 in Ω1and μ2 in Ω2, and μ1 and μ2 are not compatible }
set-union
{ μ1 | μ1 in Ω1and μ2 in Ω2, and μ1 and μ2 are compatible and expr(merge(μ1, μ2)) is false }
ããããç°ãªã£ã¦ãããããLeftJoinã®ã«ã¼ãã£ããªãã£ã¼ã¯ãå®ç¾©ã®ãããã®åã ã®æ§æè¦ç´ ã®ã«ã¼ãã£ããªãã£ã¼ã§ãã
å®ç¾©: Union
Ω1ã¨Ω2ãã½ãªã¥ã¼ã·ã§ã³ã»ãããã³ã°ã®å¤ééåã¨ãã¾ããæ¬¡ã®ã¨ããå®ç¾©ãã¾ãã
Union(Ω1, Ω2) = { μ | μ in Ω1 or μ in Ω2 }
card[Union(Ω1, Ω2)](μ) = card[Ω1](μ) + card[Ω2](μ)
C(x)ãçã§ããè¦ç´ ã®ã·ã¼ã±ã³ã¹ã[x | C]ã¨è¨è¿°ãã¾ãã
Lã«ãããxã®ã«ã¼ãã£ããªãã£ã¼ã«ãªãããã«card[L](x)ãè¨è¿°ãã¾ãã
å®ç¾©: ToListΩãã½ãªã¥ã¼ã·ã§ã³ã»ãããã³ã°ã®å¤ééåã¨ãã¾ããæ¬¡ã®ã¨ããå®ç¾©ãã¾ãã
ToList(Ω) = a sequence of mappings μ in Ω in any order, with card[Ω](μ) occurrences of μ
card[ToList(Ω)](μ) = card[Ω](μ)
å®ç¾©: OrderByΨãã½ãªã¥ã¼ã·ã§ã³ã»ãããã³ã°ã®ã·ã¼ã±ã³ã¹ã¨ãã¾ããæ¬¡ã®ã¨ããå®ç¾©ãã¾ãã
OrderBy(Ψ, condition) = [ μ | μ in Ψ and the sequence satisfies the ordering condition]
card[OrderBy(Ψ, condition)](μ) = card[Ψ](μ)
å®ç¾©: ProjectΨãã½ãªã¥ã¼ã·ã§ã³ã»ãããã³ã°ã®ã·ã¼ã±ã³ã¹ã¨ããPVã夿°ã®éåã¨ãã¾ãã
ãããã³ã°μã«å¯¾ããPVã®å¤æ°ã«å¯¾ããμã®å¶éã«ãªãããã«Proj(μ, PV)ãè¨è¿°ãã¾ãã
Project(Ψ, PV) = [ Proj(Ψ[μ], PV) | μ in Ψ ]
card[Project(Ψ, PV)](μ) = card[Ψ](μ)
Project(Ψ, PV)ã®é åºã¯ãOrderByã«ãã£ã¦ä¸ããããé åºä»ããä¿æããªããã°ãªãã¾ããã
å®ç¾©: DistinctΨãã½ãªã¥ã¼ã·ã§ã³ã»ãããã³ã°ã®ã·ã¼ã±ã³ã¹ã¨ãã¾ããæ¬¡ã®ã¨ããå®ç¾©ãã¾ãã
Distinct(Ψ) = [ μ | μ in Ψ ]
card[Distinct(Ψ)](μ) = 1
Distinct(Ψ)ã®é åºã¯ãOrderByã«ãã£ã¦ä¸ããããé åºä»ããä¿æããªããã°ãªãã¾ããã
å®ç¾©: ReducedΨãã½ãªã¥ã¼ã·ã§ã³ã»ãããã³ã°ã®ã·ã¼ã±ã³ã¹ã¨ãã¾ããæ¬¡ã®ã¨ããå®ç¾©ãã¾ãã
Reduced(Ψ) = [ μ | μ in Ψ ]
card[Reduced(Ψ)](μ) is between 1 and card[Ψ](μ)
Reduced(Ψ)ã®é åºã¯ãOrderByã«ãã£ã¦ä¸ããããé åºä»ããä¿æããªããã°ãªãã¾ããã
Reducedã½ãªã¥ã¼ã·ã§ã³ã»ã·ã¼ã±ã³ã¹ä¿®é£¾åã¯ãå®ç¾©æ¸ã¿ã®ã«ã¼ãã£ããªãã£ã¼ãä¿è¨¼ãã¾ããã
å®ç¾©: SliceΨãã½ãªã¥ã¼ã·ã§ã³ã»ãããã³ã°ã®ã·ã¼ã±ã³ã¹ã¨ãã¾ããæ¬¡ã®ã¨ããå®ç¾©ãã¾ãã
Slice(Ψ, start, length)[i] = Ψ[start+i] for i = 0 to (length-1)
12.5 è©ä¾¡ã»ãã³ãã£ã¯ã¹æã ã¯ãeval(D(G), graph pattern)ããã¢ã¯ãã£ãã»ã°ã©ãGãæã¤ãã¼ã¿ã»ããDã«é¢ããã°ã©ãã»ãã¿ã¼ã³ã®è©ä¾¡ã§ããã¨å®ç¾©ãã¦ãã¾ããã¢ã¯ãã£ãã»ã°ã©ãã¯ãæåã¯ããã©ã«ãã»ã°ã©ãã§ãã
D : ãã¼ã¿ã»ãã D(G) : ã¢ã¯ãã£ãã»ã°ã©ãGãæã¤ãã¼ã¿ã»ããDï¼ãã¿ã¼ã³ãããããããã®ï¼ D[i] : ãã¼ã¿ã»ããDã«IRI iãæã¤ã°ã©ã D[DFT] : Dã®ããã©ã«ãã»ã°ã©ã P, P1, P2 : ã°ã©ãã»ãã¿ã¼ã³ L : ã½ãªã¥ã¼ã·ã§ã³ã»ã·ã¼ã±ã³ã¹å®ç¾©: ã°ã©ãã»ãã¿ã¼ã³ã®è©ä¾¡
if IRI is a graph name in D eval(D(G), Graph(IRI,P)) = eval(D(D[IRI]), P)
if IRI is not a graph name in D eval(D(G), Graph(IRI,P)) = the empty multiset
eval(D(G), Graph(var,P)) = Let R be the empty multiset foreach IRI i in D R := Union(R, Join( eval(D(D[i]), P) , Ω(?var->i) ) the result is R
ã°ã©ãã®è©ä¾¡ã¯ãSPARQL代æ°åéåæ¼ç®åã使ç¨ãã¾ããã½ãªã¥ã¼ã·ã§ã³ã»ãããã³ã°ã®ã«ã¼ãã£ããªãã£ã¼ã¯ãããããã®joinã®æä½ã«ãããããã®ã½ãªã¥ã¼ã·ã§ã³ã»ãããã³ã°ã®ã«ã¼ãã£ããªãã£ã¼ã®åè¨ã§ãã
å®ç¾©: OrderByã®è©ä¾¡eval(D, OrderBy(L, condition)) = OrderBy(eval(D, L), condition)å®ç¾©: Sliceã®è©ä¾¡
eval(D, Slice(L, start, length)) = Slice(eval(D, L), start, length)12.6 SPARQLåºæ¬ã°ã©ãã»ãããã³ã°ã®æ¡å¼µ
SPARQLã®å ¨ä½çãªè¨è¨ã¯ãåºæ¬ã°ã©ãã»ãã¿ã¼ã³ã«ãããã³ã°ããæ¡ä»¶ãæ¸ãç´ããã¨ã«ãã£ã¦ãã·ã³ãã«ãªå«æã§ã¯ãªãããã精緻ãªå½¢å¼ã®å«æãæ³å®ããã¯ã¨ãªã«ä½¿ç¨ã§ãã¾ãã1ã¤ã®ä¸è¬çãªå½¢å¼ã§ãã®ãããªæ¡ä»¶ãè¨è¿°ããããããã¹ã¦ã®å½¢å¼ã®å«æã«é©ç¨ãã¦ä¸å¿ è¦ã¾ãã¯ä¸é©åãªéè¤ãæé©ã«æé¤ãããã¨ã¯ãæªè§£æ±ºã®ç 究課é¡ã§ããããããã®ããã¥ã¡ã³ãã¯ããã®ãããªã½ãªã¥ã¼ã·ã§ã³ãæºããã¹ãå¿ è¦æ¡ä»¶ãæç¤ºããã®ã¿ã§ãããããã¯ãããããã®å ·ä½çãªäºä¾ã«å¯¾ããå®å ¨ãªå®ç¾©ã«æ¡å¼µããå¿ è¦ãããã§ãããã
åºæ¬ã°ã©ãã»ãã¿ã¼ã³ã¯ãRDFã°ã©ããRDFããªãã«ã«å¯¾ãã¦è¡ãããªãã«ã®ãã¿ã¼ã³ã¨åãé¢ä¿ã«ãããåãç¨èªã®å¤ãããããã«é©ç¨ã§ãã¾ããç¹ã«ãããªãã«ï¼M(s), M(p) M(o)ï¼ã2çªç®ã®ãã¿ã¼ã³ã«ããå ´åã«éãããªãã«ï¼s, p, oï¼ãæåã®ãã¿ã¼ã³ã«åå¨ãããããªã空ç½ãã¼ãã空ç½ãã¼ãã«ãããã³ã°ãã夿°ããªãã©ã«ãããã³IRIããããèªèº«ã«ãããã³ã°ããããªãã«ã»ãã¿ã¼ã³ã®ç¨èªéã«å ¨åå°Mãããå ´åã2ã¤ã®åºæ¬ã°ã©ãã»ãã¿ã¼ã³ã¯ãåçã§ããã¨è¿°ã¹ããã¾ãããã®å®ç¾©ã¯ã夿°åãåçãªãã¿ã¼ã³å ¨ä½ã§ä¿æãããã¨ã«ãã£ã¦ãRDFã°ã©ãã®åçæ§ã«å¯¾ãããããåºæ¬ã°ã©ãã»ãã¿ã¼ã³ã«æ¡å¼µãã¾ãã
嫿ã¬ã¸ã¼ã ï¼entailment regimeï¼ã¯ã次ã®ä»æ§ãå®ãã¾ãã
嫿ã¬ã¸ã¼ã ã«é¢ããä¾ã«ã¯ãã·ã³ãã«ãªå«æï¼simple entailmentï¼[RDF-MT]ãRDF嫿ï¼RDF entailmentï¼[RDF-MT]ãRDFS嫿ï¼RDFS entailmentï¼[RDF-MT]ãD-嫿ï¼D-entailmentï¼[RDF-MT]ãããã³OWL-DL嫿ï¼OWL-DL entailmentï¼[OWL-Semantics]ãå«ã¾ãã¦ãã¾ãããããã®ãã¡ãOWL-DL嫿ã®ã¿ãæ´å½¢å¼ã°ã©ãã®éåãå¶éãã¾ããEã嫿ã¬ã¸ã¼ã ã§ããå ´åããã®ååä»ãã®æ £ç¿ã«å¾ããE-嫿ï¼E-entailmentï¼ãE-æ´åæ§ï¼E-consistencyï¼ãªã©ã«ã¤ãã¦è¨åãã¾ãã
ããã¤ãã®å«æã¬ã¸ã¼ã ã¯ãããã¤ãã®RDFã°ã©ãããçç¾ããã¨åé¡ãããã¨ãã§ãã¾ããä¾ãã°ã次ã®RDFã°ã©ãã¯ã
_:x rdf:type xsd:string ._:x rdf:type xsd:decimal .
DãXSDãã¼ã¿åãå«ãã§ããå ´åãDçç¾ã§ããçç¾ããã°ã©ãã¸ã®ã¯ã¨ãªã®å¹æã¯ããã®ä»æ§ã§ã¯ã«ãã¼ãã¦ãã¾ããããç¹å®ã®SPARQLã®æ¡å¼µã§æå®ããªããã°ãªãã¾ããã
E-嫿ï¼E-entailmentï¼ã¸ã®SPARQLã®æ¡å¼µã¯ã以ä¸ã®æ¡ä»¶ãæºãããªããã°ãªãã¾ããã
1 -- ä»»æã®æ´åæ§ã®ããã¢ã¯ãã£ãã»ã°ã©ãAGã«å¯¾å¿ãã¦ããã¹ã³ã¼ãã³ã°ã»ã°ã©ãSGã¯ãä¸æã«æå®ãããAGã«E-åçï¼E-equivalentï¼ã§ãã
2 -- ä»»æã®åºæ¬ã°ã©ãã»ãã¿ã¼ã³BGPã¨ãã¿ã¼ã³ã»ã½ãªã¥ã¼ã·ã§ã³ã»ãããã³ã°Pã®å ´åãP(BGP)ã¯Eã«å¯¾ããæ´å½¢å¼ã§ãã
3 -- åºæ¬ã°ã©ãã»ãã¿ã¼ã³BGPã«å¯¾ããä»»æã®ã¹ã³ã¼ãã³ã°ã»ã°ã©ãSGããã³çãã®éå{P1 ... Pn}ã®å ´åãããã¦ã{BGP1 .... BGPn}ãBGPã«ãã¹ã¦åçãªåºæ¬ã°ã©ãã»ãã¿ã¼ã³ã®éåã§ããå ´åã¯ããããã®ãã¡ã®ã©ããããä»ã®ãã®ã¾ãã¯SGã¨ç©ºç½ãã¼ããå ±æãã¾ããã
SG E-entails (SG union P1(BGP1) union ... union Pn(BGPn))
RDFããããã§ãéè¤ã許ãããããããã®æ¡ä»¶ã¯ãããããçãã®éåãå®å ¨ã«æ±ºå®ããããã§ã¯ããã¾ãããããã«ããããã£ã¦ãä¸è¨ãå½ã¦ã¯ã¾ããªããã°ãªãã¾ããã
4 -- ããããã®SPARQLã®æ¡å¼µã¯ããã¹ã¦ã®BGPã¨AGããRDFã°ã©ãåçæ§ãé¤ãã¦ä¸æã§ããæéã®çãã®éåãæã¤ãã¨ãä¿è¨¼ããçãã®éåã«ãããæ¡ä»¶ãæä¾ããªããã°ãªãã¾ããã
注æ(a) SGã¯ããã°ãã°AGã¨åçã®ã°ã©ãã«ãªãã§ããããããããE-åçï¼E-equivalenceï¼ã«å¶éããã¨ãä¾ãã°ã»ãã³ãã£ãã¯ãªéè¤ã®æé¤ãªã©ã®ããã¤ãã®å½¢å¼ã®æ£è¦åãã¯ã¨ãªã®å®è¡åã«ã½ã¼ã¹ã»ããã¥ã¡ã³ãã«é©ç¨ãããã¨ãå¯è½ã«ãªãã¾ãã
(b) æ¡ä»¶3ã®æ§ç¯ã¯ã空ç½ãã¼ããSGã§åºç¾ããæ¹æ³ã¨å é¨çã«æ´åæ§ããããããªæ¹æ³ã§ãã½ãªã¥ã¼ã·ã§ã³ã»ãããã³ã°ã«ãã£ã¦å°å ¥ãããä»»æã®ç©ºç½ãã¼ãã確å®ã«ç¨ããããããã«ãªãã¾ããããã«ãããçãã®éåã®ä¸ã®1ã¤ä»¥ä¸ã®çãã§ããã®ããã«èå¥ããã空ç½ãã¼ããæ¬å½ã«SGã«ããã¦åãã§ããã¨ãã«ã®ã¿ã空ç½ãã¼ãèå¥åã確å®ã«çãã¾ããæ¡å¼µã空ç½ãã¼ãã¸ã®çãã®ãã¤ã³ãã£ã³ã°ã許ããªãå ´åããã®æ¡ä»¶ã¯ä»¥ä¸ã®æ¡ä»¶ã«ç°¡ç¥åã§ãã¾ãã
SG E-entails P(BGP) for each pattern solution P.
(c) ãããã®æ¡ä»¶ã¯ãSGãAGã¾ãã¯BGPã¨ç©ºç½ãã¼ããå ±æããªãã¨ããè¦ä»¶ãSPARQLã«èª²ãã¾ãããç¹ã«ãããã«ãã£ã¦ãSGãå®éã«AGã«ãªããã¨ãå¯è½ã«ãªãã¾ããããã«ããã空ç½ãã¼ãèå¥åãã¯ã¨ãªã¨ã½ã¼ã¹ã»ããã¥ã¡ã³ãã®éãè¤æ°ã®ã¯ã¨ãªã«ã¾ããã£ã¦æå³ãä¿æããã¯ã¨ãªã»ãããã³ã«ãå¯è½ã«ãªãã¾ãããããããã®ãããªãããã³ã«ã¯ãç¾å¨ã®SPARQLãããã³ã«ä»æ§ã§ã¯ãµãã¼ãããã¦ãã¾ããã
(d) æ¡ä»¶1ï½3ã®ã¿ãçãã«ãããå¿ è¦æ¡ä»¶ã§ãããããæ¡ä»¶4ã§ã¯ãæ£å½ãªçãã®éåãæ§ã ãªæ¹æ³ã§å¶éãããã±ã¼ã¹ã許ããã¾ããä¾ãã°ãOWL-DLã¯ã¨ãªã®ææ°æè¡ã¯ã空ç½ãã¼ãã¸ã®çãã®ãã¤ã³ãã£ã³ã°ãç¦æ¢ããã¦ããã±ã¼ã¹ã«æ³¨ç®ãã¦ãã¾ãããããã®æ¡ä»¶ãããã¹ã¦ã®ã¯ã¨ãªã空ã®çãã®éåãæããç çãªããã¥ã¼ããã®ã±ã¼ã¹ãã許ããã¨ã«æ³¨æãã¦ãã ããã
(e) ãããã®æ¡ä»¶ã¯ãBGPã®ç©ºç½ãã¼ãã«ãããã¤ã³ã¹ã¿ã³ã¹ã»ãããã³ã°ãæç¤ºçã«åç §ãã¾ãããããã¤ãã®å«æã¬ã¸ã¼ã ã«é¢ãã¦ã¯ã1ã¤ã®ã¤ã³ã¹ã¿ã³ã¹ã»ãããã³ã°ã®åå¨ã«ãã£ã¦ã空ç½ãã¼ãã®åå¨ã表ãè§£éãå®å ¨ã«å¾ããã¨ãã§ããããã§ã¯ããã¾ããããããã®æ¡ä»¶ã¯ããã®ãããªã¬ã¸ã¼ã ãã¯ã¨ãªã»ãã¿ã¼ã³ã®ç©ºç½ãã¼ãã«ãå®å ¨ã«åå¨ãããèªè¾¼ã¿ãä¸ãããã¨ã許ãã¾ãã
SGã«ãããSPARQLæ¡ä»¶ããAGã«ã°ã©ãåçï¼graph-equivalentï¼ã§ããããã©ããAGãBGPã¨ç©ºç½ãã¼ããå ±æããªãã¨ããï¼æåã®æ¡ä»¶ãæºããï¼ãã®ã§ããå ´åãEãã·ã³ãã«ãªå«æã§ããã±ã¼ã¹ã®ãããã®æ¡ä»¶ãSPARQLãæºããã¨ãããã¨ã示ãã¨åãããããã§ããå¯ä¸ã®éè¦ãªæ¡ä»¶ã¯(3)ã§ãã
ãã¹ã¦ã®çãPiã¯ãMi(BGPi)ãSGã®ãµãã°ã©ãã§ãããããªSPARQLã¤ã³ã¹ã¿ã³ã¹Miã®ã½ãªã¥ã¼ã·ã§ã³ã»ãããã³ã°ã®å¶éã§ããBGPiã¨SGãå ±éã®ç©ºç½ãã¼ããæããªããããMiã®ç¯å²ã«ã¯BGPiã®ç©ºç½ãã¼ãã¯å«ã¾ãã¾ããããããã£ã¦ãã½ãªã¥ã¼ã·ã§ã³ã»ãããã³ã°Piã¨Miã®RDFã¤ã³ã¹ã¿ã³ã¹ã»ãããã³ã°Iiæ§æè¦ç´ ã¯äº¤æããããããã£ã¦ãMi(BGPi) = Ii(Pi(BGPi))ã§ãããããã£ã¦ã次ã®ã¨ããã§ãã
M1(BGP1) union ... union Mn(BGPn)
= I1(P1(BGP1)) union ... union In(Pn(BGPn))
= [ I1 + ... + In]( P1(BGP1) union ... union Pn(BGPn) )
ããã¯ãIiã¤ã³ã¹ã¿ã³ã¹ã»ãããã³ã°ã®å®ç¾©åããã¹ã¦äºãã«æä»çã§ããããã§ããããããSGããæä»çã§ããããã§ãããã¾ãã
SG union [ I1 + ... + In]( P1(BGP1) union ... union Pn(BGPn) )
= [ I1 + ... + In](SG union P1(BGP1) union ... union Pn(BGPn) )
ããªãã¡ã
SG union P1(BGP1) union ... union Pn(BGPn)
ã¯ãSGã®ãµãã°ã©ãã§ããã¤ã³ã¹ã¿ã³ã¹ãæã£ã¦ããããã®ãããRDFè£éå®ç[RDF-MT]ã«ããSGã«ãã£ã¦ç°¡åã«å«æããã¾ãã
A. SPARQLææ³ A.1 SPARQLã¯ã¨ãªæååSPARQLã¯ã¨ãªæååã¯ãQueryã®çæè¦åã§å§ã¾ãã以ä¸ã®ææ³ã«ãã£ã¦å®ç¾©ãããè¨èªã®Unicodeã®æååï¼åç
§ï¼[CHARMOD]ã®6.1é
æååã®æ¦å¿µï¼ã§ããUnicodeã®å°æ¥ã®ãã¼ã¸ã§ã³ã¨ã®äºææ§ã®ããã«ããã®æååä¸ã®æåã«ã¯ããã®å
¬è¡¨æ¥ã®æç¹ã§å²ãå½ã¦ããã¦ããªãUnicodeã³ã¼ããã¤ã³ããå«ããã¨ãã§ããããã«ãªã£ã¦ãã¾ãï¼èå¥åã¨ãã¿ã¼ã³æ§æ[UNIID]ã®4é
ãã¿ã¼ã³æ§æãåç
§ï¼ãé¤å¤ããã¦ããæåã¯ã©ã¹ãä¼´ãçæè¦åï¼ä¾ãã°ã[^<>'{}|^`]
ï¼ã§ã¯ããããã®æåã¯#x0 - #x10FFFF
ã®ç¯å²ããé¤å¤ããã¾ãã
SPARQLã¯ã¨ãªæååã¯ã以ä¸ã®EBNFã§å®ç¾©ãããææ³ã«ãã£ã¦åæããåã«ãã³ã¼ããã¤ã³ãã»ã¨ã¹ã±ã¼ãã»ã·ã¼ã±ã³ã¹ç¨ã«å¦çããã¾ããSPARQLã¯ã¨ãªæååç¨ã®ã³ã¼ããã¤ã³ãã»ã¨ã¹ã±ã¼ãã»ã·ã¼ã±ã³ã¹ã¯ã以ä¸ã®éãã§ãã
ã¨ã¹ã±ã¼ã Unicodeã³ã¼ããã¤ã³ã '\u' HEX HEX HEX HEX ã³ã¼ãåããã16é²ã®å¤ã«å¯¾å¿ããå æ¬çãªç¯å²U+0ï½U+FFFFã®Unicodeã³ã¼ãã»ãã¤ã³ãã '\U' HEX HEX HEX HEX HEX HEX HEX HEX ã³ã¼ãåããã16é²ã®å¤ã«å¯¾å¿ããå æ¬çãªç¯å²U+0ï½U+10FFFFã®Unicodeã³ã¼ãã»ãã¤ã³ããããã§ã¯ãHEXã¯16é²ã®æåã§ãã
HEX ::= [0-9] | [A-F] | [a-f]
ä¾:
<ab\u00E9xy> # Codepoint 00E9 is Latin small e with acute - é \u03B1:a # Codepoint x03B1 is Greek small alpha - α a\u003Ab # a:b -- codepoint x3A is colon
ã³ã¼ããã¤ã³ãã»ã¨ã¹ã±ã¼ãã»ã·ã¼ã±ã³ã¹ã¯ãã¯ã¨ãªæååã®ã©ãã«ã§ãåºç¾ã§ãã¾ãããããã¯ãææ³è¦åã«åºã¥ããåæã®åã«å¦çããããããã£ã¦ãæ¥é è¾ä»ãååããã¼ã¯ä»ãããã:
ãã®ãããªãææ³ä¸ã§éè¦æ§ãæã¤ã³ã¼ããã¤ã³ãã«ç½®ãæãããããã¨ãããã¾ãã
ãããã®ã¨ã¹ã±ã¼ãã»ã·ã¼ã±ã³ã¹ã¯ã以ä¸ã®ææ³ã«å«ã¾ãã¦ãã¾ããããã®æç¹ã§ææ³ä¸æ£å½ãªæååã®ã¨ã¹ã±ã¼ãã»ã·ã¼ã±ã³ã¹ã®ã¿ã示ãããããããã¾ãããä¾ãã°ã夿°ã?x\u0020y
ãã¯ãæ£å½ã§ã¯ããã¾ããï¼\u0020
ã¯ã¹ãã¼ã¹ã§ããã夿°åã§ã¯è¨±ããã¦ããªãï¼ã
空ç½ï¼çæè¦åWS
ï¼ã¯2ã¤ã®çµç«¯è¨å·ãåºåãããã«ç¨ããããããã§ãªããã°ã1ã¤ã®çµç«¯è¨å·ã¨ãã¦ï¼èª¤ï¼èªèããã¾ããä¸è¨ã®å¤§æåã®è¦ååã¯ã空ç½ãéè¦ã§ããå ´åã示ãã¾ãããããã¯ãSPARQLãã¼ãµãæ§ç¯ããããã®å¯è½ãªç«¯æ«ã®é¸æãå½¢æãã¾ããæååã«ããã¦ç©ºç½ã¯éè¦ã§ãã
ä¾ãã°ã
?a<?b&&?c>?d
ã¯ããã¼ã¯ã³ã»ã·ã¼ã±ã³ã¹ã®å¤æ°ã?a
ããIRIã<?b&&?c>
ãã夿°ã?d
ãã§ãããã<
ãï¼å°ãªãï¼ããã³ã>
ãï¼å¤§ãªãï¼ãç¨ãã2ã¤ã®å¼ãçµåããæ¼ç®åã&&
ããå«ãã å¼ã§ã¯ããã¾ããã
SPARQLã¯ã¨ãªã«ãããã³ã¡ã³ãã¯ãIRIä¸ã¾ãã¯æååä¸ä»¥å¤ã§ã¯ãã#
ãã®å½¢å¼ãã¨ããããã¯ãè¡æ«ï¼æåå0x0D
ã¾ãã¯0x0A
ã§ãã¼ã¯ä»ããããï¼ã¾ã§ç¶ãããã³ã¡ã³ãã»ãã¼ã«ã¼ã®å¾ã«è¡æ«ããªããã°ãã¡ã¤ã«ã®çµãã¾ã§ç¶ãã¾ããã³ã¡ã³ãã¯ç©ºç½ã¨ãã¦æ±ããã¾ãã
IRI_REF
çæè¦åããã³PrefixedName
ï¼æ¥é è¾æ¡å¼µã®å¾ã®ï¼çæè¦åã§ãããã³ã°ãããããã¹ãã¯ãã¨ã¹ã±ã¼ãå¦çã®å¾ã«ãRFC 3987[RFC3987]ã®2.2é
ãIRIåç
§ããã³IRIã®ããã®ABNFãã®IRIåç
§ã®ä¸è¬çãªæ§æã«é©åãã¦ããªããã°ãªãã¾ãããä¾ãã°ãIRI_REF
<abc#def>
ã¯ãSPARQLã¯ã¨ãªæååã§åºç¾å¯è½ã§ãããIRI_REF
<abc##def>
ã¯åºç¾ã§ãã¾ããã
ãã¼ã¯ã¼ãBASEã§å®£è¨ãããåºåºIRIã¯ã絶対IRIã§ãªããã°ãªãã¾ããããã¼ã¯ã¼ãPREFIXã§å®£è¨ãããæ¥é è¾ã¯ãåãã¯ã¨ãªä¸ã§å宣è¨ã§ãã¾ãããBASEã¨PREFIXã®è¨è¿°ã«é¢ãã¦ã¯ã2.1.1é ãIRIç¨èªã®æ§æãåç §ãã¦ãã ããã
A.6 空ç½ãã¼ãã»ã©ãã«1ã¤ã®ã¯ã¨ãªãæã¤2ã¤ã®å¥ã ã®åºæ¬ã°ã©ãã»ãã¿ã¼ã³ã§ã¯ãåã空ç½ãã¼ãã»ã©ãã«ã使ç¨ãã¦ã¯ãªãã¾ããã
A.7 æååä¸ã®ã¨ã¹ã±ã¼ãã»ã·ã¼ã±ã³ã¹ã³ã¼ããã¤ã³ãã»ã¨ã¹ã±ã¼ãã»ã·ã¼ã±ã³ã¹ã«å ããä¸è¨ã¯ãä»»æã®string
çæè¦åï¼ä¾ãã°ãSTRING_LITERAL1
ãSTRING_LITERAL2
ãSTRING_LITERAL_LONG1
ãSTRING_LITERAL_LONG2
ï¼ã®ã¨ã¹ã±ã¼ãã»ã·ã¼ã±ã³ã¹ãè¡ãã¾ãã
ä¾:
"abc\n" "xy\rz" 'xy\tz'A.8 ææ³
ææ³ã§ç¨ããããEBNFè¡¨è¨æ³ã¯ãXMLï¼Extensible Markup Languageï¼1.1[XML11]ã®6é ã®è¡¨è¨æ³ã§å®ç¾©ããã¦ãã¾ãã
ãã¼ã¯ã¼ãã¯ãTurtleã¨N3ã«æ²¿ã£ã¦IRI rdf:type
ã®ä»£ããã«ç¨ãããããã¼ã¯ã¼ããa
ããé¤ãã大æåã»å°æåãåºå¥ããªãæ¹æ³ã§ããããã¾ãï¼å®å
¨å½¢ã§ã¯ãhttp://www.w3.org/1999/02/22-rdf-syntax-ns#type
ï¼ã
ãã¼ã¯ã¼ã:
BASE SELECT ORDER BY FROM GRAPH STR isURI PREFIX CONSTRUCT LIMIT FROM NAMED OPTIONAL LANG isIRI DESCRIBE OFFSET WHERE UNION LANGMATCHES isLITERAL ASK DISTINCT FILTER DATATYPE REGEX REDUCED a BOUND true sameTERM falseã¨ã¹ã±ã¼ãã»ã·ã¼ã±ã³ã¹ã¯ã大æåã¨å°æåãåºå¥ãã¾ãã
ãããããè¦åãé¸é¸æããã¨ãã«ã¯ãæãé·ãããããé¸ã°ãã¾ãã
çµç«¯è¨å·ã®çæè¦å:
注æ:
AdditiveExpression
ææ³è¦åã¯ã符å·ä»ãã®æ°åãå¾ç¶ããå¼ã®2ã¤ã®ã±ã¼ã¹ãã«ãã¼ãããã¨ã§ããããå¯è½ã«ãã¾ãããããã«ãããå¿
è¦ã«å¿ãã¦ã符å·ã®ãªãæ°ã®å ç®ã¾ãã¯æ¸ç®ãçãã¾ããããç¨ãããã¦ãããã¼ã«ã®ææ³ãã¡ã¤ã«ãããã§å ¥æã§ãã¾ãã
B. é©åæ§SPARQLã¯ã¨ãªæååã®é©åæ§ã«é¢ãã¦ã¯ä»é²ã®SPARQLææ³ããã¯ã¨ãªçµæã®é©åæ§ã«é¢ãã¦ã¯10 ã¯ã¨ãªå½¢å¼ã®é ãåç §ãã¦ãã ãããapplication/sparql-queryã¡ãã£ã¢ã»ã¿ã¤ãã¸ã®é©åæ§ã«é¢ãã¦ã¯ä»é² E. ã¤ã³ã¿ã¼ãããã»ã¡ãã£ã¢ã»ã¿ã¤ããåç §ãã¦ãã ããã
ãã®ä»æ§ã¯ãSPARQLãããã³ã«[SPROT]ããã³SPARQLã¯ã¨ãªçµæXMLãã©ã¼ããã[RESULTS]ã¨ã®ä½µç¨ãæå³ãã¦ãã¾ãããããã®é©åæ§åºæºã«é¢ãã¦ã¯ãããã®ä»æ§ãåç §ãã¦ãã ããã
SPARQLãããã³ã«ããããã¯ã¼ã¯ã»ãããã³ã«ã®ã¿ãªããæ½è±¡çãªã¤ã³ã¿ã¼ãã§ã¼ã¹ãè¨è¿°ããæ½è±¡çãªã¤ã³ã¿ã¼ãã§ã¼ã¹ããããã¯ã¼ã¯ã»ã¤ã³ã¿ã¼ãã§ã¼ã¹ã®ã¿ãªããAPIã«ãå½ã¦ã¯ã¾ããããããªããã¨ã«æ³¨æãã¦ãã ããã
C. ã»ãã¥ãªãã£ã«é¢ããçæç¹ï¼åèæ å ±ï¼FROMãFROM NAMEDãã¾ãã¯GRAPHãç¨ããSPARQLã¯ã¨ãªã¯ãæå®ãããURIãéåç
§ããããããã¾ãããããã¯ããµã¼ãã¹ã®æå¦ãªã©ã®é¢é£ãã坿¬¡çãªåé¡ã¨å
±ã«ããããã¯ã¼ã¯ããã£ã¹ã¯ã¾ãã¯CPUè³æºã®è¿½å 使ç¨ãæãããããã¾ãããURIï¼Uniform Resource Identifierï¼:ä¸è¬çæ§æ[RFC3986]ã®7é
ã®ã»ãã¥ãªãã£åé¡ã«ã¤ãã¦èå¯ããå¿
è¦ãããã¾ããããã«ãå ´åã«ãã£ã¦ã¯ãfile:
URIã®ã³ã³ãã³ãã«ã¢ã¯ã»ã¹ããå¦çããçµæã¨ãã¦è¿ããã¨ãã§ãããã¼ã«ã«è³æºã¸ã®äºæããªãã¢ã¯ã»ã¹ãè¡ããã¾ãã
SPARQLè¨èªã¯æ¡å¼µãèªãã¦ãããããã«ã¯ç¬èªã®ã»ãã¥ãªãã£ä¸ã®å½±é¿ãããã§ãããã
è¤æ°ã®IRIãåãå¤è¦³ãæã£ã¦ããããããã¾ãããç°ãªãã¹ã¯ãªããã®æåãåãã«è¦ããããããã¾ããï¼ããªã«æåã®ãоãã¯ã©ãã³æåã®ãoãã¨åãã«è¦ããããããã¾ããï¼ã çµåæåãå¾ç¶ããæåã¯ãå¥ã®æåã¨åãè¦è¦ç表ç¾ãæã£ã¦ããããããã¾ããï¼çµåã¢ãã¥ã¼ãã»ã¢ã¯ã»ã³ããå¾ç¶ããã©ãã³å°æåEã¯ãã¢ãã¥ã¼ãä»ãã©ãã³å°æåEã¨åãè¦è¦ç表ç¾ãæã£ã¦ãã¾ãï¼ãSPARQLã®ã¦ã¼ã¶ã¯ã注æãã¦ãã¼ã¿ä¸ã®IRIã«ãããããIRIãæã¤ã¯ã¨ãªãæ§ç¯ããªããã°ãªãã¾ãããé¡ä¼¼ãã¦ããæåã®ãããã³ã°ã«é¢ãã詳細ã¯ãUnicodeã»ãã¥ãªãã£ã«é¢ããçæç¹[UNISEC]ããã³IRIï¼Internationalized Resource Identifiersï¼[RFC3987]ã®8é ã«ããã¾ãã
D. ã¤ã³ã¿ã¼ãããã»ã¡ãã£ã¢ã»ã¿ã¤ãããã¡ã¤ã«æ¡å¼µåãããã³ãããã³ããã·ã¥ã»ãã¡ã¤ã«ã»ã¿ã¤ãSPARQLã¯ã¨ãªè¨èªã®ã¤ã³ã¿ã¼ãããã»ã¡ãã£ã¢ã»ã¿ã¤ã/MIMEã¿ã¤ãã¯ããapplication/sparql-queryãã§ãã
sparqlã¯ã¨ãªã»ãã¡ã¤ã«ã¯ããã¹ã¦ã®ãã©ãããã¼ã ä¸ã§æ¡å¼µåã.rqãï¼ãã¹ã¦å°æåï¼ã§ãããã¨ãæ¨å¥¨ããã¾ãã
ãããã³ããã·ã¥HFSãã¡ã¤ã«ã»ã·ã¹ãã ä¸ã«ä¿åãããsparqlã¯ã¨ãªã»ãã¡ã¤ã«ã«ã¯ããã¡ã¤ã«ã»ã¿ã¤ããTEXTããä»ä¸ããã¦ãããã¨ãæ¨å¥¨ããã¾ãã
SPARQL RDFã¯ã¨ãªè¨èªã¯ãW3C RDFãã¼ã¿ã»ã¢ã¯ã»ã¹ã»ã¯ã¼ãã³ã°ã°ã«ã¼ãå ¨ä½ã®ææã§ãããè°è«ãã³ã¡ã³ãããã³ã¬ãã¥ã¼ã«å¯¾ãããã¹ã¦ã®ç¾å¨ããã³éå»ã®ã¡ã³ãã¼ã«æè¬ãã¾ãã
ããã«ãæã ã¯ãã¯ã¼ãã³ã°ã°ã«ã¼ãã®ã³ã¡ã³ãã»ãªã¹ããéãã¦ãå¤ãã®äººã ã¨ã³ã¡ã³ããè°è«ã®ããåããè¡ãã¾ããããã¹ã¦ã®ã³ã¡ã³ããããè¯ãããã¥ã¡ã³ãã®ä½æã«ç¹ããã¾ãããAndyã¯ã¾ããSPARQLã«é¢é£ããç¹å®èª²é¡ã®èª¿æ»ã«å¯¾ããç¹ã«Jorge PeérezãGeoff ChappellãBob MacGregorãYosi Scharfãããã³Richard Newmanã«æè¬ãã¦ãã¾ããEricã¯ãBjörn Höhrmannã®è²´éãªæ´å©ã«å¯¾ãè¬è¾ã表ãã¾ãã
夿´å±¥æ´ããã¯ã2007å¹´6æ14æ¥ å§ååè£ã®çºè¡¨ä»¥éã®ãã®ããã¥ã¡ã³ãã«è¡ããã夿´ã®é«ã¬ãã«ãªæ¦è¦ã§ãã
application/sparql-query
ãæ¿èªãããããããã®è¦æ±ã®ã¹ãã¼ã¿ã¹ã«é¢ããæç« ãåé¤ãã¾ãããRetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4