文法
Playgroundリンク付きの例は、短い完全な .tdsl ファイルとして読める形にしています。各リンクには、同じ本文を source クエリに入れています。
Playground 本体は今後追加予定です。リンク先は
/playground/?source=...の将来URLとして揃えています。
timeline "読書メモ" { title "読書メモ"; unit year; range 2024..2026; calendar proleptic_gregorian;}
lane "本" as books { kind custom; order 10; }
event books 2025 "Timeline DSLを試す" { id "event:first"; };.tdsl は、年表全体の timeline、縦軸の lane、時間要素の event / span / event_range を組み合わせます。
timeline と range
Section titled “timeline と range”timeline "製品ロードマップ" { title "製品ロードマップ"; unit year; range 2025..2027; calendar proleptic_gregorian;}
lane "マイルストーン" as milestones { kind custom; order 10; }event milestones 2026 "公開ベータ" {};range 2025..2027; は表示・検証の対象範囲です。まずは unit year; と calendar proleptic_gregorian; を固定して、年単位の年表として作るのが分かりやすいです。
lane は年表の縦軸です。as milestones のように短いIDを付け、後続の event、span、event_range から参照します。
lane "マイルストーン" as milestones { kind custom; order 10; }event milestones 2026 "公開ベータ" {};order は表示順です。小さい値ほど上に並びます。kind は分類用のメタデータとして扱います。
event は1年に置く点イベントです。
timeline "製品ロードマップ" { title "製品ロードマップ"; unit year; range 2025..2027; calendar proleptic_gregorian;}
lane "マイルストーン" as milestones { kind custom; order 10; }event milestones 2026 "公開ベータ" { tags ["release"]; id "event:beta"; };event <lane-id> <year> "<label>" { ... }; の順で書きます。ラベルは年表上に表示されます。
span は存続期間や工程のように、開始年と終了年を持つ項目です。
timeline "小さなプロジェクト" { title "小さなプロジェクト"; unit year; range 2025..2028; calendar proleptic_gregorian;}
lane "工程" as phases { kind custom; order 10; }span phases 2025..2026 "設計" { tags ["phase"]; id "span:design"; };span phases 2026..2028 "実装" { tags ["phase"]; id "span:build"; };span <lane-id> <start>..<end> "<label>" { ... }; の順で書きます。
event_range
Section titled “event_range”event_range は戦争、移行期間、障害対応など、出来事として扱いたい期間に使います。
timeline "リリース計画" { title "リリース計画"; unit year; range 2025..2027; calendar proleptic_gregorian;}
lane "作業" as work { kind custom; order 10; }event_range work 2025..2026 "移行期間" { tags ["migration"]; };event work 2027 "新体制で運用開始" {};見た目は期間を持つ点で span に近いですが、意味は「期間を持つ出来事」です。時代区分や所属期間は span、作業・事件・戦争は event_range に寄せると読み分けやすくなります。
tags、id、metadata
Section titled “tags、id、metadata”event、span、event_range の { ... } には共通のメタデータを書けます。
timeline "公開履歴" { title "公開履歴"; unit year; range 2024..2026; calendar proleptic_gregorian;}
lane "リリース" as releases { kind custom; order 10; }event releases 2026 "v1.0公開" { tags ["release", "stable"]; source wd:Q95; origin manual; id "event:v1";};tags は分類、id はレビューや差分追跡で使う安定識別子です。source wd:Q95; はWikidata QIDを出典メタデータとして記録します。origin manual; は手書きデータであることを示します。
import と Wikidata の Web 制約
Section titled “import と Wikidata の Web 制約”Wikidataを使う場合は、import wikidata でQIDを取り込み、map で年表要素へ変換します。
timeline "中国王朝" { title "中国王朝"; unit year; range -300..300; calendar proleptic_gregorian;}
lane "王朝" as dynasties { kind dynasty; order 10; }
event dynasties -221 "秦の天下統一" { tags ["manual"]; };
import wikidata as wd { entity Q7209 as han_dynasty; policy merge_by_source;}
map wd.han_dynasty to span { lane dynasties; start claim(P571).year; end claim(P576).year; label label@ja ?? label@en; tags ["dynasty", "imported"];}ブラウザ版の Playground では、Wikidataのネットワーク取得は行いません。構文確認用として開けますが、import 由来の項目は描画結果から省かれることがあります。Webで確実に表示したい内容は、上の例の event dynasties -221 ... のように静的な event、span、event_range として書いてください。
Wikidataを解決してJSONやHTMLへ出力する場合はCLIを使います。
tdsl build china.tdsl --pretty --output china.jsontdsl render china.tdsl --output china.htmlCIでネットワーク取得を避けたい場合は、--offline を付けます。
tdsl build china.tdsl --offline --pretty- Quick Start で保存、検証、描画の流れを確認する
- Commands でCLIコマンドを確認する
- CIで検証する でGitHub Actionsに組み込む