Exemple #1
0
def test_parse_gremlin_path_elements(gremlin_parser):
    # parse path with elements
    v = Vertex("foo")
    v2 = Vertex("bar")
    e1 = Edge("e1", "foo", "label", "bar")
    p = Path(labels=["vertex", "label", "vertex"], objects=[v, e1, v2])
    out = gremlin_parser.gremlin_results_to_dict([p])
    df = pd.DataFrame.from_records(out)
    row = df.iloc[0]
    assert df.shape == (1, 3)
    assert row[0] == {"id": "foo", "label": "vertex"}
    assert row[1] == {"id": "e1", "label": "label", "outV": "foo", "inV": "bar"}
    assert row[2] == {"id": "bar", "label": "vertex"}

    # parse path with multiple elements
    e2 = Edge("bar", "out1", "label", "in2")
    v3 = Vertex("in2")
    p1 = Path(labels=["vertex", "label", "vertex"], objects=[v2, e2, v3])
    out = gremlin_parser.gremlin_results_to_dict([p, p1])
    df = pd.DataFrame.from_records(out)
    row = df.iloc[1]
    assert df.shape == (2, 3)
    assert row[0] == {"id": "bar", "label": "vertex"}
    assert row[1] == {"id": "bar", "label": "label", "outV": "out1", "inV": "in2"}
    assert row[2] == {"id": "in2", "label": "vertex"}

    # parse path with maps
    p = Path(
        labels=["vertex", "label", "vertex"],
        objects=[{"name": "foo", "age": 29}, {"dist": 32}, {"name": "bar", "age": 40}],
    )
    out = gremlin_parser.gremlin_results_to_dict([p])
    df = pd.DataFrame.from_records(out)
    row = df.iloc[0]
    assert df.shape == (1, 3)
    assert row[0]["name"] == "foo"
    assert row[0]["age"] == 29
    assert row[1]["dist"] == 32
    assert row[2]["name"] == "bar"
    assert row[2]["age"] == 40

    # parse path with mixed elements and maps
    p = Path(
        labels=["vertex", "label", "vertex"],
        objects=[{"name": "foo", "age": 29}, Edge("bar", "out1", "label", "in2"), {"name": "bar", "age": 40}],
    )
    out = gremlin_parser.gremlin_results_to_dict([p])
    df = pd.DataFrame.from_records(out)
    row = df.iloc[0]
    assert df.shape == (1, 3)
    assert row[0]["name"] == "foo"
    assert row[0]["age"] == 29
    assert row[1] == {"id": "bar", "label": "label", "outV": "out1", "inV": "in2"}
    assert row[2]["name"] == "bar"
    assert row[2]["age"] == 40
