Marklogic sparql查询默认检索顺序

Marklogic sparql query default retrieval order

我们正在使用语义在 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;
}
}

三通结构如下图:

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

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

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

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

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

2。有没有一种方法可以按相同的插入顺序或相反的顺序检索三元组?

MarkLogic 中没有插入顺序等概念。此外,当 运行 SPARQL 查询(如 MarkLogic 中的许多优化查询)时,不会触及原始文档,而只是索引保存价值。我认为 'default' 对您没有任何帮助。您可能需要根据三元组中的信息或通过 RDF 的附加信息构建更强大的 SPARQL 查询以进行推理。

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

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

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