

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-Verbundabfragen in Neptune mit der Erweiterung `SERVICE`
<a name="sparql-service"></a>

Amazon Neptune unterstützt die SPARQL-Verbundabfrageerweiterung vollständig, die das Schlüsselwort `SERVICE` verwendet. (Weitere Informationen finden Sie unter [SPARQL 1.1-Verbundabfrage](https://www.w3.org/TR/sparql11-federated-query/).)

Das `SERVICE`-Schlüsselwort weist die SPARQL-Abfrage-Engine an, einen Teil der Abfrage für einen Remote-SPARQL-Endpunkt auszuführen und das endgültige Abfrageergebnis zu erstellen. Es sind nur `READ`-Operationen möglich. Die Operationen `WRITE` und `DELETE` werden nicht unterstützt. Neptune kann Verbundabfragen nur für SPARQL-Endpunkte ausführen, auf die in dessen Virtual Private Cloud (VPC) zugegriffen werden kann. Sie können jedoch auch einen Reverse-Proxy in der VPC verwenden, damit auf eine externe Datenquelle innerhalb der VPC zugegriffen werden kann.

**Anmerkung**  
Wenn SPARQL `SERVICE` für die Verbindung einer Abfrage mit zwei oder mehr Neptune-Clustern in derselben VPC verwendet wird, müssen die Sicherheitsgruppen so konfiguriert werden, dass alle diese Neptune-Cluster miteinander kommunizieren können.

**Wichtig**  
SPARQL 1.1 Federation sendet Serviceanfragen in Ihrem Namen, wenn Abfragen und Parameter an externe SPARQL-Endpunkte übergeben werden. Es liegt in Ihrer Verantwortung, zu überprüfen, ob die externen SPARQL-Endpunkte die Datenverarbeitungs- und Sicherheitsanforderungen Ihrer Anwendung erfüllen.

## Beispiel für eine Neptune-Verbundabfrage
<a name="sparql-service-example-1"></a>

Das folgende einfache Beispiel zeigt, wie SPARQL-Verbundabfragen funktionieren.

Angenommen, ein Kunde sendet die folgende Abfrage an *Neptune-1* unter `http://neptune-1:8182/sparql`.

```
SELECT * WHERE {
   ?person rdf:type foaf:Person .
   SERVICE <http://neptune-2:8182/sparql> {
       ?person foaf:knows ?friend .
    }
}
```

1. *Neptune-1* wertet das erste Abfragemuster (*Q-1*) aus, d. h. `?person rdf:type foaf:Person`, verwendet die Ergebnisse zum Auflösen von `?person` in *Q-2* (`?person foaf:knows ?friend`) und übergibt das resultierende Muster an *Neptune-2* unter `http://neptune-2:8182/sparql`.

1. *Neptune-2* wertet *Q-2* aus und sendet die Ergebnisse zurück an *Neptune-1*.

1. *Neptune-1* verbindet die Lösungen für beide Muster und sendet die Ergebnisse an den Kunden zurück.

Dies wird im folgenden Diagramm illustriert:

![\[Flussdiagramm mit ausgewerteten SPARQL-Verbundabfragemustern und zurückgesendeten Antworten an den Client.\]](http://docs.aws.amazon.com/de_de/neptune/latest/userguide/images/federated.png)


**Anmerkung**  
Standardmäßig legt der Optimierer den Punkt in der Abfrageausführung fest, an dem die Anweisung `SERVICE` ausgeführt wird. Sie können diese Platzierung mittels des Abfragehinweises [joinOrder](sparql-query-hints-joinOrder.md) überschreiben.

## Zugriffskontrolle für Verbundabfragen in Neptune
<a name="sparql-service-auth"></a>

Neptune verwendet AWS Identity and Access Management (IAM) für die Authentifizierung und Autorisierung. Die Zugriffskontrolle für eine Verbundabfrage kann mehr als eine Neptune-DB-Instance umfassen. Diese Instances haben möglicherweise unterschiedliche Anforderungen für die Zugriffskontrolle. Unter bestimmten Umständen kann dies Ihre Fähigkeit zum Erstellen einer Verbundabfrage einschränken.

Betrachten Sie das einfache Beispiel im vorherigen Abschnitt. *Neptune-1* ruft *Neptune-2* mit denselben Anmeldeinformationen auf, mit denen es aufgerufen wurde.
+ Wenn *Neptune-1* eine IAM-Authentifizierung und -Autorisierung erfordert, *Neptune-2* jedoch nicht, benötigen Sie zur Ausführung der Verbundabfrage lediglich die entsprechenden IAM-Berechtigungen für *Neptune-1*.
+ Wenn sowohl *Neptune-1* als auch *Neptune-2* eine IAM-Authentifizierung und Autorisierung erfordern, müssen Sie zur Ausführung der Verbundanfrage beiden Datenbanken IAM-Berechtigungen anfügen. Beide Cluster müssen sich außerdem im selben AWS Konto und in derselben Region befinden. Regionsübergreifende and/or kontenübergreifende Verbundabfragearchitekturen werden derzeit nicht unterstützt.
+ Wenn *Neptune-1* nicht IAM-aktiviert ist, *Neptune-2* jedoch IAM-aktiviert ist, können Sie keine Verbundabfrage ausführen. Der Grund hierfür ist, dass *Neptune-1* Ihre IAM-Anmeldeinformationen nicht abrufen und an *Neptune-2* übergeben kann, um den zweiten Teil der Abfrage zu autorisieren.