Search in sources :

Example 26 with Edge

use of com.tinkerpop.blueprints.Edge in project titan by thinkaurelius.

the class AbstractGenerator method addEdge.

protected final Edge addEdge(Graph graph, Vertex out, Vertex in) {
    Edge e = graph.addEdge(null, out, in, label);
    edgeAnnotator.annotate(e);
    return e;
}
Also used : Edge(com.tinkerpop.blueprints.Edge)

Example 27 with Edge

use of com.tinkerpop.blueprints.Edge in project incubator-atlas by apache.

the class AtlasEntityTagQuery method getQueryPipe.

@Override
protected Pipe getQueryPipe() {
    GremlinPipeline p;
    if (guid.equals("*")) {
        p = new GremlinPipeline().has(Constants.ENTITY_TEXT_PROPERTY_KEY).hasNot(Constants.ENTITY_TYPE_PROPERTY_KEY, "Taxonomy").outE();
    } else {
        p = new GremlinPipeline().has(Constants.GUID_PROPERTY_KEY, guid).outE();
    }
    // todo: this is basically the same pipeline used in TagRelation.asPipe()
    p.add(new FilterFunctionPipe<>(new PipeFunction<Edge, Boolean>() {

        @Override
        public Boolean compute(Edge edge) {
            String type = edge.getVertex(Direction.OUT).getProperty(Constants.ENTITY_TYPE_PROPERTY_KEY);
            VertexWrapper v = new TermVertexWrapper(edge.getVertex(Direction.IN));
            return edge.getLabel().startsWith(type) && v.getPropertyKeys().contains("available_as_tag");
        }
    }));
    return p.inV();
}
Also used : GremlinPipeline(com.tinkerpop.gremlin.java.GremlinPipeline) TermVertexWrapper(org.apache.atlas.catalog.TermVertexWrapper) TermVertexWrapper(org.apache.atlas.catalog.TermVertexWrapper) VertexWrapper(org.apache.atlas.catalog.VertexWrapper) PipeFunction(com.tinkerpop.pipes.PipeFunction) Edge(com.tinkerpop.blueprints.Edge)

Example 28 with Edge

use of com.tinkerpop.blueprints.Edge in project incubator-atlas by apache.

the class TraitRelation method traverse.

@Override
public Collection<RelationSet> traverse(VertexWrapper vWrapper) {
    Vertex v = vWrapper.getVertex();
    Collection<VertexWrapper> vertices = new ArrayList<>();
    for (Edge e : v.getEdges(Direction.OUT)) {
        if (e.getLabel().startsWith(v.<String>getProperty(Constants.ENTITY_TYPE_PROPERTY_KEY))) {
            VertexWrapper trait = new TermVertexWrapper(e.getVertex(Direction.IN));
            if (!trait.getPropertyKeys().contains("available_as_tag") && !isDeleted(trait.getVertex())) {
                vertices.add(trait);
            }
        }
    }
    return Collections.singletonList(new RelationSet("traits", vertices));
}
Also used : Vertex(com.tinkerpop.blueprints.Vertex) TermVertexWrapper(org.apache.atlas.catalog.TermVertexWrapper) TermVertexWrapper(org.apache.atlas.catalog.TermVertexWrapper) VertexWrapper(org.apache.atlas.catalog.VertexWrapper) ArrayList(java.util.ArrayList) Edge(com.tinkerpop.blueprints.Edge)

Example 29 with Edge

use of com.tinkerpop.blueprints.Edge in project orientdb by orientechnologies.

the class OGraphMLReader method inputGraph.

/**
 * Input the GraphML stream data into the graph. More control over how data is streamed is provided by this method.
 *
 * @param inputGraph
 *          the graph to populate with the GraphML data
 * @param graphMLInputStream
 *          an InputStream of GraphML data
 * @param bufferSize
 *          the amount of elements to hold in memory before committing a transactions (only valid for TransactionalGraphs)
 * @param vertexIdKey
 *          if the id of a vertex is a &lt;data/&gt; property, fetch it from the data property.
 * @param edgeIdKey
 *          if the id of an edge is a &lt;data/&gt; property, fetch it from the data property.
 * @param edgeLabelKey
 *          if the label of an edge is a &lt;data/&gt; property, fetch it from the data property.
 * @throws IOException
 *           thrown when the GraphML data is not correctly formatted
 */
