package org.neo4j.rdf.sail; import org.openrdf.model.URI; import org.openrdf.model.Resource; import org.openrdf.model.BNode; import org.openrdf.model.Literal; import org.openrdf.model.Statement; import org.openrdf.model.Value; import org.neo4j.rdf.model.BlankNode; import org.neo4j.rdf.model.Wildcard; import org.neo4j.rdf.sail.utils.ContextHandling; /** * Author: josh * Date: Apr 25, 2008 * Time: 6:09:18 PM */ public class SesameGraphDatabaseMapper { public static org.neo4j.rdf.model.Literal createLiteral(final Literal lit) { org.neo4j.rdf.model.Uri datatype = (null == lit.getDatatype()) ? null : createUri(lit.getDatatype()); return new org.neo4j.rdf.model.Literal(lit.getLabel(), datatype, lit.getLanguage()); } public static org.neo4j.rdf.model.Uri createUri(final URI uri) { return new org.neo4j.rdf.model.Uri(uri.toString()); } public static BlankNode createBlankNode(final BNode bnode) { return new org.neo4j.rdf.model.BlankNode(bnode.getID()); } public static org.neo4j.rdf.model.Resource createResource(final Resource res) { if (res instanceof URI) { return createUri((URI) res); } else if (res instanceof BNode) { return createBlankNode((BNode) res); } else { throw new IllegalArgumentException("bad resource type"); } } public static org.neo4j.rdf.model.Value createValue(final Value val) { return (val instanceof Literal) ? createLiteral((Literal) val) : (val instanceof URI) ? createUri((URI) val) : createBlankNode((BNode) val); } public static org.neo4j.rdf.model.WildcardStatement createWildcardStatement(final Resource subject, final URI predicate, final Value object, final Resource... inContexts) { org.neo4j.rdf.model.Value context = ContextHandling.createSingleContext(false, inContexts); return new org.neo4j.rdf.model.WildcardStatement( (null == subject) ? new Wildcard("?s") : createResource(subject), (null == predicate) ? new Wildcard("?p") : createUri(predicate), (null == object) ? new Wildcard("?o") : createValue(object), context); } public static org.neo4j.rdf.model.CompleteStatement createCompleteStatement(final Resource subject, final URI predicate, final Value object, final Resource... inContexts) { org.neo4j.rdf.model.Context context = (org.neo4j.rdf.model.Context) ContextHandling.createSingleContext(true, inContexts); if (object instanceof Literal) { return new org.neo4j.rdf.model.CompleteStatement( createResource(subject), createUri(predicate), (org.neo4j.rdf.model.Literal) createValue(object), context); } else { return new org.neo4j.rdf.model.CompleteStatement( createResource(subject), createUri(predicate), (org.neo4j.rdf.model.Resource) createValue(object), context); } } public static org.neo4j.rdf.model.Statement createCompleteStatement(final Statement st) { org.neo4j.rdf.model.Context context = ContextHandling.createContext(st.getContext()); if (st.getObject() instanceof Literal) { return new org.neo4j.rdf.model.CompleteStatement( createResource(st.getSubject()), createUri(st.getPredicate()), (org.neo4j.rdf.model.Literal) createValue(st.getObject()), context); } else { return new org.neo4j.rdf.model.CompleteStatement( createResource(st.getSubject()), createUri(st.getPredicate()), (org.neo4j.rdf.model.Resource) createValue(st.getObject()), context); } } // TODO (maybe): createNamespace }