Exemple #2
0
 def test_edge(self):
     x = Edge(123, Vertex(1, 'person'), "developed", Vertex(10, "software"))
     output = self.graphbinary_reader.readObject(
         self.graphbinary_writer.writeObject(x))
     assert x == output
     assert x.inV == output.inV
     assert x.outV == output.outV
    def test_graph(self):
        # TODO: this assert is not compatible with python 3 and now that we test with both 2 and 3 it fails
        assert {"@type": "g:Vertex",
                "@value": {"id": {"@type": "g:Int64", "@value": 12}, "label": "person"}} == json.loads(
            self.graphson_writer.writeObject(Vertex(long(12), "person")))

        assert {"@type": "g:Edge", "@value": {"id": {"@type": "g:Int32", "@value": 7},
                                              "outV": {"@type": "g:Int32", "@value": 0},
                                              "outVLabel": "person",
                                              "label": "knows",
                                              "inV": {"@type": "g:Int32", "@value": 1},
                                              "inVLabel": "dog"}} == json.loads(
            self.graphson_writer.writeObject(Edge(7, Vertex(0, "person"), "knows", Vertex(1, "dog"))))
        assert {"@type": "g:VertexProperty", "@value": {"id": "blah", "label": "keyA", "value": True,
                                                        "vertex": "stephen"}} == json.loads(
            self.graphson_writer.writeObject(VertexProperty("blah", "keyA", True, Vertex("stephen"))))

        assert {"@type": "g:Property",
                "@value": {"key": "name", "value": "marko", "element": {"@type": "g:VertexProperty",
                                                                        "@value": {
                                                                            "vertex": "vertexId",
                                                                            "id": {"@type": "g:Int32", "@value": 1234},
                                                                            "label": "aKey"}}}} == json.loads(
            self.graphson_writer.writeObject(
                Property("name", "marko", VertexProperty(1234, "aKey", 21345, Vertex("vertexId")))))

        vertex = self.graphson_reader.readObject(self.graphson_writer.writeObject(Vertex(1, "person")))
        assert 1 == vertex.id
        assert "person" == vertex.label

        edge = self.graphson_reader.readObject(
            self.graphson_writer.writeObject(Edge(3, Vertex(1, "person"), "knows", Vertex(2, "dog"))))
        assert "knows" == edge.label
        assert 3 == edge.id
        assert 1 == edge.outV.id
        assert 2 == edge.inV.id

        vertex_property = self.graphson_reader.readObject(
            self.graphson_writer.writeObject(VertexProperty(1, "age", 32, Vertex(1))))
        assert 1 == vertex_property.id
        assert "age" == vertex_property.key
        assert 32 == vertex_property.value

        property = self.graphson_reader.readObject(self.graphson_writer.writeObject(Property("age", 32.2, Edge(1,Vertex(2),"knows",Vertex(3)))))
        assert "age" == property.key
        assert 32.2 == property.value
Exemple #4
0
 def _read_edge(cls, b, r):
     edgeid = r.readObject(b)
     edgelbl = r.toObject(b, DataType.string, False)
     inv = Vertex(r.readObject(b), r.toObject(b, DataType.string, False))
     outv = Vertex(r.readObject(b), r.toObject(b, DataType.string, False))
     edge = Edge(edgeid, outv, edgelbl, inv)
     b.read(4)
     return edge
 def test_graph(self):
     vertex = self.graphson_reader.readObject("""
     {"@type":"g:Vertex", "@value":{"id":{"@type":"g:Int32","@value":1},"label":"person","outE":{"created":[{"id":{"@type":"g:Int32","@value":9},"inV":{"@type":"g:Int32","@value":3},"properties":{"weight":{"@type":"g:Double","@value":0.4}}}],"knows":[{"id":{"@type":"g:Int32","@value":7},"inV":{"@type":"g:Int32","@value":2},"properties":{"weight":{"@type":"g:Double","@value":0.5}}},{"id":{"@type":"g:Int32","@value":8},"inV":{"@type":"g:Int32","@value":4},"properties":{"weight":{"@type":"g:Double","@value":1.0}}}]},"properties":{"name":[{"id":{"@type":"g:Int64","@value":0},"value":"marko"}],"age":[{"id":{"@type":"g:Int64","@value":1},"value":{"@type":"g:Int32","@value":29}}]}}}"""
                                              )
     assert isinstance(vertex, Vertex)
     assert "person" == vertex.label
     assert 1 == vertex.id
     assert isinstance(vertex.id, int)
     assert vertex == Vertex(1)
     ##
     vertex = self.graphson_reader.readObject("""
     {"@type":"g:Vertex", "@value":{"id":{"@type":"g:Float","@value":45.23}}}"""
                                              )
     assert isinstance(vertex, Vertex)
     assert 45.23 == vertex.id
     assert isinstance(vertex.id, FloatType)
     assert "vertex" == vertex.label
     assert vertex == Vertex(45.23)
     ##
     vertex_property = self.graphson_reader.readObject("""
     {"@type":"g:VertexProperty", "@value":{"id":"anId","label":"aKey","value":true,"vertex":{"@type":"g:Int32","@value":9}}}"""
                                                       )
     assert isinstance(vertex_property, VertexProperty)
     assert "anId" == vertex_property.id
     assert "aKey" == vertex_property.label
     assert vertex_property.value
     assert vertex_property.vertex == Vertex(9)
     ##
     vertex_property = self.graphson_reader.readObject("""
     {"@type":"g:VertexProperty", "@value":{"id":{"@type":"g:Int32","@value":1},"label":"name","value":"marko"}}"""
                                                       )
     assert isinstance(vertex_property, VertexProperty)
     assert 1 == vertex_property.id
     assert "name" == vertex_property.label
     assert "marko" == vertex_property.value
     assert vertex_property.vertex is None
     ##
     edge = self.graphson_reader.readObject("""
     {"@type":"g:Edge", "@value":{"id":{"@type":"g:Int64","@value":17},"label":"knows","inV":"x","outV":"y","inVLabel":"xLab","properties":{"aKey":"aValue","bKey":true}}}"""
                                            )
     # print edge
     assert isinstance(edge, Edge)
     assert 17 == edge.id
     assert "knows" == edge.label
     assert edge.inV == Vertex("x", "xLabel")
     assert edge.outV == Vertex("y", "vertex")
     ##
     property = self.graphson_reader.readObject("""
     {"@type":"g:Property", "@value":{"key":"aKey","value":{"@type":"g:Int64","@value":17},"element":{"@type":"g:Edge","@value":{"id":{"@type":"g:Int64","@value":122},"label":"knows","inV":"x","outV":"y","inVLabel":"xLab"}}}}"""
                                                )
     # print property
     assert isinstance(property, Property)
     assert "aKey" == property.key
     assert 17 == property.value
     assert Edge(122, Vertex("x"), "knows", Vertex("y")) == property.element
