The metadata API is divided into 5 primary parts:
Defining Classes
The mechanism for defining class structure, including their properties and relationships. It handles
creating accessor/mutator methods for you. The syntax for defining classes is detailed in the
UR::Object::Type::Initializer page.
Objects Representing Classes, Properties, Relationships, etc.
UR Classes aren't just conceptual entities like a package name, they have object instances to
represent them. For every named class, you can get a UR::Object::Type instance with that
"class_name". Each property defined on that class has a UR::Object::Property with a matching
"class_name" and "property_name" pair. Even those basic metadata classes have class, property and
relationship metadata of their own.
Schema Objects
If you use the "ur update classes" command-line tool to manage the linkage between your database
schema(s) and class structure (it's not necessary; you can also manage it by hand), then objects will
also exist to represent the database entities. See also UR::DataSource::Meta
. tables UR::DataSource::RDBMS::Table
. columns UR::DataSource::RDBMS::TableColumn
. Foreign key constraints UR::DataSource::RDBMS::FkConstraint and
UR::DataSource::RDBMS::FkConstraintColumn
. Primary key constraints UR::DataSource::RDBMS::PkConstraintColumn
. Unique constraints UR::DataSource::RDBMS::UniqueConstraintColumn
Namespaces, Contexts and Data Sources
Namespaces (UR::Namespace) collect and manage groups of related classes. Classes can be a member of
one Namespace, and in practice will live in a subdirectory under the Namespace module's name.
Contexts (UR::Context) and Data Sources (UR::DataSource) provide a filtered view of the data that is
reachable through the current Namespace.
Index, Change, Observer and other incidentals
And then there's everything else
UR::Object::Index objects are created by the system to handle get() requests for non-ID parameters.
UR::Change objects represent a change in the system during a software transaction, such as an
object's property changind value or creating a new instance of something.
UR::Observer objects manage the change subscription system, where the application can be notified of
changes through callbacks. See also "create_subscription" in UR::Object.
perl v5.38.2 2024-06-15 UR::Manual::Metadata(3pm)