このドキュメントでは以下の用語を使用します。
node_types.mdに規定された型を持ち、プロパティを持つオブジェクトの総称です。JSON-LD文書内では node object と value object 、および最上位マッピングが区別されますが、このドキュメントでは特に区別しません。
キーと値のペアで表現されるノードの中身で、特にキーが@typeまたはそれにマッピングされるtermでないものです。こちらも、JSON-LD文書内ではpropertiesと@valueエントリーを区別しますが、このドキュメントでは特に区別しません。
評価すると値を返すノードです。
実行しても値を返さないノードのうち、コードブロックでないものです。
0個以上の命令の順序付きリストを持つノードです。
ノード型の正式な一覧および詳細説明はnode_types.mdを参照して下さい。
ノードの階層化に関する規定などもこれに従います。
Linked Langでは、ノード型名やプロパティ名をIRIとして記述するために、linkedlang.orgという(現時点で)架空のドメインを名前空間に利用します。
例えば、コードブロックを表現するCode型は、正式にはhttps://linkedlang.org/ns#Code型です。
Linkd Langでは、プログラムは1つのCode型ノードとして記述します。最上位ノードがCode型でない場合は何もせず、最上位ノードが2つ以上存在する場合はエラーとなります。
また、プログラムの実行時には、プログラムそのものである最上位のCode型ノードを実行します。node_types.mdで説明している通り、Codeを実行するとその内容である命令のリストが順次実行され、各命令がプロパティを評価または実行することでそれぞれの下位ノードが機能します。
node_types.mdの記述に従ったノードのグラフを、JSON-LDで記述します。各ノード型の定義に規定されていないプロパティを記述すると無視されます。
JSON-LDの構文については規格文書を参照して下さい。
ただし、この実装では、Linked Lang処理系はソースコードを解釈する際に、ソースコードのcontext定義にcontext.jsonldに記載されたデフォルトcontextを統合したものとして扱います。具体的なアルゴリズムは後述します。
このデフォルトcontextの統合があるため、ソースコードでは最低限のcontext定義を省略することができ、必ずしも”完全な”JSON-LDドキュメントである必要は無いことに注意して下さい。
また、この実装では、デフォルトcontextを統合したソースコードに対し、空のマッピングをcontext定義に指定した"Compaction"処理を行ったJSON-LDドキュメントを解釈します。Compaction処理を行った結果正しいノード構造となるものであれば、ソースコードに冗長な記述があっても構いません。
Compaction処理についてはJSON-LD APIの文書を参照して下さい。
- ソースコードの最上位ノードにcontext定義が存在しない場合、デフォルトcontextを新しいcontext定義とする。
- ソースコードのcontext定義がJSONオブジェクトである場合、デフォルトcontextの内容をそれに統合する。
元のマッピングに存在しなかったキーは新しいエントリーとして追加し、既存のキーは値を上書きする。 - ソースコードのcontext定義が配列である場合、新しい要素としてデフォルトcontextを追加する。
- ソースコードのcontextが単一のIRIである場合、そのIRIを1番目、デフォルトcontextを2番目の要素とした配列を新しいcontext定義とする。