Vous pouvez interroger un graphe de connaissances pour rechercher un sous-ensemble des entités et des relations qu’il contient et voir comment différentes entités sont connectées. Consultez les exemples ci-dessous :
- À partir d’un graphe de connaissances représentant la propagation d’une maladie infectieuse, examinez les personnes et les animaux associés via une relation avec une ressource donnée.
- À partir d’un graphe de connaissances représentant une chaîne d’approvisionnement de fabrication, examinez le contenu associé à un composant spécifique, y compris les fournisseurs, les moyens de livraison, les entrepôts, etc.
- À partir d’un graphe de connaissances représentant une organisation, examinez les appareils d’un type donné et répertoriez-en les propriétés, y compris le nom de l’employé responsable.
Vous pouvez identifier le sous-ensemble d’entités et de relations, ou leurs propriétés, en interrogeant le graphe de connaissances. Utilisez le langage de requête openCypher pour écrire des requêtes openCypher afin de découvrir les entités associées et leurs propriétés et utilisez cet ensemble restreint d’informations dans le graphe de connaissances, une carte ou un diagramme de liens.
Interroger le contenu de l’enquête
Vous pouvez interroger les entités et relations d’un graphe de connaissances dans une enquête. Si vous le souhaitez, vous pouvez inclure les enregistrements de provenance dans les résultats de requête.
- Ouvrez une enquête et parcourez son contenu.
- En haut de la vue de l’enquête, cliquez sur la zone de texte de recherche ou appuyez sur Ctrl+F et cliquez sur Query (Requête) le cas échéant.
La fenêtre de requête développée apparaît. Il s’agit d’une zone de texte de requête multiligne qui vous permet de mettre en forme votre requête openCypher.
- Saisissez une requête dans la zone de texte de recherche. Appuyez sur Entrée pour déplacer le pointeur sur une nouvelle ligne et continuez la saisie.
Par exemple, une requête comme MATCH (e) RETURN e renvoie toutes les entités du graphe de connaissances, dans la limite du nombre maximum autorisé. La requête fonctionne avec n’importe quel graphe de connaissances.
- Si vous le souhaitez, cochez Include Provenance (Inclure la provenance) pour inclure dans les résultats les enregistrements de provenance qui correspondent à la requête.
- Cliquez sur Apply (Appliquer).
Les résultats de la requête apparaissent dans la vue de l’enquête. Les entités, les relations et les enregistrements de provenance renvoyés par la requête sont identifiés par les icônes appropriées. La requête est ajoutée à l’historique qui apparaît en bas de la fenêtre de requête développée.
- Redimensionnez la fenêtre de requête développée en faisant glisser le séparateur entre la fenêtre et la liste de contenu.
Vous pouvez également utiliser les boutons sur le séparateur pour utiliser tout l’espace pour la fenêtre de requête développée ou pour la liste de contenu.
Écrire une requête openCypher
Les requêtes openCypher sont aux bases de données orientées graphe ce que les requêtes SQL sont aux bases de données relationnelles. La structure de base de la requête consiste à rechercher, ou faire correspondre, les entités et de renvoyer ces entités, lorsque les entités que vous recherchez sont identifiées entre parenthèses. Par exemple, la requête MATCH (e) RETURN e renvoie des entités de n’importe quel type. Le nombre d’entités renvoyées est limité uniquement par la configuration du graphe de connaissances. Pour restreindre le nombre d’éléments de graphe renvoyés, utilisez une expression LIMIT. Par exemple, la requête MATCH (e) RETURN e LIMIT 5 renvoie cinq entités de n’importe quel type.
La requête peut identifier les entités qui sont liées à l’aide de symboles qui créent une flèche. Par exemple, la requête MATCH (e1)-->(e2) RETURN e1,e2 renvoie des paires d’entités, e1 et e2, dans lesquelles n’importe quel type de relation existe entre les deux entités et n’importe quel chemin de l’entité e1 à l’entité e2 les connecte. Si la requête a été écrite avec la flèche pointant dans l’autre direction, les chemins doivent être considérés comme démarrant de l’entité d’origine e2 vers l’entité de destination e1 : MATCH (e1)<--(e2) RETURN e1,e2. La relation entre les entités est appelée un modèle.
La requête peut identifier des relations spécifiques qui doivent être placées entre crochets. Par exemple, la requête MATCH (e1)-[]->(e2) RETURN e1,e2 renvoie des paires d’entités, e1 et e2, dans lesquelles une seule relation de n’importe quel type connecte les deux entités. Cette requête présente une autre manière de représenter les mêmes requêtes que celles illustrées ci-dessus, et illustre la syntaxe de requête préférée. La requête peut être modifiée pour renvoyer l’intégralité du tuple qui décrit la relation en renvoyant l’entité d’origine, e1, la relation, r, et l’entité de destination, e2, comme suit : MATCH (e1)-[r]->(e2) RETURN e1,r,e2. Des requêtes similaires, MATCH (e1)-[ ]->( )-[ ]->(e2) RETURN e1,e2 ou MATCH (e1)-[*2]->(e2) RETURN e1,e2, renvoie des paires d’entités connectées par deux relations dans la même direction. Les requêtes peuvent également identifier des modèles dans lesquels les relations présentent des directions différentes, comme MATCH (e1)-[ ]->(e2)<-[ ]-(e3) RETURN e1,e2,e3.
Les exemples de requêtes ci-dessus peuvent être utilisés avec n’importe quel graphe de connaissances.
Personnalisez une requête pour un graphe de connaissances spécifique en référençant les types d’entité, les types de relation et les propriétés définies dans son modèle de données. Incluez le nom d’un type d’entité spécifique dans votre requête pour contraindre les éléments de graphe pris en compte. Par exemple, la requête MATCH (e1:Person)-[r]->(e2) RETURN e1,r,e2 renvoie toutes les entités Person (Personne), e1, dans lesquelles une relation, r, connecte l’entité Person (Personne) à une autre entité, e2, qui peut être une entité de n’importe quel type. Contrairement à l’exemple précédent, les relations dans lesquelles une entité d’animal, de véhicule ou de document est utilisée comme origine d’une relation ne sont pas incluses dans les résultats.
Vous pouvez contraindre la requête afin de prendre en compte certains types de relation et certaines entités liées en ajoutant les types de relation et d’entité aux autres facettes de la requête. Par exemple, MATCH (p:Person)-[v:HasVehicle]->(e) RETURN p,v,e renvoie toutes les entités Person (Personne), p, dans lesquelles une relation HasVehicle (Possède un véhicule), v, connecte l’entité Person (Personne) à une entité de n’importe quel type, e. Les variables p et v sont attribuées respectivement aux entités Person (Personne) et aux relations HasVehicle (Possède un véhicule). Les informations les concernant peuvent donc être retournées par la requête. Contrairement à l’exemple précédent, les relations dans lesquelles une entité d’animal ou de document est utilisée comme destination d’une relation ne sont pas incluses dans les résultats. En fonction du modèle de données du graphe de connaissances, l’entité de destination, e, peut être une entité de véhicule générique, ou une entité d’un type spécifique, comme une entité de voiture, de moto, de bateau, d’avion, d’utilitaire, etc.
Les propriétés spécifiques des entités et des relations peuvent être incluses dans les résultats de requête. Par exemple, MATCH (p:Person)-[:HasVehicle]->(e) RETURN p,e.make,e.model,e.year exécute la même requête que celle définie précédemment. Toutefois, au lieu de montrer l’entité de destination, les résultats montrent les valeurs stockées dans plusieurs de ses propriétés : la marque, le modèle et l’année du véhicule, respectivement. Dans cet exemple, aucune variable n’a été affectée à la relation prise en compte par la requête, car les données de la relation ne sont pas incluses dans les résultats de requête ni évaluées ailleurs dans la requête.
De même, vous pouvez contraindre les entités et les relations qui sont évaluées en spécifiant des propriétés qui définissent les entités et les relations d’intérêt. Les propriétés à prendre en compte sont définies par l’ajout d’une clause WHERE à la requête. Comme dans les exemples ci-dessus, les variables doivent être affectées pour faire référence à des informations spécifiques à propos des entités et des relations dans la clause WHERE. Par exemple, dans la requête suivante, seules les entités Person (Personne) avec une valeur spécifique pour la propriété lastName (nom) sont évaluées ; les relations HasVehicle (Possède un véhicule) sont prises en compte uniquement si la valeur de leur propriété endDate (date de fin) est nulle ; et les entités Vehicle (Véhicule) liées sont uniquement prises en compte si la valeur de la propriété year (année) est inférieure à 1980 : MATCH (p:Person)-[hv:HasVehicle]->(v:Vehicle) WHERE p.lastName = 'Doe' and hv.endDate IS NULL and v.year < 1980 RETURN p,p.firstName,v,v.make,v.year.
Vous en saurez plus sur le langage de requête openCypher dans un document fourni par openCypher Implementers Group. ArcGIS Knowledge ne prend pas en charge tous les aspects du langage de requête openCypher. Par exemple, les requêtes ne peuvent pas être utilisées pour mettre à jour le graphe de connaissances, mais uniquement pour renvoyer des valeurs.
Dans ArcGIS AllSource, pour en savoir plus sur openCypher, consultez les requêtes qui récupèrent des données à partir d’un graphe de connaissances pour générer des histogrammes. Dans la fenêtre Search and Filter (Rechercher et filtrer), dans l’onglet Histogram (Histogramme) , cliquez sur le bouton Settings (Paramètres) , puis sur Send query to Query tab (Envoyer la requête dans l’onglet Requête). La requête utilisée pour récupérer des données pour l’ensemble d’histogrammes actuel apparaît dans la zone de texte Query (Requête).
Modifier et mettre à jour les résultats de requête
Vous pouvez récupérer un ensemble précis d’entités et de relations dans une enquête en évaluant des types d’élément de graphe spécifiques et des valeurs de propriété spécifiques.
- Cliquez dans la fenêtre de requête développée ou appuyez sur Ctrl+F.
- Actualisez le texte de la requête openCypher existante.
Par exemple, redéfinissez la requête sur MATCH (p:Person)-[hv:HasVehicle]->(v:Vehicle) WHERE v.year < 2005 RETURN p, p.firstName, p.phoneNumber, hv, v, v.make, v.model, v.year pour renvoyer toutes les entités Person (Personne) qui partagent une relation HasVehicle (Possède un véhicule) avec une entité Vehicle (Véhicule) dans laquelle la propriété year (année) du véhicule est inférieure à 2005. Les résultats incluent les valeurs des propriétés firstName (prénom) et phoneNumber (numéro de téléphone) de l’entité Person (Personne), la relation HasVehicle (Possède un véhicule) et les propriétés make (marque), model (modèle) et year (année) de l’entité Vehicle (Véhicule).
Appuyez sur Entrée pour déplacer le pointeur ou une partie du texte de la requête sur une nouvelle ligne dans la zone de texte multiligne. Utilisez autant de lignes que nécessaire pour la clarté.
- Cliquez sur Apply (Appliquer) pour obtenir de nouveaux résultats.
Les résultats de la requête apparaissent dans l’enquête. Les entités et les relations renvoyées par la requête sont identifiées par les icônes appropriées. La requête est ajoutée à l’historique qui apparaît en bas de la fenêtre de requête développée.
- Cliquez sur Clear (Effacer) pour supprimer le texte de la requête actuelle de la fenêtre de requête développée.
Les trois requêtes les plus récentes sont répertoriées en bas de la fenêtre de requête développée. Les résultats de la requête la plus récente ne sont pas supprimés.
- Exécutez de nouveau ou supprimez des requêtes à partir de votre historique de requête.
- Cliquez sur une requête dans la liste pour l’exécuter de nouveau.
La requête sélectionnée apparaît dans la zone de texte de requête, s’exécute automatiquement, et les résultats apparaissent dans l’enquête.
- Cliquez sur le bouton Remove From History (Supprimer de l’historique) d’une requête spécifique dans la liste pour la supprimer de l’historique.
La requête spécifiée est supprimée de la liste. Votre historique récent est mis à jour pour afficher les trois dernières requêtes.
- Cliquez sur une requête dans la liste pour l’exécuter de nouveau.
Enregistrer une requête
Lorsque vous écrivez, révisez et exécutez des requêtes, un historique de vos requêtes est conservé. Toutefois, l’intégralité de votre historique de requête n’est pas enregistrée avec le projet. Vous pouvez enregistrer les requêtes individuelles que vous souhaitez conserver dans le cadre de votre enquête.
- Cliquez sur la flèche de la liste déroulante Query (Requête) et cliquez sur <New Query> (Nouvelle requête).
- Cliquez dans la zone de texte de requête et saisissez une nouvelle requête ou modifiez une requête existante.
- Cliquez sur Apply (Appliquer).
Les résultats de la requête apparaissent dans l’enquête.
- Cliquez sur Save (Enregistrer) en haut de la fenêtre de requête développée.
La boîte de dialogue Save query as (Enregistrer la requête sous) s’ouvre.
- Accédez au conteneur de projet Investigations (Enquêtes), à votre enquête, au dossier Collections, puis au dossier Queries (Requêtes). Saisissez un nom pour la requête dans la zone de texte Name (Nom) et cliquez sur Save (Enregistrer).
La requête est enregistrée dans le dossier Queries de votre enquête. Votre requête enregistrée est automatiquement sélectionnée dans la liste déroulante Query (Requête).
- Cliquez dans la zone de texte de requête et modifiez la requête existante.
- Cliquez sur Save (Enregistrer) en haut de la fenêtre de requête développée pour mettre à jour la requête enregistrée afin de refléter vos modifications.
- Cliquez dans la zone de texte de requête et modifiez la requête existante.
- Cliquez sur Save As (Enregistrer sous) en haut de la fenêtre de requête développée pour enregistrer vos modifications en tant que nouvelle requête.
- Accédez au conteneur de projet Investigations (Enquêtes), à votre enquête, au dossier Collections, puis au dossier Queries (Requêtes). Saisissez un nom pour la requête dans la zone de texte Name (Nom) et cliquez sur Save (Enregistrer).
- Cliquez sur l’onglet Project (Projet) du ruban, puis sur Save (Enregistrer) pour enregistrer votre enquête et les requêtes dans le projet.
- Exécutez une requête enregistrée.
- Cliquez sur une requête enregistrée dans la fenêtre Contents (Contenu) de l’enquête.
- Cliquez sur la liste déroulante Query (Requête) et cliquez sur une requête enregistrée.
La requête enregistrée apparaît dans la zone de texte de requête et s’exécute automatiquement. Les résultats de la requête apparaissent dans l’enquête.
Interroger un graphe de connaissances dans la fenêtre Search And Filter (Rechercher et filtrer)
La fenêtre Search and Filter (Rechercher et filtrer) peut être utilisée avec une vue d’enquête pour en interroger le contenu, avec une carte pour interroger le contenu d’une couche de graphe de connaissances ou avec un diagramme de liens pour interroger les entités et les relations qu’elle décrit.
- Ouvrez la fenêtre Search and Filter (Rechercher et filtrer) en procédant de l’une des manières suivantes :
À partir d’une enquête
Dans l’onglet Investigation (Enquête) du ruban, dans le groupe Search (Rechercher), cliquez sur Search And Filter (Rechercher et filtrer) .
À partir d’une carte
Cliquez sur une couche de graphe de connaissances dans la fenêtre Contents (Contenu) de la carte. Cliquez sur l’onglet contextuel Knowledge Graph Layer (Couche de graphe de connaissances). Dans le groupe Search (Rechercher), cliquez sur le bouton Search And Filter (Rechercher et filtrer) .
À partir d’un diagramme de liens
Dans l’onglet Link Chart (Diagramme de liens) du ruban, dans le groupe Search (Rechercher), cliquez sur Search And Filter (Rechercher et filtrer) .
La fenêtre Search and Filter (Rechercher et filtrer) apparaît.
- Cliquez sur la liste déroulante Source puis sur l’enquête, la couche de carte ou le diagramme de liens dont vous souhaitez interroger le graphe de connaissances.
- Cliquez sur l’onglet Query (Requête) .
Lorsque vous couplez une enquête, une couche de carte ou un diagramme de liens ouvert à la fenêtre Search and Filter (Rechercher et filtrer), toutes les requêtes sont évaluées par rapport à l’intégralité du graphe de connaissances associé à la vue couplée. Un message apparaît pour vous rappeler que la requête ne se limite pas au contenu disponible dans la vue couplée.
- Définissez une nouvelle requête dans la zone de texte Query (Requête).
Saisissez une requête openCypher.
Cliquez sur la flèche de la liste déroulante Query (Requête) et cliquez sur une requête enregistrée.
- Si vous le souhaitez, cochez Include Provenance (Inclure la provenance) pour inclure dans les résultats les enregistrements de provenance qui correspondent à la requête.
- Cliquez sur Apply (Appliquer).
Les résultats de la requête sont affichés dans la liste Results (Résultats).
Conseil :
Les graphes de connaissances peuvent représenter de nombreuses entités et relations. L’indicateur occupé en bas de la fenêtre Search and Filter (Rechercher et filtrer) indique que la génération de la liste de résultats est en cours. Une fois que ArcGIS AllSource a terminé, l’indicateur occupé s’arrête et le bouton Refresh Results (Actualiser les résultats) apparaît. Si le renvoi des résultats de votre requête prend trop de temps, vous pouvez arrêter de générer la liste de résultats en cliquant sur l’indicateur occupé.
Par défaut, la fenêtre Search and Filter (Rechercher et filtrer) peut être trop étroite pour explorer les résultats de la requête. Vous pouvez la détacher afin de l’élargir sans affecter la disposition des autres vues et fenêtres dans la fenêtre principale de ArcGIS AllSource.
Explorer les résultats de requête
Une requête openCypher peut renvoyer une variété de résultats. Lorsque la requête renvoie une liste d’entités ou de relations, celles-ci sont affichées dans la liste des résultats avec une entité ou relation par ligne. Les valeurs renvoyées par la requête apparaissent dans des colonnes étiquetées comme indiqué dans la requête elle-même.
Une requête openCypher peut renvoyer des résultats indiquant quelles entités ont une relation donnée avec une autre entité. Dans ce cas, la liste des résultats comporte une ligne pour chaque triple, un triple étant constitué de l’origine de l’entité, de la relation et de l’entité cible. Par exemple, une requête telle que MATCH (p:Person)-[r]->(e) RETURN p,r,e renvoie une liste de résultats où chaque ligne de résultat représente une personne, une relation entre cette personne et une autre entité et l’entité cible de la relation. Dans ce cas, la liste des résultats comporte une colonne pour la personne intitulée p, une colonne pour la relation intitulée r et une colonne pour l’entité cible intitulée e.
Si à la place la requête renvoie des propriétés spécifiques d’entité ou de relation, la liste des résultats affiche ces valeurs dans des colonnes nommées de manière appropriée selon la requête. Par exemple, une requête telle que MATCH (p:Person)-[ :HasVehicle]->(v) RETURN p,v,v.year renvoie le nom d’affichage de l’entité Person (Personne) dans la colonne p, le nom d’affichage de l’entité Vehicle (Véhicule) dans la colonne v et la valeur de la propriété year (année) de l’entité Vehicle (Véhicule) dans les colonnes v.year. Si une entité ne possède pas de valeur pour une propriété spécifique renvoyée par une requête, la valeur nulle indique qu’il n’y a aucune valeur à afficher.
L’exemple ci-dessous illustre une requête qui renvoie une entité Person (Personne), où la personne participe dans une relation HasVehicule (Possède un véhicule) avec le véhicule. La requête renvoie également la propriété acquisitionDate (Date d’acquisition) de la relation HasVehicle (Possède un véhicule) et la propriété make (marque) de l’entité Vehicle (Véhicule).
Les colonnes contenant une entité ou une relation affichent le nom d’affichage de l’élément graphique avec son icône. Dans la capture d’écran ci-dessus, l’entité Person (Personne) renvoyée apparaît dans la colonne p. La propriété acquisitionDate (Date d’acquisition) de la relation HasVehicle (Possède un véhicule) est affichée dans la colonne hv.acquisitionDate. La valeur de la propriété make (marque) de l’entité Vehicle (Véhicule) apparaît dans la colonne v.make.
Si vous interrogez un graphe de connaissances à partir d’une enquête, utilisez le volet des détails pour consulter les propriétés de l’entité ou de la relation sélectionnée. Dans le volet des détails, vous pouvez explorer les autres relations et les entités liées qui ne sont pas incluses dans les résultats de la requête.
Si vous interrogez un graphe de connaissance à partir de la fenêtre Search and Filter (Rechercher et filtrer), utilisez l’onglet Histogram (Histogramme) pour récapituler et filtrer les résultats. Le titre en haut de l’onglet devient Histogram - Query (Histogramme - Requête) pour indiquer que les diagrammes présentés correspondent au contenu renvoyé par la requête dans Query (Requête) et non au contenu de la vue couplée. De plus, dans la mesure où la requête est évaluée par rapport au graphe de connaissances de la vue, un message apparaît pour indiquer que les histogrammes peuvent inclure du contenu qui n’est pas disponible dans la vue couplée.
À partir d’une enquête ou de la fenêtre Search and Filter (Rechercher et filtrer), vous pouvez sélectionner les entités ou les relations qui vous intéressent, puis cliquer avec le bouton droit sur un élément graphique sélectionné. Utilisez les options disponibles pour ajouter les éléments graphiques sélectionnés à une carte ou un diagramme de liens nouveau ou existant, pour analyse. Vous pouvez également sélectionner les éléments correspondants dans une enquête, une carte ou un diagramme de liens existant.
Vous avez un commentaire à formuler concernant cette rubrique ?