the slot must have range number and the value of the slot must equal one of the specified values
true means that values for this slot must not be present
By default all slots are applicable. The main use case for this slot is as an override in a subclass
True means that an inlined slot is represented as a simple dict whose values are all atoms
agent that owns or is the steward of the element
An entity responsible for making the resource available
A list of specifications for how to import elements from external schemas
Grouping for metamodel slots that constrain the a slot value to equal a specified constant
An abstract parent class for any nested expression
anonymous expressions are useful for when it is necessary to build a complex expression without introducing a named element for each sub-expression
A rule that applies to instances of a class
defines one of the dimensions of an array
An abstract class grouping named types and anonymous type expressions
A sourced alternative description for an element
attributes are an alternative way of defining new slots. An attribute adds a slot to the global space in the form <class_name>__<slot_name> (lower case, double underscores). Attributes can be specialized via slot_usage.
A list of terms from different schemas or terminology systems that have broader meaning.
An index to the collection of all class definitions in the schema
The collection of classification rules that apply to all members of this class. Classification rules allow for automatically assigning the instantiated type of an instance.
A list of terms from different schemas or terminology systems that have close meaning.
notes and comments about an element intended primarily for external consumption
A list of identifiers that are used to construct a set of permissible values
ordered list of prefixcommon biocontexts to be fetched to resolve id prefixes and inline prefix variables
The combination of is a plus defining slots form a genus-differentia definition, or the set of necessary and sufficient conditions that can be transformed into an OWL equivalence axiom
the class(es) that reference the slot in a "slots" or "slot_usage" context
a list of Curie prefixes that are used in the representation of instances of the model. All prefixes in this list are added to the prefix sections of the target models.
An index to the collection of all enum definitions in the schema
An allowed list of prefixes for which identifiers must conform. The identifier of this class or slot must begin with the URIs referenced by this prefix
If identifiers are treated as CURIEs, then the CURIE must start with one of the indicated prefixes followed by `:` (_should_ start if the list is open)
If identifiers are treated as URIs, then the URI string must start with the expanded for of the prefix (_should_ start if the list is open)
Order of elements may be used to indicate priority order
A list of schemas that are to be included in this schema
used to indicate membership of a term in a defined subset of terms used for a particular domain or application.
an example of use in the translator_minimal subset in the biolink model, holding the minimal set of predicates used in a translator knowledge graph
An enum expression that yields a list of permissible values that are to be included, after subtracting the minus set
An enum definition that is used as the basis to create a new enum
All permissible values for all inherited enums are copied to form the initial seed set
An element in another schema which this element instantiates.
Keywords or tags used to describe the element
An enum expression that yields a list of permissible values that are to be subtracted from the enum
A list of terms from different schemas or terminology systems that have narrower meaning.
editorial notes about an element intended primarily for internal consumption
A list of possible values for a slot range
A collection of prefix expansions that specify how CURIEs can be expanded to URIs
A list of terms from different schemas or terminology systems that have related meaning.
A list of relationship types (properties) that are used in a reachability query
the collection of rules that apply to all members of this class
A list of related entities or URLs that may be of relevance
A collection of global variable settings
global variables are used in string interpolation in structured patterns
expresses constraints on a group of slots for a class expression
An index to the collection of all slot definitions in the schema
note the formal name of this element is slot_definitions, but it has alias slots, which is the canonical form used in yaml/json serializes of schemas.
the refinement of a slot in the context of the containing class definition.
Many slots may be re-used across different classes, but the meaning of the slot may be refined by context. For example, a generic association model may use slots subject/predicate/object with generic semantics and minimal constraints. When this is subclasses, e.g. to disease-phenotype associations then slot usage may specify both local naming (e.g. subject=disease) and local constraints
collection of slot names that are applicable to a class
This defines the set of slots that are allowed to be used for a given class. The final list of slots for a class is the combination of the parent (is a) slots, mixins slots, apply to slots minus the slot usage entries.
the list of applicable slots is inherited from parent classes
A list of nodes that are used in the reachability query
A list of structured_alias objects, used to provide aliases in conjunction with additional metadata.
An index to the collection of all subset definitions in the schema
Outstanding issues that needs resolution
An index to the collection of all type definitions in the schema
list of slot names that form a key. The tuple formed from the values of all these slots should be unique.
The identifier of a "value set" -- a set of identifiers that form the possible values for the range of a slot. Note: this is different than 'subproperty_of' in that 'subproperty_of' is intended to be a single ontology term while 'values_from' is the identifier of an entire value set. Additionally, this is different than an enumeration in that in an enumeration, the values of the enumeration are listed directly in the model itself. Setting this property on a slot does not guarantee an expansion of the ontological hierarchy into an enumerated list of possible values in every serialization of the model.
a tag/value pair with the semantics of OWL Annotation
A boolean expression that can be used to dynamically determine membership of a class
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.
An abbreviation for a unit is a short ASCII string that is used in place of the full name for the unit in contexts where non-ASCII characters would be problematic, or where using the abbreviation will enhance readability. When a power of a base unit needs to be expressed, such as squares this can be done using abbreviations rather than symbols (source: qudt)
Indicates the class or slot cannot be directly instantiated and is intended for grouping purposes.
The relationship between an element and its alias.
Alternate names/labels for the element. These do not alter the semantics of the schema, but may be useful to support search and alignment.
not be confused with the metaslot alias.
the value of the slot is multivalued with all members satisfying the condition
coerces the value of the slot into an array and defines the dimensions of that array
If s is antisymmetric, and i.s=v where i is different from v, v.s cannot have value i
asymmetry is the combination of antisymmetry and irreflexivity
python base type in the LinkML runtime that implements this type definition
the base is inherited by child types but may be overridden. Base compatibility is not checked.
in addition to preconditions entailing postconditions, the postconditions entail the preconditions
the identifier of an enumeration code set.
the version tag of the enumeration code set
enum_expression cannot have both a code_set_tag and a code_set_version
the version identifier of the enumeration code set
we assume that version identifiers lexically sort in temporal order. Recommend semver when possible
An established standard to which the element conforms.
By default, None values are considered equal for the purposes of comparisons in determining uniqueness. Set this to true to treat missing values as per ANSI-SQL NULLs, i.e NULL=NULL is always False.
a deactivated rule is not executed by the rules engine
The prefix that is used for all elements within a schema
default slot range to be used if range element is omitted from a slot definition
Description of why and when this element will no longer be used
note that linkml does not use a boolean to indicate deprecation status - the presence of a string value in this field is sufficient to indicate deprecation.
deprecated element has exact replacement
When an element is deprecated, it can be automatically replaced by this uri or curie
deprecated element has possible replacement
When an element is deprecated, it can be potentially replaced by this uri or curie
Expression for deriving this unit from other units
the spelled out name of the unit, for example, meter
True means that the key slot(s) is used to determine the instantiation (types) relation between objects and a ClassDefinition
defines the type of the subject of the slot. Given the following slot definition S1: domain: C1 range: C2 the declaration X: S1: Y implicitly asserts that X is an instance of C1
an expression that must hold for an instance of the class, if the preconditions no not hold
URI of the enum that provides a semantic interpretation of the element in a linked data context. The URI may come from any namespace and may be shared between schemas
if exact_number_dimensions is set, then minimum_number_dimensions and maximum_number_dimensions must be unset or have the same value
in a sequential list, this indicates the next member
id of the schema that defined the element
A stronger model would be range schema_definition, but this doesn't address the import model
date and time that the schema was loaded/generated
the value of the slot is multivalued with at least one member satisfying the condition
Concept in a vocabulary or ontology that denotes the kind of quantity being measured, e.g. length
Potential ontologies include but are not limited to PATO, NCIT, OBOE, qudt.quantityKind
If true, then the id_prefixes slot is treated as being closed, and any use of an id that does not have this prefix is considered a violation.
True means that the key slot(s) uniquely identifies the elements. There can be at most one identifier or key per container
a given domain can have at most one identifier
a key slot is automatically required. Identifiers cannot be optional
identifiers and keys are mutually exclusive. A given domain cannot have both
A regular expression that is used to obtain a set of identifiers from a source_ontology to construct a set of permissible values
function that provides a default value for the slot. Possible values for this slot are defined in linkml.utils.ifabsent_functions.default_library: * [Tt]rue -- boolean True * [Ff]alse -- boolean False * bnode -- blank node identifier * class_curie -- CURIE for the containing class * class_uri -- URI for the containing class * default_ns -- schema default namespace * default_range -- schema default range * int(value) -- integer value * slot_uri -- URI for the slot * slot_curie -- CURIE for the slot * string(value) -- string value
An element in another schema which this element conforms to. The referenced element is not imported into the schema for the implementing element. However, the referenced schema may be used to check conformance of the implementing element.
the imports entry that this element was derived from. Empty means primary source
the primary language used in the sources
Recommended to use a string from IETF BCP 47
true means that the *value* of a slot is inherited by subclasses
Inherited applies to slot values. Parent *slots* are always inherited by subclasses
the slot is to be used for defining *metamodels* only
True means that keyed or identified slot appears in an outer structure by value. False means that only the key or identifier for the slot appears within the domain, referencing a structure that appears elsewhere.
classes without keys or identifiers are necessarily inlined as lists
only applicable in tree-like serializations, e.g json, yaml
True means that an inlined slot is represented as a list of range instances. False means that an inlined slot is represented as a dictionary, whose key is the slot key or identifier and whose value is the range instance.
A keyed or identified class with one additional slot can be input in a third form, a dictionary whose key is the key or identifier and whose value is the one additional element. This form is still stored according to the inlined_as_list setting.
The default loader will accept either list or dictionary form as input. This parameter controls internal representation and output.
if true then the pattern is first string interpolated
indicates that any instance of d s r implies that there is also an instance of r s' d
If s is irreflexive, then there exists no i such i.s=i
indicates that for any instance, i, the domain of this slot will include an assertion of i s range
True if the reachability query should only include directly related nodes, if False then include also transitively connected
True means that this slot was defined in a slot_usage situation
True means that the key slot(s) uniquely identify the elements within a single container
a given domain can have at most one key slot (restriction to be removed in the future)
a key slot is automatically required. Keys cannot be optional
time at which the element was last updated
If True, then the order of elements of a multivalued slot is guaranteed to be preserved. If False, the order may still be preserved but this is not guaranteed
should only be used with multivalued slots
If True, then there must be no duplicates in the elements of a multivalued slot
The literal lexical form of a structured alias; i.e the actual alias value.
a name assigned to an element in a given ontology
If s is locally_reflexive, then i.s=i for all instances i where s is a class slot for the type of i
Specifies a match query that is used to calculate the list of permissible values
maximum number of dimensions in the array, or False if explicitly no maximum. If this is unset, and an explicit list of dimensions are passed using dimensions, then this is interpreted as a closed list and the maximum_number_dimensions is the length of the dimensions list, unless this value is set to False
maximum_number_dimensions cannot be less than minimum_number_dimensions
the value meaning of a permissible value
we may want to change the range of this (and other) elements in the model to an entitydescription type construct
Version of the metamodel used to load the schema
minimum number of dimensions in the array
minimum_cardinality cannot be greater than maximum_cardinality
Indicates the class or slot is intended to be inherited from without being an is_a parent. mixins should not be inherited from using is_a, except by other mixins.
true means that slot can have more than one value and should be represented using a list or collection structure.
if true, the the postconditions may be omitted in instance data, but it is valid for an inference engine to add these
the "owner" of the slot. It is the class if it appears in the slots list, otherwise the declaring slot
if not true then the pattern must match the whole string, as if enclosed in ^...$
a rule for inferring a slot assignment based on evaluating a path through a sequence of slot assignments
an expression that must hold for an instance of the class, if the preconditions hold
an expression that must hold in order for the rule to be applicable to an instance
The prefix components of a prefix expansions. This is the part that appears before the colon in a CURIE.
The namespace to which a prefix expands to.
Defines the specific formula to be used to generate the permissible values.
code_set must be supplied for this to be valid
you cannot have BOTH the permissible_values and permissible_value_formula tag
defines the type of the object of the slot. Given the following slot definition S1: domain: C1 range: C2 the declaration X: S1: Y implicitly asserts Y is an instance of C2
range is underspecified, as not all elements can appear as the range of a slot.
Specifies a query for obtaining a list of permissible values based on graph reachability
If present, slot is read only. Text explains why
true means that the slot should be present in instances of the class definition, but this is not required
If a slot is recommended, and it is not populated, applications must not treat this as an error. Applications may use this to inform the user of missing data
This is to be used where not all data is expected to conform to having a required field
If s is reflexive, then i.s=i for all instances i
it is rare for a property to be reflexive, this characteristic is added for completeness, consider instead locally_reflexive
transitive_form_of including the reflexive case
the role a slot on a relationship class plays, for example, the subject, object or predicate roles
in the context of RDF, this should be used for slots that can be modeled using the RDF reification vocabulary
in the context of property graphs, this should be used on edge classes to indicate which slots represent the input and output nodes
this should only be used on slots that are applicable to class that represent relationships
the name of the python object that implements this type definition
true if this class represents a relationship rather than an entity
in the context of Entity-Relationship (ER) modeling, this is used to state that a class models a relationship between entities, and should be drawn with a diamond
in the context of RDF, this should be used when instances of the class are `rdf:Statement`s
in the context of property graphs, this should be used when a class is used to represent an edge that connects nodes
true means that the slot must be present in instances of the class definition
a textual descriptor that indicates the role played by the slot range
the primary use case for this slot is to provide a textual descriptor of a generic slot name when used in the context of a more specific class
If True, then the relationship between the slot domain and range is many to one or many to many
a name that is used in the singular form
this may be used in some schema translations where use of a singular form is idiomatic, for example RDF
allows for grouping of related slots into a grouping slot that serves the role of a group
slot groups do not change the semantics of a model but are a useful way of visually grouping related slots
A related resource from which the element is derived.
The described resource may be derived from the related resource in whole or in part
name, uri or description of the source of the schema
modification date of the source of the schema
size in bytes of the source of the schema
Used on a slot that stores the string serialization of the containing object. The syntax follows python formatted strings, with slot names enclosed in {}s. These are expanded using the values of those slots. We call the slot with the serialization the s-slot, the slots used in the {}s are v-slots. If both s-slots and v-slots are populated on an object then the value of the s-slot should correspond to the expansion. Implementations of frameworks may choose to use this property to either (a) PARSE: implement automated normalizations by parsing denormalized strings into complex objects (b) GENERARE: implement automated to_string labeling of complex objects For example, a Measurement class may have 3 fields: unit, value, and string_value. The string_value slot may have a string_serialization of {value}{unit} such that if unit=cm and value=2, the value of string_value shouldd be 2cm
DEPRECATED -- rdfs:subClassOf to be emitted in OWL generation
Ontology property which this slot is a subproperty of. Note: setting this property on a slot does not guarantee an expansion of the ontological hierarchy into an enumerated list of possible values in every serialization of the model.
If s is symmetric, and i.s=v, then v.s=i
the string value of the slot must conform to this regular expression expressed in the string. May be interpolated.
there are no constraints on the text of the permissible value, but for many applications you may want to consider following idiomatic forms and using computer-friendly forms
A concise human-readable display label for the element. The title should mirror the name, and should use ordinary textual punctuation.
If s is transitive, and i.s=z, and s.s=j, then i.s=j
True if the direction of the reachability query is reversed and ancestors are retrieved
Indicates that this is the Container class which forms the root of the serialized document structure in tree serializations
each schema should have at most one tree root
The uri that defines the possible values for the type definition
uri is typically drawn from the set of URI's defined in OWL (https://www.w3.org/TR/2012/REC-owl2-syntax-20121211/#Datatype_Maps)
A parent type from which type properties are inherited
the target type definition of the typeof slot is referred to as the "parent type"
the type definition containing the typeof slot is referred to as the "child type"
type definitions without a typeof slot are referred to as a "root type"
The name of the slot referenced in the slot_usage
direct object representation of the example
if true then a value must be present (for lists there must be at least one value). If false then a value must be absent (for lists, must be empty)
if set to true this has the same effect as required=true. In contrast, required=false allows a value to be present
A type expression that is not a top-level named type definition. Used for nesting.
an expression that constrains the range of values a slot can take
object that contains meta data about a synonym or alias including where it came from (source) and its scope (narrow, broad, etc.)
an element that can be used to group other metamodel elements
A grouping of slots that expression a boolean operator over a list of operands
Controlled terms used to categorize an element.
if you wish to use uncontrolled terms or terms that lack identifiers then use the keywords element
URI of the class that provides a semantic interpretation of the element in a linked data context. The URI may come from any namespace and may be shared between schemas
Assigning class_uris can provide additional hooks for interoperation, indicating a common conceptual model
Two classes are disjoint if they have no instances in common, two slots are disjoint if they can never hold between the same two instances
the value of the slot must equal the value of the evaluated expression
for example, a 'length' slot may have an equals_expression with value '(end-start)+1'
the slot must have range string and the value of the slot must equal one of the specified values
URI of the class that provides a semantic interpretation of the slot in a linked data context. The URI may come from any namespace and may be shared between schemas.
Assigning slot_uris can provide additional hooks for interoperation, indicating a common conceptual model
If s transitive_form_of d, then (1) s holds whenever d holds (2) s is transitive (3) d holds whenever s holds and there are no intermediates, and s is not reflexive
Example: ancestor_of is the transitive_form_of parent_of
associates a QUDT unit with its UCUM code (case-sensitive).
A collection of named unique keys for this class. Unique keys may be singular or compound.
a collection of slots whose values uniquely identify an instance of a class
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).
The native URI of the element. This is always within the namespace of the containing schema. Contrast with the assigned URI, via class_uri or slot_uri
Formed by combining the default_prefix with the normalized element name
A list of terms from different schemas or terminology systems that have identical meaning.
a tag/value pair used to add non-model information to an entry
a regular expression pattern used to evaluate conformance of a string
a permissible value, accompanied by intended text and an optional mapping to a concept URI
the name used for a slot in the context of its owning class. If present, this is used instead of the actual slot name.
an example of alias is used within this metamodel, slot_definitions is aliases as slots
not to be confused with aliases, which indicates a set of terms to be used for search purposes.
Used to extend class or slot definitions. For example, if we have a core schema where a gene has two slots for identifier and symbol, and we have a specialized schema for my_organism where we wish to add a slot systematic_name, we can avoid subclassing by defining a class gene_my_organism, adding the slot to this class, and then adding an apply_to pointing to the gene class. The new slot will be 'injected into' the gene class.
If true then all direct is_a children are mutually disjoint and share no instances in common
a textual description of the element's purpose and use
the slot must have range of a number and the value of the slot must equal the specified value
the slot must have range string and the value of the slot must equal the specified value
the exact number of entries for a multivalued slot
if exact_cardinality is set, then minimum_cardinalty and maximum_cardinality must be unset or have the same value
Causes the slot value to be interpreted as a uriorcurie after prefixing with this string
the maximum number of entries for a multivalued slot
maximum_cardinality cannot be less than minimum_cardinality
For ordinal ranges, the value must be equal to or lower than this
Range to be refined to an "Ordinal" metaclass - see https://github.com/linkml/linkml/issues/1384#issuecomment-1892721142
the minimum number of entries for a multivalued slot
For ordinal ranges, the value must be equal to or higher than this
the unique name of the element within the context of the schema. Name is combined with the default prefix to form the globally unique subject of the target class.
the string value of the slot must conform to this regular expression expressed in the string
A range that is described as a boolean expression combining existing ranges
one use for this is being able to describe a range using any_of expressions, for example to combine two enums
the relative order in which the element occurs, lower values are given precedence
the rank of an element does not affect the semantics
An abstract grouping for metaslots that describe logical properties of a slot
if true then induced/mangled slot names are not created for class_usage and attributes
An ontology or vocabulary or terminology that is used in a query to obtain a set of permissible values
examples include schema.org, wikidata, or an OBO ontology
for obo ontologies we recommend CURIEs of the form obo:cl, obo:envo, etc
the string value of the slot must conform to the regular expression in the pattern expression
indicates that the domain element consists exactly of the members of the element in the range.
An expression that describes an abstract path from an object to another through a sequence of slot lookups
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.
a collection of tag/text tuples with the semantics of OWL Annotation
A collection of secondary parent classes or slots from which inheritable metaslots are propagated from.
mixins act in the same way as parents (is_a). They allow a model to have a primary strict hierarchy, while keeping the benefits of multiple inheritance
an element whose instances must be drawn from a specified set of permissible values
Generic metadata shared across definitions
an element that whose instances are atomic scalar values that can be mapped to primitive types
a tag/text tuple attached to an arbitrary element
Grouping for metamodel slots that constrain members of a multivalued slot value to equal a specified constant
general mixin for any class that can represent some form of expression
mixin for classes that support extension
holds if at least one of the expressions hold
holds if only one of the expressions hold
mixin for classes that support annotations
An expression that constrains the range of a slot
A primary parent class or slot from which inheritable metaslots are propagated from. While multiple inheritance is not allowed, mixins can be provided effectively providing the same thing. The semantics are the same when translated to formalisms that allow MI (e.g. RDFS/OWL). When translating to a SI framework (e.g. java classes, python classes) then is a is used. When translating a framework without polymorphism (e.g. json-schema, solr document schema) then is a and mixins are recursively unfolded
A list of terms from different schemas or terminology systems that have comparable meaning. These may include terms that are precisely equivalent, broader or narrower in meaning, or otherwise semantically related but not equivalent from a strict ontological perspective.
A collection of definitions that make up a schema or a data model.
abstract base class for core metaclasses
an element whose instances are complex objects that may have slot-value assignments
The metamodel for schemas defined using the Linked Data Modeling Language framework. For more information on LinkML: * [linkml.io](https://linkml.io) main website * [specification](https://w3id.org/linkml/docs/specification/) LinkML is self-describing. Every LinkML schema consists of elements that instantiate classes in this metamodel. Core metaclasses: * [SchemaDefinition](https://w3id.org/linkml/SchemaDefinition) * [ClassDefinition](https://w3id.org/linkml/ClassDefinition) * [SlotDefinition](https://w3id.org/linkml/SlotDefinition) * [TypeDefinition](https://w3id.org/linkml/TypeDefinition) There are many subsets of *profiles* of the metamodel, for different purposes: * [MinimalSubset](https://w3id.org/linkml/MinimalSubset) * [BasicSubset](https://w3id.org/linkml/BasicSubset) For canonical reference documentation on any metamodel construct, refer to the official URI for each construct, e.g. [https://w3id.org/linkml/is_a](https://w3id.org/linkml/is_a)
an element that describes how instances are related to other instances