Search in sources :

Example 1 with Vertex

use of com.baidu.hugegraph.structure.graph.Vertex in project incubator-hugegraph-toolchain by apache.

the class FusiformSimilarityApiTest method testFusiformSimilarityWithoutIntermediaryWithVertex.

@Test
public void testFusiformSimilarityWithoutIntermediaryWithVertex() {
    Vertex p1 = getVertex("person", "name", "p1");
    Vertex p2 = getVertex("person", "name", "p2");
    Vertex p3 = getVertex("person", "name", "p3");
    FusiformSimilarityRequest.Builder builder = FusiformSimilarityRequest.builder();
    builder.sources().label("person").property("name", "p1");
    builder.label("read").direction(Direction.OUT).minNeighbors(8).alpha(0.75D).groupProperty("city").minGroups(2).withIntermediary(false).withVertex(true);
    builder.capacity(-1).limit(-1);
    FusiformSimilarityRequest request = builder.build();
    FusiformSimilarity results = fusiformSimilarityAPI.post(request);
    Assert.assertEquals(1, results.size());
    Map.Entry<Object, Set<Similar>> entry = results.first();
    Assert.assertEquals(p1.id(), entry.getKey());
    Assert.assertEquals(2, entry.getValue().size());
    Set<Similar> similars = entry.getValue();
    for (Similar similar : similars) {
        if (similar.id().equals(p2.id())) {
            Assert.assertEquals(ImmutableSet.of(), similar.intermediaries());
        } else {
            Assert.assertEquals(p3.id(), similar.id());
            Assert.assertEquals(ImmutableSet.of(), similar.intermediaries());
        }
    }
    Set<Vertex> vertices = ImmutableSet.of(p1, p2, p3);
    Assert.assertEquals(vertices, results.vertices());
}
Also used : FusiformSimilarity(com.baidu.hugegraph.structure.traverser.FusiformSimilarity) Vertex(com.baidu.hugegraph.structure.graph.Vertex) ImmutableSet(com.google.common.collect.ImmutableSet) Set(java.util.Set) FusiformSimilarityRequest(com.baidu.hugegraph.structure.traverser.FusiformSimilarityRequest) Similar(com.baidu.hugegraph.structure.traverser.FusiformSimilarity.Similar) ImmutableMap(com.google.common.collect.ImmutableMap) Map(java.util.Map) Test(org.junit.Test)

Example 2 with Vertex

use of com.baidu.hugegraph.structure.graph.Vertex in project incubator-hugegraph-toolchain by apache.

the class FusiformSimilarityApiTest method testFusiformSimilarityWithIntermediaryAndVertex.

@Test
public void testFusiformSimilarityWithIntermediaryAndVertex() {
    Vertex p1 = getVertex("person", "name", "p1");
    Vertex p2 = getVertex("person", "name", "p2");
    Vertex p3 = getVertex("person", "name", "p3");
    Vertex b2 = getVertex("book", "name", "b2");
    Vertex b3 = getVertex("book", "name", "b3");
    Vertex b4 = getVertex("book", "name", "b4");
    Vertex b5 = getVertex("book", "name", "b5");
    Vertex b6 = getVertex("book", "name", "b6");
    Vertex b7 = getVertex("book", "name", "b7");
    Vertex b8 = getVertex("book", "name", "b8");
    Vertex b9 = getVertex("book", "name", "b9");
    Object p1Id = p1.id();
    Object p2Id = p2.id();
    Object p3Id = p3.id();
    Object b2Id = b2.id();
    Object b3Id = b3.id();
    Object b4Id = b4.id();
    Object b5Id = b5.id();
    Object b6Id = b6.id();
    Object b7Id = b7.id();
    Object b8Id = b8.id();
    Object b9Id = b9.id();
    FusiformSimilarityRequest.Builder builder = FusiformSimilarityRequest.builder();
    builder.sources().label("person").property("name", "p1");
    builder.label("read").direction(Direction.OUT).minNeighbors(8).alpha(0.75D).groupProperty("city").minGroups(2).withIntermediary(true).withVertex(true);
    builder.capacity(-1).limit(-1);
    FusiformSimilarityRequest request = builder.build();
    FusiformSimilarity results = fusiformSimilarityAPI.post(request);
    Assert.assertEquals(1, results.size());
    Map.Entry<Object, Set<Similar>> entry = results.first();
    Assert.assertEquals(p1Id, entry.getKey());
    Assert.assertEquals(2, entry.getValue().size());
    Set<Similar> similars = entry.getValue();
    Set<Object> p2Inter = ImmutableSet.of(b2Id, b3Id, b4Id, b5Id, b6Id, b7Id, b8Id, b9Id);
    Set<Object> p3Inter = ImmutableSet.of(b3Id, b4Id, b5Id, b6Id, b7Id, b8Id, b9Id);
    for (Similar similar : similars) {
        if (similar.id().equals(p2Id)) {
            Assert.assertEquals(p2Inter, similar.intermediaries());
        } else {
            Assert.assertEquals(p3Id, similar.id());
            Assert.assertEquals(p3Inter, similar.intermediaries());
        }
    }
    Set<Vertex> vertices = ImmutableSet.of(p1, p2, p3, b2, b3, b4, b5, b6, b7, b8, b9);
    Assert.assertEquals(vertices, results.vertices());
}
Also used : FusiformSimilarity(com.baidu.hugegraph.structure.traverser.FusiformSimilarity) Vertex(com.baidu.hugegraph.structure.graph.Vertex) ImmutableSet(com.google.common.collect.ImmutableSet) Set(java.util.Set) FusiformSimilarityRequest(com.baidu.hugegraph.structure.traverser.FusiformSimilarityRequest) Similar(com.baidu.hugegraph.structure.traverser.FusiformSimilarity.Similar) ImmutableMap(com.google.common.collect.ImmutableMap) Map(java.util.Map) Test(org.junit.Test)

