【问题标题】:Marklogic sparql query default retrieval orderMarklogic sparql 查询默认检索顺序
【发布时间】:2016-10-26 21:49:43
【问题描述】:

我们正在使用语义在 Marklogic 数据库中保存树结构。我们创建了一个名为“childof”的自定义谓词并存储子项。

Java 对象:

public class HierarchyTree {

private String documentUri;

private List<HierarchyTree> children;

public String getDocumentUri() {
    return documentUri;
}

public void setDocumentUri(String documentUri) {
    this.documentUri = documentUri;
}

public List<HierarchyTree> getChildren() {
    return children;
}

public void setChildren(List<HierarchyTree> children) {
    this.children = children;
}
}

三通结构如下图:

在保存树的同时,我们进行深度优先搜索并为每个节点创建三元组: &lt;documenturi&gt;childof &lt;documenturi&gt; 并将其保存在集合中。

在每次迭代中,我们添加一个新的三元组,其中子节点成为下一个子节点的父节点,直到到达树的底部并将其添加到同一个集合中。

该集合包含特定层次结构树的所有三元组。

现在的问题是,在从集合中检索三元组时,我们无法控制三元组的顺序。

1.当我们触发 SPARQL 查询时,Marklogic 检索三元组的默认顺序是什么?

2。有没有办法可以按插入顺序或相反顺序检索三元组?

【问题讨论】:

    标签: marklogic marklogic-8


    【解决方案1】:

    MarkLogic 中没有插入顺序等概念。此外,在运行 SPARQL 查询时(就像 MarkLogic 中的许多优化查询一样),原始文档不会被触及,而只是保存值的索引。我认为任何“默认”都不会在这里为您提供帮助。您可能会根据三元组中的信息或通过 RDF 的额外 h 信息来构建更强大的 SPARQL 查询以进行推理。

    这两个文件可能会有所帮助:

    https://developer.marklogic.com/features/semantics/path-examples

    https://developer.marklogic.com/features/semantics/inference-examples

    【讨论】:

    • 感谢您的回答大卫。我们在 Java 层中对此进行了编码。无论检索三元组的顺序如何,我都编写了方法来构建正确的树层次结构。
    • 没问题。请帮助保持 StackOverflow 有用。如果提供的答案是正确的,请标记为正确。否则,请详细说明,以便其他人提供帮助。
    猜你喜欢
    • 2019-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多