知識表現、特にセマンティックWebにおいて、メタクラスとは、そのインスタンス自体がクラスになり得るクラスのことです。プログラミング言語における役割と同様に、オントロジー言語におけるメタクラスは、本来は個体にのみ適用される特性を持ちながら、概念階層における分類可能性を維持できます。これにより、メタクラス内のステートメントを用いて、セマンティック推論エンジンがメタクラスのインスタンスに関する知識を推論することが可能になります。このように、メタクラスは、ユーザーにとって直感的な方法で知識表現の表現力を向上させます。
クラスは個体の集団を表すのに適していますが、メタクラスは、その特徴の 1 つとして、オントロジーの概念的次元を表すために使用できます。[ 1 ] メタクラスは、Web オントロジー言語(OWL) およびデータ モデリング語彙RDFSでサポートされています。メタクラスは、rdf:type および rdfs:subClassOf を含むクレームのオブジェクトとして設定することによってモデル化されることがよくあります。 これらは、一般的にインスタンスオブおよびサブクラス オブと呼ばれる組み込みプロパティです。インスタンス オブは、クレームの主体がインスタンス、つまりクラスのメンバーである個体であること を意味します。サブクラス オブは、主体がクラスであることを意味します。インスタンス オブおよびサブクラスのコンテキストでは、メタクラスと通常のクラスの主な違いは、メタクラスはクラスで使用されるインスタンス オブ クレームのオブジェクトであるのに対し、通常のクラスはそのようなクレームのオブジェクトではないことです。 (例えば、あるクレームでは、ボブは主語でありインスタンスですが、目的語である人間は通常のクラスです。しかし、さらに別のクレームでは、「動物種」はメタクラスになります。なぜなら、動物種には「人間」というメンバーがあり、これもクラスだからです。)Bob instance of HumanHuman instance of Animal species
OWL 2 DL は、構文コンテキストに応じて 1 つのエンティティをクラスと個体という 2 つの異なるタイプとして解釈する「パニング」と呼ばれる機能によってメタクラスをサポートしています。 [ 2 ]例えば、パニングによって、オントロジーは、、、といった概念階層を持つことができます。この場合、パニングされたエンティティは、クラス (2 番目のクレーム) とインスタンス (3 番目のクレーム) として表現されるため、ゴールデン イーグルになります。一方、メタクラスは、クラスであるインスタンスを持つ種になります。パニングにより、通常は通常のインスタンスにのみ適用される他のプロパティをクラスに直接使用することもできます。たとえば、「ゴールデン イーグルの保全状況は軽度懸念」などです。[ 3 ]Harry the eagle instance ofgolden eaglegolden eagle subclass ofbirdgolden eagle instance ofspecies
知識表現、記述論理、形式オントロジーの分野から生まれたセマンティックWeb言語は、JavaやPythonなどの従来のプログラミング言語よりも哲学的オントロジーと密接な関係にある。したがって、メタクラスの性質は、抽象オブジェクト、抽象と具体、型トークンの区別といった哲学的概念によって規定されている。メタクラスは、概念を他の概念のトークンとして解釈することを可能にする一方で、型としてのオントロジー上の地位を維持する。これにより、型を列挙できると同時に、型からの継承能力も維持できる。例えば、メタクラスを用いることで、機械推論エンジンは、人間にとって分かりやすいオントロジーから周期表にいくつの元素があるかを推論したり、陽子の数が化学元素の特性であり、同位体が元素のサブクラスであることから、水素2同位体にいくつの陽子が存在するかを推論したりすることができる。
メタクラスは、単純な型の理論[ 4 ]と同様に、レベルごとに整理されることがあります。メタクラスではないクラスは第1レベルに割り当てられ、第1レベルのクラスのクラスは第2レベルに、第2レベルのクラスのクラスは次のレベルに割り当てられ、といった具合です。[ 5 ]
型トークンの区別に従って、エイブラハム・リンカーンや火星などの現実世界のオブジェクトは、類似のオブジェクトのクラスに再編成されます。エイブラハム・リンカーンは人間のインスタンスであり、火星は惑星のインスタンスであると言われます。これは一種の「is-a」関係です。メタクラスはクラスのクラスであり、たとえば核種の概念などです。化学では、原子はしばしば元素、より具体的には同位体に分類されます。最後に飲んだグラスの水には多くの水素原子が含まれており、それぞれの水素は水素のインスタンス です。 原子のクラスである水素自体は、核種のインスタンスです。核種はクラスのクラスであり、したがってメタクラスです。
RDFでは、rdf:typeプロパティは、リソースがクラスのインスタンスであることを宣言するために使用されます。[ 6 ]これにより、rdf:typeを連鎖的に 使用することでメタクラスを簡単に作成できます。 [ 7 ] [ 8 ]例えば、次の2つのトリプルでは、
: Harry_the_eagle rdf : type : golden_eagle : golden_eagle rdf : type : speciesリソース種はメタクラスです。なぜなら、最初の文ではゴールデンイーグルがクラスとして使用され、 2番目の文ではゴールデンイーグルというクラスが種というクラスのインスタンスであるとされているからです。この方法により、クラス以外のインスタンスも扱うことができます。:species
RDFでは、組み込み語彙で定義されているプロパティ以外にもプロパティを作成する方法として、rdf:Propertyも提供されています。プロパティはメタクラスに直接使用できます。たとえば、「種数870万」のように使用できます。ここで、quantityはrdf:Propertyで定義されたプロパティであり、speciesは上記の例で説明したメタクラスです。
RDF の拡張であるRDFS は、 rdfs:Classとrdfs:subClassOfを導入し、語彙が概念を分類する方法を充実させました。[ 9 ] [ 10 ] rdf:type は語彙がインスタンス化を表現できるようにする のに対し、rdfs:subClassOfプロパティは語彙が包含関係を表現できるようにします。したがって、RDFS は、語彙が分類体系(包含階層または概念階層とも呼ばれる)を表現できるようにします。これは、 RDF によって可能になった型とトークンの区別に対する重要な追加です。
特に、リソースrdfs:Class はそれ自体のインスタンスであり、[ 9 ]言語の内部実装におけるメタクラスの使用とrdf:typeの反射的使用の両方を示しています。 RDFS はそれ自体のメタモデルです[ 11 ]。 これにより、リソースがメタクラスであることを表現する 2 番目の方法が可能になります。たとえば、 をインスタンス化するトリプルは、をクラスとして宣言します。たとえば、 をサブクラス化してメタクラス リソースを宣言することもできます。推論により、 :speciesのインスタンスはクラスであるため、クラス インスタンスを持つクラス、つまりメタクラスになります。[ 12 ]。 この 2 番目の方法では、species の非クラス インスタンスは許可されず、 をメタクラスとして明示的に宣言します。rdfs:Class:golden_eaglerdf:typerdfs:Class:golden_eaglerdfs:Class:speciesrdfs:SubclassOf:tpecies
OWL1 -DLのような一部の OWL フレーバーでは、エンティティはクラスまたはインスタンスのいずれかであり、両方であることはできません。この制限により、メタクラスとメタモデリングは禁止されます。[ 13 ]これは OWL1 フルフレーバーでは当てはまりませんが、これによりモデルが計算的に決定不能になります。[ 14 ] OWL2 では、メタクラスはパニングを使用して実装できます。これは、クラスを個体であるかのように扱う方法です。[ 2 ]メタレベルでオントロジーの特性をチェックするために、他のアプローチも提案され使用されています。 [ 15 ]
OWL 2 は、ダジャレと呼ばれる機能を通じてメタクラスをサポートしています。ダジャレによって実装されたメタクラスでは、構文上の文脈に応じて、同じ主題がクラスと個体という根本的に異なる 2 つのタイプとして解釈されます。これは、同じ単語の異なる意味を強調して要点を説明する自然言語のダジャレに似ています。自然言語ではダジャレは通常、ユーモアや修辞的な効果のために使われますが、セマンティック Web 技術におけるダジャレの主な目的は、概念をより簡単に表現できるようにし、日常会話や学術文献で議論される方法に近づけることです。
OWL 2 では同じシンボルが異なる役割を担うことが許されているが、その標準セマンティクス (直接セマンティクスとして知られる) では、シンボルが個体、クラス、またはプロパティとして使用されるかどうかに応じて、シンボルの解釈が依然として異なっている。[ 16 ] [ 17 ]

