使用 SPARQL 更新卸载从 Neptune 删除数据 - Amazon Neptune
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 SPARQL 更新卸载从 Neptune 删除数据

Neptune 还提供了一个自定义的 SPARQL 操作UNLOAD,用于删除远程源中指定的数据。UNLOAD可以被视为一个对应的LOADoperation. 它的语法为:

注意
UNLOAD SILENT (URL of the remote data to be unloaded) FROM GRAPH (named graph from which to remove the data)
  • SILENT— (可选) 导致操作返回成功,即使在处理数据时发生错误。

    当单个事务包含多个语句(如"LOAD ...; LOAD ...; UNLOAD ...; LOAD ...;"并且您希望即使无法处理某些远程数据,也能完成事务。

  • 要卸载的远程数据的 URL— (必需) 指定一个远程数据文件,其中包含要从图形中卸载的数据。

    远程文件必须具有以下扩展名之一(这些都是 UPDAT-LOAD 支持的格式相同):

    • .nt 表示 NTriples。

    • .nq 表示 NQuads。

    • .trig 表示 Trig。

    • .rdf 表示 RDF/XML。

    • .ttl 表示 Turtle。

    • .n3 表示 N3。

    • .jsonld 表示 JSON-LD。

    此文件包含的所有数据都将通过UNLOADoperation.

    任何 Amazon S3 身份验证都必须包含在要卸载数据的 URL 中。您可以预先签名 Amazon S3 文件,然后使用生成的 URL 安全地访问该文件。例如:

    aws s3 presign --expires-in (number of seconds) s3://(bucket name)/(path to file of data to unload)

    然后:

    curl https://(a Neptune endpoint URL):8182/sparql \ --data-urlencode 'update=unload (pre-signed URL of the remote Amazon S3 data to be unloaded) \ from graph (named graph)'

    有关更多信息,请参阅 。验证请求:使用查询参数.

  • FROM GRAPH (要从中删除数据的命名图形)— (可选) 指定应从中卸载远程数据的命名图形。

    Neptune 将每个三元组与一个命名图形相关联。您可以使用回退命名图形 URI 指定默认命名图形http://aws.amazon.com/neptune/vocab/v01/DefaultNamedGraph,像这样:

    FROM GRAPH <http://aws.amazon.com/neptune/vocab/v01/DefaultNamedGraph>

以同样的方式LOAD对应于INSERT DATA { (inline data) }UNLOAD对应于DELETE DATA { (inline data) }. LIKEDELETE DATAUNLOAD对于包含空白节点的数据不起作用。

例如,如果本地 Web 服务器提供名为data.nt,其中包含以下 2 个三倍:

<http://example.org/resource#a> <http://example.org/resource#p> <http://example.org/resource#b> . <http://example.org/resource#a> <http://example.org/resource#p> <http://example.org/resource#c> .

以下UNLOAD命令会从命名图中删除这两个三倍,<http://example.org/graph1>

UNLOAD <http://localhost:80/data.nt> FROM GRAPH <http://example.org/graph1>

这与使用以下DELETE DATA命令:

DELETE DATA { GRAPH <http://example.org/graph1> { <http://example.org/resource#a> <http://example.org/resource#p> <http://example.org/resource#b> . <http://example.org/resource#a> <http://example.org/resource#p> <http://example.org/resource#c> . } }

引发的异常UNLOAD命令

  • InvalidParameterException— 数据中有空节点。HTTP 状态:400 错误请求。

    消息 Blank nodes are not allowed for UNLOAD

     

  • InvalidParameterException— 数据中的语法中断。HTTP 状态:400 错误请求。

    消息Invalid syntax in the specified file.

     

  • UnloadUrlAccessDeniedException — 拒绝访问。HTTP 状态:400 错误请求。

    消息Update failure: Endpoint (Neptune endpoint) reported access denied error. Please verify access.

     

  • BadRequestException — 无法检索远程数据。HTTP 状态:400 错误请求。

    消息(取决于 HTTP 响应)。