Skip to main content

Interroger le contenu d’un graphe de connaissances

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. Les enregistrements de provenance peuvent être utilisés et éventuellement inclus dans les résultats de la requête. 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 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. L’espace de travail contient six zones principales, illustrées dans l’image ci-après et décrites dans le tableau ci-dessous. Les numéros dans l’image correspondent aux descriptions.

Diagramme des principales zones de la vue de requête.

Elément Description
Élément 1 Contenu de la requête Le volet Query Contents (Contenu de la requête) inclut l’éditeur Query (Requête) Vue Requête dans lequel vous rédigez les nouvelles requêtes et la collection Stored Queries (Requêtes stockées) collection de requêtes stockées conservée dans le projet lors de son enregistrement.
Élément 2 Zone de requête La zone de requête est une zone de texte multiligne qui vous permet de mettre en forme et d’exécuter la requête openCypher.
Élément 3 Résultats de la requête Par défaut, les résultats de la requête s’affichent dans une table sous Results (Résultats).
Élément 4 Sélection d’une requête Lorsque vous sélectionnez un enregistrement dans Query Results (Résultats de la requête), vous pouvez explorer les propriétés des enregistrements de graphe renvoyés.
Élément 5 Aperçu des résultats Vous pouvez prévisualiser les résultats et vos sélections dans un aperçu de diagramme de liens, de carte ou de diagramme, et ajouter ou supprimer tous les résultats de la sélection à l’aide de la barre d’outils des résultats.
Élément 6 Barre d’outils contextuelle La barre d’outils contextuelle fournit des outils spécifiques à la requête, par exemple pour définir les paramètres de requête et stocker la requête dans le projet pour l’utiliser ultérieurement.

Interroger le graphe de connaissances

Vous pouvez interroger les entités et relations du graphe de connaissances à l’aide de la vue Query (Requête) Vue Query (Requête). Si vous le souhaitez, vous pouvez inclure les enregistrements de provenance dans les résultats de requête.

  1. Cliquez sur Query (Requête) Vue Query (Requête) dans le volet Project Contents (Contenu du projet) 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 la requête openCypher.

  2. 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 la requête pour éviter d’obtenir des dizaines de milliers d’enregistrements, car cela pourrait ralentir le navigateur.

  3. Vous pouvez également cocher Include Provenance (Inclure la provenance) pour pouvoir utiliser ou renvoyer les enregistrements de provenance dans la requête.

    En savoir plus sur l’utilisation de la provenance dans les requêtes

  4. Cliquez sur Run (Exécuter).

    Les résultats de la requête sont affichés dans la zone Results (Résultats). Les entités, la relation et les enregistrements de provenance 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.

Par défaut, les résultats de la requête sont répertoriés dans une table

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.

Les entités liées renvoyées par la requête apparaissent dans la table des résultats.

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, renvoient 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 entités liées et les entités qui les connectent sont renvoyées.

Les exemples de requêtes ci-dessus peuvent être utilisés avec n’importe quel graphe de connaissances.

Les relations dans lesquelles une entité Person (Personne) est l’origine de la relation sont renvoyées.

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 relations dans lesquelles une entité de véhicule est la destination de la relation sont renvoyées.

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.

Les propriétés de l’entité de véhicule de destination sont incluses dans les résultats.

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.

Les propriétés de l’entité d’origine, de la relation et de l’entité de destination sont prises en compte pour obtenir un ensemble spécifique de résultats.

Au lieu de renvoyer une série d’entités et de relations individuelles, la 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.

Les chemins contiennent toutes les parties du modèle de correspondance.

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.

  1. Cliquez dans la zone de requête.

  2. 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é.

    Une requête peut englober plusieurs lignes lorsque la zone de texte de requête multiligne est utilisée.

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

    Résultats de la requête

  4. 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 projet. Lorsque vous enregistrez le projet, les requêtes stockées sont enregistrées dans le projet et sont répertoriées dans la section Stored Queries (Requêtes stockées) collection de requêtes stockées du volet Query Contents (Contenu de la requête).

  1. Cliquez sur Store Query (Stocker la requête) vue Requête dans la barre d’outils contextuelle de la requête.

    La fenêtre modale de la nouvelle requête stockée apparaît.

    Fenêtre modale Store Query (Stocker la requête)

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

  3. Cliquez sur Store (Stocker).

    La requête est stockée dans la section Stored Queries (Requêtes stockées) collection de requêtes stockées du volet Query Contents (Contenu de la requête).

  4. Cliquez sur la requête stockée collection de requêtes stockées pour exécuter la requête et 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.

    Table de résultats d’une requête stockée

  5. Cliquez sur Show Query (Afficher la requête) pour afficher le texte de la requête openCypher dans la zone de requête.

  6. Cliquez dans la zone de texte de requête et modifiez la requête existante.

  7. Cliquez sur Update Stored Query (Mettre à jour la requête stockée) vue Requête sur la barre d’outils contextuelle de la requête pour mettre à jour la requête stockée afin de refléter vos modifications.

  8. Cliquez sur le menu Options Options pour cette requête stockée dans Query Contents (Contenu de la requête).

  9. Cliquez sur Rename (Renommer) Renommer pour mettre à jour les zones de texte Title (Titre) et Description de la requête afin de refléter vos modifications.

  10. Cliquez sur Apply (Appliquer).

  11. Vous pouvez également cliquer sur Delete (Supprimer) Supprimer dans le menu Options Options de cette requête stockée afin de supprimer la requête stockée du projet.