public OGraphMLReader inputGraph(final Graph inputGraph, final InputStream graphMLInputStream, int bufferSize, String vertexIdKey, String edgeIdKey, String edgeLabelKey) throws IOException {
    XMLInputFactory inputFactory = XMLInputFactory.newInstance();
    try {
        XMLStreamReader reader = inputFactory.createXMLStreamReader(graphMLInputStream);
        final OrientBaseGraph graph = (OrientBaseGraph) inputGraph;
        if (storeVertexIds)
            graph.setSaveOriginalIds(storeVertexIds);
        Map<String, String> keyIdMap = new HashMap<String, String>();
        Map<String, String> keyTypesMaps = new HashMap<String, String>();
        // <Mapped ID String, ID Object>
        // <Default ID String, Mapped ID String>
        Map<String, ORID> vertexMappedIdMap = new HashMap<String, ORID>();
        // Buffered Vertex Data
        String vertexId = null;
        Map<String, Object> vertexProps = null;
        boolean inVertex = false;
        // Buffered Edge Data
        String edgeId = null;
        String edgeLabel = null;
        String vertexLabel = null;
        // [0] = outVertex , [1] = inVertex
        Vertex[] edgeEndVertices = null;
        Map<String, Object> edgeProps = null;
        boolean inEdge = false;
        int bufferCounter = 0;
        long importedVertices = 0;
        long importedEdges = 0;
        while (reader.hasNext()) {
            Integer eventType = reader.next();
            if (eventType.equals(XMLEvent.START_ELEMENT)) {
                String elementName = reader.getName().getLocalPart();
                if (elementName.equals(GraphMLTokens.KEY)) {
                    String id = reader.getAttributeValue(null, GraphMLTokens.ID);
                    String attributeName = reader.getAttributeValue(null, GraphMLTokens.ATTR_NAME);
                    String attributeType = reader.getAttributeValue(null, GraphMLTokens.ATTR_TYPE);
                    keyIdMap.put(id, attributeName);
                    keyTypesMaps.put(id, attributeType);
                } else if (elementName.equals(GraphMLTokens.NODE)) {
                    vertexId = reader.getAttributeValue(null, GraphMLTokens.ID);
                    vertexLabel = reader.getAttributeValue(null, LABELS);
                    if (vertexLabel != null) {
                        if (vertexLabel.startsWith(":"))
                            // REMOVE : AS PREFIX
                            vertexLabel = vertexLabel.substring(1);
                        final String[] vertexLabels = vertexLabel.split(":");
                        // GET ONLY FIRST LABEL AS CLASS
                        vertexLabel = vertexId + ",class:" + vertexLabels[vertexLabelIndex];
                    } else
                        vertexLabel = vertexId;
                    inVertex = true;
                    vertexProps = new HashMap<String, Object>();
                } else if (elementName.equals(GraphMLTokens.EDGE)) {
                    edgeId = reader.getAttributeValue(null, GraphMLTokens.ID);
                    edgeLabel = reader.getAttributeValue(null, GraphMLTokens.LABEL);
                    edgeLabel = edgeLabel == null ? GraphMLTokens._DEFAULT : edgeLabel;
                    String[] vertexIds = new String[2];
                    vertexIds[0] = reader.getAttributeValue(null, GraphMLTokens.SOURCE);
                    vertexIds[1] = reader.getAttributeValue(null, GraphMLTokens.TARGET);
                    edgeEndVertices = new Vertex[2];
                    for (int i = 0; i < 2; i++) {
                        // i=0 => outVertex, i=1 => inVertex
                        if (vertexIdKey == null) {
                            edgeEndVertices[i] = null;
                        } else {
                            final Object vId = vertexMappedIdMap.get(vertexIds[i]);
                            edgeEndVertices[i] = vId != null ? graph.getVertex(vId) : null;
                        }
                        if (null == edgeEndVertices[i]) {
                            edgeEndVertices[i] = graph.addVertex(vertexLabel);
                            if (vertexIdKey != null) {
                                mapId(vertexMappedIdMap, vertexIds[i], (ORID) edgeEndVertices[i].getId());
                            }
                            bufferCounter++;
                            importedVertices++;
                            printStatus(reader, importedVertices, importedEdges);
                        }
                    }
                    inEdge = true;
                    vertexLabel = null;
                    edgeProps = new HashMap<String, Object>();
                } else if (elementName.equals(GraphMLTokens.DATA)) {
                    String key = reader.getAttributeValue(null, GraphMLTokens.KEY);
                    String attributeName = keyIdMap.get(key);
                    if (attributeName == null)
                        attributeName = key;
                    String value = reader.getElementText();
                    if (inVertex) {
                        if ((vertexIdKey != null) && (key.equals(vertexIdKey))) {
                            // Should occur at most once per Vertex
                            vertexId = value;
                        } else if (attributeName.equalsIgnoreCase(LABELS)) {
                        // IGNORE LABELS
                        } else {
                            final Object attrValue = typeCastValue(key, value, keyTypesMaps);
                            final OGraphMLImportStrategy strategy = vertexPropsStrategy.get(attributeName);
                            if (strategy != null) {
                                attributeName = strategy.transformAttribute(attributeName, attrValue);
                            }
                            if (attributeName != null)
                                vertexProps.put(attributeName, attrValue);
                        }
                    } else if (inEdge) {
                        if ((edgeLabelKey != null) && (key.equals(edgeLabelKey)))
                            edgeLabel = value;
                        else if ((edgeIdKey != null) && (key.equals(edgeIdKey)))
                            edgeId = value;
                        else {
                            final Object attrValue = typeCastValue(key, value, keyTypesMaps);
                            final OGraphMLImportStrategy strategy = edgePropsStrategy.get(attributeName);
                            if (strategy != null) {
                                attributeName = strategy.transformAttribute(attributeName, attrValue);
                            }
                            if (attributeName != null)
                                edgeProps.put(attributeName, attrValue);
                        }
                    }
                }
            } else if (eventType.equals(XMLEvent.END_ELEMENT)) {
                String elementName = reader.getName().getLocalPart();
                if (elementName.equals(GraphMLTokens.NODE)) {
                    ORID currentVertex = null;
                    if (vertexIdKey != null)
                        currentVertex = vertexMappedIdMap.get(vertexId);
                    if (currentVertex == null) {
                        final OrientVertex v = graph.addVertex(vertexLabel, vertexProps);
                        if (vertexIdKey != null)
                            mapId(vertexMappedIdMap, vertexId, v.getIdentity());
                        bufferCounter++;
                        importedVertices++;
                        printStatus(reader, importedVertices, importedEdges);
                    } else {
                        // UPDATE IT
                        final OrientVertex v = graph.getVertex(currentVertex);
                        v.setProperties(vertexProps);
                    }
                    vertexId = null;
                    vertexLabel = null;
                    vertexProps = null;
                    inVertex = false;
                } else if (elementName.equals(GraphMLTokens.EDGE)) {
                    Edge currentEdge = ((OrientVertex) edgeEndVertices[0]).addEdge(null, (OrientVertex) edgeEndVertices[1], edgeLabel, null, edgeProps);
                    bufferCounter++;
                    importedEdges++;
                    printStatus(reader, importedVertices, importedEdges);
                    edgeId = null;
                    edgeLabel = null;
                    edgeEndVertices = null;
                    edgeProps = null;
                    inEdge = false;
                }
            }
            if (bufferCounter > bufferSize) {
                graph.commit();
                bufferCounter = 0;
            }
        }
        reader.close();
        graph.commit();
    } catch (Exception xse) {
        throw OException.wrapException(new ODatabaseImportException("Error on importing GraphML"), xse);
    }
    return this;
}
Also used : Vertex(com.tinkerpop.blueprints.Vertex) OrientVertex(com.tinkerpop.blueprints.impls.orient.OrientVertex) XMLStreamReader(javax.xml.stream.XMLStreamReader) HashMap(java.util.HashMap) ODatabaseImportException(com.orientechnologies.orient.core.db.tool.ODatabaseImportException) OrientVertex(com.tinkerpop.blueprints.impls.orient.OrientVertex) OrientBaseGraph(com.tinkerpop.blueprints.impls.orient.OrientBaseGraph) ODatabaseImportException(com.orientechnologies.orient.core.db.tool.ODatabaseImportException) OException(com.orientechnologies.common.exception.OException) IOException(java.io.IOException) ORID(com.orientechnologies.orient.core.id.ORID) Edge(com.tinkerpop.blueprints.Edge) XMLInputFactory(javax.xml.stream.XMLInputFactory)

