Opérateur make-graph
L’opérateur make-graph
génère une structure de graphe à partir d’entrées tabulaires de bords et de nœuds.
Syntaxe
Edges |
make-graph
SourceNodeId TargetNodeId -->
[ with
Node1 on
NodeId1 [,
Node2 on
NodeId2 ]]
Paramètres
Nom | Type | Requise | Description |
---|---|---|---|
Bords | string |
✔️ | Source tabulaire contenant les bords du graphe, chaque ligne représente un bord dans le graphique. |
SourceNodeId | string |
✔️ | Colonne dans Edges avec les ID de nœud source des bords. |
TargetNodeId | string |
✔️ | Colonne dans Edges avec les ID de nœud cible des bords. |
Nœuds | string |
Expressions tabulaires contenant les propriétés des nœuds dans le graphique. | |
NodeId | string |
Colonnes avec les ID de nœud dans les nœuds. |
Retours
L’opérateur make-graph
retourne une expression de graphique et doit être suivi d’un opérateur de graphe. Chaque ligne de l’expression Edges source devient un bord avec le graphique avec des propriétés qui sont les valeurs de colonne de la ligne. Chaque ligne dans l’expression tabulaire de nœuds devient un nœud dans le graphique avec des propriétés qui sont les valeurs de colonne de la ligne. Les nœuds qui apparaissent dans la table Edges , mais qui n’ont pas de ligne correspondante dans les tables de nœuds sont créés en tant que nœuds avec l’ID de nœud correspondant et les propriétés vides.
Remarque
Chaque nœud a un identificateur unique. Si le même ID de nœud apparaît dans les tables Node1 et Node2 , un nœud unique est créé en fusionnant leurs propriétés. S’il existe des valeurs de propriété conflictuelles pour le même nœud, l’une des valeurs est arbitrairement choisie.
Exemple
L’exemple suivant génère un graphique à partir de tableaux de bords et de nœuds. Les nœuds représentent des personnes et des systèmes, et les arêtes sont des relations différentes entre les nœuds. L’opérateur make-graph
génère le graphique. Ensuite, il existe un appel à graph-match
un modèle de graphique qui recherche les chemins d’attaque vers le nœud système « Trent ».
let nodes = datatable(name:string, type:string, age:int)
[
"Alice", "Person", 23,
"Bob", "Person", 31,
"Eve", "Person", 17,
"Mallory", "Person", 29,
"Trent", "System", 99
];
let edges = datatable(source:string, destination:string, edge_type:string)
[
"Alice", "Bob", "communicatesWith",
"Alice", "Trent", "trusts",
"Bob", "Trent", "hasPermission",
"Eve", "Alice", "attacks",
"Mallory", "Alice", "attacks",
"Mallory", "Bob", "attacks"
];
edges
| make-graph source --> destination with nodes on name
| graph-match (mallory)-[attacks]->(compromised)-[hasPermission]->(trent)
where mallory.name == "Mallory" and trent.name == "Trent" and attacks.edge_type == "attacks" and hasPermission.edge_type == "hasPermission"
project Attacker = mallory.name, Compromised = compromised.name, System = trent.name
Sortie
Attaquant | Compromis | System |
---|---|---|
Mallory | Bob | Trent |
Contenu connexe
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour