Skip to content

Commit b16a1cd

Browse files
authored
Merge pull request #140 from linkml/specification-update
added documentation
2 parents 87234b2 + 3439c7e commit b16a1cd

File tree

6 files changed

+773
-439
lines changed

6 files changed

+773
-439
lines changed

specification/01introduction.md

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
This document is a functional draft specification for the Linked Data Modeling Language (LinkML).
44

5-
LinkML is a data modeling language for describing the structure of a collection of *instances*, where instances are tree-like object-oriented structures. Instances are pieces of information that represent things of interest in a particular domain, such as individual people, biological samples, places, events, or abstract entities.
5+
LinkML is a data modeling language for describing the structure of a collection of *instances*, where instances are tree-like object-oriented structures. Instances represent things of interest in a particular domain, such as individual people, biological samples, places, events, or abstract entities.
66

7-
Instances are either primitive *types* such as numbers or strings, or objects that are typed using *classes* from a LinkML *schema*. Classes are categories or groupings of things in the domain of interest; for example, "Person", "Medical History", "Data file", or "Country". Instances can be inter-related by assigning *slot values*; for example, an instance of a Person may have values for slots "name" or "country of birth".
7+
Instances are either primitive *types* such as numbers or strings, or *objects* that are typed using *classes* from a LinkML *schema*. Classes are categories or groupings of things in the domain of interest; for example, `Person`, `Medical History`, `Data file`, or `Country`. Instances can be inter-related by assigning *values* to particular *slots*; for example, an instance of a Person may have values for slots `name` or `country of birth`.
88

99
LinkML schemas also specify *rules* for determining if instances conform to the schema, and for *inference* adding additional implicit slot values.
1010

@@ -14,7 +14,7 @@ LinkML is self-describing, and any LinkML schema is itself a collection instance
1414

1515
## Audience
1616

17-
This document is intended for LinkML tool and framework implementors, and is intended to provide formal clarity about the structure and semantics of LinkML.
17+
This document is intended for LinkML tool and framework implementors, and is intended to formally specify the structure and semantics of LinkML.
1818

1919
For a more lightweight introduction, consult the material on the main [LinkML site](https://linkml.io),
2020
including the LinkML tutorial.
@@ -25,7 +25,7 @@ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "S
2525

2626
## BNF
2727

28-
Grammars in this document are written using the BNF notation, summarized below:
28+
Grammars in this specification are written using the BNF notation, summarized below:
2929

3030
Construct | Syntax |
3131
|---|---|
@@ -44,36 +44,42 @@ We also include a meta-production rule for expressing comma-delimited lists
4444

4545
## Outline
4646

47-
The specification is organized in 6 parts. The parts cannot be read independently, as each part builds on
48-
concepts introduced in previous parts.
47+
The specification is organized in 6 parts. The parts are not independent, as each part builds on concepts introduced in previous parts.
4948

5049
### Part 1: Introduction
5150

52-
This section. Provides background information and preliminary definitions
51+
This section. Background information and preliminary definitions.
5352

5453
### Part 2: Structure and Syntax of Instances
5554

56-
Specification of the data model for instances in LinkML.
55+
Part 2 provides a *structural specification* of LinkML **instances**. The structural specification is provided as a normative abstract functional-style syntax. UML diagrams are provided for informative purposes.
5756

58-
The data model shown as UML for informative purposes. A normative functional-style syntax is provided for instances, and this syntax is used throughout the specification.
57+
This syntax is not intended as an actual exchange syntax for LinkML data. For that, existing syntaxes such as JSON, YAML, or RDF syntaxes should be used (see Part 6). The abstract syntax allows for a seperation of the essential features of the language from issues related to any particular syntax.
5958

60-
This section also introduces a **path accessor** syntax for specifying how to traverse LinkML instances.
59+
Part 2 also introduces a **path accessor** syntax for specifying how to traverse LinkML instances.
60+
61+
The abstract syntax and path accessor syntax are used in the remainder of the specification.
6162

6263
### Part 3: Structure of Schemas
6364

64-
Specification of the core elements of a LinkML schema: ClassDefinitions, TypeDefinitions, SlotDefinitions, EnumDefinitions, as well as ancillary structures.
65+
Introduces the concept of a LinkML schema, which specifies how conforming LinkML instances are intended to be structured.
66+
67+
This part specifies the core elements of a LinkML schema: [ClassDefinitions](https://w3id.org/linkml/ClassDefinition), [TypeDefinitions](https://w3id.org/linkml/TypeDefinition), [SlotDefinitions](https://w3id.org/linkml/SlotDefinition), [EnumDefinitions](https://w3id.org/linkml/EnumDefinition), as well as ancillary structures.
68+
69+
This part also introduces the concept of the LinkML metamodel. A LinkML schema is both a specification of conformance conditions for an instance, and at the same time an instance that conforms to the metamodel schema.
6570

6671
### Part 4: Derived Schemas and Schema Semantics
6772

68-
Specification of inference procedures for **derived schemas**, which can be used for purposes such as validation.
73+
Specification of inference functions and procedures for **derived schemas** to populate missing values in schemas.
6974

7075
### Part 5: Validation of Instance Data
7176

72-
Specification of the procedure for **validating** LinkML instances using a derived schema
77+
Specification of the procedure for **validating** LinkML instances using a derived schema.
7378

7479
### Part 6: Mapping of Instance Data
7580

76-
Specification of how LinkML instances are mapped to other data models and syntaxes:
81+
Specification of how LinkML instances are mapped to other data models and concrete syntaxes:
7782

78-
- JSON/YAML
83+
- JSON and the JSON subset of YAML
7984
- RDF and JSON-LD
85+
- in-memory object-oriented representations

0 commit comments

Comments
 (0)