我有一组用MarkLogic 9.06管理的XML文档。每个文档都包含(非托管)sem:triple元素,它们声明“ rdf:type”三元组和“ rdfs:label”三元组:
pip2 install --user neovim
我注意到,对于每个(MarkLogic)集合,都包含一个包含三元组的文档,相应的“命名图”包含一组(自动生成的)三元组,因此,如果文档属于“ collection_1”和“ collection_2” ,执行XQuery,例如:
<sem:triple xmlns:sem="http://marklogic.com/semantics">
<sem:subject>abc</sem:subject>
<sem:predicate>http://www.w3.org/1999/02/22-rdf-syntax-ns#type
</sem:predicate>
<sem:object>http://purl.org/dc/terms/BibliographicResource
</sem:object>
</sem:triple>
<sem:triple xmlns:sem="http://marklogic.com/semantics">
<sem:subject>abc</sem:subject>
<sem:predicate>http://www.w3.org/2000/01/rdf-schema#label
</sem:predicate>
<sem:object datatype="http://www.w3.org/2001/XMLSchema#string">abc
</sem:object>
</sem:triple>
就回答命名图查询而言,冗余语句似乎无害(?),但这是正常的MarkLogic行为,还是我做错了什么?
答案 0 :(得分:0)
尚不清楚您如何准确地存储三元组,所以让我解释一下这两种情况。
使用托管三元组(那些插入了SPARQL Update或sem:rdf-insert的三元组),它们将被存储在所谓的<sem:triples>
文档中,其中只有一个与图形iri匹配的集合。如果在多个图形中插入相同的三元组,则每个图形都将以不同的sem:triples文档结尾,该文档具有与每个图形虹膜相匹配的集合。
对于非托管(或我称为嵌入式三元组)的情况则略有不同。嵌入三元组的文档可以在任意数量的集合中。文档集合名称也可以用作图形虹膜,因此,如果某个文档只有一个三元组,但它本身在多个集合中,则该三元组将显示为SPARQL中多个图形的一部分。
所以,是的,这是预期的行为,就我个人而言,这不会造成危害。我认为存储是干净的,并且三元组将仅参与SPARQL中的多个图形。我会说方便而不是多余。
HTH!