About NCL

What is NCL?

NCL is the acronym for Nested Context Language.

NCL is a declarative language, indeed an XML application, which has been specified in a modular way, aiming at combining its modules into language profiles.

Among the NCL profiles are those targeting DTV domain. The NCL flexibility, its reuse facility, multi-device support, application content and presentation adaptability, and mainly, its intrinsic support for easily defining spatio-temporal synchronization among media assets, including those coming from viewer interactions, make NCL an outstanding solution for all kinds of interactive DTV systems.

NCL is the declarative language of the Japanese-Brazilian DTV middleware ISDB-TB1) 2), and also ITU-T Recommendation for IPTV services3).

NCL has a stricter separation between application content and structure. NCL does not define any media content itself. Instead, it defines the glue that holds media together in multimedia presentations. Thus, an NCL document only defines how media objects are structured and related in time and space.

As a glue language, NCL does not restrict or prescribe any media-object content type. Which media objects are supported depends on the media players embedded in the NCL formatter (the NCL player).

Therefore, we can have perceptual content, like videos, images, audios, and texts, as NCL media objects. We can also have media objects with imperative code content, like Lua code, ECMAScript code, Java code, etc. In addition, we can have media objects with declarative code content, like HTML-based code, SVG code, X3D code, SMIL code, NCL code (yes, NCL applications embed other NCL applications), etc. Therefore, NCL does not substitute but embeds other language's applications, relating all objects in time and space in a multiple device distributed presentation.

NCL Versions

The following processing instructions must be written in an NCL document. They identify NCL applications and the NCL version to which the document conforms.

<?xml version="1.0" encoding="ISO-8859-1"?>
<ncl id="any string" xmlns="http://www.ncl.org.br/NCL3.0/profileName">

A specific version is specified in the URI path, where the version number “x.y” is written immediately after the ”/NCL”.

The version number of an NCL document specification consists of a major number and a minor number, separated by a dot. The numbers are represented as decimal character strings with leading zeros suppressed. The initial standard version number is 3.0.

New NCL versions shall be released in accordance to the following versioning policy. If NCL players that conform to older versions can still receive a document based on the revised specification, due to error corrections, operational reasons, or the addition of a new concise syntax notation (“syntax sugar”) that can be translated at compile time to the old one, the new version of NCL shall be released with the minor number updated. If NCL players that conform to older versions cannot receive a document based on the revised specifications, the major number must be updated.

NCL Profiles

NCL allows for the combination of its modules in language profiles.

Any document in conformance with NCL profiles shall have the <ncl> element as its root element.

<ncl id="any string" xmlns="http://www.ncl.org.br/NCLx.y/profileName">

The “profileName” string in the URI path, identifies the language profile used to specify the document. Currently, seven language profiles have been defined:

  • The NCL 3.0 Full Profile, also called NCL 3.0 Language Profile, is the complete profile of the NCL 3.0 language. It comprises all NCL modules and provides all facilities for the declarative authoring of NCL documents.
  • The NCL 3.1 Language Profile extends the version 3.0 with a “syntactic sugar” for defining relations and relationships.
  • The NCL 3.0 Raw Profile has the same expressiveness of the NCL 3.0 Language Profile, but without any reuse facilities and with a minimum number of “syntactic sugars”. It has the minimum possible number of elements and attributes although maintaining the same expressiveness of the Full Profile.
  • The NCL 3.0 Enhanced DTV Profile (EDTV Profile) aims at the DTV domain. It is the standard declarative language of the Japanese-Brazilian DTV middleware ISDB-TB for fixed and mobile receivers, and also ITU-T Recommendation for IPTV services.
  • The NCL 3.0 Basic DTV Profile (BDTV Profile) is a simplification of the EDTV profile in which transition effects and metadata functionalities are optional. It is the standard declarative language of the Japanese-Brazilian DTV middleware ISDB-TB for portable receivers.
  • The NCL 3.0 Connector Profile allows for the creation of causal and constraint relations that can be imported by any of the previously listed profiles, except the NCL 3.0 Raw profile.
  • The NCL 3.0 CausalConnector Profile is simplified version of the NCL 3.0 Connector profile, which only allows for defining causal relations.
1) Associação Brasileira de Normas Técnicas. NBR 15606-2. Digital terrestrial television – Data coding and transmission specification for digital broadcasting – Part 2: Ginga-NCL for fixed and mobile receivers – XML application language for application coding. 2nd Edition. May, 2011. Available at http://forumsbtvd.org.br/materias.asp?id=112
2) Associação Brasileira de Normas Técnicas. NBR 15606-5. Digital terrestrial television – Data coding and transmission specification for digital broadcasting – Part 5: Ginga-NCL for portable receivers – XML application language for application coding. 2nd Edition. May, 2011. Available at http://forumsbtvd.org.br/merias.asp?id=112
3) ITU-T Recommendation H.761. Nested Context Language (NCL) and Ginga-NCL for IPTV Services. Geneva, April, 2009. Available at http://www.itu.int/rec/T-REC-H.761
Back to top