2012年10月2日火曜日

“SPARQL query with OPTIONAL to two remote SPARQL endpoints”をやってみる(やっただけ)

参考: 2.2 SPARQL query with OPTIONAL to two remote SPARQL endpoints
参考をopenrdf-sesame 2.6.9 + tomcat (6.0.35 (今回IP:192.168.0.33) / 7.0.30 (今回IP:192.168.0.18) )で行う.
(注意: tomcat-7.0.30 では localhost:8080/openrdf-sesame にアクセスすると404を返すが,localhost:8080/openrdf-workbench へアクセスするとCurrent Selections/Sesame serverの項に表記されるので,応答はしているようである.)
1. 前々回を参考に一台目(今回IP:192.168.0.33)peopleというMemory storeを作成し,下記(参考より)を登録する.
  @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/> .

2. 同じく前々回を参考にニ台目(今回IP:192.168.0.18)people2というMemory storeを作成し,下記(参考より)を登録する.
  @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" .

3. 一台目もしくは二台目のworkbenchより下記(参考より)のSPARQL Queryを送信する(どちらからでも問題はない).
PREFIX foaf:   <http://xmlns.com/foaf/0.1/>
SELECT ?name ?interest ?known
WHERE
{
  SERVICE <http://192.168.0.33:8080/openrdf-sesame/repositories/people> { 
    ?person foaf:name ?name .  
    OPTIONAL { 
      ?person foaf:interest ?interest .
      SERVICE <http://192.168.0.18:8080/openrdf-sesame/repositories/people2> { 
        ?person foaf:knows ?known . } }
  }    
}

赤字の部分は参考では'people'になっていたが(2012/10/2現在), 参考内のQuery Resultと合わせるには'name'にする必要がある.
4. Query Resultを確認する.

基本は以下のQuery
PREFIX foaf:   <http://xmlns.com/foaf/0.1/>
SELECT ?name
WHERE
{
  SERVICE <http://192.168.0.33:8080/openrdf-sesame/repositories/people> { 
    ?person foaf:name ?name .  
  }    
}

一台目(192.168.0.33)でなら以下でもよい
PREFIX foaf:   <http://xmlns.com/foaf/0.1/>
SELECT ?name
WHERE
{
  ?person foaf:name ?name .      
}


上のQueryの場合の結果

0 件のコメント: