

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-Inferenzabfragen in Neptune ML
<a name="machine-learning-sparql-inference-queries"></a>

Neptune ML setzt das RDF-Diagramm in ein Eigenschaftsdiagramm um, um die ML-Aufgabe zu modellieren. Derzeit werden die folgenden Anwendungsfälle unterstützt:
+ **Objektklassifizierung**   –   Vorhersage des kategorischen Features eines Objekts.
+ **Objektregression**   –   Vorhersage der numerischen Eigenschaft eines Objekts.
+ **Objektvorhersage**   –   Vorhersage eines Objekts anhand eines Subjekts und einer Beziehung.
+ **Subjektvorhersage**   –   Vorhersage eines Subjekts anhand eines Objekts und einer Beziehung.

**Anmerkung**  
Neptune ML unterstützt keine Anwendungsfälle für Subjektklassifizierung und -regression mit SPARQL.

# In SPARQL-Inferenzabfragen verwendete Neptune-ML-Prädikate
<a name="machine-learning-sparql-inference-query-predicates"></a>

Die folgenden Prädikate werden für SPARQL-Inferenzen verwendet:

## Prädikat
<a name="machine-learning-sparql-inference-predicates-timeout"></a>

Gibt das Timeout für die Verbindung mit dem Remoteserver an. Dies sollte nicht mit dem Timeout für Abfrageanforderungen verwechselt werden, bei dem es sich um die maximale Zeit handelt, die der Server für die Bearbeitung einer Anforderung benötigen darf.

Wenn das Abfragetimeout vor dem durch das Prädikat `neptune-ml:timeout` angegebenen Service-Timeout eintritt, wird auch die Service-Verbindung abgebrochen.

## Prädikat `neptune-ml:outputClass`
<a name="machine-learning-sparql-inference-predicates-outputClass"></a>

Das Prädikat `neptune-ml:outputClass` wird nur für die Definition der Klasse des vorhergesagten Objekts für die Objektvorhersage oder des vorhergesagten Subjekts für die Subjektvorhersage verwendet.

## Prädikat `neptune-ml:outputScore`
<a name="machine-learning-sparql-inference-predicates-outputScore"></a>

Das Prädikat `neptune-ml:outputScore` ist eine positive Zahl zur Darstellung der Wahrscheinlichkeit, mit der die Ausgabe eines Machine-Learning-Modells korrekt ist.

## Prädikat `neptune-ml:modelType`
<a name="machine-learning-sparql-inference-predicates-modelType"></a>

Das Prädikat `neptune-ml:modelType` gibt den Typ des Machine-Learning-Modells an, das trainiert wird:
+ `OBJECT_CLASSIFICATION`
+ `OBJECT_REGRESSION`
+ `OBJECT_PREDICTION`
+ `SUBJECT_PREDICTION`

## Prädikat `neptune-ml:input`
<a name="machine-learning-sparql-inference-predicates-input"></a>

Das `neptune-ml:input` Prädikat bezieht sich auf die Liste der als Eingaben für Neptune ML URIs verwendeten.

## Prädikat `neptune-ml:output`
<a name="machine-learning-sparql-inference-predicates-output"></a>

Das Prädikat `neptune-ml:output` verweist auf die Liste der Bindungssätze, in denen Neptune ML Ergebnisse zurückgibt.

## Prädikat `neptune-ml:predicate`
<a name="machine-learning-sparql-inference-predicates-predicate"></a>

Das Prädikat `neptune-ml:predicate` wird je nach ausgeführter Aufgabe unterschiedlich verwendet:
+ Für die **Objekt- oder Subjektvorhersage**: Definition des Typs des Prädikats (Kanten- oder Beziehungstyp).
+ Für die **Objektklassifizierung und -regression**: Definition des Literals (der Eigenschaft), die vorhergesagt werden soll.

## Prädikat `neptune-ml:batchSize`
<a name="machine-learning-sparql-inference-predicates-batchSize"></a>

Das Prädikat `neptune-ml:batchSize` gibt die Eingabegröße für den Remote-Serviceaufruf an.

# Beispiele für die SPARQL-Objektklassifizierung
<a name="machine-learning-sparql-inference-object-classification"></a>

Für die SPARQL-Objektklassifizierung in Neptune ML wird das Modell anhand eines Prädikatwerts trainiert. Dies ist nützlich, wenn das betreffende Prädikat für ein bestimmtes Subjekt noch nicht vorhanden ist.

