from clause is optional,
where clause is optional,
(hover over terms for details):
select
Projection
Projection Tree:
*
├── nodes
│ ├── nodes.id
│ ├── nodes.signature
│ ├── nodes.type
│ ├── nodes.lastmodified
│ └── nodes.attributes
│ └── nodes.attributes.ATTRIBUTENAME
└── edges
├── edges.id
├── edges.type
├── edges.lastmodified
├── edges.attributes
│ └── edges.attributes.ATTRIBUTENAME
└── edges.links
├── edges.links.attributes
│ └── edges.links.attributes.ATTRIBUTENAME
├── edges.links.role
├── edges.links.dir
└── edges.links.nid
from
Path
Path Grammar:
pathstart = path1 | path2
path1 = pathstep1 | pathseq1 | pathalt
path2 = pathstep2 | pathseq2 | pathalt
pathseq1 = pathstep1 | pathstep1 pathseq2
pathseq2 = pathstep2 | pathstep2 pathseq1
pathalt = pathstart ( "|" pathstart )+
pathstep1 = nodes
pathstep2 = "<" edges ">"
nodes = comp ( "," comp )* | "{" node_id ( "," node_id )* "}"
edges = edge ( "," edge )* | "{" edge_id ( "," edge_id )* "}"
edge = comp | rrsrc ":" comp ":" rrtar
rrsrc = rsrc | "(" rsrc ( "|" rsrc )+ ")"
rrtar = rtar | "(" rtar ( "|" rtar )+ ")"
rsrc = "*" | "+" | "-" | "-+" | "=" | "=+" | "-=" | "-=+" | comp
rtar = "*" | "+" | "-" | "+-" | "=" | "+=" | "=-" | "+=-" | comp
comp = ( "-"? digit+ | letter (letter | digit)* )
node_id = digit*
edge_id = digit*
digit = [0-9]
letter = [A-Za-z_]
where
Node Selection
Node Selection Rules:
node.id (<,<=,=,!=,=>,>) integer
node.signature (=,!=) "String"
node.type (=,!=) "String"
node.type (<,<=,=,!=,=>,>) integer
node.lastmodified (<,<=,=,!=,=>,>) (DD.MM.YYYY|DD.MM.YYYY;HH:MM)
node.attribute.ATTRIBUTENAME (<,<=,=,!=,=>,>) (integer|double)
node.attribute.ATTRIBUTENAME (=, !=) "String"
node.attribute.ATTRIBUTENAME (=, !=) true|false for boolean
more general selection conditions with or, and as well as bracketing with ( and )
in "String" use \" to escape "
|
Edge Selection
Edge Selection Rules:
Selection Predicate:
edge.id (<,<=,=,!=,=>,>) integer
edge.type (=,!=) "String"
edge.type (<,<=,=,!=,=>,>) integer
edge.lastmodified (<,<=,=,!=,=>,>) (DD.MM.YYYY|DD.MM.YYYY;HH:MM)
edge.attribute.ATTRIBUTENAME (=, !=) "String"
edge.link.role (=,!=) "String"
edge.link.nid (<,<=,=,!=,=>,>) integer
edge.link.attribute.ATTRIBUTENAME (=, !=) "String"
more general selection conditions with or, and as well as bracketing with ( and )
in "String" use \" to escape "
combine Querys with
union|intersect|except as well as bracketing with ( and )
Projection from each Query must contain the same elements!