Skip to content

Commit

Permalink
Updates on MRGT and term selection syntax
Browse files Browse the repository at this point in the history
Signed-off-by: Rieks <[email protected]>
  • Loading branch information
RieksJ committed Oct 5, 2023
1 parent 2db5b62 commit e562fa4
Show file tree
Hide file tree
Showing 16 changed files with 261 additions and 59 deletions.
4 changes: 2 additions & 2 deletions docs/glossaries/mrg.tev2.terms.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -1181,7 +1181,7 @@ entries:
term: 'term-selection-criteria'
termType: 'concept'
isa: null
glossaryTerm: 'Term Selection Criteria'
glossaryTerm: 'Term Selection Instructions'
glossaryText: 'criteria that are used within a particular [scope](@) for the selection of [terms](@) that are part of a particular [terminology](@).'
synonymOf: 'selection-criteria'
grouptags: 'glossary-entries, terminology-management'
Expand Down Expand Up @@ -1313,7 +1313,7 @@ entries:
termType: 'concept'
isa: null
glossaryTerm: 'Terminology Under Construction'
glossaryText: 'a set of [terms](@) (that is initially empty), to which [terms](@) can be added or removed as specified by [term selection criteria](@), so as to ultimately result in a proper [terminology](@).'
glossaryText: 'a set of [terms](@) (that is initially empty), to which [terms](@) can be added or removed as specified by [term selection instructions](@), so as to ultimately result in a proper [terminology](@).'
synonymOf: null
grouptags: null
formPhrases: null
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,17 +19,17 @@ The actual creation of a [terminology](@), and the subsequent generation of the

## Specifying the contents of a terminology {#specifying-terminology}