Example 3 with Vertex

use of com.baidu.hugegraph.structure.graph.Vertex in project incubator-hugegraph-toolchain by apache.

the class FusiformSimilarityApiTest method testFusiformSimilarityWithIntermediaryWithoutVertex.

@Test
public void testFusiformSimilarityWithIntermediaryWithoutVertex() {
    Vertex p1 = getVertex("person", "name", "p1");
    Vertex p2 = getVertex("person", "name", "p2");
    Vertex p3 = getVertex("person", "name", "p3");
    Vertex b2 = getVertex("book", "name", "b2");
    Vertex b3 = getVertex("book", "name", "b3");
    Vertex b4 = getVertex("book", "name", "b4");
    Vertex b5 = getVertex("book", "name", "b5");
    Vertex b6 = getVertex("book", "name", "b6");
    Vertex b7 = getVertex("book", "name", "b7");
    Vertex b8 = getVertex("book", "name", "b8");
    Vertex b9 = getVertex("book", "name", "b9");
    Object p1Id = p1.id();
    Object p2Id = p2.id();
    Object p3Id = p3.id();
    Object b2Id = b2.id();
    Object b3Id = b3.id();
    Object b4Id = b4.id();
    Object b5Id = b5.id();
    Object b6Id = b6.id();
    Object b7Id = b7.id();
    Object b8Id = b8.id();
    Object b9Id = b9.id();
    FusiformSimilarityRequest.Builder builder = FusiformSimilarityRequest.builder();
    builder.sources().label("person").property("name", "p1");
    builder.label("read").direction(Direction.OUT).minNeighbors(8).alpha(0.75D).groupProperty("city").minGroups(2).withIntermediary(true).withVertex(false);
    builder.capacity(-1).limit(-1);
    FusiformSimilarityRequest request = builder.build();
    FusiformSimilarity results = fusiformSimilarityAPI.post(request);
    Assert.assertEquals(1, results.size());
    Map.Entry<Object, Set<Similar>> entry = results.first();
    Assert.assertEquals(p1Id, entry.getKey());
    Assert.assertEquals(2, entry.getValue().size());
    Set<Similar> similars = entry.getValue();
    Set<Object> p2Inter = ImmutableSet.of(b2Id, b3Id, b4Id, b5Id, b6Id, b7Id, b8Id, b9Id);
    Set<Object> p3Inter = ImmutableSet.of(b3Id, b4Id, b5Id, b6Id, b7Id, b8Id, b9Id);
    for (Similar similar : similars) {
        if (similar.id().equals(p2Id)) {
            Assert.assertEquals(p2Inter, similar.intermediaries());
        } else {
            Assert.assertEquals(p3Id, similar.id());
            Assert.assertEquals(p3Inter, similar.intermediaries());
        }
    }
    Set<Vertex> vertices = ImmutableSet.of();
    Assert.assertEquals(vertices, results.vertices());
}
Also used : FusiformSimilarity(com.baidu.hugegraph.structure.traverser.FusiformSimilarity) Vertex(com.baidu.hugegraph.structure.graph.Vertex) ImmutableSet(com.google.common.collect.ImmutableSet) Set(java.util.Set) FusiformSimilarityRequest(com.baidu.hugegraph.structure.traverser.FusiformSimilarityRequest) Similar(com.baidu.hugegraph.structure.traverser.FusiformSimilarity.Similar) ImmutableMap(com.google.common.collect.ImmutableMap) Map(java.util.Map) Test(org.junit.Test)

