All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.aksw.sparqlify.sparqlview.ViewInstanceOld Maven / Gradle / Ivy

There is a newer version: 3.17.0-1
Show newest version
package org.aksw.sparqlify.sparqlview;

import java.util.Map.Entry;

import org.aksw.jena_sparql_api.views.TwoWayBinding;
import org.apache.jena.graph.Node;
import org.apache.jena.sparql.core.Quad;
import org.apache.jena.sparql.core.QuadPattern;
import org.apache.jena.sparql.core.Var;

import com.google.common.collect.BiMap;
import com.google.common.collect.HashMultimap;
import com.google.common.collect.SetMultimap;


public class ViewInstanceOld {
    protected Quad queryQuad; // The quad in the query this view was originally instanced for
    protected Quad viewQuad;  // The quad in the parent view that originally matched

    protected QuadPattern queryQuads = new QuadPattern(); // The quad pattern that the view now answeres
    protected QuadPattern viewQuads  = new QuadPattern(); // The quad pattern that the view now answeres

    protected int instanceId; // id of the view instance (instance for a quad)
    protected int subId; // sub-id of the instance (in the process the "same" quad) TODO Not sure what i mean here

    protected BiMap renamer; // The substitution that was used

    protected TwoWayBinding binding; // The binding from the variables of the view (actually one of the quads)
                                   // to the quad of the query

    //private ConstraintContainer constraints;

    /*
    public ViewInstance copy() {
        return new ViewInstance(queryQuad, viewQuad, instanceId, subId, parent, binding.copySubstitute(null));
    }
    */

    public ViewInstanceOld(Quad queryQuad, Quad viewQuad, int instanceId, int subId, TwoWayBinding binding)
    {
        super();
        this.queryQuad = queryQuad;
        this.viewQuad = viewQuad;

        queryQuads.add(queryQuad);
        viewQuads.add(viewQuad);

        this.instanceId = instanceId;
        this.subId = subId;
        //this.parent = parent;

        //this.renamer = RdfViewSystemOld.createVariableMappingInstance(parent, instanceId);
    }



    public boolean isViewVariable(Var var) {
        return var.getName().startsWith("view");
    }


    /**
     * Returns a map from query level to the parent, so the instance level
     * is omitted.
     *
     *
     * @return
     */
    public SetMultimap getQueryToParentBinding()
    {
        SetMultimap result = HashMultimap.create();
        for(Entry entry : binding.getEquiMap().getEquivalences().entries()) {
            Var back = (Var)renamer.inverse().get(entry.getValue());
            if(back == null) {
                continue;
            }

            result.put(entry.getKey(), back);
        }

        return result;
    }

    /**
     * How the query variables map to the parent view
     * Given a query with var a, and a virtual graph with ?s:
     *
     * e.g. {?view1_s=[?a]}
     *
     *
     * @return
     */
    public SetMultimap getParentToQueryBinding()
    {
        SetMultimap result = HashMultimap.create();
        for(Entry entry : binding.getEquiMap().getEquivalences().entries()) {
            Var back = (Var)renamer.inverse().get(entry.getValue());
            if(back == null) {
                continue;
            }

            result.put(back, entry.getKey());
        }

        return result;
    }


    public QuadPattern getQueryQuads()
    {
        return queryQuads;
    }

    public QuadPattern getViewQuads()
    {
        return viewQuads;
    }

    public Quad getQueryQuad()
    {
        return queryQuad;
    }
    public Quad getViewQuad()
    {
        return queryQuad;
    }
    public int getInstanceId()
    {
        return instanceId;
    }

    /*
    public T getInstance()
    {
        return instance;
    }
    public T getParent()
    {
        return parent;
    }*/


    public BiMap getRenamer()
    {
        return renamer;
    }
    public TwoWayBinding getBinding()
    {
        return binding;
    }

}






© 2015 - 2025 Weber Informatics LLC | Privacy Policy