

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# SPARQL-Abfragehinweise, die mit DESCRIBE verwendet werden
<a name="sparql-query-hints-for-describe"></a>

Eine SPARQL-`DESCRIBE`Abfrage stellt einen flexiblen Mechanismus zum Anfordern von Ressourcenbeschreibungen bereit. Die SPARQL-Spezifikationen definieren jedoch nicht die genaue Semantik von `DESCRIBE`.

Ab [Engine-Version 1.2.0.2](engine-releases-1.2.0.2.md) unterstützt Neptune mehrere verschiedene `DESCRIBE`-Modi und -Algorithmen, die für unterschiedliche Situationen geeignet sind.

Dieser Beispieldatensatz kann helfen, die verschiedenen Modi zu veranschaulichen:

```
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix : <https://example.com/> .

:JaneDoe :firstName "Jane" .
:JaneDoe :knows :JohnDoe .
:JohnDoe :firstName "John" .
:JaneDoe :knows _:b1 .
_:b1 :knows :RichardRoe .

:RichardRoe :knows :JaneDoe .
:RichardRoe :firstName "Richard" .

_:s1 rdf:type rdf:Statement .
_:s1 rdf:subject :JaneDoe .
_:s1 rdf:predicate :knows .
_:s1 rdf:object :JohnDoe .
_:s1 :knowsFrom "Berlin" .

:ref_s2 rdf:type rdf:Statement .
:ref_s2 rdf:subject :JaneDoe .
:ref_s2 rdf:predicate :knows .
:ref_s2 rdf:object :JohnDoe .
:ref_s2 :knowsSince 1988 .
```

Die folgenden Beispiele gehen davon aus, dass eine Beschreibung der Ressource `:JaneDoe` mit einer SPARQL-Abfrage wie dieser angefordert wird:

```
DESCRIBE <https://example.com/JaneDoe>
```

## Der SPARQL-Abfragehinweis `describeMode`
<a name="sparql-query-hints-describeMode"></a>

Der SPARQL-Abfragehinweis `hint:describeMode` wird verwendet, um einen der folgenden, von Neptune unterstützten SPARQL-`DESCRIBE`-Modi auszuwählen:

### Der DESCRIBE-Modus `ForwardOneStep`
<a name="sparql-query-hints-describeMode-ForwardOneStep"></a>

Sie rufen den Modus `ForwardOneStep` wie folgt mit dem Abfragehinweis `describeMode` auf:

```
PREFIX hint: <http://aws.amazon.com/neptune/vocab/v01/QueryHints#>
DESCRIBE <https://example.com/JaneDoe>
{
  hint:Query hint:describeMode "ForwardOneStep"
}
```

Der Modus `ForwardOneStep` gibt nur die Attribute und Forward-Links der Ressource zurück, die beschrieben werden soll. Im Beispiel gibt der Modus die Tripel zurück, deren Subjekt `:JaneDoe` ist, die Ressource, die beschrieben werden soll.

```
:JaneDoe :firstName "Jane" .
:JaneDoe :knows :JohnDoe .
:JaneDoe :knows _:b301990159 .
```

Beachten Sie, dass die DESCRIBE-Abfrage Triples mit leeren Knoten zurückgeben kann, z. B.`_:b301990159`, die IDs jedes Mal anders sind als der Eingabedatensatz.

### Der DESCRIBE-Modus `SymmetricOneStep`
<a name="sparql-query-hints-describeMode-SymmetricOneStep"></a>

`SymmetricOneStep` ist der DESCRIBE-Standardmodus, wenn Sie keinen Abfragehinweis angeben. Sie können ihn auch explizit mit dem Abfragehinweis `describeMode` wie folgt aufrufen:

```
PREFIX hint: <http://aws.amazon.com/neptune/vocab/v01/QueryHints#>
DESCRIBE <https://example.com/JaneDoe>
{
  hint:Query hint:describeMode "SymmetricOneStep"
}
```

