

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Consultas de inferência do SPARQL no Neptune ML
<a name="machine-learning-sparql-inference-queries"></a>

O Neptune ML associa o grafo do RDF a um grafo de propriedades para modelar a tarefa de ML. No momento, ele é compatível com os seguintes casos de uso:
+ **Classificação de objetos**: prevê o atributo categórico de um objeto.
+ **Regressão de objetos**: prevê uma propriedade numérica de um objeto.
+ **Previsão de objetos**: prevê um objeto considerando-se um assunto e um relacionamento.
+ **Previsão de assunto**: prevê um assunto considerando-se um objeto e um relacionamento.

**nota**  
O Neptune ML não é compatível com casos de uso de classificação e regressão de assuntos com SPARQL.

# Predicados do Neptune ML usados em consultas de inferência do SPARQL
<a name="machine-learning-sparql-inference-query-predicates"></a>

Os seguintes predicados são usados com inferência do SPARQL:

## Predicado `neptune-ml:timeout`
<a name="machine-learning-sparql-inference-predicates-timeout"></a>

Especifica o tempo limite para conexão com o servidor remoto. Não deve ser confundido com o tempo limite da solicitação de consulta, que é o tempo máximo que o servidor pode levar para atender a uma solicitação.

Observe que, se o tempo limite da consulta ocorrer antes do tempo limite do serviço especificado pelo predicado `neptune-ml:timeout`, a conexão do serviço também será cancelada.

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

O predicado `neptune-ml:outputClass` só é usado para definir a classe do objeto previsto para previsão de objetos ou do assunto previsto para a previsão do assunto.

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

O predicado `neptune-ml:outputScore` é um número positivo que representa a probabilidade de que a saída de um modelo de machine learning esteja correta.

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

O predicado `neptune-ml:modelType` especifica o tipo de modelo de machine learning que está sendo treinado:
+ `OBJECT_CLASSIFICATION`
+ `OBJECT_REGRESSION`
+ `OBJECT_PREDICTION`
+ `SUBJECT_PREDICTION`

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

O predicado `neptune-ml:input` se refere à lista de URIs usados como entradas para o Neptune ML.

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

O predicado `neptune-ml:output` se refere à lista de conjuntos de vinculação em que o Neptune ML gera resultados.

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

O predicado `neptune-ml:predicate` é usado de forma diferente dependendo da tarefa que estiver sendo realizada:
+ Para **previsão de objetos ou assuntos**: define o tipo de predicado (o tipo de borda ou de relacionamento).
+ Para **classificação e regressão de objetos**: define o literal (propriedade) que queremos prever.

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

O `neptune-ml:batchSize` especifica o tamanho da entrada para a chamada de serviço remoto.

# Exemplos de classificação de objetos do SPARQL
<a name="machine-learning-sparql-inference-object-classification"></a>

Para classificação de objetos do SPARQL no Neptune ML, o modelo é treinado em um dos valores de predicados. Isso é útil quando esse predicado ainda não está presente em um assunto específico.

Somente valores de predicados categóricos podem ser inferidos usando o modelo de classificação de objetos.

A seguinte consulta busca prever o valor do predicado <http://www.example.org/team> para todas as entradas do tipo `foaf:Person`:

```
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 .
  }
}
```

Essa consulta pode ser personalizada da seguinte forma:

```
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 .
  }
}
```

# Exemplos de regressão de objetos do SPARQL
<a name="machine-learning-sparql-inference-object-regression"></a>

A regressão de objetos é semelhante à classificação de objetos, exceto por um valor de predicado numérico inferido do modelo de regressão para cada nó. É possível usar as mesmas consultas do SPARQL para regressão de objetos e para classificação de objetos, com a exceção de que os predicados `the Neptune#ml.limit` e `Neptune#ml.threshold` não são aplicáveis.

A seguinte consulta busca prever o valor do predicado <http://www.example.org/accountbalance> para todas as entradas do tipo `foaf:Person`:

```
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 .
  }
}
```

Essa consulta pode ser personalizada da seguinte forma:

```
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 .
  }
}
```

# Exemplo de previsão de objetos do SPARQL
<a name="machine-learning-sparql-inference-object-prediction"></a>

A *previsão de objetos* prevê o valor do objeto para um assunto e um predicado específicos.

A seguinte consulta de previsão de objetos busca prever de qual filme a entrada do tipo `foaf:Person` gostaria:

```
?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> .
  }
}
```

A consulta em si pode ser personalizada da seguinte forma:

```
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> .
  }
}
```

# Exemplo de previsão de assuntos do SPARQL
<a name="machine-learning-sparql-inference-subject-prediction"></a>

A *previsão de assuntos* prevê o assunto considerando-se um predicado e um objeto.

Por exemplo, a seguinte consulta prevê quem (do tipo `foaf:User`) assistirá a determinado filme:

```
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> ;        }
}
```

# Lista de exceções para consultas de inferência do SPARQL no Neptune ML
<a name="machine-learning-sparql-exceptions"></a>

****
+ **`BadRequestException`**: *mensagem*: `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`**: *mensagem*: `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`**: *mensagem*: `Invalid predicate (predicate name) provided for external service http://aws.amazon.com/neptune/vocab/v01/services/ml#inference query.`
+ **`BadRequestException`**: *mensagem*: `The SERVICE http://aws.amazon.com/neptune/vocab/v01/services/ml#inference expects the predicate (predicate name) to be defined`.
+ **`BadRequestException`**: *mensagem*: `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`**: *mensagem*: `The SERVICE http://aws.amazon.com/neptune/vocab/v01/services/ml#inference expects the input (parameter name) to be a constant, found: (type)`.
+ **`BadRequestException`**: *mensagem*: `The SERVICE http://aws.amazon.com/neptune/vocab/v01/services/ml#inference is expected to return only 1 value`.
+ **`BadRequestException`**: *mensagem*: `"The SERVICE http://aws.amazon.com/neptune/vocab/v01/services/ml#inference only allows StatementPatternNodes`.
+ **`BadRequestException`**: *mensagem*: `The SERVICE http://aws.amazon.com/neptune/vocab/v01/services/ml#inference does not allow the predicate (predicate name)`.
+ **`BadRequestException`**: *mensagem*: `The SERVICE http://aws.amazon.com/neptune/vocab/v01/services/ml#inference predicates cannot be variables, found: (type)`.
+ **`BadRequestException`**: *mensagem*: `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)`.