このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

デジタル語彙目録:: 名前の管理

デジタル語彙目録のそもそもの動機が、同義語・多義語の問題の解決(少なくとも軽減)なので、名前の管理が基本的かつ主要な課題です。名前の管理方式について考えます。

内容:

ハブ記事:

名前

デジタル語彙目録においてやるべきことは割と単純です。まずは、現実世界の事物であれ概念的事物であれ、モノ〈存在物〉に名前を付けることです。名前がないモノについて語ることは出来ないので、名前は必須です。

同義語・多義語の問題がなぜ生じるかというと:

  1. ひとつのモノに対する名前がひとつとは限らない。
  2. ひとつの名前が指すモノがひとつとは限らない。

問題の解決として出来ることは限られていて、次をやるしかないでしょう。

  • 名前とモノが一対一に対応する状況を、人為的にでも無理くりにでも作り出す。

モノそのものをコンピュータで管理することは出来ないので、モノの名前を管理対象にします。管理対象としての名前は人為的な名前でもしょうがないと割り切ります。

となると、我々は三種類の名前を扱うことになります。

  1. 管理のための(人為的な)名前
  2. 日本語の文章のなかで使う名前
  3. 数式(LaTeXコード)のなかで使う名前

一番目の名前は“管理用の名前”、“管理された名前”なので管理名〈managed name〉と呼ぶことにします。ニ番目の名前は専門用語〈technical term〉、あるいは単に用語〈term〉です。三番目の名前は、「デジタル語彙目録:: 動機と概要」においてシンボル〈symbol〉と呼んだので引き続き「シンボル」を使います。

管理名、用語、シンボルをどのように決めるのか? どのように編成・組織化するのか? どのように使うのか? これがデジタル語彙目録作成時の主たる課題です。ありていに言って、デジタル語彙目録作成は、
$`\qquad`$ひたすら名前との戦い
です。

URIとしての管理名

「現実世界の事物であれ概念的事物であれ、モノに一意的な名前を付ける」ことは、ティム・バーナーズ=リーが提唱する大原則です。一意的な名前としてはURIを使います。

僕が自分のデジタル語彙目録を作るなら、僕が所有しているドメイン名 chimaira.org で修飾すれば一意性が保てます。例えば、「集合圏」という用語で表される概念の管理名として次を使います。

$`\quad`$https://www.chimaira.org/CategoryTheory/Set

URLとしてアクセスしても 404 Not Found になりますが、概念を指している名前なので、リソースとして実在している必要はありません。名前が一意的であることが重要です。

「集合圏」という用語(日本語)に対応するシンボル(LaTeXコード)はひとつではありません。集合のサイズによって $`\mathbf{Set}`$、$`\mathbf{SET}`$、$`\mathbb{SET}`$ などを使います(少なくとも僕はそうしています)。

LaTeXコード 意味
\mathbf{Set} 小さい集合の圏
\mathbf{SET} 大きい集合の圏
\mathbb{SET} とても大きい集合の圏

管理名としては、これらを区別する必要があります。最初の案は破棄して、それぞれに、例えば次のURIを付与します。

  1. https://www.chimaira.org/CategoryTheory/Set/SmallSetCat
  2. https://www.chimaira.org/CategoryTheory/Set/LargeSetCat
  3. https://www.chimaira.org/CategoryTheory/Set/VeryLargeSetCat

こう決めると、URIとしての管理名、シンボル(LaTeXコード)、修飾付きの長い用語の三者が一対一対応します。

しかし、実際には長い用語ではなくて「集合圏」が曖昧多義語として使われるでしょうから、次のような呼び名の規則を決めます。

  1. 集合圏 -(指す)→ https://www.chimaira.org/CategoryTheory/Set/SmallSetCat
  2. 集合圏 -(指す)→ https://www.chimaira.org/CategoryTheory/Set/LargeSetCat
  3. 集合圏 -(指す)→ https://www.chimaira.org/CategoryTheory/Set/VeryLargeSetCat

用語(日本語)「集合圏」が曖昧でも、シンボル(LaTeXコード)は区別できるので、シンボルを参照すれば容易に曖昧性は解決できます。

デジタル語彙目録を作る作業は、なんらかのソフトウェア(Obsidianを使うつもり)で行うでしょう。その場合、ドメイン名は取り除いた /CategoryTheory/Set/SmallSetCat のような名前のフルパスを管理すればいいでしょう。安直な方法としては、管理名をファイルシステムのファイルパス名にマップする方法があります(それが良いとは言ってない)。

