

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

# Model data Neptunus untuk data OpenSearch
<a name="full-text-search-model"></a>

Amazon Neptunus menggunakan struktur dokumen JSON terpadu untuk menyimpan data SPARQL dan Gremlin dalam Layanan. OpenSearch Setiap dokumen OpenSearch sesuai dengan entitas dan menyimpan semua informasi yang relevan untuk entitas tersebut. Untuk Gremlin, simpul dan tepi dianggap entitas, sehingga OpenSearch dokumen yang sesuai memiliki informasi tentang simpul, label, dan properti. Untuk SPARQL, subjek dapat dianggap entitas, sehingga OpenSearch dokumen yang sesuai memiliki informasi tentang semua pasangan objek predikat dalam satu dokumen.

**catatan**  
 Neptune-to-OpenSearchImplementasi replikasi hanya menyimpan data string. Namun, Anda dapat mengubahnya untuk menyimpan jenis data lain.

Struktur dokumen JSON terpadu terlihat seperti berikut ini.

```
{
  "entity_id": "Vertex Id/Edge Id/Subject URI",
  "entity_type": [List of Labels/rdf:type object value],
  "document_type": "vertex/edge/rdf-resource"
  "predicates": {
    "Property name or predicate URI": [
      {
        "value": "Property Value or Object Value",
        "graph": "(Only for Sparql) Named Graph Quad is present"
        "language": "(Only for Sparql) rdf:langString"
      },
      {
        "value": "Property Value 2/ Object Value 2",
      }
    ]
  }
}
```

****
+ `entity_id` — ID unik entitas yang mewakili dokumen.
  + Untuk SPARQL, ini adalah URI subjek.
  + Untuk Gremlin, ini adalah `Vertex_ID` atau `Edge_ID`.
+ `entity_type` — Mewakili satu label atau lebih untuk vertex atau edge, atau nilai predikat `rdf:type` nol atau lebih untuk subjek.
+ `document_type` — Digunakan untuk menentukan apakah dokumen saat ini merupakan vertex, edge, atau rdf-sumber daya.
+ `predicates` — Untuk Gremlin, menyimpan properti dan nilai-nilai untuk vertex atau edge. Untuk SPARQL, menyimpan pasangan predikat-objek.

  Nama properti mengambil formulir `properties.name.value` di OpenSearch. Untuk mengkuerinya, Anda harus memberi namanya dalam bentuk itu.
+ `value ` — Sebuah nilai properti untuk Gremlin atau nilai objek untuk SPARQL.
+ `graph` — Sebuah grafik bernama untuk SPARQL.
+ `language` — Tanda bahasa untuk literal `rdf:langString` dalam SPARQL.

## Contoh dokumen OpenSearch SPARQL
<a name="full-text-search-model-sparql-example"></a>

**Data**

```
@prefix dt:   <http://example.org/datatype#> .
@prefix ex:   <http://example.org/> .
@prefix xsd:  <http://www.w3.org/2001/XMLSchema#> .
@prefix rdf:  <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .

ex:simone   rdf:type     ex:Person                    ex:g1
ex:michael  rdf:type     ex:Person                    ex:g1
ex:simone   ex:likes     "spaghetti"                  ex:g1

ex:simone   ex:knows     ex:michael                   ex:g2   # Not stored in ES
ex:simone   ex:likes     "spaghetti"                  ex:g2
ex:simone   ex:status    "La vita è un sogno"@it      ex:g2

ex:simone   ex:age       "40"^^xsd:int                DG      # Not stored in ES
ex:simone   ex:dummy     "testData"^^dt:newDataType   DG      # Not stored in ES
ex:simone   ex:hates     _:bnode                              # Not stored in ES
_:bnode     ex:means     "coding"                     DG      # Not stored in ES
```

**Dokumen**

```
{
  "entity_id": "http://example.org/simone",
  "entity_type": ["http://example.org/Person"],
  "document_type": "rdf-resource"
  "predicates": {
    "http://example.org/likes": [
      {
        "value": "spaghetti",
        "graph": "http://example.org/g1"
      },
      {
        "value": "spaghetti",
        "graph": "http://example.org/g2"
      }
    ]
    "http://example.org/status": [
      {
        "value": "La vita è un sogno",
        "language": "it"       // Only present for rdf:langString
      }
    ]
  }
}
```

```
{
  "entity_id" : "http://example.org/michael",
  "entity_type" : ["http://example.org/Person"],
  "document_type": "rdf-resource"
}
```

## Contoh dokumen Gremlin OpenSearch
<a name="full-text-search-model-gremlin-example"></a>

**Data**

```
# Vertex 1
simone   label    Person       <== Label
simone   likes    "spaghetti"  <== Property
simone   likes    "rice"       <== Property
simone   age      40           <== Property

# Vertex 2
michael  label    Person       <== Label

# Edge 1
simone  knows     michael      <== Edge
e1      updated  "2019-07-03"  <== Edge Property
e1      through  "company"     <== Edge Property
e1      since     10           <== Edge Property
```

**Dokumen**

```
{
  "entity_id": "simone",
  "entity_type": ["Person"],
  "document_type": "vertex",
  "predicates": {
    "likes": [
      {
        "value": "spaghetti"
      },
      {
        "value": "rice"
      }
    ]
  }
}
```

```
{
  "entity_id" : "michael",
  "entity_type" : ["Person"],
  "document_type": "vertex"
}
```

```
{
  "entity_id": "e1",
  "entity_type": ["knows"],
  "document_type": "edge"
  "predicates": {
    "through": [
      {
        "value": "company"
      }
    ]
  }
}
```