In der Semantik `SymmetricOneStep` gibt `DESCRIBE` die Attribute, Forward- und Reverse-Links der Ressource zurück, die beschrieben werden soll:

```
:JaneDoe :firstName "Jane" .
:JaneDoe :knows :JohnDoe .
:JaneDoe :knows _:b318767375 .

_:b318767631 rdf:subject :JaneDoe .

:RichardRoe :knows :JaneDoe .

:ref_s2 rdf:subject :JaneDoe .
```

### Der DESCRIBE-Modus Concise Bounded Description (`CBD`)
<a name="sparql-query-hints-describeMode-CBD"></a>

Der Modus Concise Bounded Description (`CBD`) wird mit dem Abfragehinweis `describeMode` wie folgt aufgerufen:

```
PREFIX hint: <http://aws.amazon.com/neptune/vocab/v01/QueryHints#>
DESCRIBE <https://example.com/JaneDoe>
{
  hint:Query hint:describeMode "CBD"
}
```

In der Semantik `CBD` gibt `DESCRIBE` die Concise Bounded Description (wie [vom W3C definiert](http://www.w3.org/Submission/CBD)) der zu beschreibenden Ressource zurück:

```
:JaneDoe :firstName "Jane" .
:JaneDoe :knows :JohnDoe .
:JaneDoe :knows _:b285212943 .
_:b285212943 :knows :RichardRoe .

_:b285213199 rdf:subject :JaneDoe .
_:b285213199 rdf:type rdf:Statement .
_:b285213199 rdf:predicate :knows .
_:b285213199 rdf:object :JohnDoe .
_:b285213199 :knowsFrom "Berlin" .

:ref_s2 rdf:subject :JaneDoe .
```

Die Concise Bounded Description einer RDF-Ressource (d. h. eines Knotens in einem RDF-Diagramm) ist das kleinste Unterdiagramm um diesen Knoten herum, das eigenständig sein kann. Wenn Sie sich dieses Diagramm als Baum vorstellen, bei dem der angegebene Knoten die Wurzel ist, dann gibt es keine leeren Knoten (bnodes) als Blätter dieses Baums. Da bnodes nicht extern adressiert oder in nachfolgenden Abfragen verwendet werden können, reicht es nicht aus, das Diagramm zu durchsuchen, nur um den oder die nächsten einzelnen Hop(s) vom aktuellen Knoten aus zu finden. Sie müssen auch weit genug gehen, um etwas zu finden, das in nachfolgenden Abfragen verwendet werden kann (d. h. etwas anderes als ein bnode).

#### Berechnen der CBD
<a name="sparql-query-hints-describeMode-CBD-computing"></a>

Für einen bestimmten Knoten (den Startknoten oder die Wurzel) im RDF-Quelldiagramm wird der CBD-Wert dieses Knotens wie folgt berechnet:

1. Fügen Sie in das Unterdiagramm alle Anweisungen im Quelldiagramm ein, deren *Subjekt* der Anweisung der Startknoten ist.

1. Fügen Sie rekursiv für alle vorhandenen Anweisungen im Unterdiagramm, die ein leeres *Knotenobjekt* haben, in das Quelldiagramm alle Anweisungen ein, in denen das *Subjekt* der Anweisung dieser leere Knoten ist und die noch nicht im Unterdiagramm enthalten sind.

1. Fügen Sie rekursiv für alle bisher eingefügten Anweisungen im Unterdiagramm, für alle Konkretisierungen dieser Anweisungen im Quelldiagramm die CBD ab dem `rdf:Statement`-Knoten jeder Konkretisierung ein.

Dies führt zu einem Unterdiagramm, in dem die *Objektknoten* entweder IRI-Referenzen oder Literale sind oder leere Knoten, die nicht als *Subjekt* einer Anweisung im Diagramm dienen. Beachten Sie, dass die CBD nicht mit einzelnen SPARQL SELECT- oder CONSTRUCT-Abfrage berechnet werden kann.

### Der DESCRIBE-Modus Symmetric Concise Bounded Description (`SCBD`)
<a name="sparql-query-hints-describeMode-SCBD"></a>

Der Modus Symmetric Concise Bounded Description (`SCBD`) wird mit dem Abfragehinweis `describeMode` wie folgt aufgerufen:

```
PREFIX hint: <http://aws.amazon.com/neptune/vocab/v01/QueryHints#>
DESCRIBE <https://example.com/JaneDoe>
{
  hint:Query hint:describeMode "SCBD"
}
```

In der `SCBD`-Semantik gibt `DESCRIBE` die Symmetric Concise Bounded Description der Ressource zurück (wie vom W3C in [Describing Linked Datasets with the VoID Vocabulary](http://www.w3.org/TR/void/) definiert:

```
:JaneDoe :firstName "Jane" .
:JaneDoe :knows :JohnDoe .
:JaneDoe :knows _:b335544591 .
_:b335544591 :knows :RichardRoe .

:RichardRoe :knows :JaneDoe .

_:b335544847 rdf:subject :JaneDoe .
_:b335544847 rdf:type rdf:Statement .
_:b335544847 rdf:predicate :knows .
_:b335544847 rdf:object :JohnDoe .
_:b335544847 :knowsFrom "Berlin" .

:ref_s2 rdf:subject :JaneDoe .
```

Der Vorteil von CBD und SCBD gegenüber den Modi `ForwardOneStep` und `SymmetricOneStep` besteht darin, dass leere Knoten stets um ihre Darstellung erweitert werden. Dies kann ein wichtiger Vorteil sein, da Sie einen leeren Knoten nicht über SPARQL abfragen können. Darüber hinaus berücksichtigen die Modi CBD und SCBD auch Konkretisierungen.

Beachten Sie, dass der Abfragehinweis `describeMode` auch Teil einer `WHERE`-Klausel sein kann:

```
PREFIX hint: <http://aws.amazon.com/neptune/vocab/v01/QueryHints#>
DESCRIBE ?s
WHERE {
  hint:Query hint:describeMode "CBD" .
  ?s rdf:type <https://example.com/Person>
}
```

## Der SPARQL-Abfragehinweis `describeIterationLimit`
<a name="sparql-query-hints-describeIterationLimit"></a>

Der SPARQL-Abfragehinweis `hint:describeIterationLimit` stellt eine **optionale** Einschränkung der maximalen Anzahl iterativer Erweiterungen bereit, die für iterative DESCRIBE-Algorithmen wie CBD und SCBD ausgeführt werden sollen.

Die DESCRIBE-Grenzwerte gelten ANDed zusammen. Wenn also sowohl die Iterationseinschränkung als auch die Befehlseinschränkung angegeben sind, müssen beide Einschränkungen eingehalten werden, bevor die DESCRIBE-Abfrage abgeschnitten wird.

Der Standardwert für diesen Wert ist 5. Sie können ihn auf NULL (0) festlegen, um anzugeben, dass die Anzahl der iterativen Erweiterungen KEINEN Einschränkungen unterliegt.

## Der SPARQL-Abfragehinweis `describeStatementLimit`
<a name="sparql-query-hints-describeStatementLimit"></a>

Der SPARQL-Abfragehinweis `hint:describeStatementLimit` stellt eine **optionale** Einschränkung der maximalen Anzahl von Anweisungen dar, die in einer DESCRIBE-Abfrageantwort enthalten sein dürfen. Er wird nur auf iterative DESCRIBE-Algorithmen wie CBD und SCBD angewendet.

DESCRIBE-Grenzwerte gehören ANDed zusammen. Wenn also sowohl die Iterationseinschränkung als auch die Befehlseinschränkung angegeben sind, müssen beide Einschränkungen eingehalten werden, bevor die DESCRIBE-Abfrage abgeschnitten wird.

Der Standardwert für diesen Wert ist 5 000. Sie können ihn auf NULL (0) festlegen, um anzugeben, dass die Anzahl der zurückgegebenen Anweisungen KEINEN Einschränkungen unterliegt.