删除 GraphDB 存储库后导入状态仍然存在

import status lingers after GraphDB repository deleted

GraphDB Free/9.4.1, RDF4J/3.3.1

我正在努力使用 /rest/data/import/server/{repo-id} 端点来启动 RDF/XML 文件的导入。

步骤:

  1. 将SysML.owl放入${graphdb.workbench.importDirectory}目录。 chmod a+r SysML.owl

  2. 创建存储库 test1(在 Workbench - 使用除 RepositoryID 之外的所有默认值:=“test1”)

  3. curl http://127.0.0.1:7200/rest/data/import/server/test1 => 如预期的那样: [{"名称":"SysML.owl","状态":"NONE"..."时间戳":1606848520821,...]

  4. curl -XPOST --header 'Content-Type: application/json' --header 'Accept: application/json' -d ' { "fileNames":[ "SysML.owl" ] }' http://127.0.0.1:7200/rest/data/import/server/test1 => SC==202

  5. 60 秒后,卷曲 http://127.0.0.1:7200/rest/data/import/server/test1 => [{"name":"SysML.owl","status":"DONE","message":"7s导入成功。","context":null,"replaceGraphs":[],"baseURI" : "file:/home/steve/graphdb-import/SysML.owl", "forceSerial":false,"type":"file","format":null,"data":null,"timestamp": 1606848637716, [...其他 json 内容已删除] 存储库 test1 现在有来自 SysML.owl 的 263,119(824 个推断)语句已加载

但是如果我那时

  1. 使用位于 http://localhost:7200/repository 的 Workbench 页面删除存储库,等待 180 秒
  2. curl http://127.0.0.1:7200/rest/data/import/server/test => 与上面的第 5 步相同,尽管存储库已被删除。 curl -X GET --header 'Accept: application/json' 'http://localhost:7200/rest/repositories' => test1 未显示。
  3. 再次创建存储库,使用 Workbench - 与之前相同的设置。等待 60 秒。存在最初的 70 个陈述。
  4. 卷曲 http://127.0.0.1:7200/rest/data/import/server/test1 => 与早期使用相同的输出 - 当我使用先前的存储库实例时。 "status":"DONE", 相同的时间戳 - 在我删除的时间之前,重新创建了 test1 存储库。

main-2020-12-01.log 显示了与存储库 test1、插件注册等相关的信息消息。没有任何信息表明先前存储库实例的导入状态为何持续存在。

这很令人担忧,因为我希望使用一些状态轮询来确定何时加载数据,以便我的处理可以继续进行。一些好消息——我可以再次发出导入服务器文件请求,等待 60 秒后,出现了 263,119 条语句。但是导入的时间戳是早期回购实例的时间戳。它没有通过最新的导入请求重置。

我可能遗漏了一些清理步骤,希望有人知道是哪一个。

谢谢, -史蒂夫

该状态仅供您参考,并不代表存储库中数据的实际存在。您可以通过清除存储库中的所有数据而不重新创建它来实现类似的目的。

如果您真的需要依赖这些状态记录,您可以在轮询并确定它已完成(或开始导入之前)后使用此 curl 清除给定文件的状态:

curl -X DELETE http://127.0.0.1:7200/rest/data/import/server/test1/status \
     -H 'content-type: application/json' -d '["SysML.owl"]'

请注意,这是一个未记录的 API,它可能会更改,恕不另行通知。