package org.neo4j.rdf.store.representation.standard; import org.neo4j.meta.model.MetaModel; import org.neo4j.rdf.model.Statement; import org.neo4j.rdf.model.Wildcard; import org.neo4j.rdf.store.representation.AbstractRepresentation; import org.neo4j.rdf.store.representation.RepresentationExecutor; /** * S/P/O represented as: * if object property: ( S ) -- predicate_uri_as_reltype --> ( O ) * if data property: ( S ) with property [key=predicate_uri, value=O] */ public class DenseTripleStrategy extends StandardAbstractRepresentationStrategy { public DenseTripleStrategy( RepresentationExecutor executor, MetaModel meta ) { super( executor, meta ); } @Override public UriBasedExecutor getExecutor() { return ( UriBasedExecutor ) super.getExecutor(); } @Override public AbstractRepresentation getAbstractRepresentation( Statement statement, AbstractRepresentation representation ) { if ( super.getAbstractRepresentation( statement, representation ) != null ) { return representation; } if ( statement.getPredicate() instanceof Wildcard ) { throw new RuntimeException( "We don't (yet?) support " + "wildcard predicates" ); } if ( objectIsObjectType( statement ) ) { // ( S ) -- predicate_uri --> ( O ) getTwoNodeObjectTypeFragment( statement, representation ); } else { // ( S ) with property [key=predicate_uri, value=O] getOneNodeWithLiteralsAsProperties( statement, representation ); } return representation; } }