

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Comportamiento de DESCRIBE de SPARQL con respecto al gráfico predeterminado
<a name="sparql-default-describe"></a>

El formulario de consulta [https://www.w3.org/TR/sparql11-query/#describe](https://www.w3.org/TR/sparql11-query/#describe) de SPARQL le permite recuperar información sobre los recursos sin conocer la estructura de los datos y sin tener que redactar una consulta. La forma en que se recopila esta información depende de la implementación de SPARQL. Neptune proporciona [varias sugerencias de consulta](sparql-query-hints-for-describe.md) que invocan diferentes modos y algoritmos para que los use `DESCRIBE`.

En la implementación de Neptune, independientemente del modo, `DESCRIBE` solo usa los datos presentes en el [gráfico predeterminado de SPARQL](feature-sparql-compliance.md#sparql-default-graph). Esto es coherente con la forma en que SPARQL trata los conjuntos de datos (consulte [Specifying RDF Datasets](https://www.w3.org/TR/sparql11-query/#specifyingDataset) en la especificación de SPARQL).

En Neptune, el gráfico predeterminado contiene todos los triples únicos en la unión de todos los gráficos con nombre de la base de datos, a menos que los gráficos con nombre determinados se especifiquen mediante cláusulas. `FROM` and/or `FROM NAMED` Todos los datos RDF de Neptune se almacenan en un gráfico con nombre. Si se inserta un triple sin un contexto de gráfico con nombre, Neptune lo almacena en un gráfico con nombre designado `http://aws.amazon.com/neptune/vocab/v01/DefaultNamedGraph`.

Cuando se especifican uno o más gráficos con nombre mediante la cláusula `FROM`, el gráfico predeterminado es la unión de todos los triples únicos de esos gráficos con nombre. Si no hay ninguna cláusula `FROM` y hay una o más cláusulas `FROM NAMED`, el gráfico predeterminado está vacío.

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

Analice los siguientes datos:

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

Para esta consulta:

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

Neptune devolvería:

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

Aquí, el patrón del gráfico `GRAPH ex:g2 { ?s ?p "b" }` se evalúa primero, lo que da como resultado enlaces para `?s`, y luego la parte `DESCRIBE` se evalúa con respecto al gráfico predeterminado, que ahora es solo `ex:g1`.

Sin embargo, para esta consulta:

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

Neptune no devolvería nada, porque cuando una cláusula `FROM NAMED` está presente sin ninguna cláusula `FROM`, el gráfico predeterminado está vacío.

En la siguiente consulta, `DESCRIBE` se usa sin presencia de ninguna cláusula `FROM` o `FROM NAMED`:

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

En esta situación, el gráfico predeterminado se compone de todos los triples únicos en la unión de todos los gráficos con nombre de la base de datos (formalmente, la combinación RDF), por lo que Neptune devolvería:

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