Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

This section provides information about other characteristics of the BEL Script format.

Reserved Keywords

The following keywords are reserved for use in BEL Script documents:

















Case Sensitivity

BEL and BEL Script are case sensitive. All relationship types, function names, and reserved keywords are case sensitive.
Annotation Type names and annotation values are case specific.
Namespace identifiers are case specific. The case sensitivity of namespace values is defined within the Namespace itself but most Namespaces default to being case sensitive.

Blank Lines

BEL Script allows blank lines in any section. Blank lines are ignored by the BEL Script processor.


All URLs used in Annotation Types or Namespace definitions in the Definitions section need to be quoted with double quotes.
Any string identifiers that contain non-alphanumeric characters including white space should be quoted. For example, the following BEL Statement

Code Block
p(PUBCHEM:"long chemical name+") -> bp(GO:"cell proliferation")

would be correctly interpreted.

Any string identifiers that are identical to Reserved Keywords or BEL Functions should be quoted. For example, the following term expressions will cause errors because 'a' is reserved for the abundance() function and 'SET' is a reserved keyword:

Code Block


The identifier values must be quoted to be correctly interpreted:

Code Block

Object Identifiers

Annotation Type and Namespace identifiers must contain only alphanumeric characters and underscore (_). They must not begin with number. By convention BEL Script uses Camel Case for object Identifiers.

Examples of Valid Object Identifiers:

  • Quality
  • ExperimentType
  • experiment_type
  • Rating
  • Workflow
  • ReviewStatus

Examples of Invalid Object Identifiers:

  • Experiment type (space is not allowed)
  • 2nd_time_point (begins with a number)

List Operator

Certain control records take a list of arguments as input. A list is defined by enclosing comma separated values in { and } braces.
The following are examples of using the list operator:

Code Block
SET BodyPart={"lung", "liver"}
SET Citation={"document type", "document name", "publication id"}

A List can be nested within another list if the operation takes a list of lists as values.

Line Continuation Operator

Statements in a BEL Script are processed one line at a time. Multiple lines can be grouped together by using the line continuation operator \. In this case, the lines are processed as a single statement. For example, the following two statements have the same meaning:
Statement 1:

Code Block
kin(p(HGNC:IGFI1R)) -| (p(HGNC:BNIP3) -> bp(GO:apoptosis))

Statement 2:

Code Block
kin(p(HGNC:IGFI1R)) -| (p(HGNC:BNIP3) -> \


BEL Script supports both Document-level and Statement-level comments in a script file.

Document Comments

Document-level comments can be positioned anywhere in a document. These comments do not get processed and are not stored once the BEL Script is imported into a Document Store. A document-level comment starts with a pound sign (#) character that must be the first character in the record.
The following are examples for document-level comments:

  1. document generated by NLP algorithm ABC on December 22, 2010
  2. most statements in this document are from a PubMed document

    Statement Comments

    BEL Script supports in-line comments associated with BEL Statements. In-line comments can be used after any BEL Statement. Each Statement comment starts with a double slash // followed by the comment text. All text following the comment is processed by the interpreter and will be imported into a BEL Document Store and associated with the BEL Statement.
    The following is an example of a Statement-level comment:

    Code Block
    tscript(p(HGNC:TP53)) -> r(HGNC:FAS) // apoptosis related gene