

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Comportement de SPARQL DESCRIBE par rapport au graphe par défaut
<a name="sparql-default-describe"></a>

Le type de requête SPARQL [https://www.w3.org/TR/sparql11-query/#describe](https://www.w3.org/TR/sparql11-query/#describe) vous permet de récupérer des informations sur les ressources sans connaître la structure des données et sans avoir à composer de requête. La manière dont ces informations sont assemblées dépend de l'implémentation SPARQL. Neptune fournit [plusieurs indicateurs de requête](sparql-query-hints-for-describe.md) qui invoquent différents modes et algorithmes à utiliser par `DESCRIBE`.

Dans l'implémentation de Neptune, quel que soit le mode, `DESCRIBE` utilise uniquement les données présentes dans le [graphe par défaut SPARQL](feature-sparql-compliance.md#sparql-default-graph). Cela est cohérent avec la façon dont SPARQL traite les jeux de données (voir [Spécification des jeux de données RDF](https://www.w3.org/TR/sparql11-query/#specifyingDataset) dans la spécification SPARQL).

Dans Neptune, le graphe par défaut contient tous les triplets uniques issus de l'union de tous les graphes nommés de la base de données, sauf si des graphes nommés particuliers sont spécifiés à l'aide de clauses. `FROM` and/or `FROM NAMED` Toutes les données RDF de Neptune sont stockées dans un graphe nommé. Si un triplet est inséré sans contexte de graphe nommé, Neptune le stocke dans un graphe nommé désigné `http://aws.amazon.com/neptune/vocab/v01/DefaultNamedGraph`.

Lorsqu'un ou plusieurs graphes nommés sont spécifiés à l'aide de la clause `FROM`, le graphe par défaut est l'union de tous les triplets uniques de ces graphes nommés. S'il n'y a aucune clause `FROM` et qu'il existe une ou plusieurs clauses `FROM NAMED`, le graphe par défaut est vide.

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

Prenons les données suivantes :

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

Pour cette requête :

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

Neptune renvoie :

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

Ici, le modèle de graphe `GRAPH ex:g2 { ?s ?p "b" }` est d'abord évalué, ce qui entraîne des liaisons pour `?s`, puis la partie `DESCRIBE` est évaluée par rapport au graphe par défaut, qui n'est plus qu'`ex:g1`.

Toutefois, pour cette requête :

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

Neptune ne renverrait rien, car lorsqu'une clause `FROM NAMED` est présente sans aucune clause `FROM`, le graphe par défaut est vide.

Dans la requête suivante, `DESCRIBE` est utilisé en l'absence de clause `FROM` ou `FROM NAMED` :

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

Dans ce cas, le graphe par défaut est composé de tous les triplets uniques issus de l'union de tous les graphes nommés de la base de données (officiellement, la fusion RDF). Neptune renverrait donc :

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