Определение того, связаны ли 2 вершины с краем с использованием Orientdb 3 и tinkerpop 3

Я пытался просмотреть документацию. Я просто пытаюсь найти простой пример для идентификации, как указано в заголовке, если две вершины соединены друг с другом. Это для OrientDB 3 с использованием чертежей tinkerpop API 2.6. Пример: вершина v1; вершина v2;

boolean connected = false;

connected = <somefunction returns true/false if v1 and v2 connected by an edge>;

Может кто-нибудь привести пример, если они видели что-то подобное?


person doubleace3    schedule 20.09.2018    source источник
comment
Привет, @doubleace3, ты пробовал другую версию OrientDB и Tinkerpop?   -  person ldacrema    schedule 24.09.2018
comment
Нет, но как это поможет? немного шокирован тем, что нет способа узнать, имеет ли вершина A связь с вершиной B?   -  person doubleace3    schedule 25.09.2018


Ответы (2)


попробуй это:

String db_name = "dbname";
String path = "remote:localhost/" + db_name;

OrientDB orientDB = new OrientDB("remote:localhost", "username", "password", OrientDBConfig.defaultConfig());

try(ODatabaseSession db = orientDB.open(db_name,"username","password")) 
{
    ORID theEdge = new ORecordId("edge_rid");
    OEdge e = db.load(theEdge);

    ORID theVertex = new ORecordId("v1_rid");
    OVertex v1 = db.load(theVertex);

    ORID theVertex2 = new ORecordId("v2_rid");
    OVertex v2 = db.load(theVertex2);

    boolean connected = false;
    OVertex from = e.getFrom();
    OVertex to = e.getTo();

    if(from.getIdentity().equals(v1) && to.getIdentity().equals(v2))
    {
        connected = true;
    }

    if(connected)
    {
        System.out.println("Vertex v1: " + from.getIdentity());
        System.out.println("Vertex v2: " + to.getIdentity());
    }
}



Надеюсь, это поможет

С уважением

person Michela Bonizzi    schedule 26.09.2018
comment
Привет .. у вас есть пример использования tinkerpop 3.0? - person doubleace3; 02.10.2018

Вам нужно перебрать ребра одной вершины (v1) и проверить, соединяется ли она с другой вершиной (v2):

OrientVertex v1,v2; 
for (Edge e : (Iterable<Edge>)() ->  v1.edges(Direction.OUT)) 
    if (e.vertices(Direction.IN).next().id().equals(v2.id())) {
    }
person Mihai Bucica    schedule 28.09.2018
comment
Попытка избежать использования цикла for. Также ищу решение Tinkerpop. - person doubleace3; 02.10.2018