pub fn build_from<'a>(iterator: impl IntoIterator<Item=&'a str>) -> Self {
        Query { productions: iterator.into_iter().map(|text| Production::from(text)).collect() }
    }
Creates a new query from a sequence of productions.

Each production is a `String` of the form

Target Rel1 Rel2 ..

Where each Rel may begin with a '~' character, indicating the reverse direction.
Target must not begin with a '~'; rewrite the rule in the other order, silly.
differential-dataflow/examples/graspan.rs