6.3 REST API を使用したトリプルのクエリ
6.3.7 REST API を使用したトリプルの操作
同じ
SPARQL
のASKクエリで、ブール型の結果がJSON
として返されるようにする場合 は、次の例のようになります。curl --anyauth --user user:password -i -X POST --data-binary @./ask-sparql.sparql
-H "Content-type: application/sparql-query"
-H "Accept: application/sparql-results+json"
http://localhost:8050/v1/graphs/sparql
=>
HTTP/1.1 200 OK
Content-type: application/sparql-results+json Server: MarkLogic
Content-Length: 17 Connection: Keep-Alive Keep-Alive: timeout=5 {"boolean":true}
6.3.6.5
サポートされていないシリアライゼーションサポートされていないシリアライゼーションの応答に対してGETリクエストを実行する と、「406 Not Acceptable」エラーが発生します。また、SPARQLペイロードのパースで 障害が発生すると、応答によって「400 Bad Request」エラーが発生します。
次に例を示します。
<rapi:error xmlns:rapi="http://marklogic.com/rest-api">
<rapi:status-code>400</rapi:status-code>
<rapi:status>Bad Request</rapi:status>
<rapi:message-code>RESTAPI-INVALIDCONTENT</rapi:message-code>
<rapi:message>RESTAPI-INVALIDCONTENT: (err:FOER0000) Invalid content:
Unexpected Payload: c:\space\example.ttl</rapi:message>
</rapi:error>
このエンドポイントがパラメータなしで呼び出されると、データベース内のすべてのト リプルに関してデータベース内の主語ノードのリストが返されます。
Web
ブラウザにおける応答の例は、次に示すとおりです。注:
このエンドポイントは、表示する項目数を
10,000
件に制約するようにハー ドコーディングされています。ページネーションはサポートされません。ノードをドリルダウンすると、データベース内のトリプルをトラバースおよびナビゲー トできます。
例えば、
IRI
をクリックすると、1
つあるいは複数の関連トリプルが返されることがあ ります。オプションのiriパラメータを使用して、返す情報に関する特定の
IRI
をTurtle
トリプ ルのシリアライゼーションで指定できます。次に例を示します。
http://localhost:8050/v1/graphs/things?iri=http://dbpedia.org/resource /Abraham_Lincoln
IRI
http://dbpedia.org/resources/Abraham_Lincolnで選択されたノードが、Turtleシリア ライゼーションで返されます。curlまたは
HTTP
リクエストを発行する同等のコマンドラインツールを使用している場 合は、次のacceptをリクエストヘッダに追加できます。•
パラメータが指定されていない場合はtext/html。
•
iriパラメータが使用されている場合はMIME
タイプ。「サポートされているRDF
トリプルのシリアライゼーション」(36
ページ)を参照してください。注:
このエンドポイントでは、GETが唯一のサポートされている動詞です。要 求した情報を返すには、
rest-reader
権限が必要です。次の例では、GETリクエストが、指定されているiriパラメータで選択されたノードを
Turtle
トリプルのシリアライゼーションで返します。curl --anyauth --user admin:password -i -X GET \ -H "Accept: text/turtle" \
http://localhost:8051/v1/graphs/things?iri=http://dbpedia.org/ \ resource/Aristotle
=>
HTTP/1.1 200 OK
Content-type: text/turtle; charset=UTF-8 Server: MarkLogic
Content-Length: 628 Connection: Keep-Alive Keep-Alive: timeout=5
@prefix xs: <http://www.w3.org/2001/XMLSchema/> .
<http://dbpedia.org/resource/Aristotle>
<http://dbpedia.org/ontology/deathPlace>
<http://dbpedia.org/resource/Chalcis> .
<http://dbpedia.org/resource/Aristotle>
<http://dbpedia.org/ontology/birthPlace>
<http://dbpedia.org/resource/Stagira_(ancient_city)> .
<http://dbpedia.org/resource/Aristotle>
<http://www.w3.org/1999/02/22-rdf-syntax
-ns#type/> <http://xmlns.com/foaf/0.1/Person> .
<http://dbpedia.org/resource/Aristotle>
<http://xmlns.com/foaf/0.1/name>
"Aristotle" .
<http://dbpedia.org/resource/Aristotle>
<http://purl.org/dc/elements/1.1/description>
"Greek philosopher" .
注:
指定されている
IRI
が存在しない場合の応答は、「404 Not Found
」です。サポートされていないシリアライゼーションの応答に対してGETリクエス トを実行すると、「406 Not Acceptable」が発生します。