

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 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 | 支持的提示 | 说明 | 
| --- | --- | --- | 
| 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 子查询。单独计算子查询，而不考虑在子查询之前计算的解。 | 