日本語
サイトを始める
自分のデータモデルを公開するサイト(ノード)を作り、自分のドメインで公開するまでを順に説明します。そもそも自分のサイトが要るかどうかは、自分のデータモデルで確かめてください。
できあがるのは models.gtt-project.org のようなサイトです。catalog.json、@context、JSON Schema、語彙、例、型と属性ごとの説明のページがそろいます。
用意するもの
- Node.js 24 以降。コマンドは
npxで実行するので、インストールは要りません。 - GitHub のアカウント(GitHub Pages で公開するため)。
- 自分で管理できるドメインかサブドメイン(
models.example.orgなど。推奨。手順 3)。
1. ノードを作る
bash
npx github:geolonia/datamodels-toolkit#v0.3.3 init my-models
cd my-modelsinit がいくつか質問します。
- ベース URL: ノードを置く場所です(例:
https://models.example.org)。ノードが公開するすべての IRI に入るので、公開した後は変えられません。https://<アカウント>.github.io/<リポジトリ>も使えますが、IRI が GitHub のアカウント名に依存します。ドメインより長く使う IRI にするなら、w3id.org のアドレスを使います。 - 言語:
ja,enなど。1 つでも構いません。 - 公開者: 組織の名前とウェブサイトです。
- ライセンス:
CC0-1.0なら、だれでも条件なしにモデルを使えます(このカタログと同じです)。 - 最初のサブジェクト: 1 つの
@contextを共有するモデルのまとまりです(例:road)。この名前も IRI に入ります。
init は、設定の node.yaml、サブジェクトの models/road/、README、LICENSE、公開用のワークフローを書き出します。LICENSE に条文が入るのは CC0-1.0 と CC-BY-4.0 で、ほかのライセンスでは自分で条文を置きます。ツールキットの新しいリリースを提案する Dependabot の設定も書き出します。既存のリポジトリで実行すると、足りないファイルだけを足します。
GitHub CLI(gh)があれば、--github my-org/my-models を付けて実行できます。init がその名前で公開リポジトリを作り、ファイルを push して GitHub Pages を有効にします(手順 2)。
2. GitHub Pages で公開する
--github を付けて始めた場合は、リポジトリができています。モデルなどの変更は、コミットして push してください。
そうでない場合は、GitHub で空のリポジトリを作り、フォルダーをその main ブランチに push します。そのうえで、リポジトリの Settings → Pages で、Source を GitHub Actions にします。
これで、main への push のたびにノードがビルドされ、公開されます。ドメインを設定するまでは、https://<アカウント>.github.io/<リポジトリ>/ で表示されます。
3. 自分のドメインで公開する
- DNS で、サブドメインから
<アカウント>.github.ioへの CNAME レコードを追加します(例:models→my-org.github.io)。 - Settings → Pages の Custom domain にドメインを入力します。GitHub が証明書を用意したら(数分から 1 時間ほど)、Enforce HTTPS を有効にします。
アカウントか組織でドメインを確認しておくと、ほかの人がそのドメインでサイトを公開できなくなります。
4. 変わらないアドレス(任意)
IRI には自分のドメインが入るので、IRI が使えるのはドメインを持ち続ける間です。モデルがドメインより長く使われそうなとき(いずれ終わるプロジェクトや、移る予定のあるチームなど)は、w3id.org のアドレスを使います。W3C の Permanent Identifier Community Group が運営する、無料の転送サービスです。https://w3id.org/<名前>/ が、ノードのある場所へ転送します。ノードを移すときは、転送先だけを変えます。
公開する前に決めてください。ベース URL は、すべての IRI に入ります。
名前を決めます。小文字の英字、数字、ハイフンで、一般的な単語は避けます(例:
my-org-models)。ids/で、その名前が使われていないか確かめてください。大文字と小文字の違いも確かめます(ids/Foo/とids/foo/を両方置くことはできません)。個人のノードは、自分の名前の代わりに共用の/people/の下に置きます(https://w3id.org/people/<名前>/)。手順 1 で、ベース URL に
https://w3id.org/my-org-modelsを指定し、ノードを自分のドメインで公開します(手順 2、手順 3)。サイト自体はそこに置いたままです。ノードが公開するリンクと IRI はすべて w3id.org を通るので、転送ができた時点で使えるようになります。perma-id/w3id.org に、
ids/my-org-models/.htaccessを足す Pull Request を開きます。連絡先と転送の規則を書きます。apache# # /my-org-models/ # # https://w3id.org/my-org-models/ redirects to https://models.example.org/ # # ## Contact # This space is administered by: # # Your Name # you@example.org # GitHub username: your-account RewriteEngine on RewriteRule ^(.*)$ https://models.example.org/$1 [R=302,L]この規則はパスをそのまま渡します。たとえば
https://w3id.org/my-org-models/ns/roadはhttps://models.example.org/ns/roadを開きます。ノードのすべての IRI とファイルが、転送を通して使えます。301 ではなく 302 を使ってください。ブラウザーは 301 をずっと覚えるので、あとでノードを移せなくなります。レビューでは転送先が公開されているかを確かめるので、ノードを先に公開しておきます。Pull Request を開く前に、Creating an identifier(英語)を読んでください。
ハッシュ IRI も転送を通して使えます。# から後ろはブラウザーに残るので、https://w3id.org/my-org-models/ns/road#RoadPatrol は、ページの該当する行を開きます。
サイトができたら、モデルを足すに進みます。