

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# `Neptunus SPARQL menjelaskan operator`
<a name="sparql-explain-operators"></a>

Bagian berikut menjelaskan operator dan parameter untuk fitur `explain` SPARQL yang saat ini tersedia di Amazon Neptune.

**penting**  
Fitur `explain` SPARQL sedang disempurnakan. Operator dan parameter yang didokumentasikan di sini mungkin berubah dalam versi mendatang.

**Topics**
+ [`Operator agregasi`](#sparql-explain-operator-aggregation)
+ [Operator `ConditionalRouting`](#sparql-explain-operator-conditional-routing)
+ [`Salin` operator](#sparql-explain-operator-copy)
+ [`Operator DFeNode`](#sparql-explain-operator-dfenode)
+ [Operator `yang berbeda`](#sparql-explain-operator-distinct)
+ [Operator `Federasi`](#sparql-explain-operator-federation)
+ [Operator `filter`](#sparql-explain-operator-filter)
+ [Operator `HashIndexBuild`](#sparql-explain-operator-hash-index-build)
+ [Operator `HashIndexJoin`](#sparql-explain-operator-hash-index-join)
+ [Operator `MergeJoin`](#sparql-explain-operator-merge-join)
+ [Operator `NamedSubquery`](#sparql-explain-operator-named-subquery)
+ [Operator `PipelineJoin`](#sparql-explain-operator-pipeline-join)
+ [Operator `PipelineCountJoin`](#sparql-explain-operator-pipeline-count-join)
+ [Operator `PipelinedHashIndexJoin`](#sparql-explain-operator-pipeline-hash-index-join)
+ [`Operator proyeksi`](#sparql-explain-operator-projection)
+ [Operator `PropertyPath`](#sparql-explain-operator-property-path)
+ [Operator `TermResolution`](#sparql-explain-operator-term-resolution)
+ [Operator `irisan`](#sparql-explain-operator-slice)
+ [Operator `SolutionInjection`](#sparql-explain-operator-solution-injection)
+ [Operator `sortir`](#sparql-explain-operator-sort)
+ [Operator `VariableAlignment`](#sparql-explain-operator-variable-alignment)

## `Operator agregasi`
<a name="sparql-explain-operator-aggregation"></a>

Melakukan satu agregasi atau lebih, menerapkan semantik dari operator agregasi SPARQL seperti `count`, `max`, `min`, `sum`, dan sebagainya.

`Aggregation` dilengkapi dengan pengelompokan opsional menggunakan klausa `groupBy`, dan kendala `having` opsional.

**Argumen**
+ `groupBy` — (*Opsional*) Menyediakan klaus `groupBy` yang menentukan urutan ekspresi yang menurut pengelompokan solusi masuk.
+ `aggregates` — (*Wajib*) Menentukan daftar urut ekspresi agregasi.
+ `having` — (*Opsional*) Menambahkan kendala untuk menyaring grup, seperti yang disiratkan oleh klausul `having` dalam kueri SPARQL.

## Operator `ConditionalRouting`
<a name="sparql-explain-operator-conditional-routing"></a>

Merutekan solusi masuk berdasarkan kondisi tertentu. Solusi yang memenuhi kondisi diarahkan ke ID operator yang direferensikan oleh `Out #1`, sedangkan solusi yang tidak diarahkan ke operator direferensikan oleh `Out #2`.

**Argumen**
+ `condition` — (*Wajib*) Kondisi perutean.

## `Salin` operator
<a name="sparql-explain-operator-copy"></a>

Mendelegasikan aliran solusi sebagaimana ditentukan oleh mode tertentu.

**Modus**
+ `forward` — Meneruskan solusi untuk operator hilir yang diidentifikasi oleh `Out #1`. 
+ `duplicate` — Menduplikat solusi dan meneruskannya ke masing-masing dari dua operator yang diidentifikasi oleh `Out #1` dan `Out #2`.

`Copy` tidak memiliki argumen.

## `Operator DFeNode`
<a name="sparql-explain-operator-dfenode"></a>

Operator ini merupakan abstraksi dari rencana yang dijalankan oleh mesin kueri alternatif DFE. Rencana DFE rinci diuraikan dalam argumen untuk operator ini. Argumen saat ini kelebihan beban untuk berisi statistik runtime rinci dari rencana DFE. Argumen berisi waktu yang dihabiskan dalam berbagai langkah eksekusi kueri oleh DFE.

Abstrak sintaks tree (AST) yang dioptimalkan logis untuk rencana kueri DFE dicetak dengan informasi tentang jenis operator yang dianggap saat perencanaan dan akibat terbaik dan terburuk terkait untuk menjalankan operator. AST saat ini terdiri dari jenis node berikut:
+ `DFEJoinGroupNode` — Merupakan gabungan dari satu `DFEPatternNodes` atau lebih.
+ `DFEPatternNode` - Merangkum pola mendasar menggunakan tupel yang cocok yang diproyeksikan keluar dari database yang mendasari.

Sub-bagiannya, `Statistics & Operator histogram`, berisi rincian tentang waktu eksekusi rencana `DataflowOp` dan rincian waktu CPU yang digunakan oleh masing-masing operator. Di bawah ini ada tabel yang mencetak statistik runtime rinci dari rencana yang dieksekusi oleh DFE.

**catatan**  
Karena dukungan DFE untuk SPARQL adalah fitur eksperimental, format yang tepat dari `explain` outputnya dapat berubah.

## Operator `yang berbeda`
<a name="sparql-explain-operator-distinct"></a>

Menghitung proyeksi yang berbeda pada subset dari variabel, menghilangkan duplikat. Akibatnya, jumlah solusi yang mengalir lebih besar dari atau sama dengan jumlah solusi yang mengalir keluar.

**Argumen**
+ `vars` — (*Wajib*) Variabel tempat proyeksi `Distinct` akan diterapkan.

## Operator `Federasi`
<a name="sparql-explain-operator-federation"></a>

Melewatkan kueri tertentu ke titik akhir SPARQL remote yang ditentukan.

**Argumen**
+ `endpoint` — (*Wajib*) URL titik akhir dalam pernyataan `SERVICE` SPARQL. Ini bisa berupa string konstan, atau jika titik akhir kueri ditentukan berdasarkan variabel dalam kueri yang sama, ia dapat menjadi nama variabel.
+ `query` — (*Wajib*) String kueri yang direkonstruksi yang akan dikirim ke titik akhir remote. Mesin menambahkan prefiks default untuk kueri ini bahkan ketika klien tidak menentukan apapun.
+ `silent` — (*Wajib*) Boolean yang menunjukkan apakah kata kunci `SILENT` muncul setelah kata kunci tersebut. `SILENT` memberi tahu mesin untuk tidak menggagalkan seluruh kueri bahkan jika bagian `SERVICE` remote gagal.

## Operator `filter`
<a name="sparql-explain-operator-filter"></a>

Menyaring solusi yang masuk. Hanya solusi yang memenuhi kondisi filter yang diteruskan ke operator hulu, dan yang lainnya dijatuhkan.

**Argumen**
+ `condition` — (*Wajib*) Kondisi filter.

## Operator `HashIndexBuild`
<a name="sparql-explain-operator-hash-index-build"></a>

Membawa daftar binding dan melakukan spools pada mereka ke dalam indeks hash yang namanya didefinisikan oleh argumen `solutionSet`. Biasanya, operator berikutnya melakukan penggabungan terhadap set solusi ini, mengacunya dengan nama itu.

**Argumen**
+ `solutionSet` — (*Wajib*) Nama set solusi indeks hash.
+ `sourceType` — (*Wajib*) Jenis sumber asal binding yang akan disimpan dalam indeks hash diperoleh:
  + `pipeline` — Melakukan spool pada solusi yang masuk dari operator hilir dalam alur operator ke dalam indeks hash.
  + `binding set` - Melakukan spool pada set mengikat tetap yang ditentukan oleh argumen `sourceBindingSet` ke dalam indeks hash.
+ `sourceBindingSet` — (*Opsional*) Jika nilai argumen `sourceType` adalah `binding set`, argumen ini menentukan set binding statis yang akan di-spool ke dalam indeks hash.

## Operator `HashIndexJoin`
<a name="sparql-explain-operator-hash-index-join"></a>

Menggabungkan solusi masuk terhadap set solusi indeks hash yang diidentifikasi oleh argumen `solutionSet`.

**Argumen**
+ `solutionSet` — (*Wajib*) Nama set solusi yang akan digabungkan. Ini harus berupa indeks hash yang telah dibangun di langkah sebelumnya menggunakan operator `HashIndexBuild`.
+ `joinType` — (*Wajib*) Jenis gabungan yang akan dilakukan:
  + `join` — Gabungan normal, membutuhkan kecocokan persis antara semua variabel bersama.
  + `optional` — Sebuah gabungan `optional` yang menggunakan semantik operator `OPTIONAL` SPARQL.
  + `minus` — Sebuah operasi `minus` yang mempertahankan pemetaan yang tanpa mitra gabungan, menggunakan semanti operator `MINUS` SPARQL.
  + `existence check` — Memeriksa apakah ada mitra gabungan atau tidak, dan mengikat variabel `existenceCheckResultVar` ke hasil pemeriksaan ini.
+ `constraints` — (*Opsional*) Tambahan kendala gabungan yang dipertimbangkan selama penggabungan. Gabungan yang tidak memenuhi kendala ini dibuang.
+ `existenceCheckResultVar` — (*Opsional*) Hanya digunakan untuk gabungan di mana `joinType` sama dengan `existence check` (lihat argumen `joinType` sebelumnya).

## Operator `MergeJoin`
<a name="sparql-explain-operator-merge-join"></a>

Penggabungan yang digabung di lebih dari beberapa set solusi, seperti yang diidentifikasi oleh argumen `solutionSets`.

**Argumen**
+ `solutionSets` — (*Wajib*) Set solusi yang akan digabungkan bersama.

## Operator `NamedSubquery`
<a name="sparql-explain-operator-named-subquery"></a>

Memicu evaluasi subkueri yang diidentifikasi oleh argumen `subQuery` dan melakukan spools pada hasil ke dalam set solusi yang ditentukan oleh argumen `solutionSet`. Solusi masuk untuk operator diteruskan ke subkueri dan kemudian ke operator berikutnya.

**Argumen**
+ `subQuery` — (*Wajib*) Nama subkueri yang akan dievaluasi. Subkueri dirender secara eksplisit dalam output.
+ `solutionSet` — (*Wajib*) Nama set solusi tempat menyimpan hasil subkueri.

## Operator `PipelineJoin`
<a name="sparql-explain-operator-pipeline-join"></a>

Menerima output dari operator sebelumnya sebagai input dan menggabungkannya dengan pola tuple yang didefinisikan oleh argumen `pattern`.

**Argumen**
+ `pattern` — (*Wajib*) Pola, yang mengambil bentuk tuple subjek-predikat-objek, dan –grafik opsional yang mendasari gabungan. Jika `distinct` ditentukan untuk pola, gabungan hanya mengekstrak solusi yang khas dari variabel proyeksi yang ditentukan oleh `projectionVars`, alih-alih semua solusi yang cocok.
+ `inlineFilters` — (*Opsional*) Satu set filter yang akan diterapkan pada variabel dalam pola. Pola dievaluasi bersamaan dengan filter ini.
+ `joinType` — (*Wajib*) Jenis gabungan yang akan dilakukan:
  + `join` — Gabungan normal, membutuhkan kecocokan persis antara semua variabel bersama.
  + `optional` — Sebuah gabungan `optional` yang menggunakan semantik operator `OPTIONAL` SPARQL.
  + `minus` — Sebuah operasi `minus` yang mempertahankan pemetaan yang tanpa mitra gabungan, menggunakan semanti operator `MINUS` SPARQL.
  + `existence check` — Memeriksa apakah ada mitra gabungan atau tidak, dan mengikat variabel `existenceCheckResultVar` ke hasil pemeriksaan ini.
+ `constraints` — (*Opsional*) Tambahan kendala gabungan yang dipertimbangkan selama penggabungan. Gabungan yang tidak memenuhi kendala ini dibuang.
+ `projectionVars`— (*Opsional*) Variabel proyeksi. Digunakan dalam kombinasi bersama `distinct := true` untuk menegakkan ekstraksi proyeksi khas pada satu set variabel tertentu.
+ `cutoffLimit` — (*Opsional*) Batas cutoff untuk jumlah mitra gabungan yang diekstrak. Meskipun tidak ada batas secara default, Anda dapat mengatur ini ke 1 ketika melakukan gabungan untuk menerapkan klausa `FILTER (NOT) EXISTS`, di mana itu cukup untuk membuktikan atau membantah bahwa ada mitra gabungan.

## Operator `PipelineCountJoin`
<a name="sparql-explain-operator-pipeline-count-join"></a>

Varian dari `PipelineJoin`. Alih-alih bergabung, operator ini hanya menghitung mitra gabungan yang cocok dan mengikat hitungan ke variabel yang ditentukan oleh argumen `countVar`.

**Argumen**
+ `countVar` — (*Wajib*) Variabel yang akan diikatkan pada hasil hitungan, yaitu jumlah mitra gabungan,.
+ `pattern` — (*Wajib*) Pola, yang mengambil bentuk tuple subjek-predikat-objek, dan –grafik opsional yang mendasari gabungan. Jika `distinct` ditentukan untuk pola, gabungan hanya mengekstrak solusi yang khas dari variabel proyeksi yang ditentukan oleh `projectionVars`, alih-alih semua solusi yang cocok.
+ `inlineFilters` — (*Opsional*) Satu set filter yang akan diterapkan pada variabel dalam pola. Pola dievaluasi bersamaan dengan filter ini.
+ `joinType` — (*Wajib*) Jenis gabungan yang akan dilakukan:
  + `join` — Gabungan normal, membutuhkan kecocokan persis antara semua variabel bersama.
  + `optional` — Sebuah gabungan `optional` yang menggunakan semantik operator `OPTIONAL` SPARQL.
  + `minus` — Sebuah operasi `minus` yang mempertahankan pemetaan yang tanpa mitra gabungan, menggunakan semanti operator `MINUS` SPARQL.
  + `existence check` — Memeriksa apakah ada mitra gabungan atau tidak, dan mengikat variabel `existenceCheckResultVar` ke hasil pemeriksaan ini.
+ `constraints` — (*Opsional*) Tambahan kendala gabungan yang dipertimbangkan selama penggabungan. Gabungan yang tidak memenuhi kendala ini dibuang.
+ `projectionVars`— (*Opsional*) Variabel proyeksi. Digunakan dalam kombinasi bersama `distinct := true` untuk menegakkan ekstraksi proyeksi khas pada satu set variabel tertentu.
+ `cutoffLimit` — (*Opsional*) Batas cutoff untuk jumlah mitra gabungan yang diekstrak. Meskipun tidak ada batas secara default, Anda dapat mengatur ini ke 1 ketika melakukan gabungan untuk menerapkan klausa `FILTER (NOT) EXISTS`, di mana itu cukup untuk membuktikan atau membantah bahwa ada mitra gabungan.

## Operator `PipelinedHashIndexJoin`
<a name="sparql-explain-operator-pipeline-hash-index-join"></a>

Ini adalah indeks hash build all-in-one dan operator gabungan. Dibutuhkan daftar binding, menggulungnya menjadi indeks hash, dan kemudian bergabung dengan solusi yang masuk terhadap indeks hash.

**Argumen**
+ `sourceType`— (*Wajib*) Jenis sumber dari mana binding untuk menyimpan dalam indeks hash diperoleh, salah satu dari:
  + `pipeline`— Penyebab `PipelinedHashIndexJoin` untuk menggeser solusi yang masuk dari operator hilir di pipa operator ke indeks hash.
  + `binding set`— Penyebab `PipelinedHashIndexJoin` untuk menggulung set pengikatan tetap yang ditentukan oleh `sourceBindingSet` argumen ke dalam indeks hash.
+ `sourceSubQuery `— (*Opsional*) Jika nilai `sourceType` argumen adalah`pipeline`, argumen ini menentukan subquery yang dievaluasi dan spooled ke dalam indeks hash.
+ `sourceBindingSet `— (*Opsional*) Jika nilai `sourceType` argumen adalah`binding set`, argumen ini menentukan set pengikatan statis yang akan di-spooled ke indeks hash.
+ `joinType`— (*Wajib*) Jenis bergabung yang akan dilakukan:
  + `join` — Gabungan normal, membutuhkan kecocokan persis antara semua variabel bersama.
  + `optional` — Sebuah gabungan `optional` yang menggunakan semantik operator `OPTIONAL` SPARQL.
  + `minus` — Sebuah operasi `minus` yang mempertahankan pemetaan yang tanpa mitra gabungan, menggunakan semanti operator `MINUS` SPARQL.
  + `existence check` — Memeriksa apakah ada mitra gabungan atau tidak, dan mengikat variabel `existenceCheckResultVar` ke hasil pemeriksaan ini.
+ `existenceCheckResultVar`— (*Opsional*) Hanya digunakan untuk bergabung di mana `joinType` sama `existence check` (lihat argumen JoinType di atas).

## `Operator proyeksi`
<a name="sparql-explain-operator-projection"></a>

Memproyeksikan di atas subset variabel. Jumlah solusi yang mengalir masuk sama dengan jumlah solusi yang mengalir keluar, namun bentuk solusinya berbeda, tergantung pengaturan mode.

**Modus**
+ `retain` — Menyimpan dalam solusi hanya variabel yang ditentukan oleh argumen `vars`.
+ `drop` — Jatuhkan semua variabel yang ditentukan oleh argumen `vars`.

**Argumen**
+ `vars`— (*Wajib*) Variabel yang akan dipertahankan atau dijatuhkan, tergantung pengaturan mode.

## Operator `PropertyPath`
<a name="sparql-explain-operator-property-path"></a>

Memungkinkan jalur properti rekursif seperti `+` atau `*`. Neptune mengimplementasikan pendekatan iterasi titik tetap berdasarkan template yang ditentukan oleh argumen `iterationTemplate`. Variabel sisi kiri atau kanan yang dikenal terikat dalam template untuk setiap iterasi titik tetap, sampai tidak ada lagi solusi baru yang dapat ditemukan.

**Argumen**
+ `iterationTemplate`— (*Wajib*) Nama dari template subkueri yang digunakan untuk mengimplementasikan iterasi titik tetap.
+ `leftTerm`— (*Wajib*) Istilah (variabel atau konstan) di sisi kiri jalur properti.
+ `rightTerm`— (*Wajib*) Istilah (variabel atau konstan) di sisi kanan jalur properti.
+ `lowerBound`— (*Wajib*) Batas bawah untuk iterasi titik tetap (baik `0` untuk kueri `*`, atau `1` untuk kueri `+`).

## Operator `TermResolution`
<a name="sparql-explain-operator-term-resolution"></a>

Menerjemahkan nilai-nilai pengidentifikasi string internal kembali ke string eksternal mereka yang sesuai, atau menerjemahkan string eksternal ke nilai-nilai pengidentifikasi string internal, tergantung modenya.

**Modus**
+ `value2id`— Memetakan istilah seperti literal dan URI ke nilai ID internal yang sesuai (mengenkode ke nilai internal).
+ `id2value`— Memetakan nilai ID internal ke istilah yang sesuai seperti literal dan URI (mendekode ke nilai internal).

**Argumen**
+ `vars`— (*Wajib*) Menentukan variabel pemetaan string atau ID string internal.

## Operator `irisan`
<a name="sparql-explain-operator-slice"></a>

Mengimplementasikan potongan di atas aliran solusi masuk, menggunakan semantik klausa `LIMIT` dan `OFFSET` SPARQL.

**Argumen**
+ `limit`— (*Opsional*) Batas pada solusi yang akan diteruskan.
+ `offset`— (*Opsional*) Offset di mana solusi dievaluasi untuk penerusan.

## Operator `SolutionInjection`
<a name="sparql-explain-operator-solution-injection"></a>

Tidak menerima input. Menyuntikkan solusi secara statis ke dalam rencana kueri dan mencatatnya dalam argumen `solutions`.

Rencana kueri selalu dimulai dengan injeksi statis ini. Jika solusi statis yang akan disuntikkan dapat berasal dari kueri itu sendiri dengan menggabungkan berbagai sumber binding statis (misalnya, dari klausa `VALUES` atau `BIND`), maka operator `SolutionInjection` menyuntikkan solusi statis turunan ini. Dalam kasus yang paling sederhana, hal ini mencerminkan binding yang tersirat oleh klausa `VALUES` luar.

Jika tidak ada solusi statis dapat diturunkan dari kueri, `SolutionInjection` menyuntikkan solusi kosong, yang disebut solusi universal, yang diperluas dan digandakan sepanjang proses evaluasi kueri.

**Argumen**
+ `solutions`— (*Wajib*) Urutan solusi yang disuntikkan oleh operator.

## Operator `sortir`
<a name="sparql-explain-operator-sort"></a>

Mengurutkan set solusi menggunakan kondisi pengurutan tertentu.

**Argumen**
+ `sortOrder`— (*Wajib*) Daftar variabel yang diurutkan, masing-masing berisi pengidentifikasi `ASC` (naik) atau `DESC` (turun), digunakan secara berurutan untuk mengurutkan set solusi.

## Operator `VariableAlignment`
<a name="sparql-explain-operator-variable-alignment"></a>

Memeriksa solusi satu per satu, melakukan penyelarasan pada masing-masing pada dua variabel: `sourceVar` yang ditentukan dan `targetVar` yang ditentukan.

Jika `sourceVar` dan `targetVar` dalam solusi memiliki nilai yang sama, variabel dianggap selaras dan solusi diteruskan, dengan `sourceVar` berulang diproyeksikan keluar.

Jika variabel terikat ke nilai yang berbeda, solusinya disaring seluruhnya.

**Argumen**
+ `sourceVar`— (*Wajib*) Variabel sumber, untuk dibandingkan dengan variabel target. Jika penyelarasan berhasil dalam solusi, yang berarti bahwa dua variabel memiliki nilai yang sama, variabel sumber diproyeksikan keluar.
+ `targetVar`— (*Wajib*) Variabel target, sebagai pembanding variabel sumber. Dipertahankan bahkan ketika penyelarasan berhasil.