Example 4 with Vertex

use of com.baidu.hugegraph.structure.graph.Vertex in project incubator-hugegraph-toolchain by apache.

the class FusiformSimilarityApiTest method testFusiformSimilarityWithMultiTimesEdges.

@Test
public void testFusiformSimilarityWithMultiTimesEdges() {
    Vertex p1 = getVertex("person", "name", "p1");
    Vertex p2 = getVertex("person", "name", "p2");
    Vertex p3 = getVertex("person", "name", "p3");
    Object id1 = p1.id();
    Object id2 = p2.id();
    Object id3 = p3.id();
    FusiformSimilarityRequest.Builder builder = FusiformSimilarityRequest.builder();
    builder.sources().ids(id1, id2, id3);
    builder.label("write").direction(Direction.OUT).minNeighbors(3).alpha(0.666D);
    builder.capacity(-1).limit(-1);
    FusiformSimilarityRequest request = builder.build();
    FusiformSimilarity results = fusiformSimilarityAPI.post(request);
    Assert.assertEquals(1, results.size());
    Map.Entry<Object, Set<Similar>> entry = results.first();
    Assert.assertEquals(id1, entry.getKey());
    Assert.assertEquals(1, entry.getValue().size());
    Set<Object> actual = entry.getValue().stream().map(Similar::id).collect(Collectors.toSet());
    Assert.assertEquals(ImmutableSet.of(id3), actual);
}
Also used : FusiformSimilarity(com.baidu.hugegraph.structure.traverser.FusiformSimilarity) Vertex(com.baidu.hugegraph.structure.graph.Vertex) ImmutableSet(com.google.common.collect.ImmutableSet) Set(java.util.Set) FusiformSimilarityRequest(com.baidu.hugegraph.structure.traverser.FusiformSimilarityRequest) ImmutableMap(com.google.common.collect.ImmutableMap) Map(java.util.Map) Test(org.junit.Test)

Example 5 with Vertex

use of com.baidu.hugegraph.structure.graph.Vertex in project incubator-hugegraph-toolchain by apache.

the class FusiformSimilarityApiTest method prepareSchemaAndGraph.

