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

问题描述 投票:2回答:1

使用markLogic版本8.0-6.3

我在使用MarkLogic插入和删除三元组

WITH <>
DELETE {}
INSERT {}
WHERE {}

条款。

在insert子句中,有大约3000个三重模式,在运行查询时我遇到错误。

** 2019-01-17 12:53:08.230注意:TaskServer:XDMP-UNEXPECTED :(错误: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.}
}
sparql marklogic triples
1个回答
6
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.