Example 30 with Edge

use of com.tinkerpop.blueprints.Edge in project orientdb by orientechnologies.

the class OGraphSONUtility method objectNodeFromElement.

/**
 * Creates GraphSON for a single graph element.
 */
public ObjectNode objectNodeFromElement(final Element element) {
    final boolean isEdge = element instanceof Edge;
    final boolean showTypes = mode == GraphSONMode.EXTENDED;
    final List<String> propertyKeys = isEdge ? this.edgePropertyKeys : this.vertexPropertyKeys;
    final ElementPropertiesRule elementPropertyConfig = isEdge ? this.edgePropertiesRule : this.vertexPropertiesRule;
    final ObjectNode jsonElement = createJSONMap(createPropertyMap(element, propertyKeys, elementPropertyConfig, normalized), propertyKeys, showTypes);
    if ((isEdge && this.includeReservedEdgeId) || (!isEdge && this.includeReservedVertexId)) {
        putObject(jsonElement, GraphSONTokens._ID, element.getId());
    }
    // are graph implementations that have Edge extend from Vertex
    if (element instanceof Edge) {
        final Edge edge = (Edge) element;
        if (this.includeReservedEdgeId) {
            putObject(jsonElement, GraphSONTokens._ID, element.getId());
        }
        if (this.includeReservedEdgeType) {
            jsonElement.put(GraphSONTokens._TYPE, GraphSONTokens.EDGE);
        }
        if (this.includeReservedEdgeOutV) {
            putObject(jsonElement, GraphSONTokens._OUT_V, edge.getVertex(Direction.OUT).getId());
        }
        if (this.includeReservedEdgeInV) {
            putObject(jsonElement, GraphSONTokens._IN_V, edge.getVertex(Direction.IN).getId());
        }
        if (this.includeReservedEdgeLabel) {
            jsonElement.put(GraphSONTokens._LABEL, edge.getLabel());
        }
    } else if (element instanceof Vertex) {
        if (this.includeReservedVertexId) {
            putObject(jsonElement, GraphSONTokens._ID, element.getId());
        }
        if (this.includeReservedVertexType) {
            jsonElement.put(GraphSONTokens._TYPE, GraphSONTokens.VERTEX);
        }
    }
    return jsonElement;
}
Also used : Vertex(com.tinkerpop.blueprints.Vertex) ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode) ElementPropertiesRule(com.tinkerpop.blueprints.util.io.graphson.ElementPropertyConfig.ElementPropertiesRule) Edge(com.tinkerpop.blueprints.Edge)

