

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# SPARQL 查詢提示
<a name="sparql-query-hints"></a>

您可以在 Amazon Neptune 中使用查詢提示來指定特定 SPARQL 查詢的最佳化和評估策略。

查詢提示使用在 SPARQL 查詢中嵌入的額外三重模式表示，包含以下部分：

```
{{scope}} {{hint}} {{value}}
```
+ *scope* – 決定查詢提示要套用到查詢的哪些部分，例如查詢中的特定群組或完整查詢。
+ *hint* – 識別要套用的提示類型。
+ *value* – 確定正在考慮的系統層面行為。

這些查詢提示和範圍會公開成為 Amazon Neptune 命名空間 `http://aws.amazon.com/neptune/vocab/v01/QueryHints#` 中的預先定義用語。本節範例包含命名空間做為 `hint` 前綴，此前綴己定義並包含在查詢中：

```
PREFIX hint: <http://aws.amazon.com/neptune/vocab/v01/QueryHints#>
```

例如，以下說明如何在 `SELECT` 查詢中包含 `joinOrder` 提示：

```
PREFIX hint: <http://aws.amazon.com/neptune/vocab/v01/QueryHints#>
SELECT {{...}} {
 hint:Query hint:joinOrder "Ordered" .
 {{...}}
}
```

上述查詢會指示 Neptune 引擎依「給定」**順序評估查詢中的聯結，並停用任何自動重新排序。

使用查詢提示時請考慮以下情況：
+ 您可以將不同的查詢提示合併在單一查詢中。例如，您可以使用 `bottomUp` 查詢提示來將子查詢標註為由下而上的評估，並使用 `joinOrder` 查詢提示來修復子查詢中的聯結順序。
+ 您可以在不同的非重疊範圍中，多次使用相同的查詢提示。
+ 查詢提示是提示。雖然查詢引擎通常的目標是要考慮給定的查詢提示，也可以予以忽略。
+ 查詢提示為語意保留。新增查詢提示不會變更查詢的輸出 (除了沒有提供排序保證時的可能結果順序 - 也就是沒有使用 ORDER BY 明確強制執行結果順序)。

以下章節提供 Neptune 中可用的查詢提示以及其用法的詳細資訊。

**Topics**
+ [Neptune 中的 SPARQL 查詢提示範圍](#sparql-query-hints-scope)
+ [`joinOrder` SPARQL 查詢提示](sparql-query-hints-joinOrder.md)
+ [`evaluationStrategy` SPARQL 查詢提示](sparql-query-hints-evaluationStrategy.md)
+ [`queryTimeout` SPARQL 查詢提示](sparql-query-hints-queryTimeout.md)
+ [`rangeSafe` SPARQL 查詢提示](sparql-query-hints-rangeSafe.md)
+ [`queryId` SPARQL 查詢提示](sparql-query-hints-queryId.md)
+ [`useDFE` SPARQL 查詢提示](sparql-query-hints-useDFE.md)
+ [與 DESCRIBE 搭配使用的 SPARQL 查詢提示](sparql-query-hints-for-describe.md)

## Neptune 中的 SPARQL 查詢提示範圍
<a name="sparql-query-hints-scope"></a>

下表顯示 Amazon Neptune 中 SPARQL 查詢提示的可行範圍、相關聯的提示和說明。這些項目中的 `hint` 字首代表提示的 Neptune 命名空間：

```
PREFIX hint: <http://aws.amazon.com/neptune/vocab/v01/QueryHints#>
```


| Scope (範圍) | 支援的提示 | Description | 
| --- | --- | --- | 
| hint:Query | [joinOrder](sparql-query-hints-joinOrder.md) | 查詢提示適用於整個查詢。 | 
| hint:Query | [queryTimeout](sparql-query-hints-queryTimeout.md) | 逾時值適用於整個查詢。 | 
| hint:Query | [rangeSafe](sparql-query-hints-rangeSafe.md) | 針對整個查詢停用類型提升。 | 
| hint:Query | [queryId](sparql-query-hints-queryId.md) | 查詢 ID 值適用於整個查詢。 | 
| hint:Query | [useDFE](sparql-query-hints-useDFE.md) | 已啟用 (或停用) 將 DFE 用於整個查詢。 | 
| hint:Group | [joinOrder](sparql-query-hints-joinOrder.md) | 查詢提示適用於指定群組中的最上層元素，但不適用於巢狀元素 (如子查詢) 或父元素。 | 
| hint:SubQuery | [evaluationStrategy](sparql-query-hints-evaluationStrategy.md) | 提示指定及套用到巢狀的 SELECT 子查詢。子查詢是獨立評估的，不會考慮在子查詢之前計算的解決方案。 | 