@BeforeClass
public static void prepareSchemaAndGraph() {
    schema().propertyKey("name").asText().ifNotExist().create();
    schema().propertyKey("city").asText().ifNotExist().create();
    schema().propertyKey("time").asDate().ifNotExist().create();
    schema().vertexLabel("person").properties("name", "city").primaryKeys("name").ifNotExist().create();
    schema().vertexLabel("book").properties("name").primaryKeys("name").ifNotExist().create();
    schema().edgeLabel("read").sourceLabel("person").targetLabel("book").ifNotExist().create();
    schema().edgeLabel("write").sourceLabel("person").targetLabel("book").properties("time").multiTimes().sortKeys("time").ifNotExist().create();
    Vertex p1 = graph().addVertex(T.label, "person", "name", "p1", "city", "Beijing");
    Vertex p2 = graph().addVertex(T.label, "person", "name", "p2", "city", "Shanghai");
    Vertex p3 = graph().addVertex(T.label, "person", "name", "p3", "city", "Beijing");
    Vertex b1 = graph().addVertex(T.label, "book", "name", "b1");
    Vertex b2 = graph().addVertex(T.label, "book", "name", "b2");
    Vertex b3 = graph().addVertex(T.label, "book", "name", "b3");
    Vertex b4 = graph().addVertex(T.label, "book", "name", "b4");
    Vertex b5 = graph().addVertex(T.label, "book", "name", "b5");
    Vertex b6 = graph().addVertex(T.label, "book", "name", "b6");
    Vertex b7 = graph().addVertex(T.label, "book", "name", "b7");
    Vertex b8 = graph().addVertex(T.label, "book", "name", "b8");
    Vertex b9 = graph().addVertex(T.label, "book", "name", "b9");
    Vertex b10 = graph().addVertex(T.label, "book", "name", "b10");
    // p1 read b1-b9 (9 books)
    p1.addEdge("read", b1);
    p1.addEdge("read", b2);
    p1.addEdge("read", b3);
    p1.addEdge("read", b4);
    p1.addEdge("read", b5);
    p1.addEdge("read", b6);
    p1.addEdge("read", b7);
    p1.addEdge("read", b8);
    p1.addEdge("read", b9);
    // p2 read b2-b10 (9 books)
    p2.addEdge("read", b2);
    p2.addEdge("read", b3);
    p2.addEdge("read", b4);
    p2.addEdge("read", b5);
    p2.addEdge("read", b6);
    p2.addEdge("read", b7);
    p2.addEdge("read", b8);
    p2.addEdge("read", b9);
    p2.addEdge("read", b10);
    // p3 read b3-b9 (7 books)
    p3.addEdge("read", b3);
    p3.addEdge("read", b4);
    p3.addEdge("read", b5);
    p3.addEdge("read", b6);
    p3.addEdge("read", b7);
    p3.addEdge("read", b8);
    p3.addEdge("read", b9);
    p1.addEdge("write", b1, "time", "2019-11-13 00:00:00");
    p1.addEdge("write", b1, "time", "2019-11-13 00:01:00");
    p1.addEdge("write", b1, "time", "2019-11-13 00:02:00");
    p1.addEdge("write", b2, "time", "2019-11-13 00:00:00");
    p1.addEdge("write", b2, "time", "2019-11-13 00:01:00");
    p1.addEdge("write", b3, "time", "2019-11-13 00:00:00");
    p1.addEdge("write", b3, "time", "2019-11-13 00:01:00");
    p2.addEdge("write", b1, "time", "2019-11-13 00:00:00");
    p2.addEdge("write", b1, "time", "2019-11-13 00:01:00");
    p2.addEdge("write", b1, "time", "2019-11-13 00:02:00");
    p3.addEdge("write", b2, "time", "2019-11-13 00:00:00");
    p3.addEdge("write", b2, "time", "2019-11-13 00:01:00");
    p3.addEdge("write", b3, "time", "2019-11-13 00:00:00");
    p3.addEdge("write", b3, "time", "2019-11-13 00:01:00");
    p3.addEdge("write", b3, "time", "2019-11-13 00:02:00");
}
Also used : Vertex(com.baidu.hugegraph.structure.graph.Vertex) BeforeClass(org.junit.BeforeClass)

Aggregations

Vertex (com.baidu.hugegraph.structure.graph.Vertex)165 Test (org.junit.Test)110 Edge (com.baidu.hugegraph.structure.graph.Edge)33 HugeClient (com.baidu.hugegraph.driver.HugeClient)22 ArrayList (java.util.ArrayList)21 SchemaManager (com.baidu.hugegraph.driver.SchemaManager)18 BaseClientTest (com.baidu.hugegraph.BaseClientTest)17 BeforeClass (org.junit.BeforeClass)17 GraphManager (com.baidu.hugegraph.driver.GraphManager)14 BatchVertexRequest (com.baidu.hugegraph.structure.graph.BatchVertexRequest)13 Path (com.baidu.hugegraph.structure.graph.Path)11 Result (com.baidu.hugegraph.structure.gremlin.Result)10 ResultSet (com.baidu.hugegraph.structure.gremlin.ResultSet)10 List (java.util.List)10 BaseApiTest (com.baidu.hugegraph.api.BaseApiTest)9 ImmutableList (com.google.common.collect.ImmutableList)6 ImmutableMap (com.google.common.collect.ImmutableMap)6 Map (java.util.Map)6 RestResult (com.baidu.hugegraph.rest.RestResult)5 PathsWithVertices (com.baidu.hugegraph.structure.traverser.PathsWithVertices)5