Mit dem Objektklassifizierungsmodell können nur kategorische Prädikatwerte abgeleitet werden.

Die folgende Abfrage versucht, den Prädikatwert für <http://www.example.org/team> für alle Eingaben des Typs `foaf:Person` vorherzusagen:

```
SELECT * WHERE { ?input a foaf:Person .
  SERVICE neptune-ml:inference {
    neptune-ml:config neptune-ml:modelType 'OBJECT_CLASSIFICATION' ;
                      neptune-ml:input ?input ;
                      neptune-ml:predicate <http://www.example.org/team> ;
                      neptune-ml:output ?output .
  }
}
```

Diese Abfrage kann wie folgt angepasst werden:

```
SELECT * WHERE { ?input a foaf:Person .
  SERVICE neptune-ml:inference {
    neptune-ml:config neptune-ml:endpoint 'node-prediction-account-balance-endpoint' ;
                      neptune-ml:iamRoleArn 'arn:aws:iam::0123456789:role/sagemaker-role' ;

                      neptune-ml:batchSize "40"^^xsd:integer ;
                      neptune-ml:timeout "1000"^^xsd:integer ;

                      neptune-ml:modelType 'OBJECT_CLASSIFICATION' ;
                      neptune-ml:input ?input ;
                      neptune-ml:predicate <http://www.example.org/team> ;
                      neptune-ml:output ?output .
  }
}
```

# Beispiele für die SPARQL-Objektregression
<a name="machine-learning-sparql-inference-object-regression"></a>

Die Objektregression ist der Objektklassifizierung ähnlich. Der aus dem Regressionsmodell für jeden Knoten abgeleitete Prädikatwert ist jedoch numerisch. Sie können für die Objektregression dieselben SPARQL-Abfragen wie für die Objektklassifizierung verwenden, mit der Ausnahme, dass die Prädikate `the Neptune#ml.limit` und `Neptune#ml.threshold` nicht anwendbar sind.

Die folgende Abfrage versucht, den Prädikatwert für <http://www.example.org/accountbalance> für alle Eingaben des Typs `foaf:Person` vorherzusagen:

```
SELECT * WHERE { ?input a foaf:Person .
  SERVICE neptune-ml:inference {
    neptune-ml:config neptune-ml:modelType 'OBJECT_REGRESSION' ;
                      neptune-ml:input ?input ;
                      neptune-ml:predicate <http://www.example.org/accountbalance> ;
                      neptune-ml:output ?output .
  }
}
```

Diese Abfrage kann wie folgt angepasst werden:

```
SELECT * WHERE { ?input a foaf:Person .
  SERVICE neptune-ml:inference {
    neptune-ml:config neptune-ml:endpoint 'node-prediction-account-balance-endpoint' ;
                      neptune-ml:iamRoleArn 'arn:aws:iam::0123456789:role/sagemaker-role' ;

                      neptune-ml:batchSize "40"^^xsd:integer ;
                      neptune-ml:timeout "1000"^^xsd:integer ;

                      neptune-ml:modelType 'OBJECT_REGRESSION' ;
                      neptune-ml:input ?input ;
                      neptune-ml:predicate <http://www.example.org/accountbalance> ;
                      neptune-ml:output ?output .
  }
}
```

# Beispiel für eine SPARQL-Objektvorhersage
<a name="machine-learning-sparql-inference-object-prediction"></a>

Die *Objektvorhersage* sagt den Objektwert für ein bestimmtes Subjekt und Prädikat voraus.

Mit der folgenden Abfrage zur Objektvorhersage soll vorhergesagt werden, welchen Film eine Eingabe des Typs `foaf:Person` mit einem „Like“ bewerten würde:

```
?x a foaf:Person .
?x   <http://www.example.org/likes> ?m .
?m a <http://www.example.org/movie> .

## Query
SELECT * WHERE { ?input a foaf:Person .
  SERVICE neptune-ml:inference {
    neptune-ml:config neptune-ml:modelType 'OBJECT_PREDICTION' ;
                      neptune-ml:input ?input ;
                      neptune-ml:predicate <http://www.example.org/likes> ;
                      neptune-ml:output ?output ;
                      neptune-ml:outputClass <http://www.example.org/movie> .
  }
}
```

