private boolean source(Vertex vertex) { String source = (String) persistentProperties.get(sourceId); String vertexId = this.<String>get(vertex, Schema.VertexProperty.ID.name()).get(); return source.equals(vertexId); }
private boolean destination(Vertex vertex) { String source = (String) persistentProperties.get(destinationId); String vertexId = this.<String>get(vertex, Schema.VertexProperty.ID.name()).get(); return source.equals(vertexId); }
public MedianVertexProgram(Set<LabelId> statisticsResourceLabelIds, AttributeType.DataType resourceDataType) { this.statisticsResourceLabelIds = statisticsResourceLabelIds; String resourceDataTypeValue = resourceDataType.equals(AttributeType.DataType.LONG) ? Schema.VertexProperty.VALUE_LONG.name() : Schema.VertexProperty.VALUE_DOUBLE.name(); persistentProperties.put(RESOURCE_DATA_TYPE, resourceDataTypeValue); }
@Override public GraphTraversal<Vertex, ? extends Element> applyTraversalInner( GraphTraversal<Vertex, ? extends Element> traversal, EmbeddedGraknTx<?> graph, Collection<Var> vars) { return traversal.has(INDEX.name(), attributeIndex()); }
@Override public void safeMap(final Vertex vertex, final MapEmitter<Serializable, Long> emitter) { if (vertex.property(CountVertexProgram.EDGE_COUNT).isPresent()) { emitter.emit(RESERVED_TYPE_LABEL_KEY, vertex.value(CountVertexProgram.EDGE_COUNT)); } emitter.emit(vertex.value(Schema.VertexProperty.THING_TYPE_LABEL_ID.name()), 1L); } }
/** * Thrown when trying to create a {@link SchemaConcept} using a unique property which is already taken. * For example this happens when using an already taken {@link Label} */ public static PropertyNotUniqueException cannotCreateProperty(Concept concept, Schema.VertexProperty property, Object value){ return create(UNIQUE_PROPERTY_TAKEN.getMessage(property.name(), value, concept)); } }
/** * Get the id of given vertex. */ static String getVertexId(Vertex vertex) { return vertex.value(Schema.VertexProperty.ID.name()); } }
@Override public GraphTraversal<Vertex, ? extends Element> applyTraversalInner( GraphTraversal<Vertex, ? extends Element> traversal, EmbeddedGraknTx<?> tx, Collection<Var> vars) { Set<Integer> labelIds = labels().stream().map(label -> tx.convertToId(label).getValue()).collect(toSet()); if (labelIds.size() == 1) { int labelId = Iterables.getOnlyElement(labelIds); return traversal.has(LABEL_ID.name(), labelId); } else { return traversal.has(LABEL_ID.name(), P.within(labelIds)); } }
static <T> GraphTraversal<T, Vertex> outSubs(GraphTraversal<T, Vertex> traversal) { // These traversals make sure to only navigate types by checking they do not have a `THING_TYPE_LABEL_ID` property return union(traversal, ImmutableSet.of( __.<Vertex>not(__.has(THING_TYPE_LABEL_ID.name())).not(__.hasLabel(Schema.BaseType.SHARD.name())), __.repeat(__.out(SUB.getLabel())).emit() )).unfold(); }
@Override public void safeMap(final Vertex vertex, final MapEmitter<Serializable, Set<ConceptId>> emitter) { if (vertex.property((String) persistentProperties.get(CLUSTER_LABEL)).isPresent()) { String clusterPropertyKey = (String) persistentProperties.get(CLUSTER_LABEL); String clusterId = vertex.value(clusterPropertyKey); ConceptId conceptId = ConceptId.of(vertex.value(Schema.VertexProperty.ID.name())); Set<ConceptId> cluster = Collections.singleton(conceptId); emitter.emit(clusterId, cluster); } else { emitter.emit(NullObject.instance(), Collections.emptySet()); } }
@Override public void safeExecute(final Vertex vertex, Messenger<String> messenger, final Memory memory) { if (memory.isInitialIteration()) { String id = vertex.value(Schema.VertexProperty.ID.name()); vertex.property(CLUSTER_LABEL, id); messenger.sendMessage(messageScopeIn, id); messenger.sendMessage(messageScopeOut, id); } else { updateClusterLabel(vertex, messenger, memory); } }
@Override public GraphTraversal<Vertex, ? extends Element> applyTraversalInner( GraphTraversal<Vertex, ? extends Element> traversal, EmbeddedGraknTx<?> graph, Collection<Var> vars) { return traversal.has(REGEX.name(), regex()); }
private static void makePropertyKeys(JanusGraphManagement management){ stream(Schema.VertexProperty.values()).forEach(property -> makePropertyKey(management, property.name(), property.getDataType())); stream(Schema.EdgeProperty.values()).forEach(property -> makePropertyKey(management, property.name(), property.getDataType())); }
@Override public GraphTraversal<Vertex, ? extends Element> applyTraversalInner( GraphTraversal<Vertex, ? extends Element> traversal, EmbeddedGraknTx<?> tx, Collection<Var> vars) { return traversal.has(DATA_TYPE.name(), dataType().getName()); }
static <S> GraphTraversal<S, Vertex> traverseSchemaConceptFromEdge( GraphTraversal<S, Edge> traversal, Schema.EdgeProperty edgeProperty) { // Access label ID from edge Var labelId = Graql.var(); traversal.values(edgeProperty.name()).as(labelId.name()); // Look up schema concept using ID return traversal.V().has(LABEL_ID.name(), __.where(P.eq(labelId.name()))); }
/** * Create a traversal that filters to only edges */ static <T> GraphTraversal<T, Edge> isEdge(GraphTraversal<T, ? extends Element> traversal) { // This cast is safe because we filter only to edges //noinspection unchecked return (GraphTraversal<T, Edge>) traversal.hasNot(Schema.VertexProperty.ID.name()); }
private Set<Concept> getConcepts(Schema.VertexProperty key, Object value) { Set<Concept> concepts = new HashSet<>(); getTinkerTraversal().V().has(key.name(), value).forEachRemaining(v -> concepts.add(factory().buildConcept(v))); return concepts; }
private GraphTraversal<Vertex, Vertex> vertexTraversal(GraphTraversal<Vertex, ? extends Element> traversal) { // A vertex should always be looked up by vertex property, not the actual vertex ID which may be incorrect. // This is because a vertex may represent a reified relation, which will use the original edge ID as an ID. // We know only vertices have this property, so the cast is safe //noinspection unchecked return (GraphTraversal<Vertex, Vertex>) traversal.has(Schema.VertexProperty.ID.name(), id().getValue()); }
@Override public void safeMap(final Vertex vertex, final MapEmitter<Serializable, Set<ConceptId>> emitter) { if (vertex.property((String) persistentProperties.get(DegreeVertexProgram.DEGREE)).isPresent() && vertexHasSelectedTypeId(vertex, selectedTypes)) { String degreePropertyKey = (String) persistentProperties.get(DegreeVertexProgram.DEGREE); Long centralityCount = vertex.value(degreePropertyKey); ConceptId conceptId = ConceptId.of(vertex.value(Schema.VertexProperty.ID.name())); emitter.emit(centralityCount, Collections.singleton(conceptId)); } else { emitter.emit(NullObject.instance(), Collections.emptySet()); } }
static <T> GraphTraversal<T, Vertex> inSubs(GraphTraversal<T, Vertex> traversal) { // These traversals make sure to only navigate types by checking they do not have a `THING_TYPE_LABEL_ID` property return union(traversal, ImmutableSet.of( __.<Vertex>not(__.has(THING_TYPE_LABEL_ID.name())).not(__.hasLabel(Schema.BaseType.SHARD.name())), __.repeat(__.in(SUB.getLabel())).emit() )).unfold(); }