【问题标题】:Is there any limit on number of triples can be inserted in a single SPARQL query?可以在单个 SPARQL 查询中插入三元组的数量是否有任何限制?
【发布时间】:2019-01-17 08:16:19
【问题描述】:

使用markLogic版本8.0-6.3

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

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

条款。

在插入子句中几乎有 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.}
}

【问题讨论】:

  • 您应该运行 2 个查询,一个 DELETE ... WHERE ... 和一个 INSERT DATA - 这更有意义。
  • 顺便问一下,WHERE 部分的概念是什么? OPTIONAL 是左连接,在您的情况下,左侧没有任何内容,即空表,我不确定这是否可行

标签: sparql marklogic triples


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多