在单个SPARQL查询中可以插入的三元组数量是否有限制?

时间:2019-01-17 08:16:19

标签: sparql marklogic triples

使用markLogic版本8.0-6.3

我正在使用

在MarkLogic中插入和删除三元组
WITH <>
DELETE {}
INSERT {}
WHERE {}

条款。

在insert子句中,几乎有3000种三重模式,在运行查询时,我遇到以下错误。

  

** 2019-01-17 12:53:08.230注意:TaskServer:XDMP-UNEXPECTED:(err:XPST0003)意外的令牌内存已耗尽

当我在INSERT子句中将三元模式限制为2043时,就没有错误。

似乎可以一次插入三元组的数量有一定的限制,如果是这样的话,有任何方法可以增加该限制。

这是我的示例代码。

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX xs: <http://www.w3.org/2001/XMLSchema>
PREFIX skos-mla: <http://www.mlacustom.com#>
PREFIX term: <http://www.mla.com/term/>
PREFIX name: <http://www.mla.com/name/>
PREFIX work: <http://www.mla.com/work/>
PREFIX text: <http://www.mla.com/text/>
PREFIX rindicator: <http://www.mla.com/roleindicator/>
PREFIX facet: <http://www.mla.com/facet/>
PREFIX subfacet: <http://www.mla.com/subfacet/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
WITH <thesaurus-term>
DELETE {
    ?termiri skos-mla:hasSRsortCode ?predicate.
    ?termiri skos-mla:hasSSsortCode ?predicate.
    ?termiri skos-mla:hasVSsortCode ?predicate.
    ?termiri skos-mla:hasXSsortCode ?predicate.
    ?termiri skos-mla:hasZSsortCode ?predicate.   
} INSERT {
    term:1 skos-mla:hasZSsortCode 'aaa'.
    term:2582 skos-mla:hasZSsortCode 'aab'.
    term:162 skos-mla:hasZSsortCode 'aac'.
    term:136 skos-mla:hasZSsortCode 'aad'.
    term:709 skos-mla:hasZSsortCode 'aae'.
} WHERE {
    optional {?termiri skos-mla:hasSRsortCode ?predicate.}
    optional {?termiri skos-mla:hasSSsortCode ?predicate.}
    optional {?termiri skos-mla:hasVSsortCode ?predicate.}
    optional {?termiri skos-mla:hasXSsortCode ?predicate.}
    optional {?termiri skos-mla:hasZSsortCode ?predicate.}
}

1 个答案:

答案 0 :(得分:6)

对于where区域中的每个结果行,都执行该update语句的delete和insert部分。由于插入不依赖where部分的任何变量,因此可能不是您想要的。您应该尝试将插入部分作为简单的“插入数据”语句执行。