Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Nosql 每个方向具有不同名称的方向关系_Nosql_Neo4j_Graph Databases_Orientdb - Fatal编程技术网

Nosql 每个方向具有不同名称的方向关系

Nosql 每个方向具有不同名称的方向关系,nosql,neo4j,graph-databases,orientdb,Nosql,Neo4j,Graph Databases,Orientdb,在GraphDB平台(Neo4j、OrientDB、FlockDB、HyperGraphDB…)中,可以定义节点之间的关系 我需要定义方向关系,这样关系根据其方向具有不同的名称 例如: Parent(A,B) := Sibling(B,A). Call(A,B) := Answer(B,A); TalkWith(A,B) := Call(A,B) || Call(B,A) 然后,我想使用术语和方向遍历或查询一个图 当然,我不想定义两个关系,但只定义一个 有时我甚至想使用非方向性名称,例如:

在GraphDB平台(Neo4j、OrientDB、FlockDB、HyperGraphDB…)中,可以定义节点之间的关系

我需要定义方向关系,这样关系根据其方向具有不同的名称

例如:

Parent(A,B) := Sibling(B,A).
Call(A,B) := Answer(B,A);
TalkWith(A,B) := Call(A,B) || Call(B,A)
然后,我想使用术语和方向遍历或查询一个图

当然,我不想定义两个关系,但只定义一个

有时我甚至想使用非方向性名称,例如:

Parent(A,B) := Sibling(B,A).
Call(A,B) := Answer(B,A);
TalkWith(A,B) := Call(A,B) || Call(B,A)
并使用定向或间接遍历/查询

例如,我可能想问:

Get any X that TalkWith(A,X))


哪些现有的GraphDB平台支持它?

这听起来像是UI级别的问题,而不是数据库级别的问题。您正在尝试将定向关系映射到一个对人类友好的名称

对于Neo4j,您可以将此信息放入自定义RelationshipType中:

public enum MyRelationshipType implements RelationshipType
{
    CHILD("Parent Of", "Child Of");

    public MyRelationshipType(final String forwardString, final String backwardString)
    {
        this.forwardString = forwardString;
        this.backwardString = backwardString;
    }

    private final String backwardString;

    private final String forwardString;

    public String getDisplayString(final boolean forward)
    {
        if (forward)
        {
            return this.forwardString;
        }
        else
        {
            return this.backwardString;
        }
    }
}
实际上,我们有无向关系的概念。例如,“HasMet”:如果人A遇到了人B,那么B必然也遇到了A,并且A和B在关系中扮演相同的角色

请注意,单向性不仅仅是命名,它是一个核心语义概念,数据库或建模语言可能理解它,也可能不理解它

此外,在InfoGrid中,您可以定义一些遍历规范,并将它们别名为您喜欢的任何对象,包括基本遍历(转到与特定类型关系相关的邻居)或多步骤遍历(例如转到您母亲身边的叔叔)。

在Gremlin中(http://gremlin.tinkerpop.com),您可以根据数据中的显式内容创建抽象/隐式/推断关系。因此,您可以用这种方式定义推论

Gremlin在TinkerGraph、Neo4j、OrientDB、DEX和RDF Sail商店工作

希望有帮助,
Marko.

无向关系很好,但它仍然不能满足我的要求。我不确定这是否有用,因为在从数据库获取数据时,您必须执行MyRelationshipType.valueOf(relationshipRetrievedFromTheDb.name())或类似操作。也就是说,我自己实际上也使用了类似的模式:-)关于关系方向,你是对的,这不是DB问题:你可以在Neo4j中检索传出/传入关系或忽略方向。在我看来,Gremlin可以通过使用