使用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.}
}
答案 0 :(得分:6)
对于where区域中的每个结果行,都执行该update语句的delete和insert部分。由于插入不依赖where部分的任何变量,因此可能不是您想要的。您应该尝试将插入部分作为简单的“插入数据”语句执行。