翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
SPARQL UPDATE LOAD コマンドの構文は、SPARQL 1.1 アップデートの推奨事項
LOAD SILENT
(URL of data to be loaded)
INTO GRAPH(named graph into which to load the data)
-
SILENT
— (オプション) 処理中にエラーが発生した場合でも、オペレーションは成功を返します。これは、単一のトランザクションに
"LOAD ...; LOAD ...; UNLOAD ...; LOAD ...;"
のような複数のステートメントが含まれている場合に便利です。また、リモートデータの一部が処理できない場合でも、トランザクションを完了させる必要があります。 -
ロードするデータの URL
— (必須) グラフにロードするデータを含むリモートデータファイルを指定します。リモートファイルには、次のいずれかの拡張子を指定する必要があります。
NTriples 用
.nt
。NQuads 用
.nq
。Trig 用
.trig
。RDF/XML 用
.rdf
。Turtle 用
.ttl
。N3 用
.n3
。JSON-LD 用
.jsonld
。
-
INTO GRAPH
(データをロードする名前付きグラフ)
— (オプション) データをロードするグラフを指定します。Neptune はすべてのトリプルを名前が付いたグラフに関連付けます。フォールバック名前付きグラフ URI、
http://aws.amazon.com/neptune/vocab/v01/DefaultNamedGraph
などを使用して、デフォルトの名前付きグラフを指定できます。次のようになります。INTO GRAPH <http://aws.amazon.com/neptune/vocab/v01/DefaultNamedGraph>
注記
大量のデータをロードする必要がある場合は、UPDATE LOAD ではなく Neptune バルクローダーを使用することをお勧めします。バルクローダーについては、Amazon Neptune バルクローダーを使用したデータの取り込みを参照してください。
SPARQL UPDATE LOAD
を使用して、 Amazon S3 から直接データをロードすることも、セルフホストウェブサーバーから取得したファイルからデータをロードすることもできます。ロードするリソースは Neptune サーバーと同じリージョンに存在し、リソースのエンドポイントは VPC でホワイトリストに登録されている必要があります。Amazon S3 エンドポイントを作成する方法については、Amazon S3 VPC エンドポイントの作成 を参照してください。
すべてのSPARQL UPDATE LOAD
URI は https://
で始まる必要があります。これには Amazon S3 URL が含まれます。
バルクローダーとは対照的に、SPARQL UPDATE LOAD
への呼び出しは完全にトランザクション型です。
SPARQL UPDATE LOAD を使用して Amazon S3 から Neptune にファイルを直接ロードする
Neptune では、SPARQL UPDATE LOAD を使用するときに Amazon S3 に IAM ロールを渡すことはできないため、問題の Amazon S3 バケットはパブリックであるか、LOAD クエリで署名付き Amazon S3 URLを使用する必要があります。
Amazon S3 ファイルの署名付き URL を生成するには、次のような AWS CLI コマンドを使用できます。
aws s3 presign --expires-in
(number of seconds)
s3://(bucket name)
/(path to file of data to load)
次に、結果の署名付き URL を LOAD
コマンドで使えます。
curl https://
(a Neptune endpoint URL)
:8182/sparql \ --data-urlencode 'update=load(pre-signed URL of the remote Amazon S3 file of data to be loaded)
\ into graph(named graph)
'
詳細については、「リクエストの認証: クエリパラメータの使用」を参照してください。Boto3 のドキュメント
また、ロードするファイルのコンテンツタイプも正しく設定する必要があります。
-
次のように
-metadata
パラメータを使用してファイルを Amazon S3 にアップロードするときにファイルのコンテンツタイプを設定します。aws s3 cp test.nt s3://
bucket-name/my-plain-text-input
/test.nt --metadata Content-Type=text/plain aws s3 cp test.rdf s3://bucket-name/my-rdf-input
/test.rdf --metadata Content-Type=application/rdf+xml -
メディアタイプの情報が実際に存在することを確認してください。以下を実行します:
curl -v
bucket-name/folder-name
このコマンドの出力には、ファイルをアップロードするときに設定したメディアタイプ情報が表示されます。
-
その後、
SPARQL UPDATE LOAD
コマンドを使用してこれらのファイルを Neptune にインポートできます。curl https://
your-neptune-endpoint
:port
/sparql \ -d "update=LOAD <https://s3.amazonaws.com/bucket-name
/my-rdf-input/test.rdf
>"
上記の手順は、パブリック バケット、または LOAD クエリで 署名付き Amazon S3 URL を使用してアクセスするバケットに対してのみ機能します。
以下に示すように、プライベート Amazon S3 バケットからロードするようにウェブプロキシサーバーを設定することもできます。
ウェブサーバーを使用して SPARQL UPDATE LOAD でファイルを Neptune にロードする
-
Neptune とロードするファイルをホストしている VPC 内で実行されているマシンにウェブサーバーをインストールします。たとえば、Amazon Linux を使用している場合は、次のように Apache をインストールします。
sudo yum install httpd mod_ssl sudo /usr/sbin/apachectl start
-
ロードしようとしている RDF ファイルコンテンツの MIME タイプを定義します。SPARQL はウェブサーバーから送信された
Content-type
ヘッダーを使用してコンテンツの入力形式を決定するため、ウェブサーバーに関連する MIME タイプを定義する必要があります。たとえば、ファイル形式を識別するために次のファイル拡張子を使用するとします。
NTriples 用
.nt
。NQuads 用
.nq
。Trig 用
.trig
。RDF/XML 用
.rdf
。Turtle 用
.ttl
。N3 用
.n3
。JSON-LD 用
.jsonld
。
ウェブサーバーとして Apache 2 を使用している場合は、ファイル
/etc/mime.types
を編集して次のタイプを追加します。text/plain nt application/n-quads nq application/trig trig application/rdf+xml rdf application/x-turtle ttl text/rdf+n3 n3 application/ld+json jsonld
-
MIME タイプマッピングが機能することを確認します。ウェブサーバーを起動して実行し、選択した形式で RDFファイルをホストしたら、ローカルホストからウェブサーバーにリクエストを送信して設定をテストできます。
たとえば、次のようなリクエストを送信します。
curl -v http://localhost:80/test.rdf
curl
からの詳細な出力には、このような行が表示されるはずです。Content-Type: application/rdf+xml
これは、コンテンツタイプマッピングが正常に定義されたことを示しています。
-
これで、SPARQL UPDATE コマンドを使用してデータをロードする準備が整いました。
curl https://
your-neptune-endpoint
:port
/sparql \ -d "update=LOAD <http://web_server_private_ip
:80/test.rdf>"
注記
SPARQL UPDATE LOAD
を使用すると、ロードされるソースファイルが大きい場合にウェブサーバーでタイムアウトが発生する可能性があります。Neptune は、ストリーミング時と、サーバーで設定したタイムアウトよりも時間がかかる大きなファイルでは、ファイルデータを処理します。これにより、サーバーが接続を閉じることがあります。その場合、Neptune がストリームで予期しない EOF を検出すると、次のエラーメッセージが表示されることがあります。
{ "detailedMessage":"Invalid syntax in the specified file", "code":"InvalidParameterException" }
このメッセージが表示され、ソースファイルに無効な構文が含まれていると思われる場合は、ウェブサーバーのタイムアウト設定を大きくしてみてください。さらに、サーバーでデバッグログを有効にし、タイムアウトを探すことで、問題を診断することもできます。