Closed ryotayamanaka closed 3 years ago
Bob :person nickname:Bobby nickname:Bobbie
ラベルのほうは
Bob :person :musician
案を一つ
100 :person nickname:Allie # -> nickname: Allie
101 :person nickname:[Allie] # -> nickname: [Allie]
102 :person nickname:Allie nickname:Ellie # -> nickname: [Allie, Ellie]
103 :person nickname:[Allie, Ellie] # -> nickname: [Allie, Ellie]
配列か配列でないかを表現できるようにする 場合、上のようなシンタックスが必要となり、アプリケーション開発者にとっても直感的であると考えられる。
しかしながら、そもそも PG 形式はプロパティの型を定義していない = スキーマ定義していないため、あるプロパティ(nickname)が配列でない場合と配列である場合の混在は許されることとなり、これはアプリケーションでも扱いにくい。そこで、 配列であるかどうかをデータ上では表現しない こととして、単純に複数の値を許すために JSON では常に配列を用いることとする。
100 :person nickname:Allie # -> nickname: [Allie]
101 :person nickname:Allie nickname:Ellie # -> nickname: [Allie, Ellie]
また、Flat PG 上で配列のシンタックスを導入するかどうかはおいおい検討することとする。
102 :person nickname:[Allie, Ellie] # -> nickname: [Allie, Ellie]
Implementation of array datatype in each database.
Neo4j:
https://neo4j.com/docs/cypher-manual/current/syntax/values/
Homogeneous lists of simple types can also be stored as properties, although lists in general (see Composite types) cannot be stored.
Loading
https://neo4j.com/docs/operations-manual/3.5/tools/import/file-header-format/
To define an array type, append [] to the type. By default, array values are separated by ;. A different delimiter can be specified with --array-delimiter.
AWS:
https://docs.aws.amazon.com/neptune/latest/userguide/bulk-load-tutorial-format-gremlin.html
Edge properties can only have a single value and will cause an error if an array type is specified or a second value is specified.
PGX:
https://docs.oracle.com/cd/E56133_01/latest/reference/loader/file-system/plain-text-formats.html
Vector properties with vector components of type integer, long, float and double can be loaded from these formats. In order to specify that a vertex or edge property is a vector property, the dimension field of the graph property configuration must be set to the dimension of the vector and be a strictly positive integer value.
The syntax for the lists of property values has been already supported both in PG and JSON-PG (following the discussion above). https://pg-format.readthedocs.io/en/0.3/contents/pg-format.html
We need to consider the diffs in loading to databases.
現在は配列は扱えない。扱えるようにする場合、PG Flat および JSON-PG のフォーマットをどうするか。