Search in sources :

Example 31 with Node

use of catdata.fql.decl.Node in project fql by CategoricalData.

the class PSMGen method gather.

public static List<Pair<String, List<Pair<Object, Object>>>> gather(String pre, Signature sig, Map<String, Set<Map<Object, Object>>> state) {
    List<Pair<String, List<Pair<Object, Object>>>> ret = new LinkedList<>();
    for (Node n : sig.nodes) {
        Set<Map<Object, Object>> v = state.get(pre + "_" + n.string);
        if (v == null) {
            throw new RuntimeException("Missing: " + pre + "_" + n.string + " in " + state.keySet());
        }
        ret.add(new Pair<>(n.string, gather0(v)));
    }
    for (Edge e : sig.edges) {
        Set<Map<Object, Object>> v = state.get(pre + "_" + e.name);
        ret.add(new Pair<>(e.name, gather0(v)));
    }
    for (Attribute<Node> a : sig.attrs) {
        Set<Map<Object, Object>> v = state.get(pre + "_" + a.name);
        ret.add(new Pair<>(a.name, gather0(v)));
    }
    return ret;
}
Also used : Node(catdata.fql.decl.Node) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) Map(java.util.Map) Edge(catdata.fql.decl.Edge) LinkedList(java.util.LinkedList) Pair(catdata.Pair)

Example 32 with Node

use of catdata.fql.decl.Node in project fql by CategoricalData.

the class PSMGen method shred.

public static void shred(String pre, Transform I, Map<String, Set<Map<Object, Object>>> state) {
    for (Node n : I.src.thesig.nodes) {
        Set<Map<Object, Object>> m = new HashSet<>();
        for (Pair<Object, Object> k : I.data.get(n.string)) {
            Map<Object, Object> map = new HashMap<>();
            map.put("c0", k.first);
            map.put("c1", k.second);
            m.add(map);
        }
        state.put(pre + "_" + n.string, m);
    }
    for (Edge n : I.src.thesig.edges) {
        state.put(pre + "_" + n.name, new HashSet<>());
    }
    for (Attribute<Node> n : I.src.thesig.attrs) {
        state.put(pre + "_" + n.name, new HashSet<>());
    }
}
Also used : HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) Node(catdata.fql.decl.Node) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) Map(java.util.Map) Edge(catdata.fql.decl.Edge) HashSet(java.util.HashSet)

Example 33 with Node

use of catdata.fql.decl.Node in project fql by CategoricalData.

the class PSMNot method calcSub.

private Instance calcSub(Signature sig0, Triple<Instance, Map<Object, Path>, Map<Path, Object>> Hc, Instance A) throws FQLException {
    Map<String, Set<Pair<Object, Object>>> notA_data = new HashMap<>();
    for (Node d : sig.nodes) {
        Set<Pair<Object, Object>> dd = new HashSet<>();
        xxx: for (Object f : Hc.first.getNode(d)) {
            Path ff = Hc.second.get(f);
            // boolean b = true;
            for (Node d0 : sig.nodes) {
                for (Arr<Node, Path> g : sig.toCategory2().first.hom(d, d0)) {
                    Arr<Node, Path> fg = sig.toCategory2().first.compose(sig.toCategory2().second.of(ff), g);
                    Object xxx = Hc.third.get(fg.arr);
                    if (xxx == null) {
                        throw new RuntimeException();
                    }
                    if (A.getNode(d0).contains(xxx)) {
                        continue xxx;
                    }
                }
            }
            dd.add(new Pair<>(f, f));
        }
        notA_data.put(d.string, dd);
    }
    for (Edge h : sig.edges) {
        Set<Pair<Object, Object>> dd = new HashSet<>();
        for (Pair<Object, Object> oo : notA_data.get(h.source.string)) {
            Object f = oo.first;
            Path ff = Hc.second.get(f);
            Arr<Node, Path> fg = sig.toCategory2().first.compose(sig.toCategory2().second.of(ff), sig.toCategory2().second.of(new Path(sig, h)));
            Object xxx = Hc.third.get(fg.arr);
            dd.add(new Pair<>(f, xxx));
        }
        notA_data.put(h.name, dd);
    }
    Instance notA = new Instance(sig0, notA_data);
    return notA;
}
Also used : Path(catdata.fql.decl.Path) Arr(catdata.fql.cat.Arr) Set(java.util.Set) HashSet(java.util.HashSet) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) Instance(catdata.fql.decl.Instance) Node(catdata.fql.decl.Node) Edge(catdata.fql.decl.Edge) Pair(catdata.Pair) HashSet(java.util.HashSet)