Exemple #6
0
def test_parse_gremlin_edge_elements(gremlin_parser):
    # parse edge elements
    v = Edge("foo", "out1", "label", "in1")
    input = [v]
    out = gremlin_parser.gremlin_results_to_dict(input)
    df = pd.DataFrame.from_records(out)
    row = df.iloc[0]
    assert df.shape == (1, 4)
    assert row["id"] == "foo"
    assert row["outV"] == "out1"
    assert row["label"] == "label"
    assert row["inV"] == "in1"

    # parse multiple edge elements
    v1 = Edge("bar", "out1", "label", "in2")
    input = [v, v1]
    out = gremlin_parser.gremlin_results_to_dict(input)
    df = pd.DataFrame.from_records(out)
    row = df.iloc[1]
    assert df.shape == (2, 4)
    assert row["id"] == "bar"
    assert row["outV"] == "out1"
    assert row["label"] == "label"
    assert row["inV"] == "in2"
Exemple #7
0
 def test_graph_objects(self):
     vertex = Vertex(1)
     assert "v[1]" == str(vertex)
     assert "vertex" == vertex.label
     assert "person" == Vertex(1, "person").label
     assert vertex == Vertex(1)
     #
     edge = Edge(2, Vertex(1), "said", Vertex("hello", "phrase"))
     assert "e[2][1-said->hello]" == str(edge)
     assert Vertex(1) == edge.outV
     assert Vertex("hello") == edge.inV
     assert "said" == edge.label
     assert "phrase" == edge.inV.label
     assert edge.inV != edge.outV
     #
     vertex_property = VertexProperty(long(24), "name", "marko", Vertex(1))
     assert "vp[name->marko]" == str(vertex_property)
     assert "name" == vertex_property.label
     assert "name" == vertex_property.key
     assert "marko" == vertex_property.value
     assert long(24) == vertex_property.id
     assert Vertex(1) == vertex_property.vertex
     assert isinstance(vertex_property.id, long)
     assert vertex_property == VertexProperty(long(24), "name", "marko",
                                              Vertex(1))
     #
     property = Property("age", 29, Vertex(1))
     assert "p[age->29]" == str(property)
     assert "age" == property.key
     assert 29 == property.value
     assert Vertex(1) == property.element
     assert isinstance(property.value, int)
     assert property == Property("age", 29, Vertex(1))
     if not six.PY3:
         assert property != Property("age", long(29), Vertex(1))
     #
     for i in [vertex, edge, vertex_property, property]:
         for j in [vertex, edge, vertex_property, property]:
             if type(i) != type(j):
                 assert i != j
             else:
                 assert i == j
                 assert i.__hash__() == hash(i)