Aggregations

Edge (com.tinkerpop.blueprints.Edge)214 Vertex (com.tinkerpop.blueprints.Vertex)141 Test (org.junit.Test)53 Graph (com.tinkerpop.blueprints.Graph)49 TinkerGraph (com.tinkerpop.blueprints.impls.tg.TinkerGraph)49 HashSet (java.util.HashSet)28 OrientVertex (com.tinkerpop.blueprints.impls.orient.OrientVertex)13 ArrayList (java.util.ArrayList)13 Collection (java.util.Collection)11 JSONObject (org.codehaus.jettison.json.JSONObject)11 HashMap (java.util.HashMap)10 OrientEdge (com.tinkerpop.blueprints.impls.orient.OrientEdge)9 OrientGraph (com.tinkerpop.blueprints.impls.orient.OrientGraph)9 OCommandSQL (com.orientechnologies.orient.core.sql.OCommandSQL)8 Map (java.util.Map)8 OrientBaseGraph (com.tinkerpop.blueprints.impls.orient.OrientBaseGraph)7 ODocument (com.orientechnologies.orient.core.record.impl.ODocument)6 OSQLSynchQuery (com.orientechnologies.orient.core.sql.query.OSQLSynchQuery)6 KeyIndexableGraph (com.tinkerpop.blueprints.KeyIndexableGraph)6 URI (org.openrdf.model.URI)6