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

org.aksw.simba.lsq.spinx.model.LsqTriplePattern Maven / Gradle / Ivy

package org.aksw.simba.lsq.spinx.model;

import java.nio.charset.StandardCharsets;
import java.util.Objects;
import java.util.Set;

import org.aksw.jenax.annotation.reprogen.HashId;
import org.aksw.jenax.annotation.reprogen.Iri;
import org.aksw.jenax.annotation.reprogen.ResourceView;
import org.aksw.jenax.reprogen.hashid.HashIdCxt;
import org.aksw.simba.lsq.model.util.SpinCoreUtils;
import org.aksw.simba.lsq.vocab.LSQ;
import org.apache.jena.enhanced.EnhGraph;
import org.apache.jena.graph.Node;
import org.apache.jena.graph.Triple;
import org.spinrdf.model.impl.TriplePatternImpl;

import com.google.common.hash.HashCode;

@ResourceView
public abstract class LsqTriplePattern
    extends TriplePatternImpl
    implements LsqElement
{
    public LsqTriplePattern(Node node, EnhGraph graph) {
        super(node, graph);
    }

    public Triple toJenaTriple() {
        Triple result = SpinCoreUtils.toJenaTriple(this);
        return result;
    }

    @HashId
    public HashCode getHashId(HashIdCxt cxt)  {
        Triple t = SpinCoreUtils.toJenaTriple(this);
        HashCode result = cxt.getHashFunction().hashString(Objects.toString(t), StandardCharsets.UTF_8);
        // System.out.println("LsqTriplePattern: " + t + " -> " + result);
        return result;
    }

    @Iri(LSQ.Terms.hasExec)
    public abstract Set getTpExecs();

//    public TpExec findTpExec(Resource expRun) {
//        return null;
//    }
//    default JoinVertexExec findTpExec(Resource expRun) {
//        Resource expRun = getBenchmarkRun();
//        Objects.requireNonNull(expRun);
//
//        Set cands = getBgpNodeExecs();
//        JoinVertexExec result = null;
//        for(JoinVertexExec cand : cands) {
//            if(Objects.equals(cand.getBgpNode(), bgp) && Objects.equals(cand.getQueryExec().getBenchmarkRun(), expRun)) {
//                result = cand;
//                break;
//            }
//        }
//
//        return result;
//    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy