如何使用SPARQL返回完整的树?

我正在尝试为公司内部网站构建POC搜索引擎。我正在使用GraphDB,并在其中放置了一些基本数据,如下所示:

Page -hasField-> Field

Field -hasOption-> Option

并非所有字段都有选项。所有类型都有我要搜索的标签。我想返回的是任何PageFieldOption,其标签包含文本,从包含报告到节点的路径以及所有节点和节点的标签。一路走来。因此,如果页面名称包含文本,则仅返回页面及其标签。如果一个选项包含文本Page -hasField-> Field -hasOption-> Option,则还将返回其所有标签。这样一来,我们可以更好地描述为什么要返回页面以及用户如何与页面进行交互以获得所需的结果。

在我看来,我已将问题分为三部分,并为每部分找到了各种解决方案,但我似乎无法将它们联系在一起。首先是找到节点和它们所属的报告(轻松完成)。

第二个是沿着路径查找所有三元组。虽然我可以通过对关系进行硬编码来做到这一点,但我还是希望保持这种通用性,以便在构建图时自动获取新的关系。

第三种方法是将结果结构化为树,每个页面为根,FieldsOptions嵌套在一起,以便应用程序能够将页面显示为结果,并包含每个页面的描述下方的匹配字段/选项。我发现,如果我将CONSTRUCT与JSON-LD一起使用作为输出格式(目前正在测试所有三元组),这将为我提供大部分帮助,但是并不能构建树与列出每个节点以及子节点的URI一样多。我读过您可以对此进行“框架化”,但是我不确定这是否是在SParqL或应用程序中完成的。

所以,总结一下我的问题:

  • 是否可以使用SParqL以我想要的格式(或至少可以在其中轻松完成应用程序中其余部分的大部分方式)获取我想要的信息?
  • 我是否正在正确考虑问题?如果没有,我应该怎么考虑呢?
  • 是否可以返回构成两个节点之间路径的所有三元组?更具体地说,如果我有节点对列表,是否可以返回构成所有对之间的所有路径的所有三元组?
  • 是否可以采用先前的三元组结果并将其转换为JSON中的树?最好使用“框架”还是我应该搜索其他术语?
epkaixuan 回答:如何使用SPARQL返回完整的树?

我认为您应该使用LuceneElasticsearch连接器,因为您面临的是全文搜索问题(“标签包含文本”)。

这些连接器允许您指定一堆索引路径(“ FTS分子”)。不过,它仍然是固定的路径集,您不能说“任何道具先出然后向任何方向分支”。

要返回匹配字段,请使用Snippet extraction

关于另一个问题“是否可以返回组成两个节点之间路径的所有三元组?”:在探索所有路径的一般情况下,这在SPARQL中是不可能的(可以使用SPARQL属性路径探索道具的某些组合,但您不能在道具路径中使用变量)。 Blazegraph和Stardog有一些相关的扩展。

本文链接:https://www.f2er.com/3115992.html

大家都在问