在 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"
}
}
]
}
}
我正在尝试 运行 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"
}
}
]
}
}