Closed ryotayamanaka closed 3 years ago
現状、ある程度の制約があったほうがコードが書きやすいので、 「PG ファイル内において Node ID は一意でなくてはならない」 としました。 https://github.com/g2gml/about/wiki/PG-Format
(ちなみに 「Edge = Node ID の組み合わせ は一意でなくてよい」 としています。)
この場合、sound な PG 同士を単純に結合したときに sound でなくなるという問題が生じます。
千葉さんにコメント頂いている、各 DB の実装への変換時の問題については、別途議論がよさそうです。
これと関連して、同じページにて 「もしもノード ID がノード行として片方でも定義されていない場合、エッジ行は無視される」 としました。 If even one of Node IDs is not defined in a node line, this edge line will be ignored.
GPG のノード記述では、1行に 1ノードID が記載されるが、同じノード ID が複数行に記載されることは許されるか?
特に、異なる GPG ファイルに node_01 のプロパティ情報がそれぞれ記載されいているときなど、どのように結合するかが問題となる。
hchiba1 よりコメント:
いろいろなケースに対応できるように、と考えると、重複を許してもいいような気もします. その場合もいくつか考え方があるかと思います. i) Specificな形式(PGX等)に変換する際に、各実装で許されるものかどうかを検査して、エラー・warning等を出すべき? ii) Specificな形式への変換は、あまり厳密にせずとりあえず機械的にやってしまって、その後の振る舞いを各実装にまかせる?(ロード時に上書きされる、warningを出す、エラーになる等) iii) 複数行に書くのが許されない実装があるとしたら、重複した行を見つけて1行にマージしないといけなくて、入力全体を一度読み込んで変換する処理が必要になる? (あまり各実装のことを知らずに書いていますが..) 現状で動かすと、ii)に近いということになるでしょうか.