Pattern Playground
Write a pattern in the left editor and a graph in the right editor. The engine evaluates in real-time as you type — matches appear below, or gap analysis explains why nothing matched.
Loading playground...
DSL Quick Reference
Pattern syntax
pattern name {
stage eventVar {
eventVar.label = "value" // literal match (stage anchor)
eventVar.label -> ?variable // bind to variable
?variable.prop = "value" // follow bound variable (requires ?)
alice.label = "value" // literal node name (no ?)
eventVar.label < 0.5 // value constraint
! eventVar.label = "forbidden" // negated clause (literals only)
}
unless between e1 e2 { ... } // negation window
unless after e1 { ... } // open-ended negation
unless { ... } // global negation
temporal e1 before e2 // explicit Allen constraint
temporal e1 before e2 gap 3..10 // with metric bound
}
Graph syntax
graph {
@timestamp node.label = "value" // string edge
@timestamp node.label -> otherNode // node reference
@timestamp node.label = 42.5 // numeric edge
@start..end node.label = "value" // bounded interval
now = 10 // set current time
}
See the DSL Reference for the full grammar.