A [curator](@) specifies a [terminology](@) by creating a new entry in the [`versions` section](tev2-specifications/docs/spec-files/saf#versions) of the [SAF](@) (of the [scope](@) in which the [terminology](@) is to reside). This entry will contain
A [curator](@) specifies a [terminology](@) by creating a new entry in the [`versions` section](/docs/spec-files/saf#versions) of the [SAF](@) of the [scope](@) in which the [terminology](@) is [curated](@). This entry will contain

- one or more [versiontags](@) that allow the [terminology](@) to be [identified](@) (within its [scope](@)),
- the [term selection criteria](@) that specify the [terms](@) that are to be included (or removed) from the [terminology as it is being constructed](terminology-under-construction@), and
- some meta-data (see the [documentation](tev2-specifications/docs/spec-files/saf#versions).
- the [term selection instructions](@) that specify the [terms](@) that are to be included (or removed) from the [terminology as it is being constructed](terminology-under-construction@), and
- some meta-data (see the [documentation](/docs/spec-files/saf#versions).

## Process for creating a terminology

The creation of a [terminology](@) is equivalent with the creation of the set of [MRG entries](@) that document each of the [terms](@) therein. Thus, the process for creating a [terminology](@) can be described as follows:
1. start with an empty set of [MRG entries](@) - we use the term "[terminology under construction](@)" to refer to this set.
2. sequentially process the list of [term selection criteria](@) as specified in the appropriate entry of the [`versions` section](tev2-specifications/docs/spec-files/saf#versions) of the [SAF](@), i.e. instructions which allow for
2. sequentially process the list of [term selection instructions](@) as specified in the appropriate entry of the [`versions` section](/docs/spec-files/saf#versions) of the [SAF](@), i.e. instructions which allow for
- [adding](#syntax-add) [MRG entries](@) to the [terminology under construction](@); these can either be [entries](mrg-entry@) that have been created from [curated texts](@), or [entries](mrg-entry@) whose contents are obtained from an [MRG](@) other than the one that is being created.
- [removing](#syntax-remove) [MRG entries](@) from the [terminology under construction](@);
- [modifying attributes](#syntax-rename) of a specific [MRG entry](@) in the [terminology under construction](@), e.g. for renaming a term that originated from another [scope](@).
Expand All @@ -39,7 +39,7 @@ In this text, we will use the terms:
- **current scope** for the [scope](@) within which the [terminology](@) is being created and
- **current version** for the [version](@) of the [terminology](@) that is being created.

In the syntax specification for [term selection criteria](@), we use the following symbols:
In the syntax specification for [term selection instructions](@), we use the following symbols:

| Symbol | Description |
| :----- | :---------- |
Expand Down
14 changes: 7 additions & 7 deletions docs/spec-files/11-saf.md
Original file line number Diff line number Diff line change
Expand Up @@ -104,11 +104,11 @@ The `scopetags` section is a list that specifies a mapping between [scopetags](@
# that live within them, e.g. to use/import their data.
#
scopes: #
- scopetag: [ essiflab ] # definition of (scope) tag(s) that are used within this scope to refer to a specific terminology
- scopetag: essiflab # definition of (scope) tag(s) that are used within this scope to refer to a specific terminology
scopedir: https://github.com/essif-lab/framework/tree/master/docs # URL of the scope-directory
- scopetag: [ essif-lab ] # define another scopetag for the same scopedir (just because you can)
- scopetag: essif-lab # define another scopetag for the same scopedir (just because you can)
scopedir: https://github.com/essif-lab/framework/tree/master/docs # URL of the scope-directory
- scopetag: [ ctwg ] # definition of (scope)tag(s) that are used within this scope to refer to a specific terminology
- scopetag: ctwg # definition of (scope)tag(s) that are used within this scope to refer to a specific terminology
scopedir: https://github.com/trustoverip/ctwg # URL of the scope-directory
~~~

Expand Down Expand Up @@ -136,7 +136,7 @@ It may be simpler to change the `scopetags`-field, which is currently a list of

### SAF Versions - Enabling changes and updates in a scope's Terminology {#versions}

The third section (called `versions`) in the [SAF](@) specifies the [terminologies](@) that are actively maintained by the [curators](@) of the [scope](@). Each such [terminology](@) is [identified](@) (within that [scope](@)) by a (main) [versiontag](@) and optionally also alternative [versiontags](@). The contents of a [terminology](@) is specified by so-called [term selection criteria](@). The [Terminology Construction page](/tev2-specifications/docs/spec-tools/terminology-construction) documents the kinds of [term selection criteria](@) that are available, and how they work in the [term](@) selection process.
The third section (called `versions`) in the [SAF](@) specifies the [terminologies](@) that are actively maintained by the [curators](@) of the [scope](@). Each such [terminology](@) is [identified](@) (within that [scope](@)) by a (main) [versiontag](@) and optionally also alternative [versiontags](@). The contents of a [terminology](@) is specified by so-called [term selection instructions](@). The [Terminology Construction page](/tev2-specifications/docs/spec-tools/terminology-construction) documents the kinds of [term selection instructions](@) that are available, and how they work in the [term](@) selection process.

This `versions` section contains a list of fields that each specify one [terminology](@) and some meta-data, e.g., regarding the state/validity of the [terminology](@) over time. This may be of interest to the [curators](@) of other [scopes](@) as they need to decide whether or not to import [terms](@) from such a [terminology](@).

Expand All @@ -156,7 +156,7 @@ versions:
altvsntags: # alternative verstiontags
- latest
- 0x921456
termselcrit:
termselection:
- "tags[management]@essif-lab" # import all terms from the mrg of `essif-lab:latest` that have grouptag `management`.
- "terms[party,community](@essif-lab:0.9.4)" # import the terms `party` and `community` from the mrg of `essif-lab:0.9.4`.
- "*@tev2" # import all terms defined in the scope `tev2`
Expand All @@ -166,7 +166,7 @@ versions:
- vsntag: test # a versiontag that identifies this version from all other versions in the SAF
altvsntags: # alternative verstiontags
- 0x654129
termselcrit:
termselection:
- "*@essif-lab" # import all terms defined in the scope `essif-lab`
- "-tags[terminology]" # remove all terms tagged with the grouptag `terminology`
- "*@tev2" # import all terms defined in the scope `tev2`
Expand All @@ -190,7 +190,7 @@ The following fields are defined for the `versions` section of a [SAF](@):
| `vsntag` | Y | [Versiontag](@) that that is used to [identify](@) this version within the set of all other versions that are maintained within this [scope](@). in this [SAF](@). It MUST NOT be changed during the lifetime of this version.<br/>Must satisfy regex `[a-z0-9_-\.]+`. |
| `altvsntags` | n | List of alternative [versiontags](@) that may be used to refer to this version of the [scope's](@) [terminology](@). A typical use of this field would be to tag a version as the 'latest' version.<br/>Must satisfy regex `[a-z0-9_-\.]+`. |
| `license` | n | File that contains the (default) licensing conditions. Full URL is `scopedir`/`license`. If not specified, its value defaults to the value of the `license` field in the `scope` section (of this [SAF](@)). The purpose of this field is to allow different versions of the [scope's](@) [terminology](@) to have different licenses. |
| `termselcrit` | Y | List of [term selection criteria](@) that are used to generate (this version of) the [scope's](@) [terminology](@). See [Terminology Construction](/docs/spec-tools/terminology-construction) for details. |
| `termselection` | Y | List of [term selection instructions](@) that are used to generate (this version of) the [scope's](@) [terminology](@). See [Terminology Construction](/docs/spec-tools/terminology-construction) for details. |
| `status` | n | Text that [identifies](@) the status of the [term](@). ([Communities](@) of) [scopes](@) may specify values for this field. If not specified, the status SHOULD be assumed to be 'concept', 'draft', 'proposed', or similar. An example is the [status tags used by ToIP](https://github.com/trustoverip/concepts-and-terminology-wg/blob/master/docs/status-tags.md). |
| `from` | F | Date at which it was decided to establish this version. |
| `to` | F | Date at which this version will expire (or has expired). |
Expand Down
10 changes: 6 additions & 4 deletions docs/spec-files/21-mrg.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,16 @@ Every [scope](@) has (at least) one **Machine Readable Inventory**[^1] (that we

## File naming conventions {#mrg-file-naming}

The file naming conventions apply to one particular [scope](@), which implies that there is a single [SAF](@), a single [glossarydir](@), and a single [scopedir](@) (called `{scopedir}` here). Within this [scope](@), the meaning of [scopetags](@), i.e. the [scopes](@) to which they refer, are defined in/by the [SAF](@).
The file naming conventions apply to one particular [scope](@), which implies that there is a single [SAF](@), a single [glossarydir](@), and a single [scopedir](@). Within this [scope](@), the meaning of [scopetags](@), i.e. the [scopes](@) to which they refer, are defined in/by the [SAF](@).

Within this [glossarydir](@) we can generate (or import), and hence also find all [MRG](@)-files that are needed within its [scope](@). We use the following file naming convention for such files:

**`mrg.<scopetag>.<vsntag>.yaml`** is the name of a file that contains an actual [MRG](@), or it is a file that links (references) such a file, where:
- **`mrg.<scopetag>.<vsntag>.yaml`** is the name of a file that contains an actual [MRG](@), or it is a file that links (references) such a file, where:

- **`<scopetag>`** is the [scopetag](@) that [identifies](@) the [scope](@) in which the [MRG](@) is curated, as specified in the [SAF](@) of the [scope](@) we are in. Thus, its value must either be that of the `scopetag`-field in the [scope section](docs/spec-files/saf#terminology) of the [SAF](@), or it must be one of the values in the `scopetags`-field in the [scopes (plural) section](docs/spec-files/saf#scopes) of that [SAF](@).
- **`<vsntag>`** is the [versiontag](@) that [identifies](@) the version of the [terminology](@) for which the [MRG](@) contains [entries](mrg-entry@). Its value must be either one of the `vsntag`-fields, or appear in one of the `alatvsntag`-fields in the [versions section](/docs/spec-files/saf#versions) of the [SAF](@).
- **`<scopetag>`** is the [scopetag](@) that [identifies](@) the [scope](@) in which the [MRG](@) is curated, as specified in the [SAF](@) of the [scope](@) we are in. Thus, its value must either be that of the `scopetag`-field in the [scope section](docs/spec-files/saf#terminology) of the [SAF](@), or it must be one of the values in the `scopetags`-field in the [scopes (plural) section](docs/spec-files/saf#scopes) of that [SAF](@).
- **`<vsntag>`** is the [versiontag](@) that [identifies](@) the version of the [terminology](@) for which the [MRG](@) contains [entries](mrg-entry@). Its value must be either one of the `vsntag`-fields, or appear in one of the `alatvsntag`-fields in the [versions section](/docs/spec-files/saf#versions) of the [SAF](@).

- **`mrg.<scopetag>.yaml`** is the name of the (symbolic link) file that links to the file `mrg.<scopetag>.<vsntag>.yaml`, where `<vsntag>` is the value of `defaultvsn`-field in the [scope section](docs/spec-files/saf#terminology) of the [SAF](@).

This naming convention enables tools (as well as [curators](@) and others) that operate within a particular [scope](@), to quickly find a particular [MRG](@) that is relevant for that [scope](@).

Expand Down
6 changes: 4 additions & 2 deletions docs/spec-syntax/13-terminology-identifier-syntax.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ A **Terminology Identifier** a [text](identifier@) that [identifies](@) a [termi

## Syntax

The syntaxes that can be used for a [term identifier](@) are as follows (note that such syntax is typically preceeded by the `@`-character):
The syntaxes that can be used for a [terminology identifier](@) are as follows (note that such syntax is typically preceeded by the `@`-character):

- (empty string, null)
- `scopetag`
Expand All @@ -19,7 +19,9 @@ The syntaxes that can be used for a [term identifier](@) are as follows (note th

where

- the empty string (null) [identifies](@) the [terminology](@) in the current [scope](@) that has the current version (or default version if there is no current version).
- the empty string (null) [identifies](@) the [terminology](@) that is being used by default in the context in which the [terminology identifier](@) is being used. Typically, that would be the default version of the [terminology](@) in the current [scope](@). [^1]

[^1]: When a [terminology](@) [is being constructed](/tev2-specifications/docs/spec-tools/terminology-construction), the empty string [identifies](@) the [terminology that is under construction](terminology-under-construction)(@).

- **`scopetag`** is a [scopetag](@) that [identifies](@) the [scope](@) of the [terminology](@). If `scopetag` is omitted, the [scope](@) defaults to the current [scope](@).

Expand Down
Loading

0 comments on commit e562fa4

Please sign in to comment.