我们使用语义在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;
}
}
Tee结构如下所示:
在保存树时,我们正在进行深度优先搜索并为每个节点创建三元组:
<
documenturi >
childof <
documenturi >
并将其保存在一个集合中。
每次迭代我们都会添加一个新的三元组,其中child成为下一个孩子的父母,直到到达树的底部并将其添加到同一个集合中。
该集合包含特定层次树的所有三元组。
现在问题是从集合中检索三元组时我们无法控制三元组的顺序。
1。当我们触发SPARQL查询时,Marklogic检索三元组的默认顺序是什么?
2。有没有办法可以按插入的相同顺序或反向顺序检索三元组?
答案 0 :(得分:2)
MarkLogic中没有关于插入顺序等内容的概念。此外,在运行SPARQL查询时(如MarkLogic中的许多优化查询),原始文档不会被触及,而只是保存值的索引。我没有想到任何事情&#39;默认&#39;会帮助你。您可能需要根据三元组中的信息或通过RDF的其他信息来构建更强大的SPARQL查询以进行推理。
这两个文件可能有所帮助:
https://developer.marklogic.com/features/semantics/path-examples
https://developer.marklogic.com/features/semantics/inference-examples