package org.neo4j.rdf.sparql;
import name.levering.ryan.sparql.common.QueryException;
import name.levering.ryan.sparql.common.impl.SPARQLValueFactory;
import name.levering.ryan.sparql.logic.BaseLogic;
import name.levering.ryan.sparql.logic.DefaultEffectiveBooleanLogic;
import name.levering.ryan.sparql.logic.DefaultValueConversionLogic;
import name.levering.ryan.sparql.logic.function.ExternalFunctionFactory;
import name.levering.ryan.sparql.logic.naive.DefaultFilterConstraintLogic;
import name.levering.ryan.sparql.model.data.AskQueryData;
import name.levering.ryan.sparql.model.data.CallExpressionData;
import name.levering.ryan.sparql.model.data.ConstructQueryData;
import name.levering.ryan.sparql.model.data.DescribeQueryData;
import name.levering.ryan.sparql.model.data.FilterConstraintData;
import name.levering.ryan.sparql.model.data.GraphConstraintData;
import name.levering.ryan.sparql.model.data.GroupConstraintData;
import name.levering.ryan.sparql.model.data.OptionalConstraintData;
import name.levering.ryan.sparql.model.data.OrderExpressionData;
import name.levering.ryan.sparql.model.data.SelectQueryData;
import name.levering.ryan.sparql.model.data.TripleConstraintData;
import name.levering.ryan.sparql.model.data.UnionConstraintData;
import name.levering.ryan.sparql.model.logic.AskQueryLogic;
import name.levering.ryan.sparql.model.logic.ConstraintLogic;
import name.levering.ryan.sparql.model.logic.ConstructQueryLogic;
import name.levering.ryan.sparql.model.logic.DescribeQueryLogic;
import name.levering.ryan.sparql.model.logic.ExpressionLogic;
import name.levering.ryan.sparql.model.logic.OrderExpressionLogic;
import name.levering.ryan.sparql.model.logic.SelectQueryLogic;
import name.levering.ryan.sparql.model.logic.ValueConversionLogic;
import org.neo4j.rdf.store.representation.RepresentationStrategy;
import org.openrdf.model.URI;
public class Neo4jLogic extends BaseLogic
{
private RepresentationStrategy representationStrategy;
private MetaModelProxy metaModel;
public Neo4jLogic( RepresentationStrategy representationStrategy,
MetaModelProxy metaModel )
{
this.representationStrategy = representationStrategy;
this.metaModel = metaModel;
}
public AskQueryLogic getAskQueryLogic( AskQueryData data )
{
throw new QueryException( "Operation not supported." );
}
public ConstructQueryLogic getConstructQueryLogic( ConstructQueryData data,
SPARQLValueFactory valueFactory )
{
return new Neo4jConstructQueryLogic( data, this.representationStrategy,
this.metaModel );
}
public DescribeQueryLogic getDescribeQueryLogic( DescribeQueryData data )
{
throw new QueryException( "Operation not supported." );
}
public ExpressionLogic getExternalFunctionLogic( CallExpressionData data,
SPARQLValueFactory valueFactory )
{
throw new QueryException( "Operation not supported." );
}
public ConstraintLogic getFilterConstraintLogic( FilterConstraintData data,
SPARQLValueFactory valueFactory )
{
ValueConversionLogic conversionLogic = new DefaultValueConversionLogic(
valueFactory );
return new DefaultFilterConstraintLogic( data,
new DefaultEffectiveBooleanLogic( conversionLogic ),
conversionLogic );
}
public ConstraintLogic getGraphConstraintLogic( GraphConstraintData data )
{
throw new QueryException( "Operation not supported." );
}
public ConstraintLogic getGroupConstraintLogic( GroupConstraintData data )
{
return new Neo4jConstraintLogic();
}
public ConstraintLogic getOptionalConstraintLogic(
OptionalConstraintData data, SPARQLValueFactory valueFactory )
{
return new Neo4jOptionalConstraintLogic( data, valueFactory );
}
public OrderExpressionLogic getOrderExpressionLogic(
OrderExpressionData data )
{
throw new QueryException( "Operation not supported." );
}
public SelectQueryLogic getSelectQueryLogic( SelectQueryData data )
{
return new Neo4jSelectQueryLogic( data, this.representationStrategy,
this.metaModel );
}
public ConstraintLogic getTripleConstraintLogic(
TripleConstraintData data )
{
return new Neo4jConstraintLogic();
}
public ConstraintLogic getUnionConstraintLogic( UnionConstraintData data )
{
throw new QueryException( "Operation not supported." );
}
public void registerExternalFunction( URI functionIRI,
ExternalFunctionFactory functionFactory )
{
throw new QueryException( "Operation not supported." );
}
}