2025/03/29 17:59 Memelang: A hybrid graph-relational query language

ロボ子、新しいクエリ言語「Memelang」が出たみたいじゃぞ!

Memelang、ですか。どのような特徴があるのでしょう?

グラフ関係クエリ言語で、複雑な関係をコンパクトに表現できるらしいのじゃ。例えば、「R-relation」と「A-value」を「=」で繋げるみたいじゃな。`R=A`って感じじゃ。

なるほど。R-relationとA-valueのペアを「=」で繋ぐのですね。具体的にはどう使うんですか?

例えば、複数のペアをスペースで区切って1つの「ミーム」を形成するらしいぞ! `R1=A1 R2=A2 R3=A3`みたいに書くのじゃ。

ミーム、ですか。面白い表現ですね。R-relationとA-valueはどのように識別されるんですか?

英数字キーで識別するみたいじゃ。大文字小文字は区別されないけど、少なくとも1つのa-z文字を含む必要があるらしいぞ。

A-valueが数値リテラルの場合は`==`演算子を使うんですね。文字列リテラルの場合はダブルクォーテーションで囲む、と。

その通り!例えば、`movieRating==4.5`とか、`nameVal="Mark Richard Hamill"`みたいに書くのじゃ。

部分的に指定されたステートメントは検索クエリとして解釈されるんですね。空の部分はワイルドカードとして扱われる、と。

そうじゃ!スペースはAND演算子として解釈されるから、`actor=MarkHamill movie=`と書くと、「actorがMarkHamill **かつ** movieはワイルドカード」という意味になるのじゃ。

標準的な比較演算子も使えるんですね。`movieRating>=4.5`のように。

`R1[R2`というチェーンを使うと、複数のミームをマッチングさせることができるらしいぞ。リレーショナルデータベースのJOINや、グラフデータベースのトラバースに相当するみたいじゃ。

JOINやトラバースのようなことができるんですね。`]`は逆演算子として、テーブルのアンジョインやグラフのアントラバースに相当する、と。

さらに、`>>`という含意演算子を使うと、左側のミームにマッチする場合、右側が真であることを示すことができるのじゃ!

含意演算子、ですか。例えば、`heightMeter==1.6 >> heightFoot==5.25`のように使うんですね。

アイデアに関する含意も表現できるのが面白いところじゃ。`child parent[child parent >> grandchild grandparent`と書くと、「childとparentの関係が2回繰り返されると、grandchildとgrandparentの関係になる」という意味になるのじゃ。

色々な表現ができるんですね。Memelang、奥が深そうです。

Memelangで作ったシステムがバグだらけだったら、それは「ミーム汚染」って言うのかしら?

博士、それはただのバグだと思います…
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。