Skip to content

Language Reference#

The language is made up of a series of nested objects. At it's core you can have object;, where the object is a package;, a requirement;, or anything in between.

Package#

Packages are the root object of all SysML models package Name {}

Requirements#

Requirements have two optional opening identifiying elements: a shortname and a long name. All of the following are valid:

requirement;

requirement {}

requirement OneWordName {}

requirement 'Multiple Word Name` {}

requirement <shortname> 'Long Name' { }

Docstring#

doc
/* stuff in the docstring **/

Derivation#

Derived connections are explicitly called out as following

#derivation connection {
    end #original ::> OriginatingRequirement;
    end #derive ::> EndingRequirement;
}

Custom Requirement Metadata#

Within your package, you can define custom requirement metadata. This is set at the base of the package as a metadata def containing attributes, as follows:

package MyPackage {
  metadata def CustomRequirementMetadata {
    attribute priority : ScalarValues::String;
    attribute needBy : Time::Iso8601DateTimeEncoding;
    attribute requested : Time::Iso8601DateTimeEncoding;
  }
  ...

These can then be used directly within a requirement's block as follows:

requirement myRequirement {
    metadata CustomRequirementMetadata {
      priority = "high!";
      requested = "2025-12-04T17:00:00.000Z";
      needBy = "2025-12-24T17:00:00.000Z";
    }
}

SysGit will also display these within the Graph and the Table, and users can use the appropriate control to update these values. In this case, a text string or a date picker.

Verifications#

Verifications are important.

#