ORSL Version 1.0.1
Object Relationship Specification Language

Contact TranSeed   Home

© 2001, 2007, 2017 by TranSeed Internet Solutions. All rights reserved.


The Object Relationship Specification Language, ORSL, is a simple declarative language designed to permit rapid design of object oriented applications and systems. ORSL is free of drawing constructs, permitting significantly quicker data entry and manipulation than languages such as UML in exchange for pretty graphic presentation.

The syntax is defined only by a set of operators. Each operator is represented in an expression by a one or two ASCII character sign. The meaning of the operators and expressions derived from their combination is intuitive to those with object oriented design expertise. Contextualization is provided below for terms that require clarification. A table is provided below to define the ORSL operators and there evaluation precedence.

ORSL has several attractive features.

  • ORSL is easier to read by humans than equivalent XML.
  • ORSL defines DDL, Hibernate configuration, data access objects, data adapters, and domain objects in one place.
  • Code generators can create all these source and configuration resourses, along with JUnit tests, from ORSL input.
  • ORSL can be typed out very quickly without special tools.
  • ORSL can be edited without a mouse in vi, emacs, or other similar programmer's editors.
  • ORSL provides most of the most usable features of UML.
  • Automated graphing can be applied to orsl for technical presentations, implementation, and documentation.
  • ORSL is portable because it can can be translated to and from XML easily.


Containment in ORSL implies that the container is solely responsible for destruction of that which it contains, whether or not the contained item is located within the memory allocated for the container.

Aggregation in ORSL implies that the item contained cooperates with one or more containers to ensure that destruction occurs at the appropriate instant. This implies a reference counting mechanism or the equivalent.

Reference in ORSL implies that the container relies on the existence of that which it references for the life of the reference, but does not include containment. That is that the responsibility of destruction is delegated to other objects than the container in accordance with a pattern that guarantees the integrity of the reference.

Property in ORSL implies that the access to the item considered a property conforms to the canonical definition of a property for the target language, and also component architecture, if one exists.

Self, as denoted by the key word "self", refers to the subject of the sentence or parenthetical group, which is the first item of the sentence or parenthetical group.


Operators with higher numbered precedence are evaluated first.

Precedence Order Sign Name
1 right to left c must contain
p must contain property

must aggregate

ap must aggregate property
r must reference
i must be [either] a[n]
m must map to
u must uniquely map to
2 right to left o provides the operation
rd reading from
rw reading from and writing to
wr writing to
pr passing responsibility (of destruction) for
ar assuming responsibility (of destruction) for
3 left to right , aggregate and
4 left to right && logical and
5 left to right || logical or
6 n/a ! not
7 right to left w with
8 n/a 1..9 between 1 and 9, inclusively, of
1..* any positive number of
*..7 any non-negative number, up to 7, of
* any non-negative number of
7 exactly 7 (exactly 1 is the default)
9 n/a < ... > type parameterization
10 n/a I instance of
T type of
N nonempty
U unique
11 10 (done first) ( ... ) parenthetical grouping