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... |