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.
- À partir d’un graphe de connaissances représentant les tortues et leurs habitats, identifiez les habitats où le niveau de risque a été établi à l’aide des informations d’une évaluation spécifique de l’impact environnemental.
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.
La vue de requête est une vue par défaut dans tous les projets Knowledge Studio. Elle vous permet d’interroger le contenu du graphe de connaissances du projet. Le contenu de la requête (numéro 1 sur l’image ci-dessous) indique l’éditeur Query (Requête) dans lequel vous rédigez les nouvelles requêtes et la collection Stored Queries (Requêtes stockées) conservée dans le projet lors de son enregistrement. La zone de requête (numéro 2 sur l’image ci-dessous) est une zone de texte multiligne qui vous permet de mettre en forme et d’exécuter votre requête openCypher. Par défaut, les résultats de la requête (numéro 3 sur l’image ci-dessous) sont affichés dans une table, ce qui vous permet d’explorer les propriétés des enregistrements de graphe renvoyés (numéro 4 sur l’image ci-dessous) et de sélectionner des enregistrements dans les résultats. Vous pouvez prévisualiser les résultats et vos sélections sur les aperçus de la carte ou du diagramme de liens, et ajouter ou supprimer tous les résultats de votre sélection en utilisant la barre d’outils des résultats (numéro 5 sur l’image ci-dessous). La barre d’outils contextuelle (numéro 6 sur l’image ci-dessous) regroupe des outils spécifiques à la requête, par exemple pour stocker votre requête dans votre projet pour l’utiliser ultérieurement.
Interroger le graphe de connaissances de l’enquête
Vous pouvez interroger les entités et relations d’un graphe de connaissances dans une enquête à l’aide de la vue de requête .
- Cliquez sur Query (Requête) dans la fenêtre Investigation Contents (Contenu d’enquête) pour ouvrir la vue de requête.
La vue de requête s’ouvre avec la zone de requête ouverte et aucun résultat affiché. La zone de requête est une zone de texte multiligne qui vous permet de mettre en forme votre requête openCypher.
- Saisissez une requête dans la zone de requête. 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. La requête fonctionne sur n’importe quel graphe de connaissances.
Conseil :
Si vous ne savez pas combien de résultats une requête va renvoyer, ajoutez LIMIT 1000 à la fin de votre requête pour éviter d’obtenir des dizaines de milliers d’enregistrements, car cela pourrait ralentir votre navigateur.
- Cliquez sur Run (Exécuter).
Les résultats de la requête sont affichés dans la zone Results (Résultats). Les enregistrements d’entités et de relations renvoyés par la requête sont identifiés par les icônes appropriées.
É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.
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.
Au lieu de renvoyer une série d’entités et de relations individuelles, votre requête peut retourner le chemin complet que représente un modèle. Pour ce faire, affectez le modèle défini dans l’instruction MATCH à une variable et renvoyez cette variable. Par exemple, la requête MATCH path = (:Person)-[:HasVehicle]->(:Vehicle) RETURN path renvoie une liste de chemins pour toutes les associations d’entités et de relations qui correspondent au modèle spécifié. Chaque chemin contient des parties du modèle correspondant : l’entité Person (Personne), la relation HasVehicle (Possède un véhicule) et l’entité Vehicle (Véhicule). Il n’est pas nécessaire d’affecter des variables à des parties individuelles de ce modèle, car elles ne sont pas renvoyées par la 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 un graphe de connaissances en évaluant des types d’élément de graphe spécifiques et des valeurs de propriété spécifiques.
- Cliquez dans la zone de requête.
- 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 Run (Exécuter) pour obtenir de nouveaux résultats.
Les résultats de la requête sont affichés dans la section Results (Résultats). Les entités et les relations renvoyées par la requête sont identifiées par les icônes appropriées.
- Vous pouvez éventuellement cliquer sur Clear (Effacer) pour supprimer le texte de la requête actuelle de la zone de requête.
Stocker une requête
Vous pouvez stocker les requêtes individuelles que vous souhaitez conserver dans le cadre de votre enquête. Lorsque vous enregistrez votre projet, vos requêtes stockées sont enregistrées dedans et répertoriées dans la section Stored Queries (Requêtes stockées) de la fenêtre Query Contents (Contenu de la requête).
- Cliquez sur Store as New Query (Stocker en tant que nouvelle requête) dans la barre d’outils contextuel de la requête.
La fenêtre modale de la nouvelle requête stockée apparaît.
- Si vous le souhaitez :
- Saisissez le nom de la requête dans la zone de saisie Title (Titre).
- Saisissez la description de la requête dans la zone de texte Description. La description permet de fournir du contexte pour les résultats de la requête sans avoir à lire la requête openCypher.
- Cliquez sur Store (Stocker).
La requête est stockée dans la section Stored Queries (Requêtes stockées) de la fenêtre Query Contents (Contenu de la requête).
- Cliquez sur la requête stockée pour exécuter la requête et en afficher les résultats.
La requête stockée s’exécute dès que vous la sélectionnez. Le titre et la description de la requête apparaissent au-dessus des résultats. La zone de requête est masquée.
- Cliquez sur Show Query Box (Afficher la zone de requête) pour afficher le texte de la requête openCypher dans la zone de requête.
- Cliquez dans la zone de texte de requête et modifiez la requête existante.
- Cliquez sur Update Stored Query (Mettre à jour la requête stockée) dans la barre d’outils contextuelle de la requête pour mettre à jour la requête stockée afin de tenir compte de vos modifications.
- Cliquez sur le menu Options pour cette requête stockée dans Query Contents (Contenu de la requête).
- Cliquez sur Rename Item and Description (Renommer l’élément et modifier la description) pour mettre à jour les zones de texte Title (Titre) et Description de votre requête afin de tenir compte de vos modifications.
- Cliquez sur Apply (Appliquer).
- Vous pouvez également cliquer sur Delete (Supprimer) dans le menu Options de cette requête stockée afin de supprimer la requête stockée du projet.
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 dans l’ordre dans lequel elles sont répertoriées dans l’instruction return de la requête.
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 table 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 la table des résultats représente une personne, une relation entre cette personne et une autre entité et l’entité cible de la relation. Dans ce cas, la table des résultats comporte une colonne pour la personne intitulée Value 0 (Valeur 0), une colonne pour la relation intitulée Value 1 (Valeur 1) et un titre pour l’entité cible intitulé Value 2 (Valeur 2).
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 chaque colonne. 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 Value 0 (Valeur 0), le nom d’affichage de l’entité Vehicle (Véhicule) dans la colonne Value 1 (Valeur 1) et la valeur de la propriété year (année) de l’entité Vehicle (Véhicule) dans la colonne Value 2 (Valeur 2). Si une entité ne possède pas de valeur pour une propriété spécifique renvoyée par une requête, la valeur (NULL) 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 Value 0 (Valeur 0). La propriété acquisitionDate (Date d’acquisition) de la relation HasVehicle (Possède un véhicule) est affichée dans la colonne Value 1 (Valeur 1). La valeur de la propriété make (marque) de l’entité Vehicle (Véhicule) apparaît dans la colonne Value 2 (Valeur 2).
Un troisième type de requête courant renvoie un chemin entre une entité et une autre. Les chemins contiennent toutes les entités et les relations entre les entités d’origine et de destination spécifiées. Par exemple, une requête telle que MATCH path=(p:Person)-[r]->(e) RETURN path renvoie tous les chemins vers d’autres entités connectées à une entité Person (Personne) par une relation. La table des résultats de la requête affiche le chemin dans la colonne Value 0 (Valeur 0).
Les chemins peuvent inclure n’importe quel nombre d’entités et de relations. Par exemple, une requête telle que MATCH path=(c:Company)-[r*2]->(v:Vehicle) RETURN path renvoie tous les chemins entre les entités Company (Société) et les entités Vehicle (Véhicule) qui sont séparées par exactement deux relations. Chaque chemin contient l’entité Company (Société) d’origine, toutes les entités et relations intermédiaires, et l’entité Vehicle (Véhicule) de destination. La table des résultats de la requête affiche le chemin dans la colonne Value 0 (Valeur 0). Par défaut, elle affiche uniquement l’entité d’origine et l’entité de destination du chemin et le nombre total d’enregistrements du chemin. Cliquez sur les Développer pour afficher l’intégralité du résultat du chemin.
Les chemins peuvent être renvoyés comme un élément d’un résultat de requête. Par exemple, la même requête peut renvoyer le chemin, le nom de la société d’origine et l’année du véhicule de destination. MATCH path=(c:Company)-[r*2]-(v:Vehicle) RETURN path, c.name, v.year. La table des résultats de la requête affiche le chemin réduit dans la colonne Value 0 (Valeur 0), la propriété name (nom) de l’entité Company (Société) dans la colonne Value 1 (Valeur 1) et la propriété year (année) de l’entité Vehicle (Véhicule) dans la colonne Value 2 (Valeur 2).
Par défaut, tous les résultats de la requête apparaissent dans la vue tabulaire. Dans cette vue, vous pouvez sélectionner les résultats de requête et afficher les propriétés d’une entité ou d’une relation renvoyée par la requête.
- Cliquez sur une entité ou une relation dans la table des résultats pour en afficher les propriétés.
- Vous pouvez également utiliser Add Selection To (Ajouter la sélection à) pour ajouter cet enregistrement à un autre élément de contenu.
- Utilisez le bouton Add records to selection (Ajouter des enregistrements à la sélection) dans la colonne Selection (Sélection) pour ajouter toutes les entités et relations de cette ligne à votre sélection.
Les entités et relations de cette ligne sont mises en évidence. Toutes les instances de ces entités et relations qui apparaissent dans d’autres lignes de résultat sont également mises en évidence. Le nombre total d’enregistrements sélectionnés apparaît dans la partie inférieure de la table.
- Si vous le souhaitez :
- Appuyez sur Ctrl tout en cliquant sur une entité ou une relation pour ajouter uniquement cet enregistrement à partir de votre sélection.
- Cliquez sur Select All (Tout sélectionner) dans le menu des résultats pour sélectionner tous les enregistrements renvoyés par la requête.
- Utilisez le bouton Remove records from selection (Supprimer les enregistrements de la sélection) dans la colonne Selection (Sélection) pour supprimer toutes les entités et les relations de cette ligne de votre sélection.
- Si vous le souhaitez :
- Appuyez sur Ctrl tout en cliquant sur une entité ou une relation pour supprimer uniquement cet enregistrement de votre sélection.
- Cliquez sur Clear Selection (Effacer la sélection) dans le menu des résultats pour sélectionner tous les enregistrements renvoyés par la requête.
- Utilisez Add Selection To (Ajouter la sélection à) dans la barre d’outils contextuelle de la requête pour ajouter les enregistrements que vous avez sélectionnés à un diagramme de liens, une carte ou une fiche de données.
Prévisualiser les résultats sur une carte ou un diagramme de liens
Vous pouvez également utiliser la prévisualisation des résultats de la requête sur la carte ou le diagramme de liens pour prévisualiser les résultats de votre requête dans une autre visualisation. Toutes les sélections réalisées dans la vue tabulaire sont reflétées dans la prévisualisation sur la carte et le diagramme de liens.
- Cliquez sur la vue Map (Carte) dans le menu des résultats pour prévisualiser les entités spatiales renvoyées par votre requête.
- Cliquez sur la vue Link Chart (Diagramme de liens) dans le menu des résultats pour prévisualiser les résultats de votre requête dans un diagramme de liens.
- Cliquez sur la vue tabulaire dans le menu des résultats pour revenir à la table des résultats par défaut.
Vous avez un commentaire à formuler concernant cette rubrique ?