Search in sources :

Example 36 with Statement

use of org.openrdf.model.Statement in project blueprints by tinkerpop.

the class PropertyGraphSailConnection method generateHeadStatement.

private void generateHeadStatement(final URI edgeUri, final URI headUri, final Collection<Statement> results) {
    Statement s = context.valueFactory.createStatement(edgeUri, PropertyGraphSail.HEAD, headUri);
    results.add(s);
}
Also used : Statement(org.openrdf.model.Statement)

Example 37 with Statement

use of org.openrdf.model.Statement in project blueprints by tinkerpop.

the class PropertyGraphSailConnection method vertexPropertiesWithValue.

private StatementGenerator<Vertex> vertexPropertiesWithValue(final Object value, final Literal object) {
    return new StatementGenerator<Vertex>() {

        public void generate(Vertex source, Collection<Statement> results) {
            for (String key : source.getPropertyKeys()) {
                Object v = source.getProperty(key);
                if (null != v && v.equals(value)) {
                    URI predicate = predicateForPropertyKey(key);
                    Statement s = context.valueFactory.createStatement(uriForVertex(source), predicate, object);
                    results.add(s);
                }
            }
        }
    };
}
Also used : Vertex(com.tinkerpop.blueprints.Vertex) Statement(org.openrdf.model.Statement) Collection(java.util.Collection) URI(org.openrdf.model.URI)

Example 38 with Statement

use of org.openrdf.model.Statement in project blueprints by tinkerpop.

the class PropertyGraphSailConnection method getStatements_xPO.

private CloseableIteration<Statement, SailException> getStatements_xPO(final URI predicate, final Value object) throws SailException {
    if (predicate.equals(RDF.TYPE)) {
        if (object.equals(PropertyGraphSail.VERTEX)) {
            Source<Vertex> s = new Source<Vertex>(context.graph.getVertices().iterator(), vertexTypes);
            return new StatementIteration(s);
        } else if (object.equals(PropertyGraphSail.EDGE) && firstClassEdges) {
            Source<Edge> s = new Source<Edge>(context.graph.getEdges().iterator(), edgeTypes);
            return new StatementIteration(s);
        } else {
            return new StatementIteration();
        }
    } else if (predicate.equals(PropertyGraphSail.ID)) {
        Object id = literalToObject(object);
        if (null == id) {
            return new StatementIteration();
        } else {
            Vertex v = context.graph.getVertex(id);
            Edge e = firstClassEdges ? context.graph.getEdge(id) : null;
            if (null == v && null == e) {
                return new StatementIteration();
            } else {
                Collection<Statement> s = new LinkedList<Statement>();
                if (null != v) {
                    vertexIds.generate(v, s);
                }
                if (null != e) {
                    edgeIds.generate(e, s);
                }
                return new SimpleCloseableIteration<Statement, SailException>(s.iterator());
            }
        }
    } else if (predicate.equals(PropertyGraphSail.LABEL)) {
        if (!firstClassEdges) {
            return new StatementIteration();
        }
        // TODO: find edges faster using indices
        Object label = literalToObject(object);
        if (null == label || !(label instanceof String)) {
            return new StatementIteration();
        } else {
            Source<Edge> edges = new Source<Edge>(context.graph.getEdges().iterator(), matchingLabels((String) label, object));
            return new StatementIteration(edges);
        }
    } else if (predicate.equals(PropertyGraphSail.HEAD)) {
        if (!firstClassEdges) {
            return new StatementIteration();
        }
        Vertex v = object instanceof URI ? vertexForURI((URI) object) : null;
        if (null == v) {
            return new StatementIteration();
        } else {
            Iterator<Edge> edgeIterator = v.getEdges(Direction.IN).iterator();
            Source<Edge> edges = new Source<Edge>(edgeIterator, heads);
            return new StatementIteration(edges);
        }
    } else if (predicate.equals(PropertyGraphSail.TAIL)) {
        if (!firstClassEdges) {
            return new StatementIteration();
        }
        Vertex v = object instanceof URI ? vertexForURI((URI) object) : null;
        if (null == v) {
            return new StatementIteration();
        } else {
            Iterator<Edge> edgeIterator = v.getEdges(Direction.OUT).iterator();
            Source<Edge> edges = new Source<Edge>(edgeIterator, tails);
            return new StatementIteration(edges);
        }
    } else if (isPropertyPredicate(predicate)) {
        Object value = literalToObject(object);
        if (null == value) {
            return new StatementIteration();
        } else {
            // TODO: lookup matching vertices and edges faster using indices
            String key = keyFromPredicate(predicate);
            Source<Vertex> vertices = new Source<Vertex>(context.graph.getVertices().iterator(), vertexPropertiesWithKeyAndValue(key, predicate, value, (Literal) object));
            if (firstClassEdges) {
                Source<Edge> edges = new Source<Edge>(context.graph.getEdges().iterator(), edgePropertiesWithKeyAndValue(key, predicate, value, (Literal) object));
                return new StatementIteration(vertices, edges);
            } else {
                return new StatementIteration(vertices);
            }
        }
    } else if (isRelationPredicate(predicate)) {
        if (!(object instanceof URI)) {
            return new StatementIteration();
        } else {
            String label = labelForRelationPredicate(predicate);
            Vertex vObj = vertexForURI((URI) object);
            if (null != vObj) {
                Source<Vertex> s = new Source<Vertex>(new SingleItemIterator<Vertex>(vObj), new RelationGenerator(label, true));
                return new StatementIteration(s);
            } else {
                return new StatementIteration();
            }
        }
    } else {
        return new StatementIteration();
    }
}
Also used : Vertex(com.tinkerpop.blueprints.Vertex) Statement(org.openrdf.model.Statement) SailException(org.openrdf.sail.SailException) URI(org.openrdf.model.URI) SailConnectionTripleSource(net.fortytwo.sesametools.SailConnectionTripleSource) TripleSource(org.openrdf.query.algebra.evaluation.TripleSource) Iterator(java.util.Iterator) Collection(java.util.Collection) Edge(com.tinkerpop.blueprints.Edge)

