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
如何使用REST端点与neo4j SPARQLPlugin一起工作_Neo4j - Fatal编程技术网

如何使用REST端点与neo4j SPARQLPlugin一起工作

如何使用REST端点与neo4j SPARQLPlugin一起工作,neo4j,Neo4j,我试图在数据库中没有数据的新安装文件夹上运行带有neo4j 2.0 M06的SPARQLPlugin,但我找不到如何调用REST端点的示例。是否有一个示例可以说明如何使用rest端点与SPARQL一起使用 我正在试用chrome高级rest客户端,如下所示 我得到如下错误响应: { "message" : "java.lang.String cannot be cast to java.util.Map", "exception" : "BadInputException", "f

我试图在数据库中没有数据的新安装文件夹上运行带有neo4j 2.0 M06的SPARQLPlugin,但我找不到如何调用REST端点的示例。是否有一个示例可以说明如何使用rest端点与SPARQL一起使用

我正在试用chrome高级rest客户端,如下所示

我得到如下错误响应:

{
  "message" : "java.lang.String cannot be cast to java.util.Map",
  "exception" : "BadInputException",
  "fullname" : "org.neo4j.server.rest.repr.BadInputException",
  "stacktrace" : [ "org.neo4j.server.rest.repr.formats.JsonFormat.readMap(JsonFormat.java:92)", "org.neo4j.server.rest.repr.RepresentationFormat.readParameterList(RepresentationFormat.java:97)", "org.neo4j.server.rest.web.ExtensionService.invokeGraphDatabaseExtension(ExtensionService.java:134)", "java.lang.reflect.Method.invoke(Unknown Source)", "org.neo4j.server.rest.transactional.TransactionalRequestDispatcher.dispatch(TransactionalRequestDispatcher.java:132)", "org.neo4j.server.rest.security.SecurityFilter.doFilter(SecurityFilter.java:112)", "java.lang.Thread.run(Unknown Source)" ],
  "cause" : {
    "message" : "java.lang.String cannot be cast to java.util.Map",
    "exception" : "ClassCastException",
    "stacktrace" : [ "org.neo4j.server.rest.domain.JsonHelper.jsonToMap(JsonHelper.java:53)", "org.neo4j.server.rest.repr.formats.JsonFormat.readMap(JsonFormat.java:88)", "org.neo4j.server.rest.repr.RepresentationFormat.readParameterList(RepresentationFormat.java:97)", "org.neo4j.server.rest.web.ExtensionService.invokeGraphDatabaseExtension(ExtensionService.java:134)", "java.lang.reflect.Method.invoke(Unknown Source)", "org.neo4j.server.rest.transactional.TransactionalRequestDispatcher.dispatch(TransactionalRequestDispatcher.java:132)", "org.neo4j.server.rest.security.SecurityFilter.doFilter(SecurityFilter.java:112)", "java.lang.Thread.run(Unknown Source)" ],
    "fullname" : "java.lang.ClassCastException"
  }
}
我已经检查过该插件是否已加载到neo4j中,并且当我做了一些愚蠢的事情时,它也会抛出错误,因此我假设它可以工作。所以我真的很期待看到如何使用它

编辑:

正如下面所建议的,这里是堆栈跟踪,当我在有效负载周围包含{}时,我将返回500个状态

    {
  "message" : "com/tinkerpop/blueprints/impls/neo4j/Neo4jGraph",
  "exception" : "NoClassDefFoundError",
  "fullname" : "java.lang.NoClassDefFoundError",
  "stacktrace" : [ "org.neo4j.server.plugin.sparql.SPARQLPlugin.initSail(SPARQLPlugin.java:90)", "org.neo4j.server.plugin.sparql.SPARQLPlugin.executeInsert(SPARQLPlugin.java:113)", "java.lang.reflect.Method.invoke(Unknown Source)", "org.neo4j.server.plugins.PluginMethod.invoke(PluginMethod.java:61)", "org.neo4j.server.plugins.PluginManager.invoke(PluginManager.java:168)", "org.neo4j.server.rest.web.ExtensionService.invokeGraphDatabaseExtension(ExtensionService.java:312)", "org.neo4j.server.rest.web.ExtensionService.invokeGraphDatabaseExtension(ExtensionService.java:134)", "java.lang.reflect.Method.invoke(Unknown Source)", "org.neo4j.server.rest.transactional.TransactionalRequestDispatcher.dispatch(TransactionalRequestDispatcher.java:132)", "org.neo4j.server.rest.security.SecurityFilter.doFilter(SecurityFilter.java:112)", "java.lang.Thread.run(Unknown Source)" ],
  "cause" : {
    "message" : "com.tinkerpop.blueprints.impls.neo4j.Neo4jGraph",
    "exception" : "ClassNotFoundException",
    "stacktrace" : [ "java.net.URLClassLoader$1.run(Unknown Source)", "java.net.URLClassLoader$1.run(Unknown Source)", "java.security.AccessController.doPrivileged(Native Method)", "java.net.URLClassLoader.findClass(Unknown Source)", "java.lang.ClassLoader.loadClass(Unknown Source)", "sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)", "java.lang.ClassLoader.loadClass(Unknown Source)", "org.neo4j.server.plugin.sparql.SPARQLPlugin.initSail(SPARQLPlugin.java:90)", "org.neo4j.server.plugin.sparql.SPARQLPlugin.executeInsert(SPARQLPlugin.java:113)", "java.lang.reflect.Method.invoke(Unknown Source)", "org.neo4j.server.plugins.PluginMethod.invoke(PluginMethod.java:61)", "org.neo4j.server.plugins.PluginManager.invoke(PluginManager.java:168)", "org.neo4j.server.rest.web.ExtensionService.invokeGraphDatabaseExtension(ExtensionService.java:312)", "org.neo4j.server.rest.web.ExtensionService.invokeGraphDatabaseExtension(ExtensionService.java:134)", "java.lang.reflect.Method.invoke(Unknown Source)", "org.neo4j.server.rest.transactional.TransactionalRequestDispatcher.dispatch(TransactionalRequestDispatcher.java:132)", "org.neo4j.server.rest.security.SecurityFilter.doFilter(SecurityFilter.java:112)", "java.lang.Thread.run(Unknown Source)" ],
    "fullname" : "java.lang.ClassNotFoundException"
  }
}
我最初没有包括这一点,因为我假设这是一个关于如何将数据发布到端点的错误

编辑3

我尝试使用mvn包-DskipTests再次构建插件,因为这次测试失败,将它指向插件pom.xml中blueprint的2.4.0,并下载了blueprint的正确版本missing blueprints-neo4j-graph-2.4.0.jar for blueprint。之后,我看到了一个新的错误,但这次看起来它越来越近了,可能是版本不匹配了。知道这是什么吗

{
  "message" : "org.neo4j.kernel.impl.core.NodeManager.getGraphProperties()Lorg/neo4j/kernel/impl/core/GraphProperties;",
  "exception" : "NoSuchMethodError",
  "fullname" : "java.lang.NoSuchMethodError",
  "stacktrace" : [ "com.tinkerpop.blueprints.impls.neo4j.Neo4jGraph.getInternalIndexKeys(Neo4jGraph.java:235)", "com.tinkerpop.blueprints.impls.neo4j.Neo4jGraph.loadKeyIndices(Neo4jGraph.java:175)", "com.tinkerpop.blueprints.impls.neo4j.Neo4jGraph.<init>(Neo4jGraph.java:140)", "com.tinkerpop.blueprints.impls.neo4j.Neo4jGraph.<init>(Neo4jGraph.java:144)", "org.neo4j.server.plugin.sparql.SPARQLPlugin.initSail(SPARQLPlugin.java:90)", "org.neo4j.server.plugin.sparql.SPARQLPlugin.executeInsert(SPARQLPlugin.java:113)", "java.lang.reflect.Method.invoke(Unknown Source)", "org.neo4j.server.plugins.PluginMethod.invoke(PluginMethod.java:61)", "org.neo4j.server.plugins.PluginManager.invoke(PluginManager.java:168)", "org.neo4j.server.rest.web.ExtensionService.invokeGraphDatabaseExtension(ExtensionService.java:312)", "org.neo4j.server.rest.web.ExtensionService.invokeGraphDatabaseExtension(ExtensionService.java:134)", "java.lang.reflect.Method.invoke(Unknown Source)", "org.neo4j.server.rest.transactional.TransactionalRequestDispatcher.dispatch(TransactionalRequestDispatcher.java:132)", "org.neo4j.server.rest.security.SecurityFilter.doFilter(SecurityFilter.java:112)", "java.lang.Thread.run(Unknown Source)" ]
}
查询还返回了一个类似的错误:

{
  "message" : "org.neo4j.kernel.impl.core.NodeManager.getGraphProperties()Lorg/neo4j/kernel/impl/core/GraphProperties;",
  "exception" : "NoSuchMethodError",
  "fullname" : "java.lang.NoSuchMethodError",
  "stacktrace" : [ "com.tinkerpop.blueprints.impls.neo4j.Neo4jGraph.getInternalIndexKeys(Neo4jGraph.java:235)", "com.tinkerpop.blueprints.impls.neo4j.Neo4jGraph.loadKeyIndices(Neo4jGraph.java:175)", "com.tinkerpop.blueprints.impls.neo4j.Neo4jGraph.<init>(Neo4jGraph.java:140)", "com.tinkerpop.blueprints.impls.neo4j.Neo4jGraph.<init>(Neo4jGraph.java:144)", "org.neo4j.server.plugin.sparql.SPARQLPlugin.initSail(SPARQLPlugin.java:90)", "org.neo4j.server.plugin.sparql.SPARQLPlugin.executeSPARQL(SPARQLPlugin.java:61)", "java.lang.reflect.Method.invoke(Unknown Source)", "org.neo4j.server.plugins.PluginMethod.invoke(PluginMethod.java:61)", "org.neo4j.server.plugins.PluginManager.invoke(PluginManager.java:168)", "org.neo4j.server.rest.web.ExtensionService.invokeGraphDatabaseExtension(ExtensionService.java:312)", "org.neo4j.server.rest.web.ExtensionService.invokeGraphDatabaseExtension(ExtensionService.java:134)", "java.lang.reflect.Method.invoke(Unknown Source)", "org.neo4j.server.rest.transactional.TransactionalRequestDispatcher.dispatch(TransactionalRequestDispatcher.java:132)", "org.neo4j.server.rest.security.SecurityFilter.doFilter(SecurityFilter.java:112)", "java.lang.Thread.run(Unknown Source)" ]
}

谢谢Kiran关于你的问题如果有一个例子的话,我会说看看Peter Neubauer的这篇文章,但它看起来像那样或类似的东西,这正是你正在尝试的。您是否在寻找其他类型的文档

至于您的问题,异常表明,当插件处理您发送的数据时,它希望其json解析器生成能够生成映射的内容,但解析器生成字符串。由于无法将字符串强制转换为映射,因此它会抛出ClassCastException。json解析器查找字符串而不是映射的原因可能是您省略了应该开始和结束json负载的大括号{},以表示它是JSONObject,而JSONObject又可以反序列化为映射。尝试添加大括号,看看这是否解决了问题

编辑: 第二个异常表明服务器插件缺少对蓝图的依赖。您可以通过获取兼容版本的blueprints-neo4j-graph.jar并将其放在插件类路径上的目录中来解决这个问题。我认为你需要一个2.5的快照构建才能与Neo4j 2.0.x一起使用,谷歌表示你可能会找到一个

编辑: 考试怎么会不及格?那是你应该开始寻找的地方

第三个异常表示版本不匹配。如果缺少另一个依赖项,则更有可能出现另一个NoClassDefFoundError。使用NoSuchMethodError时,类装入器正在查找该类,但该类没有预期的方法,因此被调用对象必须是与调用对象预期的不同版本的类的实例。你自己和Maven一起建的?然后跑

mvn dependency:tree -Dverbose
并寻找冲突


我从来没有使用SPARQL插件,至少再过几个星期就不会了,所以我只能从一般的答案到你的细节——你可能想考虑是否会得到更多的关注,发布一个新的问题,强调java类加载方面而不是NeN4J和SPARQL插件,或者是专门为Neo4j&SPARQL插件安装量身定做的。

上有一个在线完整测试的示例,应该可以让您开始。

我不确定这是否真的是我问题的答案,但我尝试将其构建为针对1.9.2的,并将jar文件放在plugins\gremlin1.5下,它可以工作!!!看起来这在2.0.0 M06上有问题

我确实尝试了{},但在这种情况下,我得到了以下消息fullname:java.lang.NoClassDefFoundError,stacktrace:[org.neo4j.server.plugin.sparql.SPARQLPlugin.initSailSPARQLPlugin.java:90消息:com.tinkerpop.blueprints.impls.neo4j.Neo4jGraph,异常:ClassNotFoundException,这是另一个问题。如果您需要帮助,可以使用完整的堆栈跟踪编辑此问题,或提出新问题。谢谢,我已在我的第一篇帖子。@Kiran,更新了我对你的第二个例外的回答。这个问题可能对你有帮助:我试过了,现在离它更近了一步,但看起来好像还有一个例外需要克服。你知道这一次会是什么吗?-谢谢Kiran,你的负载不应该是map/json对象,即在它周围加上花括号吗?@MichaelHunger:事实上,我所做的编辑是指我在有效负载周围添加花括号时遇到的例外情况。我确信我缺少了一些非常基本的东西,但不知道是什么。顺便说一句,我只是在下面的示例中尝试一下嘿,你找到了上一期编辑3的解决方案了吗?我有点陷入了同样的问题。。。@dafmetal:不太好,但我回到了1.9.2版本,它在那里工作
st必须修复POM并重新编译。@Kiran是的,我也开始这样做,向后移动一个版本。看起来blueprints-neo4j-graph代码需要更新才能与neo4j 2.0.0一起使用。我对代码库还不够精通?为了尝试我的手,它修补它虽然…我实际上运行相同的非常例子,看起来像一些版本不匹配的问题。我已经根据我现在看到的内容编辑了这篇文章,在遵循了贾德伯格的建议之后。关于我为什么会得到最后一个例外,有什么线索吗?我并不是一个java程序员,对这些异常情况并不是那么迷茫。我从jjaderberg那里了解到,这可能是某个类找不到方法的问题,但我不知道是什么以及如何解决它。任何指点都会大有帮助。