Die Abfrage selbst könnte wie folgt angepasst werden:

```
SELECT * WHERE { ?input a foaf:Person .
  SERVICE neptune-ml:inference {
    neptune-ml:config neptune-ml:endpoint 'node-prediction-user-movie-prediction-endpoint' ;
                      neptune-ml:iamRoleArn 'arn:aws:iam::0123456789:role/sagemaker-role' ;

                      neptune-ml:limit "5"^^xsd:integer ;
                      neptune-ml:batchSize "40"^^xsd:integer ;
                      neptune-ml:threshold "0.1"^^xsd:double ;
                      neptune-ml:timeout "1000"^^xsd:integer ;
                      neptune-ml:outputScore ?score ;

                      neptune-ml:modelType 'OBJECT_PREDICTION' ;
                      neptune-ml:input ?input ;
                      neptune-ml:predicate <http://www.example.org/likes> ;
                      neptune-ml:output ?output ;
                      neptune-ml:outputClass <http://www.example.org/movie> .
  }
}
```

# Beispiel für eine SPARQL-Subjektvorhersage
<a name="machine-learning-sparql-inference-subject-prediction"></a>

Die *Subjektvorhersage* sagt den Subjektwert für ein bestimmtes Objekt und Prädikat voraus.

Die folgende Abfrage sagt beispielsweise voraus, wer (des Typs `foaf:User`) sich einen bestimmten Film ansehen wird:

```
SELECT * WHERE { ?input (a foaf:Movie) .
    SERVICE neptune-ml:inference {
        neptune-ml:config neptune-ml:modelType 'SUBJECT_PREDICTION' ;
                          neptune-ml:input ?input ;
                          neptune-ml:predicate <http://aws.amazon.com/neptune/csv2rdf/object_Property/rated> ;
                          neptune-ml:output ?output ;
                          neptune-ml:outputClass <http://aws.amazon.com/neptune/csv2rdf/class/User> ;        }
}
```

# Liste der Ausnahmen für Neptune-ML-SPARQL-Inferenzabfragen
<a name="machine-learning-sparql-exceptions"></a>

****
+ **`BadRequestException`**   –   *Meldung*: `The SERVICE http://aws.amazon.com/neptune/vocab/v01/services/ml#inference expects at least 1 value for the parameter (parameter name), found zero.`
+ **`BadRequestException`**   –   *Meldung*: `The SERVICE http://aws.amazon.com/neptune/vocab/v01/services/ml#inference expects at most 1 value for the parameter (parameter name), found (a number) values.`
+ **`BadRequestException`**   –   *Meldung*: `Invalid predicate (predicate name) provided for external service http://aws.amazon.com/neptune/vocab/v01/services/ml#inference query.`
+ **`BadRequestException`**   –   *Meldung*: `The SERVICE http://aws.amazon.com/neptune/vocab/v01/services/ml#inference expects the predicate (predicate name) to be defined`
+ **`BadRequestException`**   –   *Meldung*: `The SERVICE http://aws.amazon.com/neptune/vocab/v01/services/ml#inference expects the value of (parameter) (parameter name) to be a variable, found: (type)"`
+ **`BadRequestException`**   –   *Meldung*: `The SERVICE http://aws.amazon.com/neptune/vocab/v01/services/ml#inference expects the input (parameter name) to be a constant, found: (type)`
+ **`BadRequestException`**   –   *Meldung*: `The SERVICE http://aws.amazon.com/neptune/vocab/v01/services/ml#inference is expected to return only 1 value`
+ **`BadRequestException`**   –   *Meldung*: `"The SERVICE http://aws.amazon.com/neptune/vocab/v01/services/ml#inference only allows StatementPatternNodes`
+ **`BadRequestException`**   –   *Meldung*: `The SERVICE http://aws.amazon.com/neptune/vocab/v01/services/ml#inference does not allow the predicate (predicate name)`
+ **`BadRequestException`**   –   *Meldung*: `The SERVICE http://aws.amazon.com/neptune/vocab/v01/services/ml#inference predicates cannot be variables, found: (type)`
+ **`BadRequestException`**   –   *Meldung*: `The SERVICE http://aws.amazon.com/neptune/vocab/v01/services/ml#inference predicates are expected to be part of the namespace (namespace name), found: (namespace name)`