

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á.

# AWS IoT TwinMaker gráfico de conhecimento
<a name="tm-knowledge-graph"></a>

O gráfico de AWS IoT TwinMaker conhecimento organiza todas as informações contidas em seus AWS IoT TwinMaker espaços de trabalho e as apresenta em um formato de gráfico visual. Você pode executar consultas em suas entidades, componentes e tipos de componentes para gerar gráficos visuais que mostrem as relações entre seus recursos AWS IoT TwinMaker .

Os tópicos a seguir mostram como usar e integrar o gráfico de conhecimento.

**Topics**
+ [AWS IoT TwinMaker conceitos básicos do gráfico de conhecimento](#tm-knowledge-graph-concepts)
+ [Como executar consultas ao gráfico de AWS IoT TwinMaker conhecimento](tm-knowledge-graph-use.md)
+ [Integração da cena do gráfico de conhecimento](tm-knowledge-graph-scene.md)
+ [Como usar o gráfico de AWS IoT TwinMaker conhecimento com a Grafana](tm-knowledge-Grafana-panel.md)
+ [AWS IoT TwinMaker recursos adicionais do gráfico de conhecimento](tm-knowledge-graph-resources.md)

## AWS IoT TwinMaker conceitos básicos do gráfico de conhecimento
<a name="tm-knowledge-graph-concepts"></a>

Este tópico aborda os principais conceitos e vocabulário do atributo de gráfico de conhecimento.

**Como funciona o gráfico de conhecimento**:  
O gráfico de conhecimento cria relacionamentos entre entidades e seus componentes com o [CreateEntity](https://docs.aws.amazon.com//iot-twinmaker/latest/apireference/API_CreateEntity.html)ou existente [ UpdateEntity](https://docs.aws.amazon.com//iot-twinmaker/latest/apireference/API_UpdateEntity.html) APIs. Um relacionamento é apenas uma propriedade de um tipo de dados especial [RELATIONSHIP](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) definido em um componente de uma entidade. AWS IoT TwinMaker O knowledge graph chama a [ExecuteQuery](https://docs.aws.amazon.com/iot-twinmaker/latest/apireference/API_ExecuteQuery.html)API para fazer uma consulta com base em quaisquer dados nas entidades ou nos relacionamentos entre elas. O Knowledge Graph usa a linguagem de consulta PartiQL flexível (usada por muitos AWS serviços) que tem suporte recém-adicionado à sintaxe de correspondência gráfica para ajudá-lo a escrever suas consultas. Depois que as chamadas forem feitas, você poderá visualizar os resultados como uma tabela ou visualizá-los como um gráfico de nós e bordas conectados.

**Termos-chave do gráfico de conhecimento**:  
+ **Grafo de entidades**: uma coleção de nós e bordas em um espaço de trabalho.
+ **Nó**: cada entidade em seu espaço de trabalho se torna um nó no grafo de entidades.
+ **Borda**: cada propriedade de relacionamento definida em um componente de uma entidade se torna uma borda no grafo de entidades. Além disso, um relacionamento hierárquico pai-filho definido usando o parentEntityId campo de uma entidade também se torna uma borda no gráfico de entidades com um nome de relacionamento "”isChildOf. Todas as bordas são bordas direcionais.
+ **Relacionamento**: Um AWS IoT TwinMaker relacionamento é um tipo especial de propriedade do componente de uma entidade. Você pode usar a [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)ou para definir e editar um relacionamento. Em AWS IoT TwinMaker, um relacionamento deve ser definido em um componente de uma entidade. Um relacionamento não pode ser definido como um recurso isolado. Um relacionamento deve ser direcional de uma entidade para outra.

# Como executar consultas ao gráfico de AWS IoT TwinMaker conhecimento
<a name="tm-knowledge-graph-use"></a>

Antes de usar o gráfico de AWS IoT TwinMaker conhecimento, verifique se você preencheu os seguintes pré-requisitos:
+ Crie um AWS IoT TwinMaker espaço de trabalho. É possível criar um espaço de trabalho no [console do AWS IoT TwinMaker](https://console.aws.amazon.com/iottwinmaker/).
+ Familiarize-se com AWS IoT TwinMaker o sistema de componentes de entidade e como criar entidades. Para obter mais informações, consulte [Crie sua primeira entidade](twinmaker-gs-entity.md).
+ Familiarize-se com os conectores AWS IoT TwinMaker de dados da. Para obter mais informações, consulte [AWS IoT TwinMaker conectores de dados](data-connector-interface.md).

**nota**  
Para usar o gráfico de AWS IoT TwinMaker conhecimento, você precisa estar nos modos de preços de **pacote **padrão** ou em camadas**. Para obter mais informações, consulte [Alterne AWS IoT TwinMaker os modos de preços](tm-pricing-mode.md).

Os procedimentos a seguir mostram como escrever, executar, salvar e editar consultas.

 **Abra o editor de consulta**   

**Para navegar até o editor de consultas do gráfico de conhecimento**

1. Abra o [console do AWS IoT TwinMaker](https://console.aws.amazon.com/iottwinmaker/).

1. Abra o espaço de trabalho no qual você deseja usar o gráfico de conhecimento.

1. No menu de navegação esquerdo, escolha **Editor de consulta**.

1. O editor de consultas é aberto. Agora, você está pronto para executar consultas nos recursos do seu espaço de trabalho.

 **Execute uma consulta**   

**Para executar uma consulta e gerar um gráfico**

1. No editor de consulta, escolha a guia **Editor** para abrir o editor de sintaxe.

1. No espaço do editor, escreva a consulta que você deseja executar nos recursos do seu espaço de trabalho.  
![\[O espaço do editor com uma consulta inserida.\]](http://docs.aws.amazon.com/pt_br/iot-twinmaker/latest/guide/images/kg-query-updated.png)

   No exemplo mostrado, a solicitação pesquisa entidades que contêm `vav_%` em seu nome e, em seguida, organiza essas entidades pelo `feed` relacionamento entre elas, usando o código a seguir.

   ```
   SELECT ahu, vav, r FROM EntityGraph
   MATCH (vav)<-[r:feed]-(ahu)
   WHERE vav.entityName LIKE 'vav_%'
   ```
**nota**  
A sintaxe do gráfico de conhecimento usa [partiQL](https://partiql.org/). Para obter informações sobre essa sintaxe, consulte[AWS IoT TwinMaker recursos adicionais do gráfico de conhecimento](tm-knowledge-graph-resources.md).

1. Escolha **Executar consulta** para executar a solicitação que você criou.

   Um gráfico é gerado com base na sua solicitação.  
![\[Um gráfico mostrando os resultados da consulta detalhados nas etapas anteriores.\]](http://docs.aws.amazon.com/pt_br/iot-twinmaker/latest/guide/images/tm-kg-graph-output.png)

   O gráfico de exemplo mostrado acima é baseado no exemplo de consulta na etapa 2.

1. Os resultados da consulta também são apresentados em uma lista. Escolha **os resultados** para ver os resultados da consulta em uma lista.

1. Opcionalmente, escolha **Exportar como** para exportar os resultados da consulta no formato JSON ou CSV.

Isso abrange o uso básico do gráfico de conhecimento no console. Para obter mais informações e exemplos que demonstram a sintaxe do gráfico de conhecimento, consulte [AWS IoT TwinMaker recursos adicionais do gráfico de conhecimento](tm-knowledge-graph-resources.md).

# Integração da cena do gráfico de conhecimento
<a name="tm-knowledge-graph-scene"></a>

Você pode usar os componentes AWS IoT do kit de aplicativos para criar um aplicativo web que integre o gráfico de conhecimento às suas AWS IoT TwinMaker cenas. Isso permite gerar gráficos com base nos nós 3D (os modelos 3D que representam seus equipamentos ou sistemas) que estão presentes em sua cena. Para criar um aplicativo que representa graficamente os nós 3D da sua cena, primeiro vincule os nós 3D às entidades em seu espaço de trabalho. Com esse mapeamento, AWS IoT TwinMaker representa graficamente as relações entre os modelos 3D presentes em sua cena e as entidades em seu espaço de trabalho. Em seguida, você pode criar um aplicativo web, selecionar modelos 3D com sua cena e explorar suas relações com outras entidades em formato gráfico.

![\[Uma TwinMaker cena com um gráfico de conhecimento mostrando as relações entre os modelos 3D.\]](http://docs.aws.amazon.com/pt_br/iot-twinmaker/latest/guide/images/intro_kg_scene.png)


Para ver um exemplo de um aplicativo web funcional que utiliza os componentes do kit de AWS IoT aplicativos para gerar gráficos em uma AWS IoT TwinMaker cena, consulte o [AWS IoT TwinMaker exemplo do aplicativo react](https://github.com/awslabs/iot-app-kit/blob/3DKG_Demo/examples/react-app/src/components/index.tsx) no github.

## AWS IoT TwinMaker pré-requisitos do gráfico de cena
<a name="tm-knowledge-graph-prereqs"></a>

Antes de criar um aplicativo web que use o gráfico de AWS IoT TwinMaker conhecimento em suas cenas, preencha os seguintes pré-requisitos:
+ Crie um AWS IoT TwinMaker espaço de trabalho. É possível criar um espaço de trabalho no [console do AWS IoT TwinMaker](https://console.aws.amazon.com/iottwinmaker/).
+ Familiarize-se com AWS IoT TwinMaker o sistema de componentes de entidade e como criar entidades. Para obter mais informações, consulte [Crie sua primeira entidade](twinmaker-gs-entity.md).
+ Crie uma AWS IoT TwinMaker cena preenchida com modelos 3D.
+ Familiarize-se com AWS IoT TwinMaker os componentes do kit de AWS IoT aplicativos. Para obter mais informações sobre os AWS IoT TwinMaker componentes, consulte[Crie um aplicativo web personalizado usando componentes de AWS IoT TwinMaker interface do usuário](tm-app-kit.md).
+ Fique familiarizado com os conceitos do gráfico de conhecimento e a terminologia chave. Consulte [AWS IoT TwinMaker conceitos básicos do gráfico de conhecimento](tm-knowledge-graph.md#tm-knowledge-graph-concepts).

**nota**  
Para usar o gráfico de AWS IoT TwinMaker conhecimento e quaisquer recursos relacionados, você precisa estar nos modos de preços de **pacote **padrão** ou em camadas**. Para obter mais informações sobre AWS IoT TwinMaker preços, consulte[Alterne AWS IoT TwinMaker os modos de preços](tm-pricing-mode.md).

## Vincule nós 3D em sua cena
<a name="tm-knowledge-graph-scene-data-binidng"></a>

Antes de criar um aplicativo web que integre o gráfico de conhecimento à sua cena, vincule os modelos 3D, chamados de nós 3D, que estão presentes em sua cena à entidade de espaço de trabalho associada. Por exemplo, se você tiver um modelo de equipamento de mixagem em uma cena e uma entidade correspondente chamada`mixer_0`, crie uma **associação de dados** entre o modelo do mixer e a entidade que representa o mixer, para que o modelo e a entidade possam ser representados graficamente.

**Para executar uma ação de vinculação de dados**

1. Fazer login no [console do AWS IoT TwinMaker](https://console.aws.amazon.com/iottwinmaker/).

1. Abra seu espaço de trabalho e selecione uma cena com os nós 3D que você deseja vincular.

1. Selecione um nó (modelo 3D) no compositor de cenas. Quando você seleciona um nó, ele abre um painel de inspeção no lado direito da tela.

1. No painel do inspetor, navegue até a parte superior do painel e selecione o botão **\$1**. Em seguida, escolha a opção **Adicionar associação de entidade**. Isso abrirá uma lista suspensa onde você poderá selecionar uma entidade para vincular ao seu nó atualmente selecionado.  
![\[Uma cena com o sinal de adição selecionado no painel Inspector e a opção Adicionar associação de entidade destacada.\]](http://docs.aws.amazon.com/pt_br/iot-twinmaker/latest/guide/images/binding-step-4.png)

1. No menu suspenso de vinculação de dados, selecione o ID da entidade que você deseja mapear para o modelo 3D. Para os campos **Nome do componente** e **Nome da propriedade**, selecione os componentes e propriedades que você deseja vincular.  
![\[Uma cena com os Nomes de Componentes e Propriedades selecionados no painel Inspector.\]](http://docs.aws.amazon.com/pt_br/iot-twinmaker/latest/guide/images/binding-step-6.png)

   Depois de fazer as seleções para os campos **ID da entidade**, **Nome do componente** e **Nome da propriedade**, a vinculação estará completa.

1. Repita esse processo para todos os modelos e entidades que você deseja representar graficamente.
**nota**  
A mesma operação de vinculação de dados pode ser realizada em suas tags de cena. Basta selecionar uma tag em vez de uma entidade e seguir o mesmo processo para vincular a tag a um nó.

## Crie um aplicativo web
<a name="tm-knowledge-graph-scene-application"></a>

Depois de vincular suas entidades, use a biblioteca do kit de AWS IoT aplicativos para criar um aplicativo web com um widget de gráfico de conhecimento que permite visualizar sua cena e explorar as relações entre os nós e as entidades da cena.

Use os seguintes recursos para criar sua própria aplicação:
+ O AWS IoT TwinMaker exemplo da documentação [Readme](https://github.com/awslabs/iot-app-kit/blob/3DKG_Demo/examples/react-app/README.md) do github do aplicativo react.
+ O AWS IoT TwinMaker exemplo da [fonte](https://github.com/awslabs/iot-app-kit/blob/3DKG_Demo/examples/react-app/src/components/index.tsx) do aplicativo react no github.
+ Documentação de [introdução](https://awslabs.github.io/iot-app-kit/?path=/docs/overview-getting-started--docs) do kit de AWS IoT aplicativos.
+ A documentação do [componente Video Player do](https://awslabs.github.io/iot-app-kit/?path=/docs/components-videoplayer--docs) kit de AWS IoT aplicativos.
+ A documentação do [componente Scene Viewer do](https://awslabs.github.io/iot-app-kit/?path=/docs/components-sceneviewer--docs) kit de AWS IoT aplicativos.

O procedimento a seguir demonstra a funcionalidade do componente visualizador de cena em um aplicativo web.

**nota**  
Esse procedimento é baseado na implementação do componente de visualização de cena do AWS IoT kit de aplicativos no aplicativo react de AWS IoT TwinMaker amostra.

1. Abra o componente de visualização de cena do aplicativo de reação de AWS IoT TwinMaker amostra. No campo de pesquisa, digite um nome de entidade ou nome de entidade parcial (pesquisa com distinção entre maiúsculas e minúsculas) e selecione o botão **Pesquisar**. Se um modelo estiver vinculado ao ID da entidade, o modelo na cena será destacado e um nó da entidade será mostrado no painel do visualizador de cena.  
![\[Uma cena com o painel do visualizador de cena do Knowledge Graph exibido.\]](http://docs.aws.amazon.com/pt_br/iot-twinmaker/latest/guide/images/search_select_kg_event.png)

1. Para gerar um gráfico de todos os relacionamentos, selecione um nó no widget do visualizador de cena e selecione o botão **Explorar**.  
![\[Uma cena com o painel do visualizador de cenas do Knowledge Graph exibindo um gráfico de relacionamentos.\]](http://docs.aws.amazon.com/pt_br/iot-twinmaker/latest/guide/images/explore_select_kg.png)

1. Pressione o botão **Limpar** para limpar a seleção atual do gráfico e começar de novo.

# Como usar o gráfico de AWS IoT TwinMaker conhecimento com a Grafana
<a name="tm-knowledge-Grafana-panel"></a>

Esta seção mostra como adicionar um painel do editor de consultas ao painel do AWS IoT TwinMaker Grafana para executar e exibir consultas.

## AWS IoT TwinMaker pré-requisitos do editor de consultas
<a name="tm-knowledge-graph-Grafana-prereqs"></a>

Antes de usar o gráfico de AWS IoT TwinMaker conhecimento na Grafana, preencha os seguintes pré-requisitos:
+ Crie um AWS IoT TwinMaker espaço de trabalho. É possível criar um espaço de trabalho no [console do AWS IoT TwinMaker](https://console.aws.amazon.com/iottwinmaker/).
+ Configure AWS IoT TwinMaker para uso com o Grafana. Para instruções, consulte [AWS IoT TwinMaker Integração do painel Grafana](grafana-integration.md).

**nota**  
Para usar o gráfico de AWS IoT TwinMaker conhecimento, você precisa estar nos modos de preços de **pacote **padrão** ou em camadas**. Para obter mais informações, consulte [Alterne AWS IoT TwinMaker os modos de preços](tm-pricing-mode.md).

## AWS IoT TwinMaker permissões do editor de consultas
<a name="tm-knowledge-graph-Grafana-config"></a>

Para usar o editor de AWS IoT TwinMaker consultas no Grafana, você precisa ter uma função do IAM com permissão para a ação. `iottwinmaker:ExecuteQuery` Adicione essa permissão à sua função no painel do espaço de trabalho, conforme mostrado neste exemplo:

------
#### [ 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**  
Ao configurar sua fonte de dados do AWS IoT TwinMaker Grafana, certifique-se de usar a função com essa permissão para o campo **ARN de assumir** função. Depois de adicioná-lo, você pode selecionar seu espaço de trabalho no menu suspenso ao lado de **Espaço de trabalho.**

Para obter mais informações, consulte [Como criar um perfil do IAM para o painel](dashboard-IAM-role.md#dashboard-IAM-role.title).

### Configurar o painel do editor de AWS IoT TwinMaker consultas
<a name="tm-knowledge-graph-Grafana-panel"></a>

**Para configurar um novo painel de controle da Grafana para o gráfico de conhecimento**

1. Abra seu painel da AWS IoT TwinMaker Grafana.

1. Crie um novo **painel de controle**. Para obter etapas detalhadas sobre como criar um painel, consulte [Criar um painel na documentação](https://grafana.com/docs/grafana/latest/dashboards/build-dashboards/create-dashboard/) da Grafana.

1. Na lista de visualizações, selecione **Editor de AWS IoT TwinMaker consultas**.  
![\[A lista suspensa no AWS IoT TwinMaker painel contém a opção para o Editor de AWS IoT TwinMaker consultas.\]](http://docs.aws.amazon.com/pt_br/iot-twinmaker/latest/guide/images/tw-query-editor-dropdown.png)

1. Selecione a fonte de dados na qual executará consultas.

1. **(Opcional)** Adicione um nome para o novo painel no campo fornecido.

1. Selecione **Aplicar** para salvar e confirmar seu novo painel.

O painel do gráfico de conhecimento funciona de forma semelhante ao editor de consultas fornecido no AWS IoT TwinMaker console. Você pode executar, escrever e limpar as consultas feitas no painel. Para obter mais informações sobre como escrever consultas, consulte[AWS IoT TwinMaker recursos adicionais do gráfico de conhecimento](tm-knowledge-graph-resources.md).

#### Como usar o editor AWS IoT TwinMaker de consultas
<a name="tm-knowledge-graph-Grafana-use"></a>

Os resultados de suas consultas são exibidos de três maneiras, conforme mostrado nas imagens a seguir: visualizados em um gráfico, listados em uma tabela ou apresentados como um resumo da execução.
+ **Visualização gráfica:**  
![\[AWS IoT TwinMaker resultados do editor de consultas exibidos como um gráfico visual.\]](http://docs.aws.amazon.com/pt_br/iot-twinmaker/latest/guide/images/kg-vis-graph.png)

  O gráfico visual exibe somente dados para consultas que tenham pelo menos uma relação no resultado. O gráfico exibe entidades como nós e relacionamentos como bordas direcionadas no gráfico.
+ **Dados tabulares:**  
![\[AWS IoT TwinMaker resultados do editor de consultas exibidos como dados tabulares.\]](http://docs.aws.amazon.com/pt_br/iot-twinmaker/latest/guide/images/kg-table-data.png)

  O formato de dados tabulares exibe os dados de todas as consultas. Você pode pesquisar na tabela resultados específicos ou subconjuntos dos resultados. Os dados podem ser exportados no formato JSON ou CSV.
+ **Resumo da execução**  
![\[AWS IoT TwinMaker resultados do editor de consultas exibidos como um resumo da execução.\]](http://docs.aws.amazon.com/pt_br/iot-twinmaker/latest/guide/images/kg-run-sum.png)

  O resumo da execução exibe a consulta e os metadados sobre o status da consulta.

# AWS IoT TwinMaker recursos adicionais do gráfico de conhecimento
<a name="tm-knowledge-graph-resources"></a>

Esta seção fornece exemplos básicos da sintaxe do partiQL usada para escrever consultas no gráfico de conhecimento, bem como links para a documentação do partiQL que fornecem informações sobre o modelo de dados do gráfico de conhecimento.
+ [Documentação do modelo de dados gráficos PartiQL](https://partiql.org/gpml/graph_model.html)
+ [Documentação de consulta gráfica PartiQL](https://partiql.org/gpml/graph_query.html)

Esse conjunto de exemplos mostra consultas básicas com suas respostas. Use isso como referência para escrever suas próprias consultas.

**Consultas básicas**  
+ **Obtenha todas as entidades com um filtro**

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

   Essa consulta retorna todas as entidades em um espaço de trabalho com o nome`room_0`.

  `FROM`cláusula: `EntityGraph` é a coleção de gráficos que contém todas as entidades e seus relacionamentos em um espaço de trabalho. Essa coleção é criada e gerenciada automaticamente AWS IoT TwinMaker com base nas entidades em seu espaço de trabalho.

  Cláusula `MATCH`: especifica um padrão que corresponde a uma parte do gráfico. Nesse caso, o padrão `(entity)` corresponde a cada nó no gráfico e está vinculado à variável da entidade. A cláusula `FROM` deve ser seguida pela cláusula `MATCH`.

  `WHERE`cláusula: especifica um filtro no `entityName` campo do nó, onde o valor deve corresponder. `room_0`

  `SELECT`cláusula: especifica a `entity` variável para que todo o nó da entidade seja retornado.

  **Resposta:**

  ```
  {
    "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`Retorna metadados sobre a coluna, como nome e tipo. O tipo retornado é `NODE`. Isso indica que o nó inteiro foi retornado. Outros valores para o tipo podem `EDGE` indicar uma relação ou `VALUE` indicar um valor escalar, como um inteiro ou uma string.

  O `rows` retorna uma lista de linhas. Como apenas uma entidade foi correspondida, um `rowData` é retornado, que contém todos os campos em uma entidade.
**nota**  
Ao contrário do SQL, em que você só pode retornar valores escalares, você pode retornar um objeto (como JSON) usando partiQL.

  Cada nó contém todos os campos em nível de entidade`entityId`, como, `arn` e campos em nível de componente`components`, como`componentName`, `componentTypeId` e também campos em nível de propriedade, `properties` como e, tudo como um JSON `propertyName` aninhado`propertyValue`.
+ **Obtenha todos os relacionamentos com um filtro**:

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

  Essa consulta retorna todos os relacionamentos em um espaço de trabalho com o nome do relacionamento `isLocationOf`.

   A `MATCH` cláusula: especifica um padrão que corresponde a dois nós (indicados por`()`) conectados por uma borda direcionada (indicada por`-[]->`) e vinculados a uma variável chamada. `relationship`

  A `WHERE` cláusula: especifica um filtro no `relationshipName` campo da borda, onde está o valor. `isLocationOf`

  A `SELECT` cláusula: especifica a variável de relacionamento para que todo o nó de borda seja retornado.

  **Resposta**

  ```
  {
      "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
      ]
  }
  ```

  O tipo da coluna em `columnDescriptions` é um`EDGE`.

  Cada um `rowData` representa uma borda com campos como`relationshipName`. É o mesmo nome da propriedade do relacionamento definido na entidade. O`sourceEntityId`, `sourceComponentName` e `sourceComponentTypeId` fornece informações sobre em qual entidade e componente a propriedade do relacionamento foi definida. O `targetEntityId` especifica para qual entidade esse relacionamento está apontando.
+ **Obtenha todas as entidades com um relacionamento específico com uma entidade específica**

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

  Essa consulta retorna todos os nomes de entidades de todas as entidades que têm um `isLocationOf` relacionamento com a `room_0` entidade.

  A `MATCH` cláusula: especifica um padrão que corresponde a quaisquer dois nós (`e1`,`e2`) que tenham uma borda direcionada (`r`).

  A cláusula `WHERE`: especifica um filtro no nome do relacionamento e no nome da entidade de origem.

  A `SELECT` cláusula: retorna o `entityName` campo no `e2` nó.

  **Resposta**

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

  Em ColumnDescriptions, o tipo da coluna é `VALUE` porque `entityName` é uma string.

  Uma entidade,`floor_0`, é retornada.

**MATCH**  
Os seguintes padrões são suportados em uma `MATCH` cláusula:  
+ Combine o nó 'b' apontando para o nó 'a':

  ```
  FROM EntityGraph MATCH (a)-[rel]-(b)
  ```
+ Combine o nó 'a' apontando para o nó 'b':

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

  Não há nenhuma variável vinculada a um relacionamento, supondo que um filtro não precise ser especificado no relacionamento.
+ Combine o nó 'a' apontando para o nó 'b' e o nó 'b' apontando para o nó 'a':

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

  Isso retornará duas correspondências: uma de 'a' para 'b' e outra de 'b' para 'a', então a recomendação é usar bordas direcionadas sempre que possível.
+ O nome do relacionamento também é um rótulo do gráfico de propriedades`EntityGraph`, então você pode simplesmente especificar o nome do relacionamento após dois pontos (:) em vez de especificar um filtro `rel.relationshipName` na `WHERE` cláusula.

  ```
  FROM EntityGraph MATCH (a)-[:isLocationOf]-(b)
  ```
+ Encadeamento: os padrões podem ser encadeados para corresponder a vários relacionamentos.

  ```
  FROM EntityGraph MATCH (a)-[rel1]->(b)-[rel2]-(c)
  ```
+ Os padrões de salto variáveis também podem abranger vários nós e bordas:

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

  Essa consulta corresponde a qualquer padrão com bordas de saída do nó 'a' em 1 a 5 saltos. Os quantificadores permitidos são:

  `{m,n}`- entre m e n repetições

  `{m,}`- m ou mais repetições.

**FROM**:  
Um nó de entidade pode conter dados aninhados, como componentes que, por sua vez, contêm mais dados aninhados, como propriedades. Eles podem ser acessados desaninhando o resultado do padrão 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'
```
Acesse campos aninhados pontilhando `.` em uma variável. Uma vírgula (,) é usada para desaninhar (ou unir) entidades com os componentes internos e, em seguida, com as propriedades dentro desses componentes. `AS`é usado para vincular uma variável às variáveis não aninhadas para que elas possam ser usadas nas cláusulas or. `WHERE` `SELECT` Essa consulta retorna todas as entidades que contêm uma propriedade nomeada `roomFunction` com valor `meeting` em um componente com id do tipo de componente `com.example.query.construction.room`.   
Para acessar vários campos aninhados de um campo, como vários componentes em uma entidade, use a notação de vírgula para fazer uma junção.  

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

**SELECT**:  
+ Retorne um nó:

  ```
  SELECT e
  FROM EntityGraph MATCH (e)
  ```
+ Retorne uma borda:

  ```
  SELECT r
  FROM EntityGraph MATCH (e1)-[r]->(e2)
  ```
+ Retorne um 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
  ```

  Formate o nome do campo de saída atribuindo um alias a ele usando `AS`. Aqui, em vez de `propertyValue` como nome da coluna na resposta, `roomfunction` é retornado.
+ Retorne os aliases:

  ```
  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%'
  ```

  É altamente recomendável usar aliases para ser explícito, aumentar a legibilidade e evitar ambigüidades em suas consultas.

**WHERE**:  
+ Os operadores lógicos suportados são `AND``NOT`, `OR` e.
+ Os operadores de comparação compatíveis são `<`, `<=`, `>`, `=>`, `=` e `!=`.
+ Use a `IN` palavra-chave se quiser especificar várias `OR` condições no mesmo campo.
+ Filtrar em um campo de entidade, componente ou propriedade:

  ```
  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'
  ```
+ Filtre na `configuration` propriedade. Aqui `unit` está a chave no mapa de configuração e `Celsius` é o valor.

  ```
  WHERE p.definition.configuration.unit = 'Celsius'
  ```
+ Verifique se uma propriedade do mapa contém uma determinada chave e valor:

  ```
  WHERE p.propertyValue.length = 20.0
  ```
+ Verifique se uma propriedade do mapa contém uma determinada chave:

  ```
  WHERE NOT p.propertyValue.length IS MISSING
  ```
+ Verifique se uma propriedade da lista contém um determinado valor:

  ```
  WHERE 10.0 IN p.propertyValue
  ```
+ Use a função `lower()` para comparações sem distinção entre maiúsculas e minúsculas. Por padrão, todas as comparações são sensíveis a maiúsculas e minúsculas.

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

**LIKE**:  
Útil se você não souber o valor exato de um campo e puder realizar uma pesquisa de texto completo no campo especificado. `%` representa zero ou mais.  

```
WHERE e.entityName LIKE '%room%'
```
+ Pesquisa de infixos: `%room%`
+ Pesquisa de prefixos: `room%`
+ Pesquisa de sufixo: `%room`
+ Se você tiver '%' em seus valores, coloque um caractere de escape no `LIKE` e especifique o caractere de escape com`ESCAPE`.

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

**DISTINCT**:  

```
SELECT DISTINCT c.componentTypeId
FROM EntityGraph MATCH (e), e.components AS c
```
+ A palavra-chave `DISTINCT` elimina duplicatas do resultado final.

  `DISTINCT` não é compatível com tipos de dados complexos.

**CONTAGEM**  

```
SELECT COUNT(e), COUNT(c.componentTypeId)
FROM EntityGraph MATCH (e), e.components AS c
```
+ A `COUNT` palavra-chave calcula o número de itens em um resultado de consulta.
+ `COUNT`não é compatível com campos complexos aninhados e campos de padrões gráficos.
+ `COUNT`a agregação não é compatível com consultas `DISTINCT` aninhadas.

  Por exemplo, não há suporte para `COUNT(DISTINCT e.entityId)`.

**CAMINHO**  
As seguintes projeções de padrões são suportadas na consulta usando a projeção de caminho:  
+ Consultas de salto variável

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

  *Essa consulta combina e projeta metadados de nós de qualquer padrão com bordas de saída do nó a em 1 a 3 saltos.*
+ Consultas de salto fixo

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

  *Essa consulta combina e projeta metadados de entidades e bordas de entrada para b.*
+ Consultas não direcionadas

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

  Essa consulta combina e projeta os metadados dos nós em padrões de 1 salto conectando *a* e *c* via *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"
                          }
                      ]
                  }
              ]
          }
      ]
  }
  ```

  *Essa resposta de `PATH` consulta é composta apenas por metadados que identificam todos os nós e bordas de cada *um path/pattern * entre a e *c* via b.*

**LIMITE** e **COMPENSAÇÃO**:  

```
SELECT e.entityName
FROM EntityGraph MATCH (e)
WHERE e.entityName LIKE 'room_%'
LIMIT 10
OFFSET 5
```
`LIMIT` especifica o número de resultados a serem retornados na consulta e `OFFSET` especifica o número de resultados a serem ignorados.

**LIMIT** e **maxResults**:  
O exemplo a seguir mostra uma consulta que retorna 500 resultados no total, mas exibe apenas 50 por vez por chamada de API. Esse padrão pode ser usado quando você precisa limitar a quantidade de resultados exibidos, por exemplo, se você só puder exibir 50 resultados em uma interface de usuário.  

```
aws iottwinmaker execute-query \
--workspace-id exampleWorkspace \
--query-statement "SELECT e FROM EntityGraph MATCH (e) LIMIT 500"\
--max-results 50
```
+ A `LIMIT` palavra-chave afeta a consulta e limita as linhas resultantes. Se você precisar controlar o número de resultados retornados por chamada de API sem limitar o número total de resultados retornados, use`LIMIT`.
+ `max-results`é um parâmetro opcional para a [ação ExecuteQuery da API](https://docs.aws.amazon.com//iot-twinmaker/latest/apireference/API_ExecuteQuery.html). `max-results`só se aplica à API e à forma como os resultados são lidos dentro dos limites da consulta acima.

  O uso `max-results` em uma consulta permite reduzir o número de resultados exibidos sem limitar o número real de resultados retornados.
A consulta abaixo percorre a próxima página de resultados. Essa consulta usa a chamada de `ExecuteQuery` API para retornar as linhas 51 a 100, onde a próxima página de resultados é especificada pelo `next-token` — nesse caso, o token é:. `"H7kyGmvK376L"`  

```
aws iottwinmaker execute-query \
--workspace-id exampleWorkspace \
--query-statement "SELECT e FROM EntityGraph MATCH (e) LIMIT 500"\
--max-results 50
--next-token "H7kyGmvK376L"
```
+ A `next-token` string especifica a próxima página de resultados. Para obter mais informações, consulte a ação [ ExecuteQuery](https://docs.aws.amazon.com//iot-twinmaker/latest/apireference/API_ExecuteQuery.html#API_ExecuteQuery_RequestSyntax)da API.

AWS IoT TwinMaker a consulta do gráfico de conhecimento tem os seguintes limites: 


****  

| Nome do limite | Quota | Ajustável | 
| --- | --- | --- | 
|  Tempo limite de execução da consulta  | 10 segundos | Não | 
|  Número máximo de saltos  | 10 | Sim | 
|  Número máximo de `JOIN` selos  | 20 | Sim | 
|  Número máximo de campos projetados  | 20 | Sim | 
|  Número máximo de expressões condicionais (`AND`,`OR`,`NOT`)  | 10 | Sim | 
|  Tamanho máximo de um padrão de `LIKE` expressão (incluindo curingas e escapes)  | 20 | Sim | 
| Número máximo de itens que podem ser especificados em uma IN cláusula | 10 | Sim | 
| Valor máximo para OFFSET | 3000 | Sim | 
|  Valor máximo para `LIMIT`  | 3000 | Sim | 
|  Valor máximo para travessias (\$1) `OFFSET` `LIMIT`  | 3000 | Sim | 