在 Neptune 的 SPARQL 删除查询中使用限制

using limit in Neptune's SPARQL Delete queries

我正在尝试 运行 Amazon Neptune 中的这个查询:

Delete{?s <http://mydomain#aresource> ?o.
          } 
WHERE {
    
    GRAPH ?g {
    
        ?s <http://mydomain#aresource> ?o.
        
    } 
} limit 1

但是我收到了这个错误:

"code": "MalformedQueryException",
"detailedMessage": "Malformed query: Encountered \" \"limit\" \"limit \"\" at line ..., column ....\nWas expecting one of:\n    <EOF> \n    \";\" ...\n    "

当我删除限制时,查询有效。这是否意味着 Neptune delete 不支持限制或者我做错了什么?

我不是解释 SPARQL 语法的专家,但我不认为 DELETE WHERE 子句上的 LIMIT 是有效的。但是,以下查询将实现我相信您正在寻找的内容...

DELETE {
    ?s <http://mydomain#aresource> ?o.
} 
WHERE {    
    SELECT ?s ?o WHERE {
        GRAPH ?g {
            ?s <http://mydomain#aresource> ?o.        
        } 
    } LIMIT 1
} 

为了证明这一点,我 运行 在 Neptune 中执行了以下命令序列。

首先,

INSERT DATA {
<http://test/a> <http://mydomain#aresource> <http://test/b> .
<http://test/c> <http://mydomain#aresource> <http://test/d> .
<http://test/e> <http://mydomain#aresource> <http://test/f> .
}

然后是上面的DELETE WHERE查询。 最后,

SELECT ?s ?o WHERE {?s <http://mydomain#aresource> ?o.}

并收到输出

{
  "head": {
    "vars": [
      "s",
      "o"
    ]
  },
  "results": {
    "bindings": [
      {
        "s": {
          "type": "uri",
          "value": "http://test/c"
        },
        "o": {
          "type": "uri",
          "value": "http://test/d"
        }
      },
      {
        "s": {
          "type": "uri",
          "value": "http://test/e"
        },
        "o": {
          "type": "uri",
          "value": "http://test/f"
        }
      }
    ]
  }
}