HashMap map = new HashMap<String, Triple>(); map.put("keyString", new Triple(new Integer(1),new Integer(2),new Integer(3)));
static GraphTraversal<?, ?> transform(final Triple triple) { final GraphTraversal<Vertex, ?> matchTraversal = __.as(triple.getSubject().getName()); final Node predicate = triple.getPredicate(); final String uri = predicate.getURI(); final String uriValue = Prefixes.getURIValue(uri); final String prefix = Prefixes.getPrefix(uri); switch (prefix) { case "edge": return matchTraversal.out(uriValue).as(triple.getObject().getName()); case "property": return matchProperty(matchTraversal, uriValue, PropertyType.PROPERTY, triple.getObject()); case "value": return matchProperty(matchTraversal, uriValue, PropertyType.VALUE, triple.getObject()); default: throw new IllegalStateException(String.format("Unexpected predicate: %s", predicate)); } }
/** * Visiting triple patterns in SPARQL algebra. */ @Override public void visit(final OpBGP opBGP) { if(optionalFlag) { opBGP.getPattern().getList().forEach(triple -> optionalTraversals.add(TraversalBuilder.transform(triple))); opBGP.getPattern().getList().forEach(triple -> optionalVariable.add(triple.getObject().toString())); } else opBGP.getPattern().getList().forEach(triple -> traversalList.add(TraversalBuilder.transform(triple))); }
private Triple getTriple2() { Node n1 = NodeFactory.createURI("nb1") ; Node n2 = NodeFactory.createURI("nb2") ; Node l3 = NodeFactory.createLiteral("lb3") ; return new Triple(n1, n2, l3) ; }
/** Answer true iff this triple can be compared for sameValueAs by .equals(), ie, it is a concrete triple with a non-literal object. */ protected final boolean isSafeForEquality( Triple t ) { return t.isConcrete() && !t.getObject().isLiteral(); } }
private static GraphTraversal<?, ?> matchProperty(final GraphTraversal<?, ?> traversal, final String propertyName, final PropertyType type, final Node object) { switch (propertyName) { case "id": return object.isConcrete() ? traversal.hasId(object.getLiteralValue()) : traversal.id().as(object.getName()); case "label": return object.isConcrete() ? traversal.hasLabel(object.getLiteralValue().toString()) : traversal.label().as(object.getName()); case "key": return object.isConcrete() ? traversal.hasKey(object.getLiteralValue().toString()) : traversal.key().as(object.getName()); case "value": return object.isConcrete() ? traversal.hasValue(object.getLiteralValue().toString()) : traversal.value().as(object.getName()); default: if (type.equals(PropertyType.PROPERTY)) { return traversal.properties(propertyName).as(object.getName()); } else { return object.isConcrete() ? traversal.values(propertyName).is(object.getLiteralValue()) : traversal.values(propertyName).as(object.getName()); } } } }
private static Graph data(Triple... triples) { Graph graph = Factory.createDefaultGraph(); for ( Triple t : triples ) graph.add(t); return graph; } }
private static GraphTraversal<?, ?> transform(final E_LessThan expression) { final Object value = expression.getArg2().getConstant().getNode().getLiteralValue(); return __.as(expression.getArg1().getVarName()).is(P.lt(value)); }
/** * Delete triples in {@code srcGraph} from {@code dstGraph} * by looping on {@code srcGraph}. * */ public static void deleteLoopSrc(Graph dstGraph, Graph srcGraph) { deleteIteratorWorker(dstGraph, findAll(srcGraph)) ; dstGraph.getEventManager().notifyDeleteGraph(dstGraph, srcGraph) ; }
@Override public void event(Object dest, Event event) { graph.getEventManager().notifyEvent( graph , GraphEvents.finishRead ) ; } } ;
/** * Commit the transaction on the graph if transactions are supported. * * @param g */ public static void txnCommit(Graph g) { if (g.getTransactionHandler().transactionsSupported()) { g.getTransactionHandler().commit(); } }
/** * Rollback (abort) the transaction on the graph if transactions are * supported. * * @param g */ public static void txnRollback(Graph g) { if (g.getTransactionHandler().transactionsSupported()) { g.getTransactionHandler().abort(); } } }
/** Answer a new graph which is the reachable subgraph from <code>node</code> in <code>graph</code> with the terminating condition given by the TripleBoundary passed to the constructor. */ public Graph extract( Node node, Graph graph ) { return extractInto( Factory.createGraphMem(), node, graph ); }
/** make a blank node with the specified label */ public static Node createBlankNode(String string) { BlankNodeId id = BlankNodeId.create(string) ; return new Node_Blank(id) ; }
private static GraphTraversal<?, ?> transform(final E_GreaterThan expression) { final Object value = expression.getArg2().getConstant().getNode().getLiteralValue(); return __.as(expression.getArg1().getVarName()).is(P.gt(value)); }
/** * Delete triples in {@code srcGraph} from {@code dstGraph} * by looping on {@code srcGraph}. * */ public static void deleteLoopSrc(Graph dstGraph, Graph srcGraph) { deleteIteratorWorker(dstGraph, findAll(srcGraph)) ; dstGraph.getEventManager().notifyDeleteGraph(dstGraph, srcGraph) ; }
private static GraphTraversal<?, ?> transform(final E_LessThanOrEqual expression) { final Object value = expression.getArg2().getConstant().getNode().getLiteralValue(); return __.as(expression.getArg1().getVarName()).is(P.lte(value)); }
private static GraphTraversal<?, ?> transform(final E_Equals expression) { final Object value = expression.getArg2().getConstant().getNode().getLiteralValue(); return __.as(expression.getArg1().getVarName()).is(P.eq(value)); }
private static GraphTraversal<?, ?> transform(final E_GreaterThanOrEqual expression) { final Object value = expression.getArg2().getConstant().getNode().getLiteralValue(); return __.as(expression.getArg1().getVarName()).is(P.gte(value)); }
private static GraphTraversal<?, ?> transform(final E_NotEquals expression) { final Object value = expression.getArg2().getConstant().getNode().getLiteralValue(); return __.as(expression.getArg1().getVarName()).is(P.neq(value)); }