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.