LinkML Schema Metamodel
The metamodel for schemas defined using the Linked Data Modeling Language framework.
For more information on LinkML:
- linkml.io main website
- specification
LinkML is self-describing. Every LinkML schema consists of elements that instantiate classes in this metamodel.
Core metaclasses:
There are many subsets of profiles of the metamodel, for different purposes:
For canonical reference documentation on any metamodel construct, refer to the official URI for each construct, e.g. https://w3id.org/linkml/is_a
URI: https://w3id.org/linkml/meta
Name: meta
Classes
| Class | Description |
|---|---|
| AltDescription | an attributed description |
| Annotatable | mixin for classes that support annotations |
| AnonymousEnumExpression | An enum_expression that is not named |
| AnonymousExpression | An abstract parent class for any nested expression |
| AnonymousClassExpression | None |
| AnonymousSlotExpression | None |
| AnonymousTypeExpression | A type expression that is not a top-level named type definition. Used for nesting. |
| Anything | None |
| AnyValue | None |
| ArrayExpression | defines the dimensions of an array |
| ClassExpression | A boolean expression that can be used to dynamically determine membership of a class |
| ClassLevelRule | A rule that is applied to classes |
| ClassRule | A rule that applies to instances of a class |
| CommonMetadata | Generic metadata shared across definitions |
| DimensionExpression | defines one of the dimensions of an array |
| Element | A named element in the model |
| Definition | abstract base class for core metaclasses |
| ClassDefinition | an element whose instances are complex objects that may have slot-value assignments |
| EnumDefinition | an element whose instances must be drawn from a specified set of permissible values |
| SlotDefinition | an element that describes how instances are related to other instances |
| SchemaDefinition | A collection of definitions that make up a schema or a data model. |
| SubsetDefinition | an element that can be used to group other metamodel elements |
| TypeDefinition | an element that whose instances are atomic scalar values that can be mapped to primitive types |
| EnumBinding | A binding of a slot or a class to a permissible value from an enumeration. |
| Example | usage example and description |
| Expression | general mixin for any class that can represent some form of expression |
| EnumExpression | An expression that constrains the range of a slot |
| SlotExpression | an expression that constrains the range of values a slot can take |
| TypeExpression | An abstract class grouping named types and anonymous type expressions |
| Extensible | mixin for classes that support extension |
| Extension | a tag/value pair used to add non-model information to an entry |
| Annotation | a tag/value pair with the semantics of OWL Annotation |
| ImportExpression | an expression describing an import |
| LocalName | an attributed label |
| MatchQuery | A query that is used on an enum expression to dynamically obtain a set of permissivle values via a query that matches on properties of the external concepts. |
| PathExpression | An expression that describes an abstract path from an object to another through a sequence of slot lookups |
| PatternExpression | a regular expression pattern used to evaluate conformance of a string |
| PermissibleValue | a permissible value, accompanied by intended text and an optional mapping to a concept URI |
| Prefix | prefix URI tuple |
| ReachabilityQuery | A query that is used on an enum expression to dynamically obtain a set of permissible values via walking from a set of source nodes to a set of descendants or ancestors over a set of relationship types. |
| Setting | assignment of a key to a value |
| StructuredAlias | object that contains meta data about a synonym or alias including where it came from (source) and its scope (narrow, broad, etc.) |
| TypeMapping | Represents how a slot or type can be serialized to a format. |
| UniqueKey | a collection of slots whose values uniquely identify an instance of a class |
| UnitOfMeasure | A unit of measure, or unit, is a particular quantity value that has been chosen as a scale for measuring other quantities the same kind (more generally of equivalent dimension). |
Slots
| Slot | Description |
|---|---|
| id | The official schema URI |
| name | the unique name of the element within the context of the schema |
| prefix_prefix | The prefix components of a prefix expansions |
| class_uri | URI of the class that provides a semantic interpretation of the element in a ... |
| slot_uri | URI of the class that provides a semantic interpretation of the slot in a lin... |
| type_uri | The uri that defines the possible values for the type definition |
| prefix_reference | The namespace to which a prefix expands to |
| title | A concise human-readable display label for the element |
| classes | An index to the collection of all class definitions in the schema |
| slot_definitions | An index to the collection of all slot definitions in the schema |
| description | a textual description of the element's purpose and use |
| enums | An index to the collection of all enum definitions in the schema |
| identifier | True means that the key slot(s) uniquely identifies the elements |
| types | An index to the collection of all type definitions in the schema |
| alias | the name used for a slot in the context of its owning class |
| multivalued | true means that slot can have more than one value and should be represented u... |
| typeof | A parent type from which type properties are inherited |
| subsets | An index to the collection of all subset definitions in the schema |
| required | true means that the slot must be present in instances of the class definition |
| base | python base type in the LinkML runtime that implements this type definition |
| recommended | true means that the slot should be present in instances of the class definiti... |
| repr | the name of the python object that implements this type definition |
| prefixes | A collection of prefix expansions that specify how CURIEs can be expanded to ... |
| is_a | A primary parent class or slot from which inheritable metaslots are propagate... |
| default_prefix | The prefix that is used for all elements within a schema |
| mixins | A collection of secondary parent classes or slots from which inheritable meta... |
| default_range | default slot range to be used if range element is omitted from a slot definit... |
| slots | collection of slot names that are applicable to a class |
| settings | A collection of global variable settings |
| text | The actual permissible value itself |
| imports | A list of schemas that are to be included in this schema |
| meaning | the value meaning of a permissible value |
| slot_usage | the refinement of a slot in the context of the containing class definition |
| inlined | True means that keyed or identified slot appears in an outer structure by val... |
| inlined_as_list | True means that an inlined slot is represented as a list of range instances |
| inlined_as_simple_dict | True means that an inlined slot is represented as a simple dict whose values ... |
| attributes | Inline definition of slots |
| license | license for the schema |
| tree_root | Indicates that this is the Container class which forms the root of the serial... |
| pattern | the string value of the slot must conform to this regular expression expresse... |
| rank | the relative order in which the element occurs, lower values are given preced... |
| any_of | holds if at least one of the expressions hold |
| exactly_one_of | holds if only one of the expressions hold |
| none_of | holds if none of the expressions hold |
| all_of | holds if all of the expressions hold |
| preconditions | an expression that must hold in order for the rule to be applicable to an ins... |
| postconditions | an expression that must hold for an instance of the class, if the preconditio... |
| elseconditions | an expression that must hold for an instance of the class, if the preconditio... |
| conforms_to | An established standard to which the element conforms |
| implements | An element in another schema which this element conforms to |
| instantiates | An element in another schema which this element instantiates |
| categories | Controlled terms used to categorize an element |
| keywords | Keywords or tags used to describe the element |
| definition_uri | The native URI of the element |
| id_prefixes | An allowed list of prefixes for which identifiers must conform |
| id_prefixes_are_closed | If true, then the id_prefixes slot is treated as being closed, and any use of... |
| structured_aliases | A list of structured_alias objects, used to provide aliases in conjunction wi... |
| aliases | Alternate names/labels for the element |
| deprecated | Description of why and when this element will no longer be used |
| todos | Outstanding issues that needs resolution |
| notes | editorial notes about an element intended primarily for internal consumption |
| comments | notes and comments about an element intended primarily for external consumpti... |
| in_subset | used to indicate membership of a term in a defined subset of terms used for a... |
| from_schema | id of the schema that defined the element |
| imported_from | the imports entry that this element was derived from |
| see_also | A list of related entities or URLs that may be of relevance |
| owned_by | agent that owns or is the steward of the element |
| created_by | agent that created the element |
| contributors | agent that contributed to the element |
| created_on | time at which the element was created |
| last_updated_on | time at which the element was last updated |
| modified_by | agent that modified the element |
| status | status of the element |
| literal_form | The literal lexical form of a structured alias; i |
| alias_predicate | The relationship between an element and its alias |
| alias_contexts | The context in which an alias should be applied |
| in_language | the primary language used in the sources |
| source | A related resource from which the element is derived |
| publisher | An entity responsible for making the resource available |
| abstract | Indicates the class or slot cannot be directly instantiated and is intended f... |
| mixin | Indicates the class or slot is intended to be inherited from without being an... |
| apply_to | Used to extend class or slot definitions |
| values_from | The identifier of a "value set" -- a set of identifiers that form the possibl... |
| code_set | the identifier of an enumeration code set |
| code_set_version | the version identifier of the enumeration code set |
| code_set_tag | the version tag of the enumeration code set |
| pv_formula | Defines the specific formula to be used to generate the permissible values |
| permissible_values | A list of possible values for a slot range |
| enum_uri | URI of the enum that provides a semantic interpretation of the element in a l... |
| include | An enum expression that yields a list of permissible values that are to be in... |
| minus | An enum expression that yields a list of permissible values that are to be su... |
| inherits | An enum definition that is used as the basis to create a new enum |
| matches | Specifies a match query that is used to calculate the list of permissible val... |
| identifier_pattern | A regular expression that is used to obtain a set of identifiers from a sourc... |
| concepts | A list of identifiers that are used to construct a set of permissible values |
| reachable_from | Specifies a query for obtaining a list of permissible values based on graph r... |
| source_ontology | An ontology or vocabulary or terminology that is used in a query to obtain a ... |
| is_direct | True if the reachability query should only include directly related nodes, if... |
| traverse_up | True if the direction of the reachability query is reversed and ancestors are... |
| include_self | True if the query is reflexive |
| relationship_types | A list of relationship types (properties) that are used in a reachability que... |
| source_nodes | A list of nodes that are used in the reachability query |
| emit_prefixes | a list of Curie prefixes that are used in the representation of instances of ... |
| version | particular version of schema |
| structured_imports | A list of specifications for how to import elements from external schemas |
| default_curi_maps | ordered list of prefixcommon biocontexts to be fetched to resolve id prefixes... |
| metamodel_version | Version of the metamodel used to load the schema |
| source_file | name, uri or description of the source of the schema |
| source_file_date | modification date of the source of the schema |
| source_file_size | size in bytes of the source of the schema |
| generation_date | date and time that the schema was loaded/generated |
| enum_range | An inlined enumeration |
| range_expression | A range that is described as a boolean expression combining existing ranges |
| boolean_slot | A grouping of slots that expression a boolean operator over a list of operand... |
| bidirectional | in addition to preconditions entailing postconditions, the postconditions ent... |
| open_world | if true, the the postconditions may be omitted in instance data, but it is va... |
| deactivated | a deactivated rule is not executed by the rules engine |
| rules | the collection of rules that apply to all members of this class |
| classification_rules | The collection of classification rules that apply to all members of this clas... |
| slot_conditions | expresses constraints on a group of slots for a class expression |
| subclass_of | DEPRECATED -- rdfs:subClassOf to be emitted in OWL generation |
| defining_slots | The combination of is a plus defining slots form a genus-differentia definiti... |
| union_of | indicates that the domain element consists exactly of the members of the elem... |
| unique_keys | A collection of named unique keys for this class |
| unique_key_name | name of the unique key |
| consider_nulls_inequal | By default, None values are considered equal for the purposes of comparisons ... |
| unique_key_slots | list of slot names that form a key |
| slot_names_unique | if true then induced/mangled slot names are not created for class_usage and a... |
| domain | defines the type of the subject of the slot |
| range | defines the type of the object of the slot |
| array | coerces the value of the slot into an array and defines the dimensions of tha... |
| dimensions | definitions of each axis in the array |
| minimum_number_dimensions | minimum number of dimensions in the array |
| maximum_number_dimensions | maximum number of dimensions in the array, or False if explicitly no maximum |
| exact_number_dimensions | exact number of dimensions in the array |
| inherited | true means that the value of a slot is inherited by subclasses |
| readonly | If present, slot is read only |
| ifabsent | function that provides a default value for the slot |
| implicit_prefix | Causes the slot value to be interpreted as a uriorcurie after prefixing with ... |
| value_specification_constant | Grouping for metamodel slots that constrain the a slot value to equal a speci... |
| list_value_specification_constant | Grouping for metamodel slots that constrain members of a multivalued slot val... |
| value_presence | if PRESENT then a value must be present (for lists there must be at least one... |
| equals_string | the slot must have range string and the value of the slot must equal the spec... |
| equals_number | the slot must have range of a number and the value of the slot must equal the... |
| equals_expression | the value of the slot must equal the value of the evaluated expression |
| exact_cardinality | the exact number of entries for a multivalued slot |
| minimum_cardinality | the minimum number of entries for a multivalued slot |
| maximum_cardinality | the maximum number of entries for a multivalued slot |
| equals_string_in | the slot must have range string and the value of the slot must equal one of t... |
| equals_number_in | the slot must have range number and the value of the slot must equal one of t... |
| has_member | the value of the slot is multivalued with at least one member satisfying the ... |
| all_members | the value of the slot is multivalued with all members satisfying the conditio... |
| singular_name | a name that is used in the singular form |
| inapplicable | true means that values for this slot must not be present |
| list_elements_ordered | If True, then the order of elements of a multivalued slot is guaranteed to be... |
| list_elements_unique | If True, then there must be no duplicates in the elements of a multivalued sl... |
| shared | If True, then the relationship between the slot domain and range is many to o... |
| key | True means that the key slot(s) uniquely identify the elements within a singl... |
| designates_type | True means that the key slot(s) is used to determine the instantiation (types... |
| owner | the "owner" of the slot |
| domain_of | the class(es) that reference the slot in a "slots" or "slot_usage" context |
| is_usage_slot | True means that this slot was defined in a slot_usage situation |
| usage_slot_name | The name of the slot referenced in the slot_usage |
| subproperty_of | Ontology property which this slot is a subproperty of |
| disjoint_with | Two classes are disjoint if they have no instances in common, two slots are d... |
| children_are_mutually_disjoint | If true then all direct is_a children are mutually disjoint and share no inst... |
| relational_logical_characteristic | An abstract grouping for metaslots that describe logical properties of a slot |
| symmetric | If s is symmetric, and i |
| asymmetric | If s is antisymmetric, and i |
| reflexive | If s is reflexive, then i |
| irreflexive | If s is irreflexive, then there exists no i such i |
| locally_reflexive | If s is locally_reflexive, then i |
| transitive | If s is transitive, and i |
| transitive_form_of | If s transitive_form_of d, then (1) s holds whenever d holds (2) s is transit... |
| reflexive_transitive_form_of | transitive_form_of including the reflexive case |
| inverse | indicates that any instance of d s r implies that there is also an instance o... |
| is_class_field | indicates that for any instance, i, the domain of this slot will include an a... |
| role | a textual descriptor that indicates the role played by the slot range |
| minimum_value | For ordinal ranges, the value must be equal to or higher than this |
| maximum_value | For ordinal ranges, the value must be equal to or lower than this |
| interpolated | if true then the pattern is first string interpolated |
| partial_match | if not true then the pattern must match the whole string, as if enclosed in ^ |
| syntax | the string value of the slot must conform to this regular expression expresse... |
| structured_pattern | the string value of the slot must conform to the regular expression in the pa... |
| string_serialization | Used on a slot that stores the string serialization of the containing object |
| bindings | A collection of enum bindings that specify how a slot can be bound to a permi... |
| binds_value_of | A path to a slot that is being bound to a permissible value from an enumerati... |
| obligation_level | The level of obligation or recommendation strength for a metadata element |
| type_mappings | A collection of type mappings that specify how a slot's range should be mappe... |
| framework_key | The name of a format that can be used to serialize LinkML data |
| mapped_type | type to coerce to |
| alt_description_text | text of an attributed description |
| alt_description_source | the source of an attributed description |
| alt_descriptions | A sourced alternative description for an element |
| value | example value |
| value_description | description of what the value is doing |
| value_object | direct object representation of the example |
| examples | example usages of an element |
| setting_key | the variable name for a setting |
| setting_value | The value assigned for a setting |
| import_from | |
| import_as | |
| import_map | |
| local_name_source | the ncname of the source of the name |
| local_name_value | a name assigned to an element in a given ontology |
| local_names | |
| slot_group | allows for grouping of related slots into a grouping slot that serves the rol... |
| is_grouping_slot | true if this slot is a grouping slot |
| followed_by | in a sequential list, this indicates the next member |
| reversed | true if the slot is to be inversed |
| traverse | the slot to traverse |
| path_rule | a rule for inferring a slot assignment based on evaluating a path through a s... |
| represents_relationship | true if this class represents a relationship rather than an entity |
| relational_role | the role a slot on a relationship class plays, for example, the subject, obje... |
| unit | an encoding of a unit |
| ucum_code | associates a QUDT unit with its UCUM code (case-sensitive) |
| derivation | Expression for deriving this unit from other units |
| has_quantity_kind | Concept in a vocabulary or ontology that denotes the kind of quantity being m... |
| iec61360code | |
| symbol | name of the unit encoded as a symbol |
| abbreviation | An abbreviation for a unit is a short ASCII string that is used in place of t... |
| descriptive_name | the spelled out name of the unit, for example, meter |
| mappings | A list of terms from different schemas or terminology systems that have compa... |
| exact_mappings | A list of terms from different schemas or terminology systems that have ident... |
| close_mappings | A list of terms from different schemas or terminology systems that have close... |
| related_mappings | A list of terms from different schemas or terminology systems that have relat... |
| narrow_mappings | A list of terms from different schemas or terminology systems that have narro... |
| broad_mappings | A list of terms from different schemas or terminology systems that have broad... |
| deprecated_element_has_exact_replacement | When an element is deprecated, it can be automatically replaced by this uri o... |
| deprecated_element_has_possible_replacement | When an element is deprecated, it can be potentially replaced by this uri or ... |
| annotations | a collection of tag/text tuples with the semantics of OWL Annotation |
| extensions | a tag/text tuple attached to an arbitrary element |
| extension_tag | a tag associated with an extension |
| extension_value | the actual annotation |
Enumerations
| Enumeration | Description |
|---|---|
| PvFormulaOptions | The formula used to generate the set of permissible values from the code_set ... |
| RelationalRoleEnum | enumeration of roles a slot on a relationship class can play |
| AliasPredicateEnum | permissible values for the relationship between an element and an alias |
| ObligationLevelEnum | The level of obligation or recommendation strength for a metadata element |
| PresenceEnum | enumeration of conditions by which a slot value should be set |
Types
| Type | Description |
|---|---|
| String | A character string |
| Integer | An integer |
| Boolean | A binary (true or false) value |
| Float | A real number that conforms to the xsd:float specification |
| Double | A real number that conforms to the xsd:double specification |
| Decimal | A real number with arbitrary precision that conforms to the xsd:decimal speci... |
| Time | A time object represents a (local) time of day, independent of any particular... |
| Date | a date (year, month and day) in an idealized calendar |
| Datetime | The combination of a date and time |
| DateOrDatetime | Either a date or a datetime |
| Uriorcurie | a URI or a CURIE |
| Curie | a compact URI |
| Uri | a complete URI |
| Ncname | Prefix part of CURIE |
| Objectidentifier | A URI or CURIE that represents an object in the model |
| Nodeidentifier | A URI, CURIE or BNODE that represents a node in a model |
| Jsonpointer | A string encoding a JSON Pointer |
| Jsonpath | A string encoding a JSON Path |
| Sparqlpath | A string encoding a SPARQL Property Path |
Subsets
| Subset | Description |
|---|---|
| BasicSubset | An extension of MinimalSubset that avoids advanced constructs and can be impl... |
| MinimalSubset | The absolute minimal set of elements necessary for defining any schema |
| ObjectOrientedProfile | A profile that includes all the metamodel elements whose semantics can be exp... |
| OwlProfile | A profile that includes all the metamodel elements whose semantics can be exp... |
| RelationalModelProfile | A profile that includes all the metamodel elements whose semantics can be exp... |
| SpecificationSubset | A subset that includes all the metamodel elements that form part of the norma... |