Example 34 with Node

use of catdata.fql.decl.Node in project fql by CategoricalData.

the class PropPSM method exec.

@Override
public void exec(PSMInterp interp, Map<String, Set<Map<Object, Object>>> state) {
    try {
        IntRef ref = new IntRef(interp.guid);
        Signature sigX = new Signature(sig.nodes, sig.edges, new LinkedList<>(), sig.eqs);
        Map<Node, List<Pair<Arr<Node, Path>, Attribute<Node>>>> obs = sig.obs();
        Pair<FinCat<Node, Path>, Fn<Path, Arr<Node, Path>>> ooo = sig.toCategory2();
        Fn<Path, Arr<Node, Path>> fn = ooo.second;
        Pair<Pair<Map<Node, Triple<Instance, Map<Object, Path>, Map<Path, Object>>>, Map<Edge, Transform>>, Pair<Instance, Map<Node, Pair<Map<Object, Instance>, Map<Instance, Object>>>>> xxx = sigX.omega(ref);
        interp.prop1.put(pre, xxx.first);
        interp.prop2.put(pre, xxx.second);
        Instance old = xxx.second.first;
        Map<Node, List<LinkedHashMap<Pair<Arr<Node, Path>, Attribute<Node>>, Object>>> m = sig.obsbar();
        Map<String, Set<Pair<Object, Object>>> data = new HashMap<>();
        Map<Node, Map<Object, Pair<Object, LinkedHashMap<Pair<Arr<Node, Path>, Attribute<Node>>, Object>>>> m1 = new HashMap<>();
        Map<Node, Map<Pair<Object, LinkedHashMap<Pair<Arr<Node, Path>, Attribute<Node>>, Object>>, Object>> m2 = new HashMap<>();
        for (Node n : sig.nodes) {
            Map<Object, Pair<Object, LinkedHashMap<Pair<Arr<Node, Path>, Attribute<Node>>, Object>>> map1 = new HashMap<>();
            Map<Pair<Object, LinkedHashMap<Pair<Arr<Node, Path>, Attribute<Node>>, Object>>, Object> map2 = new HashMap<>();
            Set<Pair<Object, Object>> set = new HashSet<>();
            m1.put(n, map1);
            m2.put(n, map2);
            for (Pair<Object, Object> i1 : old.data.get(n.string)) {
                for (LinkedHashMap<Pair<Arr<Node, Path>, Attribute<Node>>, Object> i2 : m.get(n)) {
                    Object o = Integer.toString(++ref.i);
                    map1.put(o, new Pair<>(i1.first, i2));
                    map2.put(new Pair<>(i1.first, i2), o);
                    set.add(new Pair<>(o, o));
                }
            }
            data.put(n.string, set);
        }
        for (Attribute<Node> a : sig.attrs) {
            Set<Pair<Object, Object>> set = new HashSet<>();
            for (Pair<Object, Object> k : data.get(a.source.string)) {
                Pair<Object, LinkedHashMap<Pair<Arr<Node, Path>, Attribute<Node>>, Object>> kk = m1.get(a.source).get(k.first);
                // Object old_id = kk.first;
                LinkedHashMap<Pair<Arr<Node, Path>, Attribute<Node>>, Object> new_id = kk.second;
                set.add(new Pair<>(k.first, new_id.get(new Pair<>(new Arr<>(new Path(sig, a.source), a.source, a.source), a))));
            }
            data.put(a.name, set);
        }
        for (Edge a : sig.edges) {
            Set<Pair<Object, Object>> set = new HashSet<>();
            for (Pair<Object, Object> k : data.get(a.source.string)) {
                Pair<Object, LinkedHashMap<Pair<Arr<Node, Path>, Attribute<Node>>, Object>> kk = m1.get(a.source).get(k.first);
                Object old_id = kk.first;
                Object old_id0 = lookup(old.data.get(a.name), old_id);
                LinkedHashMap<Pair<Arr<Node, Path>, Attribute<Node>>, Object> new_id = kk.second;
                LinkedHashMap<Pair<Arr<Node, Path>, Attribute<Node>>, Object> new_id0 = truncate2(sig, new_id, fn.of(new Path(sig, a)), obs.get(a.target));
                Object o = m2.get(a.target).get(new Pair<>(old_id0, new_id0));
                set.add(new Pair<>(k.first, o));
            }
            data.put(a.name, set);
        }
        interp.prop3.put(pre, m1);
        interp.prop4.put(pre, m2);
        Instance ne = new Instance(sig, data);
        PSMGen.shred(pre, ne, state);
        interp.guid = ref.i;
    } catch (FQLException fe) {
        fe.printStackTrace();
        throw new RuntimeException(fe.getMessage());
    }
}
Also used : Arr(catdata.fql.cat.Arr) Set(java.util.Set) HashSet(java.util.HashSet) Attribute(catdata.fql.decl.Attribute) Instance(catdata.fql.decl.Instance) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) FinCat(catdata.fql.cat.FinCat) Node(catdata.fql.decl.Node) LinkedHashMap(java.util.LinkedHashMap) IntRef(catdata.IntRef) FQLException(catdata.fql.FQLException) List(java.util.List) LinkedList(java.util.LinkedList) Pair(catdata.Pair) HashSet(java.util.HashSet) Path(catdata.fql.decl.Path) Fn(catdata.fql.Fn) Triple(catdata.Triple) Signature(catdata.fql.decl.Signature) Transform(catdata.fql.decl.Transform) Edge(catdata.fql.decl.Edge) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) Map(java.util.Map)

