public static Iterable<Object> getValues(TitanElement element, PropertyKey key) { if (element instanceof TitanRelation) { Object value = element.valueOrNull(key); if (value==null) return Collections.EMPTY_LIST; else return ImmutableList.of(value); } else { assert element instanceof TitanVertex; return Iterables.transform((((TitanVertex) element).query()).keys(key.name()).properties(), new Function<TitanVertexProperty, Object>() { @Nullable @Override public Object apply(@Nullable TitanVertexProperty titanProperty) { return titanProperty.value(); } }); } }
private int getPartitionIDbyKey(TitanVertex vertex) { Preconditions.checkState(idManager!=null && key!=null,"PropertyPlacementStrategy has not been initialized correctly"); assert idManager.getPartitionBound()<=Integer.MAX_VALUE; int partitionBound = (int)idManager.getPartitionBound(); TitanVertexProperty p = (TitanVertexProperty)Iterables.getFirst(vertex.query().keys(key).properties(),null); if (p==null) return -1; int hashPid = Math.abs(p.value().hashCode())%partitionBound; assert hashPid>=0 && hashPid<partitionBound; if (isExhaustedPartition(hashPid)) { //We keep trying consecutive partition ids until we find a non-exhausted one int newPid=hashPid; do { newPid = (newPid+1)%partitionBound; if (newPid==hashPid) //We have gone full circle - no more ids to try throw new IDPoolExhaustedException("Could not find non-exhausted partition"); } while (isExhaustedPartition(newPid)); return newPid; } else return hashPid; } }
props = qb.properties(); } else { props = vertex.query().keys(key.name()).properties();
evaluateQuery(v.query().keys("name").has("weight", Cmp.GREATER_THAN, 3.6), PROPERTY, 2 * numV / 10, 1, new boolean[]{false, true}); evaluateQuery(v.query().keys("name").has("weight", Cmp.LESS_THAN, 0.9).orderBy("weight", incr), PROPERTY, 2 * numV / 10, 1, new boolean[]{true, true}, weight, Order.ASC); evaluateQuery(v.query().keys("name").interval("weight", 1.1, 2.2).orderBy("weight", decr).limit(numV / 10), PROPERTY, numV / 10, 1, new boolean[]{true, false}, weight, Order.DESC); evaluateQuery(v.query().keys("name").has("time", Cmp.EQUAL, 5).orderBy("weight", decr), PROPERTY, 1, 1, new boolean[]{false, false}, weight, Order.DESC); evaluateQuery(v.query().keys("name"), PROPERTY, numV, 1, new boolean[]{true, true}); evaluateQuery(v.query().keys("name").has("weight", Cmp.GREATER_THAN, 3.6), PROPERTY, 2 * numV / 10, 1, new boolean[]{false, true}); evaluateQuery(v.query().keys("name").has("weight", Cmp.LESS_THAN, 0.9).orderBy("weight", incr), PROPERTY, 2 * numV / 10, 1, new boolean[]{true, true}, weight, Order.ASC); evaluateQuery(v.query().keys("name").interval("weight", 1.1, 2.2).orderBy("weight", decr).limit(numV / 10), PROPERTY, numV / 10, 1, new boolean[]{true, false}, weight, Order.DESC); evaluateQuery(v.query().keys("name").has("time", Cmp.EQUAL, 5).orderBy("weight", decr), PROPERTY, 1, 1, new boolean[]{false, false}, weight, Order.DESC); evaluateQuery(v.query().keys("name"), PROPERTY, numV, 1, new boolean[]{true, true}); evaluateQuery(v.query().keys("name").has("weight", Cmp.GREATER_THAN, 3.6), PROPERTY, 2 * numV / 10, 1, new boolean[]{false, true}); evaluateQuery(v.query().keys("name").interval("time", numV / 2 - 10, numV / 2 + 10), PROPERTY, 10, 1, new boolean[]{false, true}); evaluateQuery(v.query().keys("name").interval("time", numV / 2 - 10, numV / 2 + 10).orderBy("weight", decr), PROPERTY, 10, 1, new boolean[]{false, false}, weight, Order.DESC); evaluateQuery(v.query().keys("name").interval("time", numV, numV + 10).limit(5),
evaluateQuery(v.query().keys("sensor").interval("time", 1, 5).orderBy("time", decr), PROPERTY, 4, 1, new boolean[]{false, false}, tx.getPropertyKey("time"), Order.DESC); evaluateQuery(v.query().keys("sensor").interval("time", 101, 105).orderBy("time", decr), PROPERTY, 0, 1, new boolean[]{false, false}, tx.getPropertyKey("time"), Order.DESC); evaluateQuery(v.query().labels("friend").direction(OUT).interval("time", 1, 5).orderBy("time", decr), evaluateQuery(v.query().keys("sensor").interval("time", 1, 5).orderBy("time", decr), PROPERTY, 4, 1, new boolean[]{true, true}, tx.getPropertyKey("time"), Order.DESC); evaluateQuery(v.query().keys("sensor").interval("time", 101, 105).orderBy("time", decr), PROPERTY, 4, 1, new boolean[]{true, true}, tx.getPropertyKey("time"), Order.DESC); evaluateQuery(v.query().keys("sensor").interval("time", 201, 205).orderBy("time", decr), PROPERTY, 4, 1, new boolean[]{true, true}, tx.getPropertyKey("time"), Order.DESC); evaluateQuery(v.query().labels("friend").direction(OUT).interval("time", 1, 5).orderBy("time", decr), evaluateQuery(v.query().keys("sensor").interval("time", 1, 5).orderBy("time", decr), PROPERTY, 4, 1, new boolean[]{false, false}, tx.getPropertyKey("time"), Order.DESC); evaluateQuery(v.query().keys("sensor").interval("time", 101, 105).orderBy("time", decr), PROPERTY, 4, 1, new boolean[]{false, false}, tx.getPropertyKey("time"), Order.DESC); evaluateQuery(v.query().keys("sensor").interval("time", 201, 205).orderBy("time", decr), PROPERTY, 4, 1, new boolean[]{false, false}, tx.getPropertyKey("time"), Order.DESC); evaluateQuery(v.query().labels("friend").direction(OUT).interval("time", 1, 5).orderBy("time", decr),
public static final Iterable<Object> getValues(TitanElement element, PropertyKey key) { if (element instanceof TitanRelation) { Object value = element.getProperty(key); if (value==null) return Collections.EMPTY_LIST; else return ImmutableList.of(value); } else { assert element instanceof TitanVertex; return Iterables.transform((((TitanVertex) element).query()).keys(key.getName()).properties(), new Function<TitanProperty, Object>() { @Nullable @Override public Object apply(@Nullable TitanProperty titanProperty) { return titanProperty.getValue(); } }); } }
public static Iterable<Object> getValues(TitanElement element, PropertyKey key) { if (element instanceof TitanRelation) { Object value = element.valueOrNull(key); if (value==null) return Collections.EMPTY_LIST; else return ImmutableList.of(value); } else { assert element instanceof TitanVertex; return Iterables.transform((((TitanVertex) element).query()).keys(key.name()).properties(), new Function<TitanVertexProperty, Object>() { @Nullable @Override public Object apply(@Nullable TitanVertexProperty titanProperty) { return titanProperty.value(); } }); } }
private int getPartitionIDbyKey(TitanVertex vertex) { Preconditions.checkState(idManager!=null && key!=null,"PropertyPlacementStrategy has not been initialized correctly"); assert idManager.getPartitionBound()<=Integer.MAX_VALUE; int partitionBound = (int)idManager.getPartitionBound(); TitanVertexProperty p = (TitanVertexProperty)Iterables.getFirst(vertex.query().keys(key).properties(),null); if (p==null) return -1; int hashPid = Math.abs(p.value().hashCode())%partitionBound; assert hashPid>=0 && hashPid<partitionBound; if (isExhaustedPartition(hashPid)) { //We keep trying consecutive partition ids until we find a non-exhausted one int newPid=hashPid; do { newPid = (newPid+1)%partitionBound; if (newPid==hashPid) //We have gone full circle - no more ids to try throw new IDPoolExhaustedException("Could not find non-exhausted partition"); } while (isExhaustedPartition(newPid)); return newPid; } else return hashPid; } }
props = qb.properties(); } else { props = vertex.query().keys(key.name()).properties();
evaluateQuery(v.query().keys("sensor").interval("time", 1, 5).orderBy("time",Order.DESC), PROPERTY,4,1,new boolean[]{false,false},tx.getPropertyKey("time"),Order.DESC); evaluateQuery(v.query().keys("sensor").interval("time", 101, 105).orderBy("time",Order.DESC), PROPERTY,0,1,new boolean[]{false,false},tx.getPropertyKey("time"),Order.DESC); evaluateQuery(v.query().labels("friend").direction(OUT).interval("time", 1, 5).orderBy("time",Order.DESC), evaluateQuery(v.query().keys("sensor").interval("time", 1, 5).orderBy("time",Order.DESC), PROPERTY,0,1,new boolean[]{true,true},tx.getPropertyKey("time"),Order.DESC); evaluateQuery(v.query().keys("sensor").interval("time", 101, 105).orderBy("time",Order.DESC), PROPERTY,4,1,new boolean[]{true,true},tx.getPropertyKey("time"),Order.DESC); evaluateQuery(v.query().keys("sensor").interval("time", 201, 205).orderBy("time",Order.DESC), PROPERTY,4,1,new boolean[]{true,true},tx.getPropertyKey("time"),Order.DESC); evaluateQuery(v.query().labels("friend").direction(OUT).interval("time", 1, 5).orderBy("time",Order.DESC),
evaluateQuery(v.query().keys(name.getName()).has(weight,Cmp.GREATER_THAN,3.6), PROPERTY, 2*numV/10, 1, new boolean[]{false,true}); evaluateQuery(v.query().keys(name.getName()).has(weight,Cmp.LESS_THAN,0.9).orderBy(weight,Order.ASC), PROPERTY, 2*numV/10, 1, new boolean[]{true,true},weight,Order.ASC); evaluateQuery(v.query().keys(name.getName()).interval(weight, 1.1, 2.2).orderBy(weight,Order.DESC).limit(numV/10), PROPERTY, numV/10, 1, new boolean[]{true,false},weight,Order.DESC); evaluateQuery(v.query().keys(name.getName()).has(time,Cmp.EQUAL,5).orderBy(weight,Order.DESC), PROPERTY, 1, 1, new boolean[]{false,false},weight,Order.DESC); evaluateQuery(v.query().keys(name.getName()), PROPERTY, numV, 1, new boolean[]{true,true}); evaluateQuery(v.query().keys(name.getName()).has(weight,Cmp.GREATER_THAN,3.6), PROPERTY, 2*numV/10, 1, new boolean[]{false,true}); evaluateQuery(v.query().keys(name.getName()).has(weight,Cmp.LESS_THAN,0.9).orderBy(weight,Order.ASC), PROPERTY, 2*numV/10, 1, new boolean[]{true,true},weight,Order.ASC); evaluateQuery(v.query().keys(name.getName()).interval(weight, 1.1, 2.2).orderBy(weight,Order.DESC).limit(numV/10), PROPERTY, numV/10, 1, new boolean[]{true,false},weight,Order.DESC); evaluateQuery(v.query().keys(name.getName()).has(time,Cmp.EQUAL,5).orderBy(weight,Order.DESC), PROPERTY, 1, 1, new boolean[]{false,false},weight,Order.DESC); evaluateQuery(v.query().keys(name.getName()), PROPERTY, numV, 1, new boolean[]{true,true}); evaluateQuery(v.query().keys(name.getName()).has(weight,Cmp.GREATER_THAN,3.6), PROPERTY, 2*numV/10, 1, new boolean[]{false,true}); evaluateQuery(v.query().keys(name.getName()).interval(time,numV/2-10,numV/2+10), PROPERTY, 10, 1, new boolean[]{false,true}); evaluateQuery(v.query().keys(name.getName()).interval(time,numV/2-10,numV/2+10).orderBy(weight,Order.DESC), PROPERTY, 10, 1, new boolean[]{false,false},weight,Order.DESC); evaluateQuery(v.query().keys(name.getName()).interval(time,numV,numV+10).limit(5),