/** * Returns the number of edges that match this query * * @return Number of edges that match this query */ public default long edgeCount() { return vertexIds().size(); }
private boolean isSortedByID(VertexList vl) { for (int i = 1; i < vl.size(); i++) { if (vl.getID(i - 1) > vl.getID(i)) return false; } return true; }
private void testPartitionSpread(boolean flush, boolean batchCommit) { Object[] options = {option(GraphDatabaseConfiguration.IDS_FLUSH), flush}; clopen(options); int[] groupDegrees = {10,15,10,17,10,4,7,20,11}; int numVertices = setupGroupClusters(groupDegrees,batchCommit?CommitMode.BATCH:CommitMode.PER_VERTEX); IntSet partitionIds = new IntHashSet(numVertices); //to track the "spread" of partition ids for (int i=0;i<groupDegrees.length;i++) { TitanVertex g = getOnlyVertex(tx.query().has("groupid","group"+i)); assertCount(groupDegrees[i],g.edges(Direction.OUT,"contain")); assertCount(groupDegrees[i],g.edges(Direction.IN,"member")); assertCount(groupDegrees[i],g.query().direction(Direction.OUT).edges()); assertCount(groupDegrees[i],g.query().direction(Direction.IN).edges()); assertCount(groupDegrees[i]*2,g.query().edges()); for (TitanVertex v : g.query().direction(Direction.IN).labels("member").vertices()) { int pid = getPartitionID(v); partitionIds.add(pid); assertEquals(g, getOnlyElement(v.query().direction(Direction.OUT).labels("member").vertices())); VertexList vlist = v.query().direction(Direction.IN).labels("contain").vertexIds(); assertEquals(1,vlist.size()); assertEquals(pid,idManager.getPartitionId(vlist.getID(0))); assertEquals(g,vlist.get(0)); } } if (flush || !batchCommit) { //In these cases we would expect significant spread across partitions assertTrue(partitionIds.size()>numPartitions/2); //This is a probabilistic test that might fail } else { assertEquals(1,partitionIds.size()); //No spread in this case } }
assertEquals(10, u.query().labels("connectDesc").direction(IN).interval("time", 3, 31).edgeCount()); assertEquals(0, v.query().labels("connect").direction(OUT).has("time", null).edgeCount()); assertEquals(10, v.query().labels("connect").direction(OUT).interval("time", 3, 31).vertexIds().size()); assertEquals(edgesPerLabel - 10, v.query().labels("connect").direction(OUT).has("time", Cmp.GREATER_THAN, 31).count()); assertEquals(10, size(v.query().labels("connect").direction(OUT).interval("time", 3, 31).vertices())); vl = v.query().labels().direction(dir).interval("time", 3, 31).vertexIds(); vl.sort(); for (int i = 0; i < vl.size(); i++) assertEquals(vidsubset[i], vl.getID(i)); assertEquals(10, u.query().labels("connectDesc").direction(IN).interval("time", 3, 31).edgeCount()); assertEquals(0, v.query().labels("connect").direction(OUT).has("time", null).edgeCount()); assertEquals(10, v.query().labels("connect").direction(OUT).interval("time", 3, 31).vertexIds().size()); assertEquals(edgesPerLabel - 10, v.query().labels("connect").direction(OUT).has("time", Cmp.GREATER_THAN, 31).count()); assertEquals(10, size(v.query().labels("connect").direction(OUT).interval("time", 3, 31).vertices())); vl = v.query().labels().direction(dir).interval("time", 3, 31).vertexIds(); vl.sort(); for (int i = 0; i < vl.size(); i++) assertEquals(vidsubset[i], vl.getID(i)); assertEquals(2, v.query().has("weight", 1.5).interval("time", 10, 30).limit(2).vertexIds().size()); assertEquals(10, v.query().has("weight", 1.5).interval("time", 10, 30).vertexIds().size());
EDGE, numV, 1, new boolean[]{true, true}); vl = v.query().labels("child").direction(BOTH).vertexIds(); assertEquals(numV, vl.size()); assertTrue(vl.isSorted()); assertTrue(isSortedByID(vl)); EDGE, 2 * numV / 10, 1, new boolean[]{false, true}); vl = v.query().labels("child").interval("weight", 0.0, 1.0).direction(OUT).vertexIds(); assertEquals(2 * numV / 10, vl.size()); assertTrue(vl.isSorted()); assertTrue(isSortedByID(vl)); EDGE, 10, 1, new boolean[]{true, true}, time, Order.ASC); vl = v.query().labels("child").interval("time", 70, 80).direction(OUT).orderBy("time", incr).vertexIds(); assertEquals(10, vl.size()); assertFalse(vl.isSorted()); assertFalse(isSortedByID(vl)); EDGE, numV, 1, new boolean[]{true, true}); vl = v.query().labels("child").direction(BOTH).vertexIds(); assertEquals(numV, vl.size()); assertTrue(vl.isSorted()); assertTrue(isSortedByID(vl)); EDGE, 2 * numV / 10, 1, new boolean[]{false, true}); vl = v.query().labels("child").interval("weight", 0.0, 1.0).direction(OUT).vertexIds(); assertEquals(2 * numV / 10, vl.size()); assertTrue(vl.isSorted()); assertTrue(isSortedByID(vl));
/** * Returns the number of edges that match this query * * @return Number of edges that match this query */ public default long edgeCount() { return vertexIds().size(); }
@Override public long count() { return vertexIds().size(); }
private boolean isSortedByID(VertexList vl) { for (int i=1;i<vl.size();i++) { if (vl.getID(i-1)>vl.getID(i)) return false; } return true; }
public void retrieveNgh(boolean inMemory) { long time = time(); Vertex vertices[] = new TitanVertex[numVertices]; for (int i = 0; i < numVertices; i++) vertices[i] = graph.getVertices("uid", i).iterator().next(); time = time() - time; //System.out.println("Vertex retrieval: " + time); for (int t = 0; t < 4; t++) { time = time(); for (int i = 0; i < numVertices; i++) { TitanVertexQuery q = ((TitanVertexQuery) vertices[i].query()).direction(Direction.OUT).labels("connect"); if (inMemory) { //TODO: this has been disabled for (Vertex v : q.vertices()) { v.getId(); } } else { VertexList vl = q.vertexIds(); for (int j = 0; j < vl.size(); j++) { vl.get(j); } } } time = time() - time; System.out.println("Ngh retrieval: " + time); } graph.commit(); }
public void neighborhoodTest() { testCreateAndRetrieveComprehensive(); log.debug("Neighborhood:"); TitanVertex n1 = tx.getVertex("name", "Node1"); TitanVertexQuery q = n1.query().direction(OUT).types(tx.getEdgeLabel("connect")); VertexList res = q.vertexIds(); assertEquals(1, res.size()); TitanVertex n2 = tx.getVertex("name", "Node2"); assertEquals(n2.getID(), res.getID(0)); }
assertEquals(10, u.query().labels("connectDesc").direction(IN).interval("time", 3, 31).count()); assertEquals(0, v.query().labels("connect").direction(OUT).has("time", null).count()); assertEquals(10, v.query().labels("connect").direction(OUT).interval("time", 3, 31).vertexIds().size()); assertEquals(edgesPerLabel-10, v.query().labels("connect").direction(OUT).has("time", Compare.GREATER_THAN, 31).count()); assertEquals(10, Iterables.size(v.query().labels("connect").direction(OUT).interval("time", 3, 31).vertices())); vl = v.query().labels().direction(dir).interval("time", 3, 31).vertexIds(); vl.sort(); for (int i = 0; i < vl.size(); i++) assertEquals(vidsubset[i], vl.getID(i)); assertEquals(10, u.query().labels("connectDesc").direction(IN).interval("time", 3, 31).count()); assertEquals(0, v.query().labels("connect").direction(OUT).has("time", null).count()); assertEquals(10, v.query().labels("connect").direction(OUT).interval("time", 3, 31).vertexIds().size()); assertEquals(edgesPerLabel-10, v.query().labels("connect").direction(OUT).has("time", Compare.GREATER_THAN, 31).count()); assertEquals(10, Iterables.size(v.query().labels("connect").direction(OUT).interval("time", 3, 31).vertices())); vl = v.query().labels().direction(dir).interval("time", 3, 31).vertexIds(); vl.sort(); for (int i = 0; i < vl.size(); i++) assertEquals(vidsubset[i], vl.getID(i)); assertEquals(2, v.query().has("weight", 1.5).interval("time", 10, 30).limit(2).vertexIds().size()); assertEquals(10, v.query().has("weight", 1.5).interval("time", 10, 30).vertexIds().size());
assertEquals(10, u.query().labels("connectDesc").direction(IN).interval("time", 3, 31).count()); assertEquals(0, v.query().labels("connect").direction(OUT).has("time", null).count()); assertEquals(10, v.query().labels("connect").direction(OUT).interval("time", 3, 31).vertexIds().size()); assertEquals(edgesPerLabel-10, v.query().labels("connect").direction(OUT).has("time", Compare.GREATER_THAN, 31).count()); assertEquals(10, Iterables.size(v.query().labels("connect").direction(OUT).interval("time", 3, 31).vertices())); vl = v.query().labels().direction(dir).interval("time", 3, 31).vertexIds(); vl.sort(); for (int i = 0; i < vl.size(); i++) assertEquals(vidsubset[i], vl.getID(i)); assertEquals(10, u.query().labels("connectDesc").direction(IN).interval("time", 3, 31).count()); assertEquals(0, v.query().labels("connect").direction(OUT).has("time", null).count()); assertEquals(10, v.query().labels("connect").direction(OUT).interval("time", 3, 31).vertexIds().size()); assertEquals(edgesPerLabel-10, v.query().labels("connect").direction(OUT).has("time", Compare.GREATER_THAN, 31).count()); assertEquals(10, Iterables.size(v.query().labels("connect").direction(OUT).interval("time", 3, 31).vertices())); vl = v.query().labels().direction(dir).interval("time", 3, 31).vertexIds(); vl.sort(); for (int i = 0; i < vl.size(); i++) assertEquals(vidsubset[i], vl.getID(i)); assertEquals(2, v.query().has("weight", 1.5).interval("time", 10, 30).limit(2).vertexIds().size()); assertEquals(10, v.query().has("weight", 1.5).interval("time", 10, 30).vertexIds().size());
EDGE, numV, 1 , new boolean[]{true,true}); vl = v.query().labels(child.getName()).direction(BOTH).vertexIds(); assertEquals(numV,vl.size()); assertTrue(vl.isSorted()); assertTrue(isSortedByID(vl)); EDGE, 2*numV/10, 1 , new boolean[]{false,true}); vl = v.query().labels(child.getName()).interval(weight, 0.0, 1.0).direction(OUT).vertexIds(); assertEquals(2*numV/10,vl.size()); assertTrue(vl.isSorted()); assertTrue(isSortedByID(vl)); EDGE, 10, 1 , new boolean[]{true,true},time,Order.ASC); vl = v.query().labels(child.getName()).interval(time, 70, 80).direction(OUT).orderBy(time,Order.ASC).vertexIds(); assertEquals(10,vl.size()); assertFalse(vl.isSorted()); assertFalse(isSortedByID(vl)); EDGE, numV, 1 , new boolean[]{true,true}); vl = v.query().labels(child.getName()).direction(BOTH).vertexIds(); assertEquals(numV,vl.size()); assertTrue(vl.isSorted()); assertTrue(isSortedByID(vl)); EDGE, 2*numV/10, 1 , new boolean[]{false,true}); vl = v.query().labels(child.getName()).interval(weight, 0.0, 1.0).direction(OUT).vertexIds(); assertEquals(2*numV/10,vl.size()); assertTrue(vl.isSorted()); assertTrue(isSortedByID(vl));