分類体系の入れ子構造
生物分類は、界、門、綱、科、属、種、品種の順に親子関係をたどる階層構造です。
この画面では、その分類としての正しさを TaxonomyHierarchy で守り、
d3 に渡しやすい nodes/edges 形式を TaxonomyGraph として扱います。
TaxonomyHierarchyItem は各階層の id と name をまとめた値です。
その item を固定順で包む TaxonomyHierarchy がドメイン側の表現で、
表示するときだけ TaxonomyGraph へ変換します。
TaxonomyHierarchy は分類ドメインの正しさを守る形です。
界、門、綱、科、属、種、品種という順序を保ち、分類の親子関係を入れ子として扱います。
TaxonomyGraph は同じ分類体系を可視化へ渡しやすい形に変換したものです。
BreedEntity
+-- TaxonomyHierarchy
+-- TaxonomyHierarchyItem(kingdom)
+-- source_id
+-- name
+-- TaxonomyHierarchyItem(phylum)
+-- source_id
+-- name
+-- TaxonomyHierarchyItem(classification)
+-- source_id
+-- name
+-- TaxonomyHierarchyItem(family)
+-- source_id
+-- name
+-- TaxonomyHierarchyItem(genus)
+-- source_id
+-- name
+-- TaxonomyHierarchyItem(species)
+-- source_id
+-- name
+-- TaxonomyHierarchyItem(breed)
+-- source_id
+-- name
|
v
TaxonomyGraph
+-- nodes: TaxonomyGraphNode[]
+-- edges: TaxonomyGraphEdge[]
|
+-- d3 などの表示ライブラリへ渡しやすい
nodes は分類名そのものを表す点で、edges は点と点をつなぐ親子関係の線です。
たとえば「動物界」「脊索動物門」「鳥綱」はそれぞれ node になり、
「動物界から脊索動物門へ」「脊索動物門から鳥綱へ」というつながりが edge になります。
node: 動物界
|
| edge: 動物界 -> 脊索動物門
v
node: 脊索動物門
|
| edge: 脊索動物門 -> 鳥綱
v
node: 鳥綱
id と name をばらばらの値として運ぶのではなく、TaxonomyHierarchyItem として1つの意味を持つ値にまとめます。
その item の並びを TaxonomyHierarchy として扱い、必要なときだけ nodes/edges 形式の TaxonomyGraph へ変換します。
鶏の飼養分布や観察記録は、鶏の観察グラフページに分けて確認できます。
分類グラフ
nodes/edges 形式の分類データを Force-directed graph として表示します。