是否可以使用Cypher通过restapi查询neo4jdb并返回节点的URI?

是否可以使用Cypher通过restapi查询neo4jdb并返回节点的URI?,neo4j,cypher,Neo4j,Cypher,背景: 我正在使用一个本地运行的Neo4J实例(localhost:7474),并通过一个Java适配器访问它,该适配器通过RESTAPI(Jersey)使用Cypher,并使运行在同一服务器上的Grails应用程序可以访问数据 问题: 是否可以使用Cypher通过restapi查询neo4jdb并返回节点的URI?现在,我可以检查Neo4J服务器状态、创建节点、填充节点属性、查询和创建关系。 我的问题是,我的“添加关系”和遍历代码需要一个节点URI作为输入。我可以查询节点并获得描述结果的正确J

背景:

我正在使用一个本地运行的Neo4J实例(localhost:7474),并通过一个Java适配器访问它,该适配器通过RESTAPI(Jersey)使用Cypher,并使运行在同一服务器上的Grails应用程序可以访问数据

问题:

是否可以使用Cypher通过restapi查询neo4jdb并返回节点的URI?现在,我可以检查Neo4J服务器状态、创建节点、填充节点属性、查询和创建关系。 我的问题是,我的“添加关系”和遍历代码需要一个节点URI作为输入。我可以查询节点并获得描述结果的正确JSON,但似乎无法获得URI位置

以下是我的getUserByEmail代码的简化版本:

public URI getUserByEmail( String email )
{
    System.out.println( "GETTING USER BY EMAIL [" + email + "]..." );

    String queryStr = "MATCH (user) WHERE user.nodetype=\'user\' and user.email=\'" + email + "\' RETURN user";

    WebResource webResource = client.resource( ROOT_URI + "/transaction/commit" );

    String payload = "{\"statements\" : [ {\"statement\" : \"" + queryStr + "\"} ]}";

    ClientResponse response = webResource
        .accept( MediaType.APPLICATION_JSON )
        .type( MediaType.APPLICATION_JSON )
        .entity( payload )
        .post( ClientResponse.class );

    String responseStr = response.getEntity( String.class );
    URI responseLocation = response.getLocation();

    System.out.println( "RESPONSE STRING: " + responseStr );
    System.out.println( "GOT USER AT: [" + responseLocation + "]" );

    return responseLocation;
}
JSON结果很好地反映了graph db中的内容。但是,该位置始终为空

我使用的“addrelationship”代码可以工作,只要我有到起始节点的URI。我拥有的代码基于此处的addRelationship()代码:


您可以自己创建节点uri,只需将节点内部id附加到以下url即可:


可能您希望在更改数据库位置时,将配置文件中的方案、主机和数据库端口设置为不进行硬代码更改。

在您的情况下,您可以通过将节点内部id附加到以下url来创建节点uri:


可能您希望在更改数据库位置时,将配置文件中的方案、主机和数据库端口设置为不进行硬代码更改。

在JSON结果中,每个“用户”的
self
属性值将是其URI

响应有2个“n”节点,每个节点的
self
属性值是其URI


如何让事务端点(通常比传统端点更详细)也返回
self
属性。

在JSON结果中,每个“用户”的
self
属性值将是其URI

响应有2个“n”节点,每个节点的
self
属性值是其URI


如何让事务端点(通常比传统端点更详细)同时返回
self
属性。

从何处获取内部id?我在JSON响应中得到的只是我在node.match(n)return id(n)中创建的实际数据,我从哪里获得内部id?我在JSON响应中得到的只是我在node.match(n)return id(n)中创建的实际数据,该示例用于创建。我对查找节点的查询感兴趣。当我执行这样一个查询时,我不会返回示例中显示的所有扩展数据。我只是获取我创建的域级数据。也许我需要使用示例中的端点,而不是事务性密码端点?谢谢!看来这会解决我的问题。我今晚会试试看。作为澄清,该示例是否也适用于匹配,或仅适用于CREATE语句?是的。唯一重要的是
RETURN
子句是什么样子的。该示例用于执行create。我对查找节点的查询感兴趣。当我执行这样一个查询时,我不会返回示例中显示的所有扩展数据。我只是获取我创建的域级数据。也许我需要使用示例中的端点,而不是事务性密码端点?谢谢!看来这会解决我的问题。我今晚会试试看。作为澄清,该示例是否也适用于匹配,或仅适用于CREATE语句?是的。唯一重要的是
RETURN
子句的外观。