operátor make-graph
Operátor make-graph
sestaví strukturu grafu z tabulkových vstupů hran a uzlů.
Syntaxe
Hrany |
make-graph
SourceNodeId TargetNodeId -->
[ with
Nodes1 on
NodeId1 [ ,
Nodes2 on
NodeId2 ]]
Parametry
Název | Type | Požadováno | Popis |
---|---|---|---|
Hrany | string |
✔️ | Tabulkový zdroj obsahující okraje grafu, každý řádek představuje okraj grafu. |
SourceNodeId | string |
✔️ | Sloupec v hranách s ID zdrojových uzlů hran. |
TargetNodeId | string |
✔️ | Sloupec v hranách s ID cílových uzlů hrany. |
Uzly | string |
Tabulkové výrazy obsahující vlastnosti uzlů v grafu. | |
NodesId | string |
Sloupce s ID uzlů v Uzlech. |
Návraty
Operátor make-graph
vrátí výraz grafu a musí být následovaný operátorem grafu. Každý řádek ve výrazu zdrojových hran se stane hranou s grafem s vlastnostmi, které jsou hodnotami sloupců řádku. Každý řádek v tabulkovém výrazu uzlů se stane uzlem v grafu s vlastnostmi, které jsou hodnotami sloupců řádku. Uzly, které se zobrazují v tabulce Hrany , ale nemají odpovídající řádek v tabulkách uzlů, se vytvoří jako uzly s odpovídajícími ID a prázdnými vlastnostmi uzlu.
Poznámka:
Každý uzel má jedinečný identifikátor. Pokud se stejné ID uzlu zobrazí v tabulkách Nodes1 i Nodes2 , vytvoří se jeden uzel sloučením jejich vlastností. Pokud existují konfliktní hodnoty vlastností pro stejný uzel, jedna z hodnot je libovolně zvolena.
Příklad
Následující příklad vytvoří graf z hran a tabulek uzlů. Uzly představují lidi a systémy a hrany jsou různé vztahy mezi uzly. Operátor make-graph
sestaví graf. Pak existuje volání graph-match
se vzorem grafu, který hledá cesty útoku k systémovému uzlu "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
Výstup
Útočník | Udělal kompromis | Systémový |
---|---|---|
Mallory | Robert | Trent |
Související obsah
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro