

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# SPARQL DESCRIBE のデフォルトグラフに対する動作
<a name="sparql-default-describe"></a>

SPARQL [https://www.w3.org/TR/sparql11-query/#describe](https://www.w3.org/TR/sparql11-query/#describe) クエリフォームを使用すると、データの構造を知らなくても、またクエリを作成しなくても、リソースに関する情報を取得できます。この情報をどのように組み立てるかは、SPARQL の実装に任されています。Neptune には、`DESCRIBE` が使用できるさまざまなモードやアルゴリズムを呼び出す[クエリヒントがいくつか](sparql-query-hints-for-describe.md)用意されています。

Neptune の実装では、モードに関係なく、`DESCRIBE` は [SPARQL デフォルトグラフ](feature-sparql-compliance.md#sparql-default-graph)にあるデータのみを使用します。これは SPARQL がデータセットを扱う方法と一致しています (SPARQL 仕様の「[RDF データセットの指定](https://www.w3.org/TR/sparql11-query/#specifyingDataset)」を参照) 。

Neptune では、`FROM` や `FROM NAMED` 句を使用して特定の名前付きグラフが指定されない限り、デフォルトのグラフには、データベース内のすべての名前付きグラフの和集合に含まれるすべてのユニークなトリプルが含まれます。Neptune のすべての RDF データは、名前付きのグラフに保存されます。名前付きグラフのコンテキストなしでトリプルが挿入された場合、Neptune は `http://aws.amazon.com/neptune/vocab/v01/DefaultNamedGraph` という名前付きグラフに格納します。

`FROM` 句を使用して 1 つ以上の名前付きグラフが指定された場合、デフォルトのグラフは、それらの名前付きグラフに含まれるすべてのユニークなトリプルを結合したグラフになります。`FROM` 句がなく、`FROM NAMED` 句が 1 つ以上ある場合、デフォルトのグラフは空になります。

## SPARQL `DESCRIBE` の例
<a name="sparql-default-describe-examples"></a>

以下のデータを考慮します。

```
PREFIX ex: <https://example.com/>

GRAPH ex:g1 {
    ex:s ex:p1 "a" .
    ex:s ex:p2 "c" .
}

GRAPH ex:g2 {
    ex:s ex:p3 "b" .
    ex:s ex:p2 "c" .
}

ex:s ex:p3 "d" .
```

このクエリでは:

```
PREFIX ex: <https://example.com/>
DESCRIBE ?s
FROM ex:g1
FROM NAMED ex:g2
WHERE {
  GRAPH ex:g2 { ?s ?p "b" . }
}
```

Neptune は以下を返します。

```
ex:s ex:p1 "a" .
ex:s ex:p2 "c" .
```

ここでは、グラフパターン `GRAPH ex:g2 { ?s ?p "b" }` が最初に評価され、その結果として `?s` のバインディングが行われ、次に `DESCRIBE` 部分がデフォルトのグラフ (現在は `ex:g1`) に対して評価されます。

ただし、このクエリでは:

```
PREFIX ex: <https://example.com/>
DESCRIBE ?s 
FROM NAMED ex:g1 
WHERE { 
  GRAPH ex:g1 { ?s ?p "a" . } 
}
```

Neptune は何も返しません。なぜなら、`FROM NAMED` 句があり、`FROM` 句がない場合、デフォルトのグラフは空になるからです。

次のクエリでは、`DESCRIBE` が使用され、`FROM` または `FROM NAMED` 句はありません。

```
PREFIX ex: <https://example.com/>
DESCRIBE ?s 
WHERE { 
  GRAPH ex:g1 { ?s ?p "a" . } 
}
```

この状況では、デフォルトのグラフは、データベース内のすべての名前付きグラフの和集合に含まれるすべてのユニークなトリプルで構成されます（正式にはRDFマージ）。そのため、Neptune は次のように返します。

```
ex:s ex:p1 "a" . 
ex:s ex:p2 "c" . 
ex:s ex:p3 "b" .
ex:s ex:p3 "d" .
```