Example 39 with Statement

use of org.openrdf.model.Statement in project blueprints by tinkerpop.

the class PropertyGraphSailConnection method generateVertexTypeStatement.

private void generateVertexTypeStatement(final URI uri, final Collection<Statement> results) {
    Statement s = context.valueFactory.createStatement(uri, RDF.TYPE, PropertyGraphSail.VERTEX);
    results.add(s);
}
Also used : Statement(org.openrdf.model.Statement)

Example 40 with Statement

use of org.openrdf.model.Statement in project blueprints by tinkerpop.

the class PropertyGraphSailConnection method matchingLabels.

private StatementGenerator<Edge> matchingLabels(final String label, final Value object) {
    return new StatementGenerator<Edge>() {

        public void generate(Edge source, Collection<Statement> results) {
            if (source.getLabel().equals(label)) {
                Statement s = context.valueFactory.createStatement(uriForEdge(source), PropertyGraphSail.LABEL, object);
                results.add(s);
            }
        }
    };
}
Also used : Statement(org.openrdf.model.Statement) Collection(java.util.Collection) Edge(com.tinkerpop.blueprints.Edge)

Aggregations

Statement (org.openrdf.model.Statement)67 Resource (org.openrdf.model.Resource)22 Value (org.openrdf.model.Value)22 URI (org.openrdf.model.URI)21 HashSet (java.util.HashSet)16 SailException (org.openrdf.sail.SailException)10 Collection (java.util.Collection)9 Literal (org.openrdf.model.Literal)9 Graph (org.openrdf.model.Graph)7 Edge (com.tinkerpop.blueprints.Edge)6 Test (org.junit.Test)6 Vertex (com.tinkerpop.blueprints.Vertex)5 HashMap (java.util.HashMap)5 Map (java.util.Map)4 PrintWriter (java.io.PrintWriter)3 Set (java.util.Set)3 BNode (org.openrdf.model.BNode)3 ValueFactory (org.openrdf.model.ValueFactory)3 RDFHandlerException (org.openrdf.rio.RDFHandlerException)3 RdfXmlSerializer (org.qi4j.library.rdf.serializer.RdfXmlSerializer)3