Example 35 with Node

use of catdata.fql.decl.Node in project fql by CategoricalData.

the class Relationalizer method applySubst.

private static Collection<PSM> applySubst(Signature sig, Node N, String out) {
    List<PSM> ret = new LinkedList<>();
    Map<String, String> attrs = new HashMap<>();
    attrs.put("c0", PSM.VARCHAR());
    attrs.put("c1", PSM.VARCHAR());
    List<Pair<Pair<String, String>, Pair<String, String>>> where = new LinkedList<>();
    Map<String, String> from = new HashMap<>();
    LinkedHashMap<String, Pair<String, String>> select = new LinkedHashMap<>();
    from.put(N + "_squash", out + "_" + N + "_squash");
    select.put("c0", new Pair<>(N + "_squash", "c1"));
    select.put("c1", new Pair<>(N + "_squash", "c1"));
    Flower f = new Flower(select, from, where);
    ret.add(new CreateTable(out + "_" + N + "_relationalize_temp", attrs, false));
    ret.add(new InsertSQL(out + "_" + N + "_relationalize_temp", f, "c0", "c1"));
    ret.add(new DropTable(out + "_" + N.string));
    ret.add(new CreateTable(out + "_" + N.string, attrs, false));
    ret.add(new InsertSQL(out + "_" + N.string, new CopyFlower(out + "_" + N + "_relationalize_temp", "c0", "c1"), "c0", "c1"));
    ret.add(new DropTable(out + "_" + N + "_relationalize_temp"));
    for (Edge n : sig.edges) {
        if (!n.source.equals(N)) {
            continue;
        }
        where = new LinkedList<>();
        from = new HashMap<>();
        select = new LinkedHashMap<>();
        from.put(N + "_squash", out + "_" + N + "_squash");
        from.put(out + "_" + n.name, out + "_" + n.name);
        where.add(new Pair<>(new Pair<>(N + "_squash", "c0"), new Pair<>(out + "_" + n.name, "c0")));
        select.put("c0", new Pair<>(N + "_squash", "c1"));
        select.put("c1", new Pair<>(out + "_" + n.name, "c1"));
        f = new Flower(select, from, where);
        ret.add(new CreateTable(out + "_" + n.name + "_relationalize_temp", attrs, false));
        ret.add(new InsertSQL(out + "_" + n.name + "_relationalize_temp", f, "c0", "c1"));
        ret.add(new DropTable(out + "_" + n.name));
        ret.add(new CreateTable(out + "_" + n.name, attrs, false));
        ret.add(new InsertSQL(out + "_" + n.name, new CopyFlower(out + "_" + n.name + "_relationalize_temp", "c0", "c1"), "c0", "c1"));
        ret.add(new DropTable(out + "_" + n.name + "_relationalize_temp"));
    }
    for (Attribute<Node> n : sig.attrs) {
        if (!n.source.equals(N)) {
            continue;
        }
        where = new LinkedList<>();
        from = new HashMap<>();
        select = new LinkedHashMap<>();
        from.put(N + "_squash", out + "_" + N + "_squash");
        from.put(out + "_" + n.name, out + "_" + n.name);
        where.add(new Pair<>(new Pair<>(N + "_squash", "c0"), new Pair<>(out + "_" + n.name, "c0")));
        select.put("c0", new Pair<>(N + "_squash", "c1"));
        select.put("c1", new Pair<>(out + "_" + n.name, "c1"));
        f = new Flower(select, from, where);
        ret.add(new CreateTable(out + "_" + "relationalize_temp", attrs, false));
        ret.add(new InsertSQL(out + "_" + "relationalize_temp", f, "c0", "c1"));
        ret.add(new DropTable(out + "_" + n.name));
        ret.add(new CreateTable(out + "_" + n.name, attrs, false));
        ret.add(new InsertSQL(out + "_" + n.name, new CopyFlower(out + "_" + "relationalize_temp", "c0", "c1"), "c0", "c1"));
        ret.add(new DropTable(out + "_" + "relationalize_temp"));
    }
    for (Edge n : sig.edges) {
        if (!n.target.equals(N)) {
            continue;
        }
        where = new LinkedList<>();
        from = new HashMap<>();
        select = new LinkedHashMap<>();
        from.put(N + "_squash", out + "_" + N + "_squash");
        from.put(out + "_" + n.name, out + "_" + n.name);
        where.add(new Pair<>(new Pair<>(N + "_squash", "c0"), new Pair<>(out + "_" + n.name, "c1")));
        select.put("c0", new Pair<>(out + "_" + n.name, "c0"));
        select.put("c1", new Pair<>(N + "_squash", "c1"));
        f = new Flower(select, from, where);
        ret.add(new CreateTable(out + "_" + "relationalize_temp", attrs, false));
        ret.add(new InsertSQL(out + "_" + "relationalize_temp", f, "c0", "c1"));
        ret.add(new DropTable(out + "_" + n.name));
        ret.add(new CreateTable(out + "_" + n.name, attrs, false));
        ret.add(new InsertSQL(out + "_" + n.name, new CopyFlower(out + "_" + "relationalize_temp", "c0", "c1"), "c0", "c1"));
        ret.add(new DropTable(out + "_" + "relationalize_temp"));
    }
    return ret;
}
Also used : HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) Node(catdata.fql.decl.Node) LinkedList(java.util.LinkedList) LinkedHashMap(java.util.LinkedHashMap) Edge(catdata.fql.decl.Edge) Pair(catdata.Pair)

Aggregations

Node (catdata.fql.decl.Node)51 Pair (catdata.Pair)38 HashMap (java.util.HashMap)36 Edge (catdata.fql.decl.Edge)33 LinkedList (java.util.LinkedList)26 LinkedHashMap (java.util.LinkedHashMap)25 Instance (catdata.fql.decl.Instance)22 Path (catdata.fql.decl.Path)21 Map (java.util.Map)21 FQLException (catdata.fql.FQLException)20 Attribute (catdata.fql.decl.Attribute)19 HashSet (java.util.HashSet)19 Arr (catdata.fql.cat.Arr)14 Signature (catdata.fql.decl.Signature)13 Set (java.util.Set)13 Transform (catdata.fql.decl.Transform)11 List (java.util.List)10 Triple (catdata.Triple)5 Fn (catdata.fql.Fn)4 FinCat (catdata.fql.cat.FinCat)3