ãæ³¨æã ãã®ããã¥ã¡ã³ãã¯ãW3Cã®SPARQL 1.1 Federated Query W3C Recommendation 21 March 2013ã®å訳ã§ãã
ãã®ããã¥ã¡ã³ãã®æ£å¼çã¯W3Cã®ãµã¤ãä¸ã«ããè±èªçã§ããããã®ããã¥ã¡ã³ãã«ã¯ç¿»è¨³ã«èµ·å ãã誤ãããããã¾ãã誤訳ã誤æ¤ãªã©ã®ãææã¯ã訳è
ã¾ã§ãé¡ãè´ãã¾ãã
SPARQLã¯ã¨ãªã»ãµã¼ãã¹ã®å¢å ã«ããããã¼ã¿ã®å©ç¨è
ããã¦ã§ãä¸ã«åæ£ãããã¼ã¿ãçµ±åããæ©ä¼ãæä¾ããã¦ãã¾ãããã®ä»æ§ã¯ãSPARQL 1.1ã¯ã¨ãªè¨èªã«å¯¾ããSERVICE
ã®æ¡å¼µã®æ§æã¨ã»ãã³ãã£ã¯ã¹ãå®ç¾©ãã¦ãã¾ãããã®æ¡å¼µã«ãããã¯ã¨ãªã®ä½æè
ã¯ãã¯ã¨ãªã®ä¸é¨ãç¹å®ã®SPARQLã¨ã³ããã¤ã³ãã«åãã¦å®è¡ãããã¨ãã§ããããã«ãªãã¾ããçµæã¯çµ±åã¯ã¨ãªã»ããã»ããµã«è¿ãããæ®ãã®ã¯ã¨ãªã®çµæã¨çµåããã¾ãã
çµæéåã¯ãSPARQL 1.1ã¯ã¨ãªã»ããã¥ã¡ã³ãã¨åããã表形å¼ã§ç¤ºããã¾ãã
x y z "Alice"<http://example/a>
ããã¤ã³ãã£ã³ã°ãã¯ã対ï¼å¤æ°ãRDFç¨èªï¼ã§ããx
ãy
ãz
ï¼åã®è¦åºãã¨ãã¦ç¤ºãããï¼ã¨ãã3ã¤ã®å¤æ°ãããã¾ããåã½ãªã¥ã¼ã·ã§ã³ã¯ãè¡¨ã®æ¬æã®1ã¤ã®è¡ã¨ãã¦ç¤ºããã¦ãã¾ããããã§ã¯ã1ã¤ã®ã½ãªã¥ã¼ã·ã§ã³ãããã夿°x
ã¯"Alice"
ã«ãã¤ã³ãããã¦ããã夿°y
ã¯http://example/a
ã«ãã¤ã³ãããã¦ããã夿°z
ã¯RDFç¨èªã«ãã¤ã³ãããã¦ãã¾ãããã½ãªã¥ã¼ã·ã§ã³ã§ã¯ã夿°ã¯ãå¿
ããããã¤ã³ãããã¦ããå¿
è¦ã¯ããã¾ããã
SERVICE
ãã¼ã¯ã¼ãã¯ãé éã®SPARQLã¨ã³ããã¤ã³ãã«å¯¾ããä¸é¨ã®SPARQLã¯ã¨ãªãå¼ã³åºãããã«çµ±åã¯ã¨ãªã»ããã»ããµã«å½ãã¾ãããã®é
ã§ã¯ãSERVICE
ãã¼ã¯ã¼ããç¨ããæ¹æ³ã®ä¾ã示ãã¾ãã以ä¸ã®é
ã§ã¯ããã®æ¡å¼µã®æ§æã¨ã»ãã³ãã£ã¯ã¹ãå®ç¾©ãã¾ãã
ãã®ä¾ã§ã¯ãé éã®SPARQLã¨ã³ããã¤ã³ãã«ã¯ã¨ãªãè¡ããè¿ããããã¼ã¿ããã¼ã«ã«ã®RDFãã¼ã¿ã»ããã®ãã¼ã¿ã¨çµåããæ¹æ³ã示ãã¦ãã¾ããæã
ãç¥ã£ã¦ãã人ã
ã®ååãçºè¦ããããã®ã¯ã¨ãªãèãã¦ã¿ã¾ããæ§ã
ãªäººã
ã®ååã«é¢ãããã¼ã¿ã¯ãhttp://people.example.org/sparql
ã®ã¨ã³ããã¤ã³ãã§å
¥æã§ãã¾ãã
@prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix : <http://example.org/> . :people15 foaf:name "Alice" . :people16 foaf:name "Bob" . :people17 foaf:name "Charles" . :people18 foaf:name "Daisy" .
ããã¦ã1ã¤ã®ããªãã«ãå«ã¾ãã¦ãããã¼ã«ã«ã®FOAFãã¡ã¤ã«
http://example.org/myfoaf.rdf
ã¨çµåãããã¨ãã¾ãã
<http://example.org/myfoaf/I> <http://xmlns.com/foaf/0.1/knows> <http://example.org/people15> .
ã¯ã¨ãª:
PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?name FROM <http://example.org/myfoaf.rdf> WHERE { <http://example.org/myfoaf/I> foaf:knows ?person . SERVICE <http://people.example.org/sparql> { ?person foaf:name ?name . } }
ä¸è¨ã®ãã¼ã¿ã«åºã¥ããã®ã¯ã¨ãªã«ã¯1ã¤ã®ã½ãªã¥ã¼ã·ã§ã³ãããã¾ãã
ã¯ã¨ãªçµæ:
2.2 OPTIONALãç¨ãã2ã¤ã®é éã®SPARQLã¨ã³ããã¤ã³ãã«å¯¾ããSPARQLã¯ã¨ãªäººã ã«ã¯ã¨ãªãè¡ãããªãã·ã§ã³ã¨ãã¦å½¼ãã®èå³ã¨å½¼ããç¥ã£ã¦ãã人ã ã®ååãå¾ããã¨ãã¾ããä¾ãã°ã人ã ã«é¢ãããã¼ã¿ãå«ã¾ãã¦ãã2ã¤ã®ã¨ã³ããã¤ã³ããæ³åãã¦ãã ããã
é éã®SPARQLã¨ã³ããã¤ã³ãhttp://people.example.org/sparql
ã®ããã©ã«ãã»ã°ã©ãã®ãã¼ã¿:
@prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix : <http://example.org/> . :people15 foaf:name "Alice" . :people16 foaf:name "Bob" . :people17 foaf:name "Charles" . :people17 foaf:interest <http://www.w3.org/2001/sw/rdb2rdf/> .
ããã¦ãé éã®SPARQLã¨ã³ããã¤ã³ãhttp://people2.example.org/sparql
ã®ããã©ã«ãã»ã°ã©ãã®ãã¼ã¿:
@prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix : <http://example.org/> . :people15 foaf:knows :people18 . :people18 foaf:name "Mike" . :people17 foaf:knows :people19 . :people19 foaf:name "Daisy" .
ã¯ã¨ãª:
PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?person ?interest ?known WHERE { SERVICE <http://people.example.org/sparql> { ?person foaf:name ?name . OPTIONAL { ?person foaf:interest ?interest . SERVICE <http://people2.example.org/sparql> { ?person foaf:knows ?known . } } } }
ä¸è¨ã®ãã¼ã¿ã«åºã¥ããã®ã¯ã¨ãªã«ã¯3ã¤ã®ã½ãªã¥ã¼ã·ã§ã³ãããã¾ãã
ã¯ã¨ãªçµæ:
person interest known "Alice" "Bob" "Charles" <http://www.w3.org/2001/sw/rdb2rdf/> <http://example.org/people19>ä¸è¨ã®ã¯ã¨ãªã«ã¯ãOPTIONAL
å¥å
ã«å
¥ãåã®SERVICE
ããããã¨ã«æ³¨æãã¦ãã ãããåºæ¬çãªçµ±åã¯ã¨ãªããµãã¼ãããããã«ããã®ã¯ã¨ãªã«ã¯http://people.example.org/sparql
ã®SPARQLã¯ã¨ãªã»ãµã¼ãã¹ãå¿
è¦ã§ãã
SERVICE
ãã¿ã¼ã³ã®å®è¡ã¯ãããã¤ãã®çç±ã«ãã失æããå¯è½æ§ãããã¾ããé éã®ãµã¼ãã¹ããã¦ã³ãã¦ããããããã¾ãããããµã¼ãã¹ã®IRIãéåç
§å¯è½ã§ã¯ãªãããããã¾ããããã¨ã³ããã¤ã³ããã¯ã¨ãªã«ã¨ã©ã¼ãè¿ãããããã¾ãããé常ããã®ãããªç¶æ³ã§ã¯ãSERVICE
ãã¿ã¼ã³ãå«ã¾ãã¦ãããå¼ã³åºãããã¯ã¨ãªã¯å
¨ä½ã¨ãã¦å¤±æã¨ãªãã¾ããSILENT
ãã¼ã¯ã¼ããç¨ããã°ãã¯ã¨ãªã¯ã失æããSERVICE
ãªã¯ã¨ã¹ããæç¤ºçã«èªãããã¨ãã§ãã¾ããSILENT
ãã¼ã¯ã¼ãã¯ãé éã®SPARQLã¨ã³ããã¤ã³ãã«ã¢ã¯ã»ã¹ãã¦ããéã«ééããã¨ã©ã¼ã¯ãã¯ã¨ãªã®å¦çä¸ã¯ç¡è¦ãããã¹ãã§ããã¨ãããã¨ã示ãã¾ãã失æããSERVICE
å¥ã¯ããã¤ã³ãã£ã³ã°ã®ãªã1ã¤ã®ã½ãªã¥ã¼ã·ã§ã³ã®çµæããããã®ããã«æ±ããã¾ãã
次ã®ã¯ã¨ãªã«ã¯ãSILENT
ãã¼ã¯ã¼ããåå¨ãã¦ãã¾ããSPARQLã¨ã³ããã¤ã³ããåå¨ãã¦ããªãããã¦ã³ãã¦ãããã¾ãã¯ãã¢ã¯ã»ã¹å¯è½ã§ã¯ã¨ããçç±ã§é éã®SPARQLã¨ã³ããã¤ã³ããå©ç¨ã§ããªãå ´åãã¯ã¨ãªã¯ã1ã¤ã®ç©ºã®ã½ãªã¥ã¼ã·ã§ã³ã»ãããã³ã°ã®ã½ãªã¥ã¼ã·ã§ã³ã»ã·ã¼ã±ã³ã¹ãè¿ãã§ããããSILENT
ãã¼ã¯ã¼ããåå¨ãã¦ããªããã°ãã¯ã¨ãªã¯åæ¢ããã¨ã©ã¼ãè¿ãã§ãããã
<http://people.example.org/sparql>
ã¨ã³ããã¤ã³ãã®ãã¼ã¿:
<http://example.org/people15> <http://xmlns.com/foaf/0.1/name> "Charles" .
ã¯ã¨ãª:
PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?name WHERE { SERVICE SILENT <http://people.example.org/sparql> { <http://example.org/people15> foaf:name ?name . } }
é éã®SPARQLã¨ã³ããã¤ã³ãã®ã¯ã¨ãªä¸ã«ã¨ã©ã¼ãçºçããå ´åã®ã¯ã¨ãªçµæ:
2.4 SERVICEã¨VALUESã®ç¸äºä½ç¨ï¼åèæ å ±ï¼SPARQL 1.1ã¯ã¨ãªã«ã¯ãVALUES
å¥ï¼VALUESï¼ãå«ã¾ãã¦ãããããã¯ã¯ã¨ãªè©ä¾¡ã®çµæã¨çµåãããé ä¸åã®ã½ãªã¥ã¼ã·ã§ã³ã»ã·ã¼ã±ã³ã¹ãæä¾ããããã«ä½¿ç¨ã§ãã¾ããSPARQL 1.1çµ±åã¯ã¨ãªã®å®è£
è
ã¯ãã¯ã¨ãªã®ä»ã®é¨åã®è©ä¾¡ããå¾ãããã½ãªã¥ã¼ã·ã§ã³ã®ãã¤ã³ãã£ã³ã°ã«åºã¥ããé éã®ã¨ã³ããã¤ã³ãããåãåã£ãçµæãå¶ç´ããããã«VALUES
å¥ã使ç¨ã§ãã¾ãã
次ã®ä¾ã¯ãã©ã®ããã«SERVICE
ã¨VALUES
ã飿ºå¯è½ãã示ãã¦ãã¾ããããã©ã«ãã»ã°ã©ãå
ã®foaf:Personã¨å½¼ããç¥ã£ã¦ãã人ã
ã®ãã¹ã¦ã®ã¤ã³ã¹ã¿ã³ã¹ããé éã®ã¨ã³ããã¤ã³ãhttp://example.org/sparql
ã§æ±ããã¯ã¨ãªãæ³å®ãã¦ãã ããã
ããã©ã«ãã»ã°ã©ãå ã®ãã¼ã¿:
@prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix : <http://example.org/> . :a a foaf:Person ; foaf:name "Alan" ; foaf:mbox; "alan@example.org" . :b a foaf:Person ; foaf:name "Bob" ; foaf:mbox "bob@example.org" .
ããã¦ãé éã®SPARQLã¨ã³ããã¤ã³ãhttp://example.org/sparql
ã®ããã©ã«ãã»ã°ã©ãå
ã®ãã¼ã¿:
@prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix : <http://example.org/> . :a foaf:knows :b . :b foaf:knows :c . :c foaf:knows :a . :a foaf:interest "SPARQL 1.1 Basic Federated Query" . :b foaf:interest "SPARQL 1.1 Query" . :c foaf:interest "RDB2RDF Direct mapping" .
ã¯ã¨ãª:
PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?s { ?s a foaf:Person . SERVICE <http://example.org/sparql> {?s foaf:knows ?o } }
ãµã¼ãã¹ã®å¼ã³åºãã«å¶ç´ããªããå
ã®ã¯ã¨ãªãåç´ã«å®è¡ãããã°ãã¨ã³ããã¤ã³ãã¯å¿
è¦ä»¥ä¸ã®çµæãè¿ãããããã¾ãããã¾ããSPARQLã¨ã³ããã¤ã³ãããã¹ã¦ã®çµæãè¿ãã¨ã¯éããªãããããã¾ãããå¤ãã®æ¢åã®SPARQLã¨ã³ããã¤ã³ãã«ã¯ãããããè¿ãçµæã®æ°ã«å¶éãããããã¼ã«ã«ã®ããã©ã«ãã»ã°ã©ãã®ä¸»èª?s
ã¨ä¸è´ãããã®ãéãå¯è½æ§ãããã¾ãããããã£ã¦ãçµ±åã¯ã¨ãªã«å¯¾ããã¯ã¨ãªã»ãã©ã³ãã®å®è£
ã¯ã代ããã«ã¯ã¨ãªã2ã¤ã®ã¯ã¨ãªã«åè§£ãããã¨ã«ãããããããããã®å ´åããã¼ã«ã«ã®ããã©ã«ãã»ã°ã©ãã®ãã¤ã³ãã£ã³ã°ãæåã«è©ä¾¡ããã¾ãã
ã¯ã¨ãª:
PREFIX : <http://example.org/> PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?s { ?s a foaf:Person }
ä¸è¨ã®ãã¼ã¿ã«åºã¥ããã®ã¯ã¨ãªã«ã¯2ã¤ã®ã½ãªã¥ã¼ã·ã§ã³ãããã¾ãã
ã¯ã¨ãªçµæ:
s <http://example.org/a> <http://example.org/b>次ã«ã?s
ã®ã½ãªã¥ã¼ã·ã§ã³ãæã¤å¶ç´ãããã¯ã¨ãªããé éã®ã¨ã³ããã¤ã³ã<http://example.org/sparql>ã«éãã¾ãã
PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX : <http://example.org/> SELECT * {?s foaf:knows ?o } VALUES (?s) { (:a) (:b) }
SERVICE
ãå«ã¾ãã¦ããã¯ã¨ãªã»ããã»ã¹ã¯ãè¿ããããã¼ã¿ããå
¨ä½çãªã¯ã¨ãªã«å¿
è¦ãªãã¼ã¿ã®ç¯å²ã«å¶éãã¾ãã
ã¯ã¨ãª:
PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?s ?o { ?s a foaf:Person SERVICE <http://example.org/sparql> {?s foaf:knows ?o } }
VALUES
ãç¨ããä¸è¨ã®ãã¼ã¿ã«åºã¥ããã®ã¯ã¨ãªã«ã¯ãå
¨ä½çãªã¯ã¨ãªã«å¯¾ãã¦2ã¤ã®ã½ãªã¥ã¼ã·ã§ã³ãäºæããã¾ãã
ã¯ã¨ãªçµæ:
s o <http://example.org/a> <http://example.org/b> <http://example.org/b> <http://example.org/c> 3 SPARQL 1.1ã·ã³ãã«ãªçµ±åæ¡å¼µ: ã»ãã³ãã£ã¯ã¹ 3.1 SPARQL代æ°ã¸ã®ç½®æSERVICE
æ¡å¼µã¯ãSPARQLã¯ã¨ãª1.1ã®Transformï¼æ§æå½¢å¼ï¼ã¸ã®è¿½å ãä¼´ã£ããGroupGraphPatternã®ä»å çãªå½¢ã¨å®ç¾©ããã¾ãã
å½¢å¼ã
GroupGraphPattern
ã§ããå ´å[SPARQL 1.1ã¯ã¨ãªè¨èª]ã®ã°ã©ãã»ãã¿ã¼ã³ã®ç½®æã®é ãããGroupGraphPatternã®å¤æãæ¡å¼µãã¦
SERVICE
ãã¿ã¼ã³ã®å¤æãå®ç¾©ãã¾ãã
Let FS := the empty set Let G := the empty pattern, Z, a basic graph pattern which is the empty set. Let SilentOp := boolean, indicating SERVICE error behavior. For each element E in the GroupGraphPattern If E is of the form FILTER(expr) FS := FS ⪠{expr} End If E is of the form OPTIONAL{P} Let A := Transform(P) If A is of the form Filter(F, A2) G := LeftJoin(G, A2, F) Else G := LeftJoin(G, A, true) End End If E is of the form MINUS{P} G := Minus(G, Transform(P)) End If E is of the form BIND(expr AS var) G := Extend(G, var, expr) End If E is any other form Let A := Transform(E) G := Join(G, A) End If E is of the form SERVICE [SILENT] IRI {P} Let G := Join(G, Service(IRI, Transform(P), SilentOp)) End End If FS is not empty: Let X := Conjunction of expressions in FS G := Filter(X, G) The result is G.3.2 SPARQL 1.1ã·ã³ãã«ãªçµ±åæ¡å¼µä»£æ°
SERVICE
ã®è©ä¾¡ã¯ãå
¥ãåã®ã°ã©ãã»ãã¿ã¼ã³ã®SPARQLãããã³ã«[SPROT]ã®å®è¡ã«ããè¿ãããSPARQLçµæ[RESULTS]ã§å®ç¾©ããã¾ãã
å®ç¾©: ãµã¼ãã¹ã»ãã¿ã¼ã³ã®è©ä¾¡
次ã®ã¨ããã¨ãã¾ãã
Ω0
ã1ã¤ã®ç©ºã®ã½ãªã¥ã¼ã·ã§ã³ãæã¤ã½ãªã¥ã¼ã·ã§ã³ã®éåã¨ããããã¨ã次ã®ã¨ããã¨ãªãã¾ãã
eval(D(G), Service(IRI,P,SilentOp)) = Invocation( iri, P, SilentOp )
ãã®ã¨ããInvocation(IRI, P, SilentOp)ã¯ã
SELECT * WHERE Q
ã®çµæã«å¯¾å¿ããã½ãªã¥ã¼ã·ã§ã³ã»ãããã³ã°ã®å¤ééåã§ããããã§ãªãå ´åã¯ãΩ0.
ã§ããããã§ãªãå ´åã¯ã以ä¸ã®é
ã§ã¯ãSPARQL代æ°ã«ãããSERVICE
ãã¿ã¼ã³ã®è©ä¾¡ã示ã2ã¤ã®ä¾ãç´¹ä»ãã¾ãã
ä¾: ä¸é£ã®joinã®SERVICE
ã°ã©ãã»ãã¿ã¼ã³:
... WHERE { { ?s :p1 ?v1 } SERVICE <srvc> {?s :p2 ?v2 } { ?s :p3 ?v2 } }
Join( Service( <srvc>,
BGP( ?s :p2 ?v2 ), false ),
BGP( ?s :p3 ?v2 ) )
ä¾: ä¸é£ã®joinã®SERVICE SILENT
ã°ã©ãã»ãã¿ã¼ã³:
... WHERE { { ?s :p1 ?v1 } SERVICE SILENT <srvc> {?s :p2 ?v2 } { ?s :p3 ?v2 } }
Join( Service( <srvc>,
BGP( ?s :p2 ?v2 ), true ),
BGP( ?s :p3 ?v2 ) )
ãã®é
ã§ã¯ãSPARQLãã¿ã¼ã³SERVICE VAR
ã«å¯¾ããå
¬å¼ãªè©ä¾¡ã®ã»ãã³ãã£ã¯ã¹ãæä¾ãã¾ãããSPARQLãã¿ã¼ã³SERVICE VAR
ã®è©ä¾¡ãã©ã®ããã«è©ä¾¡ã§ãããã«é¢ããæç¤ºãæä¾ããã ãã§ãã
ãµã¼ãã¹IRIã®ä»£ããã«å¤æ°ãç¨ãããã¦ããã°ãããã¯ãã½ãªã¥ã¼ã·ã§ã³ã«å¯¾ãããµã¼ãã¹ã®å¼ã³åºããããã®ã½ãªã¥ã¼ã·ã§ã³ã§ã¯ããã®å¤æ°ã®ãã¤ã³ãã£ã³ã°ã«ä¾åãã¦ãããã¨ã表ãã¾ããä¾ãã°ãããã©ã«ãã»ã°ã©ãã«ã¯ãããã¸ã§ã¯ãã®ã¨ã³ããã¤ã³ãã«é¢ãããã¼ã¿ãã©ã®ãµã¼ãã¹ã«å«ã¾ããããã«é¢ãããã¼ã¿ãå«ã¾ãã¦ããããããã¾ããããããã®ããã¸ã§ã¯ãï¼DOAPèªå½ãç¨ããï¼ã«é¢ãããã¼ã¿ã«ã¯ã¨ãªãè¡ããã¨ãã§ããSPARQLã¨ã³ããã¤ã³ãã«é¢ããæ å ±ãå«ã¾ãã¦ããæ§ã ãªããã¸ã§ã¯ãã«é¢ããæ¬¡ã®ãã¼ã¿ãä»®å®ãã¦ãã¾ãã
@prefix void: <http://rdfs.org/ns/void#> . @prefix dc: <http://purl.org/dc/elements/1.1/> . @prefix doap: <http://usefulinc.com/ns/doap#> . [] dc:subject "Querying RDF" ; void:sparqlEndpoint <http://projects1.example.org/sparql> . [] dc:subject "Querying RDF remotely" ; void:sparqlEndpoint <http://projects2.example.org/sparql> . [] dc:subject "Updating RDF remotely" ; void:sparqlEndpoint <http://projects3.example.org/sparql> .
é éã®SPARQLã¨ã³ããã¤ã³ãhttp://projects2.example.org/sparqlã®ããã©ã«ãã»ã°ã©ãå ã®ãã¼ã¿:
_:project1 doap:name "Query remote RDF Data" . _:project1 doap:created "2011-02-12"^^xsd:date . _:project2 doap:name "Querying multiple SPARQL endpoints" . _:project2 doap:created "2011-02-13"^^xsd:date .
é éã®SPARQLã¨ã³ããã¤ã³ãhttp://projects3.example.org/sparqlã®ããã©ã«ãã»ã°ã©ãå ã®ãã¼ã¿:
_:project3 doap:name "Update remote RDF Data" . _:project3 doap:created "2011-02-14"^^xsd:date .
次ã«ããremoteãã¨ãã主èªã«ã¤ãã¦ããã¸ã§ã¯ãã®ããã¸ã§ã¯ãåã«ã¯ã¨ãªãè¡ãããã¨ãã¾ãã
PREFIX void: <http://rdfs.org/ns/void#> PREFIX dc: <http://purl.org/dc/elements/1.1/> PREFIX doap: <http://usefulinc.com/ns/doap#> SELECT ?service ?projectName WHERE { # 主èªãremoteããæã¤ãµã¼ãã¹ãçºè¦ããã ?p dc:subject ?projectSubject ; void:sparqlEndpoint ?service . FILTER regex(?projectSubject, "remote") # ãµã¼ãã¹ã®ããã¸ã§ã¯ãã«ã¯ã¨ãªãå®è¡ããã SERVICE ?service { ?project doap:name ?projectName . } }
次ã®è¡¨ã¯ãä¸è¨ã®ãã¼ã¿ãç¨ãããã®ã¯ã¨ãªã«å¯¾ããç´è¦³çãªã½ãªã¥ã¼ã·ã§ã³ã示ãã¦ãã¾ãã
ã¯ã¨ãªçµæ:
service title <http://projects2.example.org/sparql> "Query remote RDF Data" <http://projects2.example.org/sparql> "Querying multiple SPARQL endpoints" <http://projects3.example.org/sparql> "Update remote RDF Data"夿°ãå«ã¾ãã¦ããSERVICE
å¥ã¯ãSPARQLã¯ã¨ãªã»ãµã¼ãã¹ãåå¥ã«ç¶ãã¦å¼ã³åºããã¨ã§å®è¡ã§ãã¾ããåã
ã®å¼ã³åºãã®çµæã¯ãåéåã§çµã¿åããããã¾ãã
ã¯ã¨ãªã»ã¨ã³ã¸ã³ã¯ã対象ã¨ãªãããSPARQLã¯ã¨ãªã»ãµã¼ãã¹ã決å®ããªããã°ãªãã¾ããããããè¡ãããã®æ£ç¢ºãªä»çµã¿ã¯ããã®ããã¥ã¡ã³ãã§ã¯å®ç¾©ãã¦ãã¾ãããå®è¡ã®é åºãã試ã¿ãã¹ããµã¼ãã¹ã®ãªã¹ããæ±ºå®ããããã«ä½¿ç¨ã§ãã¾ããä¸è¨ã®ä¾ã¯ãå®è¡ã®å
·ä½çãªé åºãææ¡ãã¦ãã¾ããã¤ã¾ããåºæ¬çãªã°ã©ãã»ãã¿ã¼ã³ã¨SERVICE
ãããã¯ã®å¤ã®ãã£ã«ã¿ãæåã«è©ä¾¡ããã¨ã?service
ã«å¯¾ãããã¤ã³ãã£ã³ã°ãçæããããã®å¾ãããããSERVICE
ãããã¯ãè©ä¾¡ããããã«å©ç¨ã§ããã§ãããã
?p dc:subject ?projectSubject ; void:sparqlEndpoint ?service FILTER regex(?projectSubject, "remote")
?service
ãµã¼ãã¹ãä¸åº¦è©ä¾¡ãããã°ã?service
ã®åã
ã®å¤ã«å¯¾ãã¦SERVICE
ãå®è¡ã§ãã¾ãã
SERVICE ?service { ?project doap:name ?projectName . }
空ç½ãã¼ãã¯ããããã·ãªã¢ã«åããããã¥ã¡ã³ãã«åºæã®ãã®ã§ãããã¨ã«æ³¨æãã¦ãã ãããããã«ãSERVICE
ã®å¼ã³åºãã¯ãã·ãªã¢ã«åãããRDFããã¥ã¡ã³ãã転éãã空ç½ãã¼ãããµã¼ãã¹ã®å¼ã³åºãã®éã§ä¸æã«ããSPARQLãããã³ã«[SPROT]ã«ä¾åãã¾ãã
SPARQL 1.1çµ±åã¯ã¨ãªæ¡å¼µãå«ã¾ãã¦ããSPARQLã¯ã¨ãªæååã®é©åæ§ã«é¢ãã¦ã¯ã4é
ã®SPARQL 1.1çµ±åã¯ã¨ãªææ³ãåç
§ãã¦ãã ãããSERVICE
ãã¼ã¯ã¼ãã«å¯¾ããã¯ã¨ãªçµæã®é©åæ§ã«é¢ãã¦ã¯ã3.1é
ã®SERVICEã®å®ç¾©ãåç
§ãã¦ãã ããã
ãã®ä»æ§ã¯ã SPARQL 1.1ã¯ã¨ãªè¨èªã¨ã®ä½µç¨ãæå³ãã¦ãã¾ãããã®é©åæ§åºæºã«ã¤ãã¦ã¯ããã®ä»æ§ãåç §ãã¦ãã ããã
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.3