指標のラベルとハッシュURI

毎度例にしている半群の指標を考えます。

$`\newcommand{\T}[1]{\text{#1}}\newcommand{\id}{\mathrm{id}}
\T{signature }\T{Semigroup}\:\{\\
\quad \T{sort } \T{U}\\
\quad \T{operation }\T{m} : \T{U} \times \T{U} \to \T{U}\\
\quad \T{equation } \T{assoc} ::
(\T{m} \times {\id}_{\T{U}} ) ; \T{m} \Rightarrow
{\alpha}_{\T{U}, \T{U}, \T{U}} ; ({\id}_{\T{U}}{\times} \T{m}) ; \T{m} \\
\}
`$

半群という概念は、構成素として、台集合 $`\T{U}`$、二項演算 $`\T{m}`$、結合律 $`\T{assoc}`$ を持ちます。これらの構成素にも、用語/シンボルとは別な管理名を付ける必要があります。例えば次のような管理名を付けるとします。

管理名 用語
carr 台集合〈underlying set | carrier〉
binOp 二項演算〈binary operation〉
assoc 結合律〈associative law〉

これらの管理名は、指標の構成素を識別するラベルになります。ラベルはテキスト文字列、シンボルはLaTeXコードです。ラベルとシンボルの綴りが同じでもかまわないし、全然別でもいいです。

管理名は一意性が要求されるのでURIにしますが、指標のラベルはフラグメントIDでいいような気がします。つまり、構成素ラベルのフルURIは、例えば次のようになります。

  1. https://www.chimaira.org/Algebra/Semigroup#carr
  2. https://www.chimaira.org/Algebra/Semigroup#binOp
  3. https://www.chimaira.org/Algebra/Semigroup#assoc

ハッシュ記号で区切ってフラグメントIDを沿えたURIはハッシュURIといいます。

フルURIでは区別できる名前でも、短い名前(ローカル名)では区別できないことは起こります。「結合律」という用語で指される法則は、assocというフラグメントIDで色んな所に登場するかも知れません。

  1. https://www.chimaira.org/Algebra/Semigroup#assoc
  2. https://www.chimaira.org/Algebra/Monoid#assoc
  3. https://www.chimaira.org/Algebra/Group#assoc

個々の代数系によらない一般的な「結合律」という概念が定義できるなら、その管理名(URI)は次のようになるでしょう。

  • https://www.chimaira.org/Algebra/Assoc

用語「結合律」は曖昧多義語となるので、次のような呼び名の規則を決めます。

  1. 結合律 -(指す)→ https://www.chimaira.org/Algebra/Semigroup#assoc
  2. 結合律 -(指す)→ https://www.chimaira.org/Algebra/Monoid#assoc
  3. 結合律 -(指す)→ https://www.chimaira.org/Algebra/Group#assoc
  4. 結合律 -(指す)→ https://www.chimaira.org/Algebra/Assoc

この多義性の解決は、たぶん文脈から容易でしょう。

ソフトウェア的な考慮

管理名は、人間だけでなくソフトウェアが使う名前です。ソフトウェアが使う名前には、約束事を決めておく必要があります。

  • 名前にどんな文字を使っていいか?
  • 特に空白や特殊文字は使っていいか?
  • 大文字小文字は区別するか?
  • 正規化の手順はあるか? あるならどんな手順か?

今では、絵文字も含めてUnicode文字なら自由に名前に使えるソフトウェアも多いですが、安全性・無難さを優先するなら Lattn-1(いわゆるASCII文字)に限定したほうがいいでしょう。

アンダスコアとハイフンは使いたい。空白も使いたいから許すとしましょうか、例えば「指標とヒルベルト・イプシロン記号を利用しよう」では、シンボルとして $`\T{'field of fractions'}`$ を名前に使ったりしているし。

さらに安全性(事故の起こりにくさ)を気にするなら、表示では大文字小文字混ぜて空白をいれてもいいが、正規化手順があり、正規化して同じ名前は許さないとします。正規化の手順は:

  • 大文字はすべて小文字に変換
  • 空白はハイフンに置き換える

例えば、field of fractionsField-of-fractions は同じ文字列 field-of-fractions に正規化されるので、違う名前として使うことはできません。

正規表現で名前の構文を書くならば:

  • 正規化前 : [a-zA-Z][-_ 0-9a-zA-Z]*
  • 正規化後 : [a-z][-_0-9a-z]*

Obsidianとプラグインをチェックしてみたのですが、この名前のルールなら、問題は起きないと思われます。