

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.

# AWS IoT TwinMaker gráfico de conocimiento
Gráfico de conocimiento

El gráfico de AWS IoT TwinMaker conocimiento organiza toda la información contenida en sus AWS IoT TwinMaker espacios de trabajo y la presenta en un formato de gráfico visual. Puede ejecutar consultas sobre sus entidades, componentes y tipos de componentes para generar gráficos visuales que muestren las relaciones entre sus recursos de AWS IoT TwinMaker .

En los siguientes temas, se le mostrará cómo utilizar e integrar el gráfico de conocimiento.

**Topics**
+ [

## AWS IoT TwinMaker conceptos básicos del gráfico de conocimiento
](#tm-knowledge-graph-concepts)
+ [

# Cómo ejecutar consultas de gráficos de AWS IoT TwinMaker conocimiento
](tm-knowledge-graph-use.md)
+ [

# Integración de escenas del gráfico de conocimiento
](tm-knowledge-graph-scene.md)
+ [

# Cómo usar el gráfico de AWS IoT TwinMaker conocimiento con Grafana
](tm-knowledge-Grafana-panel.md)
+ [

# AWS IoT TwinMaker gráfico de conocimiento, recursos adicionales
](tm-knowledge-graph-resources.md)

## AWS IoT TwinMaker conceptos básicos del gráfico de conocimiento


En este tema se tratan los conceptos clave y el vocabulario de la función del gráfico de conocimiento.

**Cómo funciona el gráfico de conocimiento**:  
El gráfico de conocimiento crea relaciones entre las entidades y sus componentes con las [CreateEntity](https://docs.aws.amazon.com//iot-twinmaker/latest/apireference/API_CreateEntity.html)o existentes [ UpdateEntity](https://docs.aws.amazon.com//iot-twinmaker/latest/apireference/API_UpdateEntity.html) APIs. Una relación es solo una propiedad de un tipo de dato especial, una [RELACIÓN](https://docs.aws.amazon.com//iot-twinmaker/latest/apireference/API_DataType.html#:~:text=Valid%20Values%3A-,RELATIONSHIP,-%7C%20STRING%20%7C%20LONG%20%7C%20BOOLEAN) que se define en un componente de una entidad. AWS IoT TwinMaker Knowledge Graph llama a la [ExecuteQuery](https://docs.aws.amazon.com/iot-twinmaker/latest/apireference/API_ExecuteQuery.html)API para realizar una consulta basada en cualquier dato de las entidades o en las relaciones entre ellas. Knowledge Graph utiliza el flexible lenguaje de consultas PartiQL (utilizado por muchos AWS servicios), al que se ha añadido recientemente la compatibilidad con la sintaxis de coincidencia de gráficos para ayudarte a escribir tus consultas. Una vez realizadas las llamadas, puede ver los resultados en forma de tabla o visualizarlos como un gráfico de nodos y bordes conectados.

**Términos clave del gráfico de conocimiento**:  
+ **Gráfico de entidades**: conjunto de nodos y aristas dentro de un espacio de trabajo.
+ **Nodo**: cada entidad del espacio de trabajo se convierte en un nodo del gráfico de entidades.
+ **Borde**: cada propiedad de relación definida en un componente de una entidad se convierte en un borde en el gráfico de entidades. Además, una relación jerárquica padre-hijo definida mediante el parentEntityId campo de una entidad también se convierte en una arista en el gráfico de la entidad con un nombre de relación «isChildOf». Todas las aristas son aristas direccionales.
+ **Relación**: una AWS IoT TwinMaker relación es un tipo especial de propiedad del componente de una entidad. Puede usar la [UpdateEntity](https://docs.aws.amazon.com//iot-twinmaker/latest/apireference/API_UpdateEntity.html)API AWS IoT TwinMaker [ CreateEntity](https://docs.aws.amazon.com//iot-twinmaker/latest/apireference/API_CreateEntity.html)o para definir y editar una relación. En AWS IoT TwinMaker, se debe definir una relación en un componente de una entidad. Una relación no se puede definir como un recurso aislado. Una relación debe ser direccional de una entidad a otra.

# Cómo ejecutar consultas de gráficos de AWS IoT TwinMaker conocimiento
Uso del gráfico de conocimiento

Antes de utilizar el gráfico de AWS IoT TwinMaker conocimiento, asegúrese de haber cumplido los siguientes requisitos previos:
+ Cree un AWS IoT TwinMaker espacio de trabajo. Puede crear un bucket utilizando la [consola de AWS IoT TwinMaker](https://console.aws.amazon.com/iottwinmaker/).
+ Familiarícese con AWS IoT TwinMaker el sistema de componentes de entidades y con cómo crear entidades. Para obtener más información, consulte [Crear su primera entidad](twinmaker-gs-entity.md).
+ Familiarícese con los conectores AWS IoT TwinMaker de datos. Para obtener más información, consulte [AWS IoT TwinMaker conectores de datos](data-connector-interface.md).

**nota**  
Para utilizar el gráfico de AWS IoT TwinMaker conocimiento, debes utilizar el modo de precios **estándar** o **por paquetes escalonados**. Para obtener más información, consulte [Cambiar AWS IoT TwinMaker los modos de precios](tm-pricing-mode.md).

Los procedimientos que aparecen a continuación le muestran cómo escribir, ejecutar, guardar y editar consultas.

 **Abra el editor de consultas**   

**Para navegar al editor de consultas de Knowledge Graph**

1. Abra la [consola de AWS IoT TwinMaker](https://console.aws.amazon.com/iottwinmaker/).

1. Abra el espacio de trabajo en el que desee utilizar el gráfico de conocimiento.

1. En el panel de navegación izquierdo, elija **Editor de consultas**.

1. Se abre el editor de consultas. Ahora se encuentra preparado para ejecutar consultas en los recursos de su espacio de trabajo.

 **Ejecutar una consulta**   

**Para ejecutar una consulta y generar un gráfico**

1. En el editor de consultas, elija la pestaña **Editor** para abrir el editor de sintaxis.

1. En el espacio del editor, escribe la consulta que deseas ejecutar con los recursos de tu espacio de trabajo.  
![\[El espacio del editor en el que se ha introducido una consulta.\]](http://docs.aws.amazon.com/es_es/iot-twinmaker/latest/guide/images/kg-query-updated.png)

   En el ejemplo que se muestra, la solicitud busca entidades que contengan `vav_%` su nombre y, a continuación, las organiza según la `feed` relación entre ellas mediante el siguiente código.

   ```
   SELECT ahu, vav, r FROM EntityGraph
   MATCH (vav)<-[r:feed]-(ahu)
   WHERE vav.entityName LIKE 'vav_%'
   ```
**nota**  
La sintaxis del gráfico de conocimiento usa [PartiQL](https://partiql.org/). Para obtener información sobre esta sintaxis, consulte[AWS IoT TwinMaker gráfico de conocimiento, recursos adicionales](tm-knowledge-graph-resources.md).

1. Seleccione **Ejecutar consulta** para ejecutar la solicitud que ha creado.

   Se genera un gráfico en función de su solicitud.  
![\[Un gráfico que muestra los resultados de la consulta detallados en los pasos anteriores.\]](http://docs.aws.amazon.com/es_es/iot-twinmaker/latest/guide/images/tm-kg-graph-output.png)

   El gráfico de ejemplo que se muestra arriba se basa en el ejemplo de consulta del paso 2.

1. Los resultados de la consulta también aparecen en una lista. Elija **los resultados** para ver los resultados de la consulta en una lista.

1. Si lo desea, seleccione **Exportar como** para exportar los resultados de la consulta en formato JSON o CSV.

Esto cubre el uso básico del gráfico de conocimiento en la consola. Para obtener más información y ejemplos que muestran la sintaxis del gráfico de conocimiento, consulte [AWS IoT TwinMaker gráfico de conocimiento, recursos adicionales](tm-knowledge-graph-resources.md).

# Integración de escenas del gráfico de conocimiento
Generar un gráfico de escena

Puedes usar los componentes del kit de AWS IoT aplicaciones para crear una aplicación web que integre el gráfico de conocimiento en tus AWS IoT TwinMaker escenas. Esto le permite generar gráficos basados en los nodos 3D (los modelos 3D que representan sus equipos o sistemas) que están presentes en la escena. Para crear una aplicación que grafique los nodos 3D de su escena, primero vincule los nodos 3D a las entidades de su espacio de trabajo. Con este mapeo, AWS IoT TwinMaker grafica las relaciones entre los modelos 3D presentes en la escena y las entidades del espacio de trabajo. A continuación, puede crear una aplicación web, seleccionar modelos 3D con su escena y explorar sus relaciones con otras entidades en un formato gráfico.

![\[Una TwinMaker escena con un gráfico de conocimiento que muestra las relaciones entre los modelos 3D.\]](http://docs.aws.amazon.com/es_es/iot-twinmaker/latest/guide/images/intro_kg_scene.png)


Para ver un ejemplo de una aplicación web en funcionamiento que utiliza los componentes del kit de AWS IoT aplicaciones para generar gráficos en una AWS IoT TwinMaker escena, consulta el [AWS IoT TwinMaker ejemplo de la aplicación React](https://github.com/awslabs/iot-app-kit/blob/3DKG_Demo/examples/react-app/src/components/index.tsx) en GitHub.

## AWS IoT TwinMaker requisitos previos del gráfico de escena


Antes de crear una aplicación web que utilice el gráfico de AWS IoT TwinMaker conocimiento en las escenas, complete los siguientes requisitos previos:
+ Cree un AWS IoT TwinMaker espacio de trabajo. Puede crear un bucket utilizando la [consola de AWS IoT TwinMaker](https://console.aws.amazon.com/iottwinmaker/).
+ Familiarícese con AWS IoT TwinMaker el sistema de componentes de entidades y con cómo crear entidades. Para obtener más información, consulte [Crear su primera entidad](twinmaker-gs-entity.md).
+ Cree una AWS IoT TwinMaker escena repleta de modelos 3D.
+ Familiarícese con AWS IoT TwinMaker los componentes del kit de AWS IoT aplicaciones. Para obtener más información sobre los AWS IoT TwinMaker componentes, consulte[Cree una aplicación web personalizada mediante componentes de AWS IoT TwinMaker interfaz de usuario](tm-app-kit.md).
+ Familiarícese con los conceptos y la terminología clave de los gráficos de conocimiento. Consulte [AWS IoT TwinMaker conceptos básicos del gráfico de conocimiento](tm-knowledge-graph.md#tm-knowledge-graph-concepts).

**nota**  
Para usar el gráfico de AWS IoT TwinMaker conocimiento y cualquier función relacionada, debes utilizar los modos de precios **estándar** o por paquetes **escalonados**. Para obtener más información sobre AWS IoT TwinMaker los precios, consulte[Cambiar AWS IoT TwinMaker los modos de precios](tm-pricing-mode.md).

## Enlace nodos 3D en su escena


Antes de crear una aplicación web que integre el gráfico de conocimiento con la escena, vincule los modelos 3D, denominados nodos 3D, que están presentes en la escena a la entidad de espacio de trabajo asociada. Por ejemplo, si tiene un modelo de equipo mezclador en una escena y la entidad correspondiente denominada`mixer_0`, cree un **enlace de datos** entre el modelo del mezclador y la entidad que representa al mezclador, de modo que el modelo y la entidad puedan graficarse.

**Para realizar una acción de enlace de datos**

1. Inicie sesión en la [consola de AWS IoT TwinMaker](https://console.aws.amazon.com/iottwinmaker/).

1. Abra su espacio de trabajo y seleccione una escena con los nodos 3D que desee vincular.

1. Seleccione un nodo (modelo 3D) en el compositor de escenas. Al seleccionar un nodo, se abrirá un panel de inspección en la parte derecha de la pantalla.

1. En el panel del inspector, navega hasta la parte superior del panel y selecciona el botón **\$1**. A continuación, selecciona la opción **Añadir enlace de entidades**. Se abrirá un menú desplegable en el que podrá seleccionar una entidad para vincularla al nodo actualmente seleccionado.  
![\[Una escena con el signo más seleccionado en el panel del Inspector y la opción Añadir enlace de entidades resaltada.\]](http://docs.aws.amazon.com/es_es/iot-twinmaker/latest/guide/images/binding-step-4.png)

1. En el menú desplegable de enlace de datos, seleccione el identificador de la entidad que desee asignar al modelo 3D. En los campos **Nombre del componente** y **Nombre de la propiedad**, seleccione los componentes y las propiedades que desee vincular.  
![\[Una escena con los nombres de componentes y propiedades seleccionados en el panel Inspector.\]](http://docs.aws.amazon.com/es_es/iot-twinmaker/latest/guide/images/binding-step-6.png)

   Una vez que haya seleccionado los campos **ID de entidad**, **nombre de componente** y **nombre de propiedad**, se habrá completado el enlace.

1. Repita este proceso para todos los modelos y entidades que desee representar gráficamente.
**nota**  
Se puede realizar la misma operación de enlace de datos en las etiquetas de escena. Solo tiene que seleccionar una etiqueta en lugar de una entidad y seguir el mismo proceso para vincular la etiqueta a un nodo.

## Crear una aplicación web


Después de vincular las entidades, utilice la biblioteca del kit de AWS IoT aplicaciones para crear una aplicación web con un widget de gráficos de conocimiento que le permita ver la escena y explorar las relaciones entre los nodos y las entidades de la escena.

Use los siguientes recursos para crear su propia aplicación:
+ El AWS IoT TwinMaker ejemplo de la documentación [readme](https://github.com/awslabs/iot-app-kit/blob/3DKG_Demo/examples/react-app/README.md) de la aplicación React en github.
+ El AWS IoT TwinMaker ejemplo de la [fuente](https://github.com/awslabs/iot-app-kit/blob/3DKG_Demo/examples/react-app/src/components/index.tsx) de la aplicación React en github.
+ La documentación de [introducción](https://awslabs.github.io/iot-app-kit/?path=/docs/overview-getting-started--docs) del kit de AWS IoT aplicaciones.
+ La documentación del [componente Video Player del](https://awslabs.github.io/iot-app-kit/?path=/docs/components-videoplayer--docs) kit de AWS IoT aplicaciones.
+ La documentación del [componente Scene Viewer del](https://awslabs.github.io/iot-app-kit/?path=/docs/components-sceneviewer--docs) kit de AWS IoT aplicaciones.

El siguiente procedimiento demuestra la funcionalidad del componente del visor de escenas en una aplicación web.

**nota**  
Este procedimiento se basa en la implementación del componente de visor de escenas del kit de AWS IoT aplicaciones en la aplicación React de AWS IoT TwinMaker muestra.

1. Abre el componente del visor de escenas de la aplicación React de AWS IoT TwinMaker muestra. En el campo de búsqueda, escriba un nombre de entidad o un nombre de entidad parcial (búsqueda que distinga mayúsculas de minúsculas) y, a continuación, seleccione el botón **Buscar**. Si un modelo está vinculado al identificador de la entidad, se resaltará el modelo de la escena y se mostrará un nodo de la entidad en el panel del visor de escenas.  
![\[Aparece una escena con el panel del visor de escenas de Knowledge Graph.\]](http://docs.aws.amazon.com/es_es/iot-twinmaker/latest/guide/images/search_select_kg_event.png)

1. Para generar un gráfico de todas las relaciones, seleccione un nodo en el widget del visor de escenas y pulse el botón **Explorar**.  
![\[Una escena con el panel del visor de escenas de Knowledge Graph que muestra un gráfico de relaciones.\]](http://docs.aws.amazon.com/es_es/iot-twinmaker/latest/guide/images/explore_select_kg.png)

1. Pulse el botón **Borrar** para borrar la selección de gráficos actual y volver a empezar.

# Cómo usar el gráfico de AWS IoT TwinMaker conocimiento con Grafana
Gráfico de conocimiento: panel Grafana

En esta sección, se muestra cómo añadir un panel de edición de consultas a su panel de AWS IoT TwinMaker Grafana para ejecutar y mostrar consultas.

## AWS IoT TwinMaker requisitos previos del editor de consultas
AWS IoT TwinMaker requisitos previos del editor de consultas

Antes de usar el gráfico de AWS IoT TwinMaker conocimiento en Grafana, complete los siguientes requisitos previos:
+ Crea un espacio de trabajo AWS IoT TwinMaker . Puede crear un bucket utilizando la [consola de AWS IoT TwinMaker](https://console.aws.amazon.com/iottwinmaker/).
+ Configure AWS IoT TwinMaker para su uso con Grafana. Para obtener instrucciones, consulte [AWS IoT TwinMaker Integración del panel de control de Grafana](grafana-integration.md).

**nota**  
Para usar el gráfico de AWS IoT TwinMaker conocimiento, debes usar el modo de precios **estándar** o **por paquetes escalonados**. Para obtener más información, consulte [Cambiar AWS IoT TwinMaker los modos de precios](tm-pricing-mode.md).

## AWS IoT TwinMaker permisos del editor de consultas
Gráfico de conocimiento: permisos de Grafana

Para usar el editor de AWS IoT TwinMaker consultas en Grafana, debes tener un rol de IAM con permiso para la acción. `iottwinmaker:ExecuteQuery` Añade ese permiso a tu rol en el panel de control de tu espacio de trabajo, como se muestra en este ejemplo:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket",
                "arn:aws:s3:::amzn-s3-demo-bucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iottwinmaker:GetEntity",
                "iottwinmaker:ListEntities",
                "iottwinmaker:ExecuteQuery"
            ],
            "Resource": [
                "arn:aws:iottwinmaker:us-east-2:111122223333:workspace/workspaceId",
                "arn:aws:iottwinmaker:us-east-2:111122223333:workspace/workspaceId/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "iottwinmaker:ListWorkspaces",
            "Resource": "*"
        }
    ]
}
```

------

**nota**  
Cuando configure la fuente de datos de AWS IoT TwinMaker Grafana, asegúrese de usar el rol con este permiso para el campo ARN de **asumir rol.** Después de añadirlo, puede seleccionar su espacio de trabajo en el menú desplegable situado junto a **Espacio de trabajo.**

Para obtener más información, consulte [Creación de un rol de IAM en el panel](dashboard-IAM-role.md#dashboard-IAM-role.title).

### Configura el panel del editor de AWS IoT TwinMaker consultas
Gráfico de conocimiento: panel Grafana

**Para configurar un nuevo panel de control de Grafana para Knowledge Graph**

1. Abre el panel de control de AWS IoT TwinMaker Grafana.

1. Crea un nuevo **panel de control**. Para ver los pasos detallados sobre cómo crear un panel, consulte [Crear un panel](https://grafana.com/docs/grafana/latest/dashboards/build-dashboards/create-dashboard/) en la documentación de Grafana.

1. En la lista de visualizaciones, selecciona Editor de **AWS IoT TwinMaker consultas**.  
![\[La lista desplegable del AWS IoT TwinMaker panel contiene la opción del editor de AWS IoT TwinMaker consultas.\]](http://docs.aws.amazon.com/es_es/iot-twinmaker/latest/guide/images/tw-query-editor-dropdown.png)

1. Seleccione el origen de datos con la que se van a ejecutar las consultas.

1. **(Opcional)** Añada un nombre para el nuevo panel en el campo proporcionado.

1. Selecciona **Aplicar** para guardar y confirmar tu nuevo panel.

El panel del gráfico de conocimiento funciona de forma similar al editor de consultas incluido en la AWS IoT TwinMaker consola. Puede ejecutar, escribir y borrar las consultas que realice en el panel. Para obtener más información sobre cómo escribir consultas, consulte[AWS IoT TwinMaker gráfico de conocimiento, recursos adicionales](tm-knowledge-graph-resources.md).

#### Cómo utilizar el editor AWS IoT TwinMaker de consultas
Usar el editor de consultas

Los resultados de las consultas se muestran de tres formas, como se muestra en las siguientes imágenes: se visualizan en un gráfico, se muestran en una tabla o se presentan como un resumen de la ejecución.
+ **Visualización de gráficos:**  
![\[AWS IoT TwinMaker Los resultados del editor de consultas se muestran como un gráfico visual.\]](http://docs.aws.amazon.com/es_es/iot-twinmaker/latest/guide/images/kg-vis-graph.png)

  El gráfico visual solo muestra los datos de las consultas que tienen al menos una relación en el resultado. El gráfico muestra las entidades como nodos y las relaciones como bordes dirigidos en el gráfico.
+ **Datos tabulares:**  
![\[AWS IoT TwinMaker los resultados del editor de consultas se muestran como datos tabulares.\]](http://docs.aws.amazon.com/es_es/iot-twinmaker/latest/guide/images/kg-table-data.png)

  El formato de datos tabulares muestra los datos de todas las consultas. Puede buscar en la tabla resultados específicos o subconjuntos de los resultados. Los datos se pueden exportar en formato JSON o CSV.
+ **Resumen de ejecución**  
![\[AWS IoT TwinMaker los resultados del editor de consultas se muestran como un resumen de la ejecución.\]](http://docs.aws.amazon.com/es_es/iot-twinmaker/latest/guide/images/kg-run-sum.png)

  El resumen de la ejecución muestra la consulta y los metadatos sobre el estado de la consulta.

# AWS IoT TwinMaker gráfico de conocimiento, recursos adicionales
Recursos adicionales de gráfico de conocimiento

Esta sección proporciona ejemplos básicos de la sintaxis PartiQL utilizada para escribir consultas en el gráfico de conocimiento, así como enlaces a la documentación de PartiQL que proporciona información sobre el modelo de datos del gráfico de conocimiento.
+ [Documentación del modelo de datos de gráficos de PartiQL](https://partiql.org/gpml/graph_model.html)
+ [Documentación de consultas de gráficos de PartiQL](https://partiql.org/gpml/graph_query.html)

En este conjunto de ejemplos se muestran las consultas básicas con sus respuestas. Utilízalo como referencia para escribir tus propias consultas.

**Consultas básicas**  
+ **Obtenga todas las entidades con un filtro**

  ```
  SELECT entity
  FROM EntityGraph MATCH (entity)
  WHERE entity.entityName = 'room_0'
  ```

   Esta consulta devuelve todas las entidades de un espacio de trabajo con el nombre`room_0`.

  `FROM`cláusula: `EntityGraph` es la colección de gráficos que contiene todas las entidades y sus relaciones en un espacio de trabajo. Esta colección se crea y administra automáticamente en AWS IoT TwinMaker función de las entidades de su espacio de trabajo.

  Cláusula `MATCH`: especifica un patrón que coincide con una parte del gráfico. En este caso, el patrón `(entity)` coincide con todos los nodos del gráfico y está vinculado a la variable de entidad. La cláusula `FROM` debe ir seguida de la cláusula `MATCH`.

  `WHERE`cláusula: especifica un filtro en el `entityName` campo del nodo, donde el valor debe coincidir`room_0`.

  `SELECT`cláusula: especifica la `entity` variable para que se devuelva todo el nodo de la entidad.

  **Respuesta**:

  ```
  {
    "columnDescriptions": [
      {
        "name": "entity",
        "type": "NODE"
      }
    ],
    "rows": [
      {
        "rowData": [
          {
            "arn": "arn:aws:iottwinmaker:us-east-1: 577476956029: workspace / SmartBuilding8292022 / entity / room_18f3ef90 - 7197 - 53 d1 - abab - db9c9ad02781 ",
            "creationDate": 1661811123914,
            "entityId": "room_18f3ef90-7197-53d1-abab-db9c9ad02781",
            "entityName": "room_0",
            "lastUpdateDate": 1661811125072,
            "workspaceId": "SmartBuilding8292022",
            "description": "",
            "components": [
              {
                "componentName": "RoomComponent",
                "componentTypeId": "com.example.query.construction.room",
                "properties": [
                  {
                    "propertyName": "roomFunction",
                    "propertyValue": "meeting"
                  },
                  {
                    "propertyName": "roomNumber",
                    "propertyValue": 0
                  }
                ]
              }
            ]
          }
        ]
      }
    ]
  }
  ```

  `columnDescriptions`Devuelve metadatos sobre la columna, como el nombre y el tipo. El tipo devuelto es `NODE`. Esto indica que se ha devuelto todo el nodo. Otros valores del tipo pueden `EDGE` indicar una relación o `VALUE` indicar un valor escalar, como un entero o una cadena.

  `rows` devuelve una lista de filas. Como solo coincidió una entidad, se devuelve un `rowData` que contiene todos los campos de una entidad.
**nota**  
A diferencia de SQL, donde solo puede devolver valores escalares, puede devolver un objeto (como JSON) mediante PartiQL.

  Cada nodo contiene todos los campos a nivel de entidad, por ejemplo`entityId`, `arn` y los campos a nivel de componente`components`, así como los campos a nivel de propiedad`componentName`, `properties` como `componentTypeId` y, todo ello en formato JSON `propertyName` anidado. `propertyValue`
+ **Obtenga todas las relaciones con un filtro**:

  ```
  SELECT relationship
  FROM EntityGraph MATCH (e1)-[relationship]->(e2)
  WHERE relationship.relationshipName = 'isLocationOf'
  ```

  Esta consulta devuelve todas las relaciones de un espacio de trabajo con el nombre de la relación `isLocationOf`.

   La `MATCH` cláusula: especifica un patrón que coincide con dos nodos (indicados por`()`) que están conectados por un borde dirigido (indicados por`-[]->`) y enlazados a una variable llamada. `relationship`

  La `WHERE` cláusula: especifica un filtro en el `relationshipName` campo del borde, donde está el valor`isLocationOf`.

  Cláusula `SELECT`: especifica la variable de relación para que se devuelva todo el nodo de borde.

  **Respuesta**

  ```
  {
      "columnDescriptions": [{
          "name": "relationship",
          "type": "EDGE"
      }],
      "rows": [{
          "rowData": [{
              "relationshipName": "isLocationOf",
              "sourceEntityId": "floor_83faea7a-ea3b-56b7-8e22-562f0cf90c5a",
              "targetEntityId": "building_4ec7f9e9-e67e-543f-9d1b- 235df7e3f6a8",
              "sourceComponentName": "FloorComponent",
              "sourceComponentTypeId": "com.example.query.construction.floor"
          }]
      },
          ... //rest of the rows are omitted
      ]
  }
  ```

  El tipo de columna `columnDescriptions` es un`EDGE`.

  Cada uno `rowData` representa un borde con campos como`relationshipName`. Es el mismo que el nombre de la propiedad de relación definido en la entidad. Los `sourceEntityId` `sourceComponentName` y `sourceComponentTypeId` proporcionan información sobre la entidad y el componente en los que se definió la propiedad de relación. `targetEntityId`Especifica a qué entidad apunta esta relación.
+ **Obtenga todas las entidades con una relación específica con una entidad específica**

  ```
  SELECT e2.entityName
        FROM EntityGraph MATCH (e1)-[r]->(e2)
        WHERE relationship.relationshipName = 'isLocationOf'
        AND e1.entityName = 'room_0'
  ```

  Esta consulta devuelve todos los nombres de las entidades que tienen una `isLocationOf` relación con la `room_0` entidad.

  La `MATCH` cláusula: especifica un patrón que coincide con dos nodos (`e1`,`e2`) que tengan una arista dirigida (`r`).

  Cláusula `WHERE`: especifica un filtro en el nombre de la relación y el nombre de la entidad de origen.

  La `SELECT` cláusula: devuelve el `entityName` campo del `e2` nodo.

  **Respuesta**

  ```
  {
    "columnDescriptions": [
      {
         "name": "entityName",
         "type": "VALUE"
      }
    ],
     "rows": [
      {
         "rowData": [
           "floor_0"
        ]
      }
    ]
  }
  ```

  En las descripciones de columnas, el tipo de columna es `VALUE` ya que `entityName` es una cadena.

  Se devuelve una entidad,`floor_0`,.

**MATCH**  
Una `MATCH` cláusula admite los siguientes patrones:  
+ Haga coincidir el nodo «b» con el nodo «a»:

  ```
  FROM EntityGraph MATCH (a)-[rel]-(b)
  ```
+ Haga coincidir el nodo «a» con el nodo «b»:

  ```
  FROM EntityGraph MATCH (a)-[]->(b)
  ```

  No hay ninguna variable vinculada a una relación, suponiendo que no es necesario especificar un filtro en la relación.
+ Haga coincidir el nodo «a» que apunta al nodo «b» y el nodo «b» que apunta al nodo «a»:

  ```
  FROM EntityGraph MATCH (a)-[rel]-(b)
  ```

  Esto devolverá dos coincidencias: una de «a» a «b» y otra de «b» a «a», por lo que se recomienda utilizar bordes dirigidos siempre que sea posible.
+ El nombre de la relación también es una etiqueta del gráfico de propiedades`EntityGraph`, por lo que simplemente puede especificar el nombre de la relación después de dos puntos (:)) en lugar de especificar un filtro `rel.relationshipName` en la `WHERE` cláusula.

  ```
  FROM EntityGraph MATCH (a)-[:isLocationOf]-(b)
  ```
+ Encadenamiento: los patrones se pueden encadenar para que coincidan en varias relaciones.

  ```
  FROM EntityGraph MATCH (a)-[rel1]->(b)-[rel2]-(c)
  ```
+ Los patrones de saltos variables también pueden abarcar varios nodos y bordes:

  ```
  FROM EntityGraph MATCH (a)-[]->{1,5}(b)
  ```

  Esta consulta hace coincidir cualquier patrón con los bordes salientes del nodo «a» con un intervalo de 1 a 5 saltos. Los cuantificadores permitidos son:

  `{m,n}`: entre m y n repeticiones

  `{m,}`: m o más repeticiones.

**FROM**:  
Un nodo de entidad puede contener datos anidados, como componentes que, a su vez, contienen más datos anidados, como propiedades. Se puede acceder a ellos deshaciendo el resultado del patrón MATCH.  

```
SELECT e
FROM EntityGraph MATCH (e), e.components AS c, c.properties AS p
WHERE c.componentTypeId = 'com.example.query.construction.room',
AND p.propertyName = 'roomFunction'
AND p.propertyValue = 'meeting'
```
Acceda a los campos anidados colocando puntos `.` en una variable. Se usa una coma (,) para separar (o unir) las entidades con los componentes dentro y, después, las propiedades dentro de esos componentes. `AS`se usa para vincular una variable a las variables no anidadas para que puedan usarse en las cláusulas o. `WHERE` `SELECT` Esta consulta devuelve todas las entidades que contienen una propiedad denominada `roomFunction` con un valor `meeting` en un componente con el id de tipo de componente `com.example.query.construction.room`   
Para acceder a varios campos anidados de un campo, como varios componentes de una entidad, utilice la notación de coma para realizar una unión.  

```
SELECT e
FROM EntityGraph MATCH (e), e.components AS c1, e.components AS c2
```

**SELECT**  
+ Devuelve un nodo:

  ```
  SELECT e
  FROM EntityGraph MATCH (e)
  ```
+ Devuelve una ventaja:

  ```
  SELECT r
  FROM EntityGraph MATCH (e1)-[r]->(e2)
  ```
+ Devuelve un valor escalar:

  ```
  SELECT floor.entityName, room.description, p.propertyValue AS roomfunction
  FROM EntityGraph MATCH (floor)-[:isLocationOf]-(room),
  room.components AS c, c.properties AS p
  ```

  Formatee el nombre del campo de salida asignándole un alias con `AS`. Aquí, en lugar de `propertyValue` como nombre de columna en la respuesta, se devuelve `roomfunction`.
+ Devolver alias:

  ```
  SELECT floor.entityName AS floorName, luminaire.entityName as luminaireName
  FROM EntityGraph MATCH (floor)-[:isLocationOf]-(room)-[:hasPart]-
  (lightingZone)-[:feed]-(luminaire)
  WHERE floor.entityName = 'floor_0'
  AND luminaire.entityName like 'lumin%'
  ```

  Se recomienda encarecidamente utilizar alias para ser explícito, aumentar la legibilidad y evitar cualquier ambigüedad en las consultas.

**WHERE**:  
+ Los operadores lógicos compatibles son`AND`, y. `NOT` `OR`
+ Los operadores de comparación compatibles son `<`, `<=`, `>`, `=>`, `=` y `!=`.
+ Utilice la `IN` palabra clave si desea especificar varias `OR` condiciones en el mismo campo.
+ Filtre por un campo de entidad, componente o propiedad:

  ```
  FROM EntityGraph MATCH (e), e.components AS c, c.properties AS p
  WHERE e.entityName = 'room_0'
  AND c.componentTypeId = 'com.example.query.construction.room',
  AND p.propertyName = 'roomFunction'
  AND NOT p.propertyValue = 'meeting'
  OR p.propertyValue = 'office'
  ```
+ Filtra por `configuration` propiedad. Aquí `unit` está la clave del mapa de configuración y `Celsius` es el valor.

  ```
  WHERE p.definition.configuration.unit = 'Celsius'
  ```
+ Compruebe si una propiedad del mapa contiene una clave y un valor determinados:

  ```
  WHERE p.propertyValue.length = 20.0
  ```
+ Compruebe si una propiedad del mapa contiene una clave determinada:

  ```
  WHERE NOT p.propertyValue.length IS MISSING
  ```
+ Compruebe si una propiedad de la lista contiene un valor determinado:

  ```
  WHERE 10.0 IN p.propertyValue
  ```
+ Utilice la función `lower()` para realizar comparaciones que no distingan mayúsculas de minúsculas. De forma predeterminada, la comparación distingue entre mayúsculas y minúsculas.

  ```
  WHERE lower(p.propertyValue) = 'meeting'
  ```

**LIKE**:  
Es útil si no conoce el valor exacto de un campo y puede realizar una búsqueda de texto completo en el campo especificado. `%` representa cero o más.  

```
WHERE e.entityName LIKE '%room%'
```
+ Búsqueda de infijos: `%room%`
+ Búsqueda de prefijos: `room%`
+ Búsqueda de sufijos: `%room`
+ Si sus valores son «%», coloque un carácter de escape en `LIKE` y especifique el carácter de escape con`ESCAPE`.

```
WHERE e.entityName LIKE 'room\%' ESCAPE '\'
```

**DISTINCT**:  

```
SELECT DISTINCT c.componentTypeId
FROM EntityGraph MATCH (e), e.components AS c
```
+ La palabra clave `DISTINCT` elimina los duplicados del resultado final.

  `DISTINCT` no se admite en tipos de datos complejos.

COUNT  

```
SELECT COUNT(e), COUNT(c.componentTypeId)
FROM EntityGraph MATCH (e), e.components AS c
```
+ La `COUNT` palabra clave calcula el número de elementos del resultado de una consulta.
+ `COUNT`no se admite en campos complejos anidados ni en campos de patrones de gráficos.
+ `COUNT`la agregación no es compatible con `DISTINCT` las consultas anidadas.

  Por ejemplo, `COUNT(DISTINCT e.entityId)` no se admite.

**RUTA**  
Las siguientes proyecciones de patrones son compatibles con las consultas mediante la proyección de trayectoria:  
+ Consultas de saltos variables

  ```
  SELECT p FROM EntityGraph MATCH p = (a)-[]->{1, 3}(b)
  ```

  Esta consulta hace coincidir los metadatos de los nodos de cualquier patrón y los proyecta, con los bordes salientes del nodo a en *un* intervalo de 1 a 3 saltos.
+ Consultas de salto fijo

  ```
  SELECT p FROM EntityGraph MATCH p = (a)-[]->(b)<-[]-(c)
  ```

  Esta consulta coincide con los metadatos de las entidades y los bordes entrantes y los proyecta en *b*.
+ Consultas no dirigidas

  ```
  SELECT p FROM EntityGraph MATCH p = (a)-[]-(b)-[]-(c)
  ```

  *Esta consulta compara y proyecta los metadatos de los nodos en patrones de 1 salto que conectan a y *c* a través de *b*.*

  ```
  {
      "columnDescriptions": [
          {
              "name": "path",
              "type": "PATH"
          }
      ],
      "rows": [
          {
              "rowData": [
                  {
                      "path": [
                          {
                              "entityId": "a",
                              "entityName": "a"
                          },
                          {
                              "relationshipName": "a-to-b-relation",
                              "sourceEntityId": "a",
                              "targetEntityId": "b"
                          },
                          {
                              "entityId": "b",
                              "entityName": "b"
                          }
                      ]
                  }
              ]
          },
          {
              "rowData": [
                  {
                      "path": [
                          {
                              "entityId": "b",
                              "entityName": "b"
                          },
                          {
                              "relationshipName": "b-to-c-relation",
                              "sourceEntityId": "b",
                              "targetEntityId": "c"
                          },
                          {
                              "entityId": "c",
                              "entityName": "c"
                          }
                      ]
                  }
              ]
          }
      ]
  }
  ```

  Esta respuesta a la `PATH` consulta se compone únicamente de metadatos que identifican todos los nodos y bordes de cada uno de ellos path/pattern entre *a* y *c* a través de *b*.

**LÍMITE** Y **COMPENSACIÓN**:  

```
SELECT e.entityName
FROM EntityGraph MATCH (e)
WHERE e.entityName LIKE 'room_%'
LIMIT 10
OFFSET 5
```
`LIMIT` especifica el número de resultados que se devolverán en la consulta y `OFFSET` el número de resultados que se van a omitir.

**LIMIT** y **MaxResults**:  
El siguiente ejemplo muestra una consulta que devuelve 500 resultados en total, pero solo muestra 50 a la vez por llamada a la API. Este patrón se puede usar cuando necesite limitar la cantidad de resultados mostrados, por ejemplo, si solo puede mostrar 50 resultados en una interfaz de usuario.  

```
aws iottwinmaker execute-query \
--workspace-id exampleWorkspace \
--query-statement "SELECT e FROM EntityGraph MATCH (e) LIMIT 500"\
--max-results 50
```
+ La `LIMIT` palabra clave afecta a la consulta y limita las filas resultantes. Si necesitas controlar el número de resultados devueltos por llamada a la API sin limitar el número total de resultados devueltos, utiliza`LIMIT`.
+ `max-results`es un parámetro opcional para la [acción de la ExecuteQuery API](https://docs.aws.amazon.com//iot-twinmaker/latest/apireference/API_ExecuteQuery.html). `max-results`solo se aplica a la API y a la forma en que se leen los resultados dentro de los límites de la consulta anterior.

  El uso `max-results` en una consulta permite reducir el número de resultados mostrados sin limitar el número real de resultados devueltos.
La siguiente consulta recorre la siguiente página de resultados. Esta consulta utiliza la llamada a la `ExecuteQuery` API para devolver las filas 51 a 100, donde la siguiente página de resultados se especifica mediante el símbolo `next-token` (en este caso, el token es:). `"H7kyGmvK376L"`  

```
aws iottwinmaker execute-query \
--workspace-id exampleWorkspace \
--query-statement "SELECT e FROM EntityGraph MATCH (e) LIMIT 500"\
--max-results 50
--next-token "H7kyGmvK376L"
```
+ La `next-token` cadena especifica la siguiente página de resultados. Para obtener más información, consulta la acción [ ExecuteQuery](https://docs.aws.amazon.com//iot-twinmaker/latest/apireference/API_ExecuteQuery.html#API_ExecuteQuery_RequestSyntax)de la API.

AWS IoT TwinMaker La consulta de Knowledge Graph tiene los siguientes límites: 


****  

| Nombre del límite  | Cuota | Ajustable | 
| --- | --- | --- | 
|  Tiempo de espera de ejecución de la consulta  | 10 segundos | No | 
|  Número máximo de saltos  | 10 | Sí | 
|  Número máximo de sí mismos `JOIN`  | 20 | Sí | 
|  Número máximo de campos proyectados  | 20 | Sí | 
|  Número máximo de expresiones condicionales (`AND`,`OR`,`NOT`)  | 10 | Sí | 
|  Longitud máxima de un patrón de `LIKE` expresión (incluidos los caracteres comodín y los escapes)  | 20 | Sí | 
| Número máximo de elementos que se pueden especificar en una cláusula IN | 10 | Sí | 
| Valor máximo para OFFSET | 3 000 | Sí | 
|  Valor máximo para `LIMIT`  | 3 000 | Sí | 
|  Valor máximo para los recorridos (\$1) `OFFSET` `LIMIT`  | 3 000 | Sí | 