Exemple #8
0
    def test_graph(self):
        assert {"@type": "g:Vertex",
                "@value": {"id": {"@type": "g:Int64", "@value": 12}, "label": "person"}} == json.loads(
            self.graphson_writer.writeObject(Vertex(12l, "person")))
        assert {"@type": "g:Edge", "@value": {"id": {"@type": "g:Int32", "@value": 7},
                                              "outV": {"@type": "g:Int32", "@value": 0},
                                              "outVLabel": "person",
                                              "label": "knows",
                                              "inV": {"@type": "g:Int32", "@value": 1},
                                              "inVLabel": "dog"}} == json.loads(
            self.graphson_writer.writeObject(Edge(7, Vertex(0, "person"), "knows", Vertex(1, "dog"))))
        assert {"@type": "g:VertexProperty", "@value": {"id": "blah", "label": "keyA", "value": True,
                                                        "vertex": "stephen"}} == json.loads(
            self.graphson_writer.writeObject(VertexProperty("blah", "keyA", True, Vertex("stephen"))))

        assert {"@type": "g:Property",
                "@value": {"key": "name", "value": "marko", "element": {"@type": "g:VertexProperty",
                                                                        "@value": {
                                                                            "vertex": "vertexId",
                                                                            "id": "anId",
                                                                            "label": "aKey"}}}} == json.loads(
            self.graphson_writer.writeObject(
                Property("name", "marko", VertexProperty("anId", "aKey", 21345, Vertex("vertexId")))))
    def test_graph(self):
        # TODO: this assert is not compatible with python 3 and now that we test with both 2 and 3 it fails
        assert {"@type": "g:Vertex", "@value": {"id": {"@type": "g:Int64", "@value": 12}, "label": "person"}} == json.loads(self.graphson_writer.writeObject(Vertex(long(12), "person")))

        assert {"@type": "g:Edge", "@value": {"id": {"@type": "g:Int32", "@value": 7},
                                              "outV": {"@type": "g:Int32", "@value": 0},
                                              "outVLabel": "person",
                                              "label": "knows",
                                              "inV": {"@type": "g:Int32", "@value": 1},
                                              "inVLabel": "dog"}} == json.loads(
            self.graphson_writer.writeObject(Edge(7, Vertex(0, "person"), "knows", Vertex(1, "dog"))))
        assert {"@type": "g:VertexProperty", "@value": {"id": "blah", "label": "keyA", "value": True,
                                                        "vertex": "stephen"}} == json.loads(
            self.graphson_writer.writeObject(VertexProperty("blah", "keyA", True, Vertex("stephen"))))

        assert {"@type": "g:Property",
                "@value": {"key": "name", "value": "marko", "element": {"@type": "g:VertexProperty",
                                                                        "@value": {
                                                                            "vertex": "vertexId",
                                                                            "id": {"@type": "g:Int32", "@value": 1234},
                                                                            "label": "aKey"}}}} == json.loads(
            self.graphson_writer.writeObject(
                Property("name", "marko", VertexProperty(1234, "aKey", 21345, Vertex("vertexId")))))
 def objectify(cls, d, reader):
     return Edge(
         reader.toObject(d["id"]),
         Vertex(reader.toObject(d["outV"]), d.get("outVLabel", "vertex")),
         d.get("label", "edge"),
         Vertex(reader.toObject(d["inV"]), d.get("inVLabel", "vertex")))
Exemple #11
0
 def _objectify(self, dict):
     value = dict[_SymbolHelper._VALUE]
     return Edge(GraphSONReader._objectify(value["id"]),
                 Vertex(GraphSONReader._objectify(value["outV"]), ""),
                 value["label"] if "label" in value else "vertex",
                 Vertex(GraphSONReader._objectify(value["inV"]), ""))