サブ言語(サブげんご、)とは、言語の部分集合である。サブ言語は、自然言語、コンピュータのプログラミング言語、およびリレーショナルデータベースにおいて見られる。

自然言語における例

情報学、自然言語処理、機械翻訳の分野において、サブ言語とは限定された領域、特に技術的な領域における言語を指す。数学的な意味では、「ある言語の文の部分集合は、その言語の何らかの演算のもとで閉じている場合に、その言語のサブ言語を形成する。例えば、部分集合の2つの要素に対してandやbecauseのような演算を行った場合に、その結果も同じ部分集合の要素となる場合である」とされる。これは、大半の言語学研究において「言語変種」または「レジスター」と呼ばれるものを指す特有の用語である。

コンピュータ言語における例 「サブ言語」という語は、ある言語の部分集合であるコンピュータ言語を指すためにも用いられることがある。サブ言語は、構文的に制限されている場合(元の言語の部分文法(サブグラマー)を受け入れる)、および/または意味的に制限されている場合(任意のプログラムについて起こりうる結果の集合が、元の言語で起こりうる結果の部分集合である)がある。

具体例 例えば、は、このサブ言語のために単一パスのコンパイラを書けるように設計されたALGOL 68の部分集合であった。

SQL(Structured Query Language)の文は、さまざまな方法で分類されるがSQL-92, 4.22 SQL-statements, 4.22.1 Classes of SQL-statements "There are at least five ways of classifying SQL-statements:", 4.22.2, SQL statements classified by function "The following are the main classes of SQL-statements:"; SQL:2003 4.11 SQL-statements, and later revisions.、一般的にはデータ照会言語(DQL)、データ定義言語(DDL)、データ制御言語(DCL)、データ操作言語(DML)といったサブ言語にグループ化できる。

関係データベース理論における例

リレーショナルデータベース理論において、「サブ言語」という語は、1970年にE・F・コッドによってこの意味で初めて使用され、リレーショナルデータベース管理システム(RDBMS)の構造や内容を定義・操作するために用いられるコンピュータ言語を指す。現代のRDBMSに関連する典型的なサブ言語には、QBE(Query by Example)やSQL(Structured Query Language)がある。1985年、コッドは、あるデータベースが真にリレーショナルであるために満たすべき12の規則として自らの考えをまとめた。第5の規則は「包括的データサブ言語の規則」として知られ、以下のように述べている。

リレーショナルシステムは、複数の言語やさまざまな端末利用モード(例えば空欄補充モード)をサポートしてもよい。しかし、その文が何らかの明確に定義された構文に従って文字列として表現可能であり、かつ以下のすべての項目を包括的にサポートする言語が、少なくとも一つは存在しなければならない。 データ定義 ビュー定義 データ操作(対話的および、プログラムによるもの) 整合性制約 認可 トランザクションの境界(開始・コミット・ロールバック)

脚注