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

com.github.tkurz.sparqlmm.function.general.relation.ContainsFunction Maven / Gradle / Ivy

Go to download

SPARQL-MM is a multimedia-extension for SPARQL 1.1 (www.w3.org/TR/sparql11-query/‎) implemented for Sesame (http://www.openrdf.org/).

The newest version!
package com.github.tkurz.sparqlmm.function.general.relation;

import com.github.tkurz.media.ontology.exception.NotComparableException;
import com.github.tkurz.media.ontology.function.SpatialFunction;
import com.github.tkurz.media.ontology.function.TemporalFunction;
import com.github.tkurz.media.ontology.type.SpatialEntity;
import com.github.tkurz.media.ontology.type.SpatialTemporalEntity;
import com.github.tkurz.media.ontology.type.TemporalEntity;
import com.github.tkurz.sparqlmm.Constants;
import com.github.tkurz.sparqlmm.doc.FunctionDoc;
import com.github.tkurz.sparqlmm.utils.FunctionHelper;
import org.openrdf.model.Value;
import org.openrdf.model.ValueFactory;
import org.openrdf.query.algebra.evaluation.ValueExprEvaluationException;
import org.openrdf.query.algebra.evaluation.function.Function;

/**
 * ...
 * 

* Author: Thomas Kurz ([email protected]) */ @FunctionDoc(title = "contains", properties = {SpatialTemporalEntity.class, SpatialTemporalEntity.class}, reference = FunctionDoc.Reference.combined, description = "returns if mm:temporalContains(p1,p2) and mm:spatialContains(p1,p2).") public class ContainsFunction implements Function { /** * return the URI */ public String getURI() { return Constants.NAMESPACE + "contains"; } @Override public Value evaluate(ValueFactory valueFactory, Value... values) throws ValueExprEvaluationException { try { //check preconditions if (values.length != 2 || !FunctionHelper.isComparable(values)) return FunctionHelper.BOOL_LITERAL_FALSE; //check if values are correct TemporalEntity[] temporalEntities = FunctionHelper.toTemporalEntities(values); SpatialEntity[] spatialEntities = FunctionHelper.toSpatialEntities(values); //evaluate if (TemporalFunction.contains(temporalEntities[0], temporalEntities[1]) && SpatialFunction.TopologicalFunction.contains(spatialEntities[0], spatialEntities[0])) { return FunctionHelper.BOOL_LITERAL_TRUE; } return FunctionHelper.BOOL_LITERAL_FALSE; } catch (IllegalArgumentException | NotComparableException e) { return FunctionHelper.BOOL_LITERAL_FALSE; } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy