

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Comportamento di SPARQL DESCRIBE rispetto al grafo predefinito
<a name="sparql-default-describe"></a>

Il modulo di query SPARQL [https://www.w3.org/TR/sparql11-query/#describe](https://www.w3.org/TR/sparql11-query/#describe) consente di recuperare informazioni sulle risorse senza conoscere la struttura dei dati e senza dover comporre una query. Il modo in cui queste informazioni vengono assemblate dipende dall'implementazione SPARQL. Neptune fornisce [diversi hint di query](sparql-query-hints-for-describe.md) che richiamano diverse modalità e algoritmi da utilizzare per `DESCRIBE`.

Nell'implementazione di Neptune, indipendentemente dalla modalità, `DESCRIBE` utilizza solo i dati presenti nel [grafo SPARQL predefinito](feature-sparql-compliance.md#sparql-default-graph). Ciò è coerente con il modo in cui SPARQL tratta i set di dati (vedi [Specifying RDF Datasets](https://www.w3.org/TR/sparql11-query/#specifyingDataset) nella specifica SPARQL).

In Neptune, il grafico predefinito contiene tutte le triple univoche nell'unione di tutti i grafici denominati nel database, a meno che particolari grafici con nome non vengano specificati utilizzando clausole. `FROM` and/or `FROM NAMED` Tutti i dati RDF in Neptune sono archiviati in un grafo nominato. Se una tripla viene inserita senza un contesto del grafo nominato, Neptune la archivia in un grafo nominato designato `http://aws.amazon.com/neptune/vocab/v01/DefaultNamedGraph`.

Quando uno o più grafi nominati vengono specificati utilizzando la clausola `FROM`, il grafo predefinito è l'unione di tutte le triple univoche presenti in tali grafi nominati. Se non è presente alcuna clausola `FROM` e sono presenti una o più clausole `FROM NAMED`, il grafo predefinito è vuoto.

## Esempi di SPARQL `DESCRIBE`
<a name="sparql-default-describe-examples"></a>

Considerare i dati seguenti:

```
PREFIX ex: <https://example.com/>

GRAPH ex:g1 {
    ex:s ex:p1 "a" .
    ex:s ex:p2 "c" .
}

GRAPH ex:g2 {
    ex:s ex:p3 "b" .
    ex:s ex:p2 "c" .
}

ex:s ex:p3 "d" .
```

Per questa query:

```
PREFIX ex: <https://example.com/>
DESCRIBE ?s
FROM ex:g1
FROM NAMED ex:g2
WHERE {
  GRAPH ex:g2 { ?s ?p "b" . }
}
```

Neptune restituirà:

```
ex:s ex:p1 "a" .
ex:s ex:p2 "c" .
```

In questo caso, il modello di grafo `GRAPH ex:g2 { ?s ?p "b" }` viene valutato per primo, ottenendo le associazioni per `?s` e quindi la parte `DESCRIBE` viene valutata rispetto al grafo predefinito, che ora è solo `ex:g1`.

Tuttavia, per questa query:

```
PREFIX ex: <https://example.com/>
DESCRIBE ?s 
FROM NAMED ex:g1 
WHERE { 
  GRAPH ex:g1 { ?s ?p "a" . } 
}
```

Neptune non restituirà nulla, perché quando è presente una clausola `FROM NAMED` senza una clausola `FROM`, il grafo predefinito è vuoto.

Nella seguente query, `DESCRIBE` viene utilizzato senza che sia presente una clausola `FROM` o `FROM NAMED`:

```
PREFIX ex: <https://example.com/>
DESCRIBE ?s 
WHERE { 
  GRAPH ex:g1 { ?s ?p "a" . } 
}
```

In questa situazione, il grafo predefinito è composto da tutte le triple univoche nell'unione di tutti i grafi nominati nel database (formalmente, l'unione RDF), quindi Neptune restituirà:

```
ex:s ex:p1 "a" . 
ex:s ex:p2 "c" . 
ex:s ex:p3 "b" .
ex:s ex:p3 "d" .
```