Cyc AI プロジェクトのようなオントロジーでは、クラスとメタクラスを分類しています。[ 5 ]クラスは、固定順序クラスと可変順序クラスに分けられます。固定順序クラスの場合、メタクラスの順序は、個体を見つけるために必要な「インスタンス of」トリプルの数に関して個体までの距離を測定することによって割り当てられます。メタクラスではないクラスは個体のクラスなので、その順序は「1」(1 階クラス)です。1 階クラスのクラスであるメタクラスの順序は「2」(2 階クラス)で、以下同様です。一方、可変順序メタクラスはインスタンスを持つことができます。可変順序メタクラスの 1 つの例は、すべての固定順序クラスのクラスです。
他の多くのデータ モデリング言語とは異なり、RDF スキーマではモデリングの自由度が非常に高い。たとえば、同じエンティティをクラスとプロパティの両方として使用できる。また、「クラス」の世界と「インスタンス」の世界の間には厳密な分離はない。したがって、RDF セマンティクスでは、次のグラフが有効であるとみなされる。 ex:Jumbo rdf:type ex:Elephant. ex:Elephant rdf:type ex:Species. つまり、「elephant」はクラス (Jumbo をサンプル インスタンスとして使用) とインスタンス (動物種のクラスのインスタンス) の両方になり得る。
2 直接意味論では、同じ名前の異なる使用法は完全に別個のものとして扱われます。
DSは、標準的な一階述語論理(FOL)意味論の解釈の概念に基づいており、そのため、同じ名前の個体とクラスが異なる要素であると認めることで、言葉遊びを扱います。