The standard DynamicIndexReader allows for graph traversal and property match queries written in JSON. The JSON code is expected to be a match for a sub-graph and it's properties. It only supports tree structures, since JSON is a tree format. The root of the JSON is the geometry node, which means that queries for properties on nodes further away require traversals in the JSON. The following example demonstrates a query for an OSM geometry layer, with a test of the geometry type on the geometry node itself, followed by a two step traversal to the ways tag node, and then a query on the tags.
{ "properties": {"type": "geometry"}, "step": {"type": "GEOM", "direction": "INCOMING" "step": {"type": "TAGS", "direction": "OUTGOING" "properties": {"highway": "residential"} } } }
This will work with OSM datasets, traversing from the geometry node to the way node and then to the tags node to test if the way is a residential street.