@glossarist/concept-browser 0.7.99 → 0.7.101
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/__tests__/components/hyperedge-diagram.test.ts +55 -0
- package/src/__tests__/components/learn/learn-card-dimension-card.test.ts +112 -0
- package/src/__tests__/components/rake-bundles.test.ts +318 -0
- package/src/__tests__/views/learn/learn-designations-view.test.ts +84 -0
- package/src/__tests__/views/learn/learn-index-view.test.ts +45 -0
- package/src/__tests__/views/learn/learn-relationships-view.test.ts +83 -0
- package/src/__tests__/views/learn/learn-statuses-view.test.ts +60 -0
- package/src/components/HyperedgeDiagram.vue +115 -0
- package/src/components/RelationSphere.vue +30 -13
- package/src/components/learn/DimensionCard.vue +71 -0
- package/src/components/learn/LearnCard.vue +59 -0
- package/src/config/page-types.ts +1 -0
- package/src/i18n/locales/eng.yml +106 -0
- package/src/i18n/locales/fra.yml +106 -0
- package/src/router/index.ts +24 -0
- package/src/views/RelationTypesView.vue +159 -0
- package/src/views/learn/LearnDesignationsView.vue +190 -0
- package/src/views/learn/LearnIndexView.vue +75 -0
- package/src/views/learn/LearnRelationshipsView.vue +254 -0
- package/src/views/learn/LearnStatusesView.vue +114 -0
package/src/i18n/locales/fra.yml
CHANGED
|
@@ -11,6 +11,110 @@ nav.stats: Statistiques
|
|
|
11
11
|
nav.about: À propos
|
|
12
12
|
nav.navigation: Navigation
|
|
13
13
|
nav.datasets: Jeux de données
|
|
14
|
+
nav.relationTypes: Types de relations
|
|
15
|
+
nav.learn: Apprendre
|
|
16
|
+
|
|
17
|
+
# Section « Apprendre » (enseignement orienté lecteur)
|
|
18
|
+
learn.intro: Cette section explique ce que vous voyez sur ce site et ce que chaque étiquette signifie. Pour la documentation méthodologique canonique (rédaction de jeux de données, alignement ISO), consultez glossarist.org.
|
|
19
|
+
learn.glossaristOrgNote: La documentation méthodologique pour les auteurs de jeux de données se trouve sur glossarist.org.
|
|
20
|
+
learn.example: Exemple
|
|
21
|
+
learn.learnMore: En savoir plus sur glossarist.org
|
|
22
|
+
learn.relationships.title: Relations
|
|
23
|
+
learn.relationships.short: Comment lire les arêtes bilatérales, le râteau partitif, et le tuyau-fil générique.
|
|
24
|
+
learn.relationships.intro: Chaque ligne et étiquette de la Sphère de relations, de la page de détail et de la vue graphe correspond à une relation sémantique typée. Cette page explique ce que chaque type signifie et comment lire son encodage visuel.
|
|
25
|
+
learn.relationships.bilateralSection: Relations bilatérales (un-un)
|
|
26
|
+
learn.relationships.bilateralIntro: Relations typées un-un entre deux concepts. Dessinées sous forme de lignes droites colorées avec flèches dans la sphère.
|
|
27
|
+
learn.relationships.partitiveSection: Hyper-arête partitive (un-plusieurs)
|
|
28
|
+
learn.relationships.partitiveTitle: relation partitive
|
|
29
|
+
learn.relationships.partitiveBody: Décomposition tout/partie. Le concept englobant est le tout ; chaque membre est une partie. Rendu sous forme de râteau — une tige depuis l'englobant vers une colonne perpendiculaire, avec des dents descendant vers chaque membre.
|
|
30
|
+
learn.relationships.generalSection: Hyper-arête générique (un-plusieurs)
|
|
31
|
+
learn.relationships.generalTitle: relation générique
|
|
32
|
+
learn.relationships.generalBody: Décomposition genre/espèce. Le concept englobant est le genre ; chaque membre est une espèce coordonnée différant selon une dimension partagée. Rendu sous forme de branche d'arbre — un tuyau parent épais depuis l'englobant vers un nœud central, avec des fils fins rayonnant vers chaque membre.
|
|
33
|
+
learn.relationships.criterionTitle: Critère de subdivision
|
|
34
|
+
learn.relationships.criterionBody: "La dimension selon laquelle les concepts coordonnés diffèrent. Affichée une fois sur le corps du tuyau parent. Optionnelle : si aucun critère n'est décrit, aucune étiquette n'est dessinée."
|
|
35
|
+
learn.relationships.thickThinTitle: Hiérarchie épais/mince
|
|
36
|
+
learn.relationships.thickThinBody: ISO 704 utilise traditionnellement des lignes plus épaisses pour marquer différents critères de subdivision (multidimensionalité). Le tuyau-fil respecte cela avec un tuyau parent épais (3,2 px) et des fils enfants plus fins (1,0 px) — la métaphore de la branche d'arbre (tronc vs rameaux).
|
|
37
|
+
learn.dimensions.sectionTitle: Dimensions partitives (comment lire les dents du râteau)
|
|
38
|
+
learn.dimensions.presence.title: Présence
|
|
39
|
+
learn.dimensions.presence.summary: Indique si la partie doit être présente (obligatoire) ou peut être absente (optionnelle).
|
|
40
|
+
learn.dimensions.presence.required.label: obligatoire
|
|
41
|
+
learn.dimensions.presence.required.meaning: La partie doit être présente. Dessinée en ligne pleine.
|
|
42
|
+
learn.dimensions.presence.optional.label: optionnelle
|
|
43
|
+
learn.dimensions.presence.optional.meaning: La partie peut être absente. Dessinée en ligne pointillée.
|
|
44
|
+
learn.dimensions.count.title: Nombre
|
|
45
|
+
learn.dimensions.count.summary: Combien d'instances de la partie apparaissent dans le tout.
|
|
46
|
+
learn.dimensions.count.exactly_one.label: exactement un
|
|
47
|
+
learn.dimensions.count.exactly_one.meaning: Un et un seul. Dessiné en ligne simple.
|
|
48
|
+
learn.dimensions.count.at_least_one.label: au moins un
|
|
49
|
+
learn.dimensions.count.at_least_one.meaning: Un ou plusieurs. Dessiné en ligne double, la secondaire pointillée (« possiblement plus »).
|
|
50
|
+
learn.dimensions.count.multiple.label: plusieurs
|
|
51
|
+
learn.dimensions.count.multiple.meaning: Deux ou plusieurs. Dessiné en ligne double, les deux de même style que la primaire.
|
|
52
|
+
learn.dimensions.delimiting.title: Délimitation
|
|
53
|
+
learn.dimensions.delimiting.summary: Indique si la partie reflète une caractéristique délimitante — qui distingue le tout des concepts coordonnés.
|
|
54
|
+
learn.dimensions.delimiting.false.label: non délimitante
|
|
55
|
+
learn.dimensions.delimiting.false.meaning: Une partie ordinaire. Dessinée à largeur de trait normale (1,5 px).
|
|
56
|
+
learn.dimensions.delimiting.true.label: délimitante
|
|
57
|
+
learn.dimensions.delimiting.true.meaning: La partie est essentielle à l'identité du tout. Dessinée à largeur de trait 3× (4,5 px).
|
|
58
|
+
learn.designations.title: Désignations
|
|
59
|
+
learn.designations.short: Termes et symboles — préféré, admis, déconseillé, forme complète, abréviation, acronyme, sigle.
|
|
60
|
+
learn.designations.intro: Les concepts sont désignés par des termes, noms propres et symboles. Cette page explique le vocabulaire que vous verrez sur chaque page de concept.
|
|
61
|
+
learn.designations.normativeSection: Statut normatif
|
|
62
|
+
learn.designations.normativeIntro: Chaque terme porte un statut normatif attribué par l'organisme de normalisation. IL PEUT Y AVOIR PLUS D'UN terme de chaque statut — les termes préférés ne sont pas uniques.
|
|
63
|
+
learn.designations.preferred.label: terme préféré
|
|
64
|
+
learn.designations.preferred.meaning: Le terme principal pour le concept, attribué par l'organisme de normalisation.
|
|
65
|
+
learn.designations.preferred.multipleNote: Il peut y avoir plus d'un terme préféré.
|
|
66
|
+
learn.designations.admitted.label: terme admis
|
|
67
|
+
learn.designations.admitted.meaning: Un synonyme du terme préféré, mais non retenu comme préféré.
|
|
68
|
+
learn.designations.admitted.multipleNote: Il peut y avoir plus d'un terme admis.
|
|
69
|
+
learn.designations.deprecated.label: terme déconseillé
|
|
70
|
+
learn.designations.deprecated.meaning: Un synonyme du terme préféré, mais jugé indésirable.
|
|
71
|
+
learn.designations.deprecated.multipleNote: Il peut y avoir plus d'un terme déconseillé.
|
|
72
|
+
learn.designations.kindsSection: Types et formes de terme
|
|
73
|
+
learn.designations.fullForm.label: forme complète
|
|
74
|
+
learn.designations.fullForm.meaning: La représentation complète d'une désignation.
|
|
75
|
+
learn.designations.abbreviatedForm.label: forme abrégée
|
|
76
|
+
learn.designations.abbreviatedForm.meaning: Une représentation résultant de l'omission d'une partie de la forme complète.
|
|
77
|
+
learn.designations.abbreviatedForm.multipleNote: Pour certaines formes complètes, deux ou plusieurs formes abrégées peuvent exister.
|
|
78
|
+
learn.designations.borrowed.label: terme emprunté
|
|
79
|
+
learn.designations.borrowed.meaning: Un terme pris depuis une autre langue ou un autre domaine.
|
|
80
|
+
learn.designations.variant.label: variante
|
|
81
|
+
learn.designations.variant.meaning: L'une des formes alternatives d'une désignation (ex. différences d'orthographe entre régions).
|
|
82
|
+
learn.designations.typesSection: Types de désignation
|
|
83
|
+
learn.designations.typesIntro: Trois types de plus haut niveau — termes, noms propres et symboles. Pour les termes, les abréviations se divisent en acronymes vs sigles selon la prononciation.
|
|
84
|
+
learn.designations.term.label: terme (expression)
|
|
85
|
+
learn.designations.term.meaning: Une désignation parlée ou écrite — le type le plus courant.
|
|
86
|
+
learn.designations.acronym.label: acronyme
|
|
87
|
+
learn.designations.acronym.meaning: Une forme abrégée prononcée comme un seul mot.
|
|
88
|
+
learn.designations.initialism.label: sigle
|
|
89
|
+
learn.designations.initialism.meaning: Une forme abrégée prononcée lettre par lettre.
|
|
90
|
+
learn.designations.symbol.label: symbole
|
|
91
|
+
learn.designations.symbol.meaning: Une désignation graphique ou mathématique régie par ISO 80000 / IEC 60027.
|
|
92
|
+
learn.statuses.title: Statuts
|
|
93
|
+
learn.statuses.short: Statut d'entrée (valide/retiré/brouillon), statut normatif, statut de source — ce que chaque badge signifie.
|
|
94
|
+
learn.statuses.intro: Les badges de statut apparaissent partout sur le site. Cette page est une référence rapide pour leur signification.
|
|
95
|
+
learn.statuses.entrySection: Statut d'entrée
|
|
96
|
+
learn.statuses.entry.valid.label: valide
|
|
97
|
+
learn.statuses.entry.valid.meaning: L'entrée du concept est actuellement en vigueur.
|
|
98
|
+
learn.statuses.entry.withdrawn.label: retiré
|
|
99
|
+
learn.statuses.entry.withdrawn.meaning: L'entrée a été retirée de l'usage actif.
|
|
100
|
+
learn.statuses.entry.draft.label: brouillon
|
|
101
|
+
learn.statuses.entry.draft.meaning: L'entrée est en cours de développement et non finalisée.
|
|
102
|
+
learn.statuses.entry.superseded.label: remplacé
|
|
103
|
+
learn.statuses.entry.superseded.meaning: L'entrée a été remplacée par une plus récente.
|
|
104
|
+
learn.statuses.normativeSection: Statut normatif
|
|
105
|
+
learn.statuses.normativeTitle: préféré / admis / déconseillé
|
|
106
|
+
learn.statuses.normativeSummary: Statut par terme (préféré, admis, déconseillé). Chaque statut peut s'appliquer à plus d'un terme par concept.
|
|
107
|
+
learn.statuses.normativeGoDeeper: Voir les types de désignation pour des exemples
|
|
108
|
+
learn.statuses.sourceSection: Statut de source
|
|
109
|
+
learn.statuses.sourceIntro: Chaque citation porte un statut décrivant la fidélité de sa reproduction de la source.
|
|
110
|
+
learn.statuses.source.identical.label: identique
|
|
111
|
+
learn.statuses.source.identical.meaning: La définition correspond verbatim à la source.
|
|
112
|
+
learn.statuses.source.modified.label: modifié
|
|
113
|
+
learn.statuses.source.modified.meaning: La définition est adaptée de la source avec des modifications éditoriales.
|
|
114
|
+
learn.statuses.source.restyled.label: reformulé
|
|
115
|
+
learn.statuses.source.restyled.meaning: La définition préserve le sens de la source mais la reformule largement.
|
|
116
|
+
learn.statuses.source.lineage.label: lignage
|
|
117
|
+
learn.statuses.source.lineage.meaning: La source est l'ancêtre historique de ce concept, pas une citation directe.
|
|
14
118
|
|
|
15
119
|
# Home page
|
|
16
120
|
home.search: Rechercher
|
|
@@ -204,6 +308,8 @@ sphere.tight: serré
|
|
|
204
308
|
sphere.loose: étendu
|
|
205
309
|
sphere.redraw: Redessiner
|
|
206
310
|
sphere.focus: FOCUS
|
|
311
|
+
sphere.toggleMute: Basculer la visibilité
|
|
312
|
+
sphere.learnAbout: En savoir plus sur ce type de relation
|
|
207
313
|
concept.detailView: Détail
|
|
208
314
|
concept.relationSphere: Sphère de relations
|
|
209
315
|
concept.permalink: Permalien
|
package/src/router/index.ts
CHANGED
|
@@ -94,6 +94,30 @@ export const routes: RouteRecordRaw[] = [
|
|
|
94
94
|
name: 'contributors',
|
|
95
95
|
component: () => import('../views/ContributorsView.vue'),
|
|
96
96
|
},
|
|
97
|
+
{
|
|
98
|
+
path: '/relation-types',
|
|
99
|
+
redirect: '/learn/relationships',
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
path: '/learn',
|
|
103
|
+
name: 'learn',
|
|
104
|
+
component: () => import('../views/learn/LearnIndexView.vue'),
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
path: '/learn/relationships',
|
|
108
|
+
name: 'learn-relationships',
|
|
109
|
+
component: () => import('../views/learn/LearnRelationshipsView.vue'),
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
path: '/learn/designations',
|
|
113
|
+
name: 'learn-designations',
|
|
114
|
+
component: () => import('../views/learn/LearnDesignationsView.vue'),
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
path: '/learn/statuses',
|
|
118
|
+
name: 'learn-statuses',
|
|
119
|
+
component: () => import('../views/learn/LearnStatusesView.vue'),
|
|
120
|
+
},
|
|
97
121
|
{
|
|
98
122
|
path: '/about',
|
|
99
123
|
name: 'about-global',
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
/**
|
|
3
|
+
* RelationTypesView — teaching page explaining every relation type
|
|
4
|
+
* the app renders, grouped into:
|
|
5
|
+
*
|
|
6
|
+
* 1. Hyperedge relations (one-to-many decompositions)
|
|
7
|
+
* - partitive (rake diagram) — ISO 704:2022 §5.5.3
|
|
8
|
+
* - general (pipe-and-thread diagram) — ISO 704:2022 §5.5.4
|
|
9
|
+
*
|
|
10
|
+
* 2. Bilateral relations (one-to-one) — grouped by category, labels
|
|
11
|
+
* and definitions pulled from the live ontology taxonomy. Adding
|
|
12
|
+
* a new type to src/data/taxonomies.json automatically flows
|
|
13
|
+
* through to this page (no code change).
|
|
14
|
+
*
|
|
15
|
+
* Sphere legend labels deep-link here via `#<type>` anchors
|
|
16
|
+
* (e.g. `#__generic__`, `#__partitive__`, `#broader_generic`).
|
|
17
|
+
*/
|
|
18
|
+
import { computed } from 'vue';
|
|
19
|
+
import { useI18n } from '../i18n';
|
|
20
|
+
import {
|
|
21
|
+
RELATIONSHIP_CATEGORIES,
|
|
22
|
+
relationshipLabel,
|
|
23
|
+
relationshipDefinition,
|
|
24
|
+
} from '../utils/relationship-categories';
|
|
25
|
+
import HyperedgeDiagram from '../components/HyperedgeDiagram.vue';
|
|
26
|
+
|
|
27
|
+
const { t } = useI18n();
|
|
28
|
+
|
|
29
|
+
interface HyperedgeCard {
|
|
30
|
+
readonly anchor: string;
|
|
31
|
+
readonly kind: 'partitive' | 'generic';
|
|
32
|
+
readonly label: string;
|
|
33
|
+
readonly iso: string;
|
|
34
|
+
readonly definition: string;
|
|
35
|
+
readonly example: { conceptId: string; description: string };
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const HYPEREDGE_CARDS: readonly HyperedgeCard[] = [
|
|
39
|
+
{
|
|
40
|
+
anchor: '__partitive__',
|
|
41
|
+
kind: 'partitive',
|
|
42
|
+
label: 'partitive relation',
|
|
43
|
+
iso: 'ISO 704:2022 §5.5.3',
|
|
44
|
+
definition:
|
|
45
|
+
'A whole/part decomposition. The comprehensive concept is the whole; each member is a part. Per-member multiplicity (presence × count) is encoded in the tooth stroke style — solid for required, dashed for optional, double-line for multiple or at-least-one, 3× width for delimiting members.',
|
|
46
|
+
example: { conceptId: '1.3', description: 'system of quantities' },
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
anchor: '__generic__',
|
|
50
|
+
kind: 'generic',
|
|
51
|
+
label: 'general relation',
|
|
52
|
+
iso: 'ISO 704:2022 §5.5.4',
|
|
53
|
+
definition:
|
|
54
|
+
'A genus/species decomposition. The comprehensive concept is the genus; each member is a species (coordinate concept) differing along a shared dimension. The thick parent pipe carries the shared criterion (the dimension); thin direct threads radiate from a middle node to each member.',
|
|
55
|
+
example: { conceptId: '1.9', description: 'measurement unit' },
|
|
56
|
+
},
|
|
57
|
+
];
|
|
58
|
+
|
|
59
|
+
const bilateralCategories = computed(() =>
|
|
60
|
+
RELATIONSHIP_CATEGORIES.map(cat => ({
|
|
61
|
+
id: cat.id,
|
|
62
|
+
label: cat.label,
|
|
63
|
+
color: cat.color,
|
|
64
|
+
types: cat.types.map(type => ({
|
|
65
|
+
type,
|
|
66
|
+
label: relationshipLabel(type),
|
|
67
|
+
definition: relationshipDefinition(type),
|
|
68
|
+
})),
|
|
69
|
+
})),
|
|
70
|
+
);
|
|
71
|
+
</script>
|
|
72
|
+
|
|
73
|
+
<template>
|
|
74
|
+
<div class="relation-types-view max-w-5xl mx-auto px-4 py-8">
|
|
75
|
+
<header class="mb-8">
|
|
76
|
+
<h1 class="text-3xl font-serif text-ink-800 dark:text-ink-50 mb-2">
|
|
77
|
+
{{ t('nav.relationTypes') }}
|
|
78
|
+
</h1>
|
|
79
|
+
<p class="text-ink-500 dark:text-ink-300">{{ t('relationTypes.intro') }}</p>
|
|
80
|
+
</header>
|
|
81
|
+
|
|
82
|
+
<!-- ── Hyperedge relations ─────────────────────────────────────── -->
|
|
83
|
+
<section class="mb-12" :aria-label="t('relationTypes.hyperedgeSection')">
|
|
84
|
+
<h2 class="text-xl font-semibold text-ink-700 dark:text-ink-100 mb-4 border-b border-ink-100 dark:border-ink-700 pb-2">
|
|
85
|
+
{{ t('relationTypes.hyperedgeSection') }}
|
|
86
|
+
</h2>
|
|
87
|
+
<div class="grid grid-cols-1 lg:grid-cols-2 gap-6">
|
|
88
|
+
<article
|
|
89
|
+
v-for="card in HYPEREDGE_CARDS"
|
|
90
|
+
:key="card.anchor"
|
|
91
|
+
:id="card.anchor"
|
|
92
|
+
class="hyperedge-card card p-5 scroll-mt-20"
|
|
93
|
+
>
|
|
94
|
+
<div class="flex items-baseline justify-between mb-3 gap-3">
|
|
95
|
+
<h3 class="text-lg font-semibold text-ink-800 dark:text-ink-50">{{ card.label }}</h3>
|
|
96
|
+
<span class="text-xs font-mono text-ink-400 dark:text-ink-500">{{ card.iso }}</span>
|
|
97
|
+
</div>
|
|
98
|
+
<div class="grid grid-cols-[auto_1fr] gap-4 items-start">
|
|
99
|
+
<div class="diagram-frame bg-surface-alt dark:bg-ink-800 rounded-md p-2 border border-ink-100 dark:border-ink-700">
|
|
100
|
+
<HyperedgeDiagram :kind="card.kind" />
|
|
101
|
+
</div>
|
|
102
|
+
<div>
|
|
103
|
+
<p class="text-sm text-ink-600 dark:text-ink-200 mb-3">{{ card.definition }}</p>
|
|
104
|
+
<p class="text-xs text-ink-400 dark:text-ink-400">
|
|
105
|
+
{{ t('relationTypes.example') }}: VIM {{ card.example.conceptId }} — {{ card.example.description }}
|
|
106
|
+
</p>
|
|
107
|
+
</div>
|
|
108
|
+
</div>
|
|
109
|
+
</article>
|
|
110
|
+
</div>
|
|
111
|
+
</section>
|
|
112
|
+
|
|
113
|
+
<!-- ── Bilateral relations ─────────────────────────────────────── -->
|
|
114
|
+
<section :aria-label="t('relationTypes.bilateralSection')">
|
|
115
|
+
<h2 class="text-xl font-semibold text-ink-700 dark:text-ink-100 mb-4 border-b border-ink-100 dark:border-ink-700 pb-2">
|
|
116
|
+
{{ t('relationTypes.bilateralSection') }}
|
|
117
|
+
</h2>
|
|
118
|
+
<div class="space-y-6">
|
|
119
|
+
<article
|
|
120
|
+
v-for="cat in bilateralCategories"
|
|
121
|
+
:key="cat.id"
|
|
122
|
+
class="card p-4"
|
|
123
|
+
>
|
|
124
|
+
<header class="flex items-center gap-2 mb-3">
|
|
125
|
+
<span :class="['text-xs font-semibold uppercase tracking-wide px-2 py-0.5 rounded', cat.color]">
|
|
126
|
+
{{ cat.label }}
|
|
127
|
+
</span>
|
|
128
|
+
<span class="text-xs text-ink-400">{{ cat.types.length }}</span>
|
|
129
|
+
</header>
|
|
130
|
+
<ul class="space-y-2">
|
|
131
|
+
<li
|
|
132
|
+
v-for="item in cat.types"
|
|
133
|
+
:key="item.type"
|
|
134
|
+
:id="item.type"
|
|
135
|
+
class="bilateral-row scroll-mt-20"
|
|
136
|
+
>
|
|
137
|
+
<div class="flex items-baseline gap-2 flex-wrap">
|
|
138
|
+
<span class="font-medium text-ink-800 dark:text-ink-100">{{ item.label }}</span>
|
|
139
|
+
<code class="text-xs text-ink-400 dark:text-ink-500 font-mono">{{ item.type }}</code>
|
|
140
|
+
</div>
|
|
141
|
+
<p v-if="item.definition" class="text-sm text-ink-600 dark:text-ink-300 mt-0.5">
|
|
142
|
+
{{ item.definition }}
|
|
143
|
+
</p>
|
|
144
|
+
</li>
|
|
145
|
+
</ul>
|
|
146
|
+
</article>
|
|
147
|
+
</div>
|
|
148
|
+
</section>
|
|
149
|
+
</div>
|
|
150
|
+
</template>
|
|
151
|
+
|
|
152
|
+
<style scoped>
|
|
153
|
+
.hyperedge-card {
|
|
154
|
+
scroll-margin-top: 5rem;
|
|
155
|
+
}
|
|
156
|
+
.bilateral-row {
|
|
157
|
+
scroll-margin-top: 5rem;
|
|
158
|
+
}
|
|
159
|
+
</style>
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
/**
|
|
3
|
+
* LearnDesignationsView — explains the term/designation vocabulary.
|
|
4
|
+
*
|
|
5
|
+
* Three cards:
|
|
6
|
+
* 1. Normative status (preferred / admitted / deprecated) — ISO 10241-1:2011 §3.4.1.3.
|
|
7
|
+
* Each explicitly allows multiple (per ISO Notes 1).
|
|
8
|
+
* 2. Kinds and forms of term (full form, abbreviated form, borrowed, variant) —
|
|
9
|
+
* ISO 10241-1:2011 §3.4.1.2.
|
|
10
|
+
* 3. Designation types (term / proper name / symbol) with abbreviation subtypes
|
|
11
|
+
* (acronym vs initialism) — ISO 704:2022 §7.
|
|
12
|
+
*
|
|
13
|
+
* Addresses the user's specific concerns:
|
|
14
|
+
* - "preferred/admitted term means, that they can be multiple" → Card 1
|
|
15
|
+
* - "types of acronym" → Card 3 (acronym vs initialism vs symbol)
|
|
16
|
+
*/
|
|
17
|
+
import { useI18n } from '../../i18n';
|
|
18
|
+
import LearnCard from '../../components/learn/LearnCard.vue';
|
|
19
|
+
|
|
20
|
+
const { t } = useI18n();
|
|
21
|
+
</script>
|
|
22
|
+
|
|
23
|
+
<template>
|
|
24
|
+
<div class="learn-designations max-w-5xl mx-auto px-4 py-8">
|
|
25
|
+
<header class="mb-8">
|
|
26
|
+
<h1 class="text-3xl font-serif text-ink-800 dark:text-ink-50 mb-2">
|
|
27
|
+
{{ t('learn.designations.title') }}
|
|
28
|
+
</h1>
|
|
29
|
+
<p class="text-ink-500 dark:text-ink-300 max-w-3xl">{{ t('learn.designations.intro') }}</p>
|
|
30
|
+
</header>
|
|
31
|
+
|
|
32
|
+
<!-- ── Normative status ──────────────────────────────────────── -->
|
|
33
|
+
<section class="mb-12" :aria-label="t('learn.designations.normativeSection')">
|
|
34
|
+
<h2 class="text-xl font-semibold text-ink-700 dark:text-ink-100 mb-4 border-b border-ink-100 dark:border-ink-700 pb-2">
|
|
35
|
+
{{ t('learn.designations.normativeSection') }}
|
|
36
|
+
</h2>
|
|
37
|
+
<p class="text-sm text-ink-500 dark:text-ink-400 mb-4">
|
|
38
|
+
{{ t('learn.designations.normativeIntro') }}
|
|
39
|
+
</p>
|
|
40
|
+
<div class="grid grid-cols-1 md:grid-cols-3 gap-4">
|
|
41
|
+
<LearnCard
|
|
42
|
+
:title="t('learn.designations.preferred.label')"
|
|
43
|
+
iso-reference="ISO 10241-1:2011 §3.4.1.3.1"
|
|
44
|
+
learn-more-url="https://www.glossarist.org/model/designations"
|
|
45
|
+
>
|
|
46
|
+
<p>{{ t('learn.designations.preferred.meaning') }}</p>
|
|
47
|
+
<p class="mt-3 text-xs italic text-ink-500 dark:text-ink-400">
|
|
48
|
+
{{ t('learn.designations.preferred.multipleNote') }}
|
|
49
|
+
</p>
|
|
50
|
+
<template #example>
|
|
51
|
+
VIM 1.9: <strong>measurement unit</strong> (preferred) — the primary term.
|
|
52
|
+
</template>
|
|
53
|
+
</LearnCard>
|
|
54
|
+
|
|
55
|
+
<LearnCard
|
|
56
|
+
:title="t('learn.designations.admitted.label')"
|
|
57
|
+
iso-reference="ISO 10241-1:2011 §3.4.1.3.2"
|
|
58
|
+
>
|
|
59
|
+
<p>{{ t('learn.designations.admitted.meaning') }}</p>
|
|
60
|
+
<p class="mt-3 text-xs italic text-ink-500 dark:text-ink-400">
|
|
61
|
+
{{ t('learn.designations.admitted.multipleNote') }}
|
|
62
|
+
</p>
|
|
63
|
+
<template #example>
|
|
64
|
+
VIM 1.9: <strong>unit of measurement</strong> (admitted) — a synonym for "measurement unit".
|
|
65
|
+
</template>
|
|
66
|
+
</LearnCard>
|
|
67
|
+
|
|
68
|
+
<LearnCard
|
|
69
|
+
:title="t('learn.designations.deprecated.label')"
|
|
70
|
+
iso-reference="ISO 10241-1:2011 §3.4.1.3.3"
|
|
71
|
+
>
|
|
72
|
+
<p>{{ t('learn.designations.deprecated.meaning') }}</p>
|
|
73
|
+
<p class="mt-3 text-xs italic text-ink-500 dark:text-ink-400">
|
|
74
|
+
{{ t('learn.designations.deprecated.multipleNote') }}
|
|
75
|
+
</p>
|
|
76
|
+
<template #example>
|
|
77
|
+
A term still in use but discouraged, e.g. an outdated spelling or a vendor name
|
|
78
|
+
used as a generic term.
|
|
79
|
+
</template>
|
|
80
|
+
</LearnCard>
|
|
81
|
+
</div>
|
|
82
|
+
</section>
|
|
83
|
+
|
|
84
|
+
<!-- ── Kinds and forms of term ───────────────────────────────── -->
|
|
85
|
+
<section class="mb-12" :aria-label="t('learn.designations.kindsSection')">
|
|
86
|
+
<h2 class="text-xl font-semibold text-ink-700 dark:text-ink-100 mb-4 border-b border-ink-100 dark:border-ink-700 pb-2">
|
|
87
|
+
{{ t('learn.designations.kindsSection') }}
|
|
88
|
+
</h2>
|
|
89
|
+
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
|
|
90
|
+
<LearnCard
|
|
91
|
+
:title="t('learn.designations.fullForm.label')"
|
|
92
|
+
iso-reference="ISO 10241-1:2011 §3.4.1.2.3"
|
|
93
|
+
>
|
|
94
|
+
<p>{{ t('learn.designations.fullForm.meaning') }}</p>
|
|
95
|
+
<template #example>
|
|
96
|
+
<strong>compact disc</strong> is the full form of "CD".
|
|
97
|
+
</template>
|
|
98
|
+
</LearnCard>
|
|
99
|
+
|
|
100
|
+
<LearnCard
|
|
101
|
+
:title="t('learn.designations.abbreviatedForm.label')"
|
|
102
|
+
iso-reference="ISO 10241-1:2011 §3.4.1.2.4"
|
|
103
|
+
>
|
|
104
|
+
<p>{{ t('learn.designations.abbreviatedForm.meaning') }}</p>
|
|
105
|
+
<p class="mt-3 text-xs italic text-ink-500 dark:text-ink-400">
|
|
106
|
+
{{ t('learn.designations.abbreviatedForm.multipleNote') }}
|
|
107
|
+
</p>
|
|
108
|
+
<template #example>
|
|
109
|
+
<strong>CD</strong> is the abbreviated form of "compact disc".
|
|
110
|
+
World Wide Web has two: <strong>WWW</strong> and <strong>W3</strong>.
|
|
111
|
+
</template>
|
|
112
|
+
</LearnCard>
|
|
113
|
+
|
|
114
|
+
<LearnCard
|
|
115
|
+
:title="t('learn.designations.borrowed.label')"
|
|
116
|
+
iso-reference="ISO 10241-1:2011 §3.4.1.2.1"
|
|
117
|
+
>
|
|
118
|
+
<p>{{ t('learn.designations.borrowed.meaning') }}</p>
|
|
119
|
+
<template #example>
|
|
120
|
+
English "kindergarten" (borrowed from German).
|
|
121
|
+
</template>
|
|
122
|
+
</LearnCard>
|
|
123
|
+
|
|
124
|
+
<LearnCard
|
|
125
|
+
:title="t('learn.designations.variant.label')"
|
|
126
|
+
iso-reference="ISO 10241-1:2011 §3.4.1.2.2"
|
|
127
|
+
>
|
|
128
|
+
<p>{{ t('learn.designations.variant.meaning') }}</p>
|
|
129
|
+
<template #example>
|
|
130
|
+
<strong>colour</strong> (UK) ↔ <strong>color</strong> (US);
|
|
131
|
+
<strong>multi-word term</strong> ↔ <strong>multiword term</strong>.
|
|
132
|
+
</template>
|
|
133
|
+
</LearnCard>
|
|
134
|
+
</div>
|
|
135
|
+
</section>
|
|
136
|
+
|
|
137
|
+
<!-- ── Designation types ─────────────────────────────────────── -->
|
|
138
|
+
<section :aria-label="t('learn.designations.typesSection')">
|
|
139
|
+
<h2 class="text-xl font-semibold text-ink-700 dark:text-ink-100 mb-4 border-b border-ink-100 dark:border-ink-700 pb-2">
|
|
140
|
+
{{ t('learn.designations.typesSection') }}
|
|
141
|
+
</h2>
|
|
142
|
+
<p class="text-sm text-ink-500 dark:text-ink-400 mb-4">
|
|
143
|
+
{{ t('learn.designations.typesIntro') }}
|
|
144
|
+
</p>
|
|
145
|
+
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4">
|
|
146
|
+
<LearnCard
|
|
147
|
+
:title="t('learn.designations.term.label')"
|
|
148
|
+
iso-reference="ISO 704:2022 §7.3"
|
|
149
|
+
>
|
|
150
|
+
<p>{{ t('learn.designations.term.meaning') }}</p>
|
|
151
|
+
<template #example>
|
|
152
|
+
<strong>system of quantities</strong> (VIM 1.3)
|
|
153
|
+
</template>
|
|
154
|
+
</LearnCard>
|
|
155
|
+
|
|
156
|
+
<LearnCard
|
|
157
|
+
:title="t('learn.designations.acronym.label')"
|
|
158
|
+
iso-reference="ISO 704:2022 §7.3.2"
|
|
159
|
+
>
|
|
160
|
+
<p>{{ t('learn.designations.acronym.meaning') }}</p>
|
|
161
|
+
<template #example>
|
|
162
|
+
<strong>laser</strong> — light amplification by stimulated emission of radiation.
|
|
163
|
+
Pronounced as one word.
|
|
164
|
+
</template>
|
|
165
|
+
</LearnCard>
|
|
166
|
+
|
|
167
|
+
<LearnCard
|
|
168
|
+
:title="t('learn.designations.initialism.label')"
|
|
169
|
+
iso-reference="ISO 704:2022 §7.3.2"
|
|
170
|
+
>
|
|
171
|
+
<p>{{ t('learn.designations.initialism.meaning') }}</p>
|
|
172
|
+
<template #example>
|
|
173
|
+
<strong>OIML</strong> — Organisation Internationale de Métrologie Légale.
|
|
174
|
+
Each letter pronounced separately.
|
|
175
|
+
</template>
|
|
176
|
+
</LearnCard>
|
|
177
|
+
|
|
178
|
+
<LearnCard
|
|
179
|
+
:title="t('learn.designations.symbol.label')"
|
|
180
|
+
iso-reference="ISO 704:2022 §7.5 + ISO 80000"
|
|
181
|
+
>
|
|
182
|
+
<p>{{ t('learn.designations.symbol.meaning') }}</p>
|
|
183
|
+
<template #example>
|
|
184
|
+
<strong>kg</strong> for kilogram. <strong>m/s</strong> for metre per second.
|
|
185
|
+
</template>
|
|
186
|
+
</LearnCard>
|
|
187
|
+
</div>
|
|
188
|
+
</section>
|
|
189
|
+
</div>
|
|
190
|
+
</template>
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
/**
|
|
3
|
+
* LearnIndexView — entry point for the /learn section.
|
|
4
|
+
*
|
|
5
|
+
* Cards link to each topic with a one-line description. Phase 1 pages
|
|
6
|
+
* (relationships, designations, statuses) are linked; Phase 2 pages
|
|
7
|
+
* are not yet wired.
|
|
8
|
+
*
|
|
9
|
+
* Reader-focused: this section explains how to READ this site and the
|
|
10
|
+
* terminology behind its labels. For authoring datasets in glossarist
|
|
11
|
+
* format, see glossarist.org.
|
|
12
|
+
*/
|
|
13
|
+
import { useI18n } from '../../i18n';
|
|
14
|
+
import LearnCard from '../../components/learn/LearnCard.vue';
|
|
15
|
+
|
|
16
|
+
const { t } = useI18n();
|
|
17
|
+
|
|
18
|
+
interface TopicLink {
|
|
19
|
+
to: string;
|
|
20
|
+
title: string;
|
|
21
|
+
description: string;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const phase1Topics: readonly TopicLink[] = [
|
|
25
|
+
{
|
|
26
|
+
to: '/learn/relationships',
|
|
27
|
+
title: t('learn.relationships.title'),
|
|
28
|
+
description: t('learn.relationships.short'),
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
to: '/learn/designations',
|
|
32
|
+
title: t('learn.designations.title'),
|
|
33
|
+
description: t('learn.designations.short'),
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
to: '/learn/statuses',
|
|
37
|
+
title: t('learn.statuses.title'),
|
|
38
|
+
description: t('learn.statuses.short'),
|
|
39
|
+
},
|
|
40
|
+
];
|
|
41
|
+
</script>
|
|
42
|
+
|
|
43
|
+
<template>
|
|
44
|
+
<div class="learn-index max-w-5xl mx-auto px-4 py-8">
|
|
45
|
+
<header class="mb-8">
|
|
46
|
+
<h1 class="text-3xl font-serif text-ink-800 dark:text-ink-50 mb-2">
|
|
47
|
+
{{ t('nav.learn') }}
|
|
48
|
+
</h1>
|
|
49
|
+
<p class="text-ink-500 dark:text-ink-300 max-w-2xl">{{ t('learn.intro') }}</p>
|
|
50
|
+
</header>
|
|
51
|
+
|
|
52
|
+
<nav class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4" aria-label="Learn topics">
|
|
53
|
+
<RouterLink v-for="topic in phase1Topics" :key="topic.to" :to="topic.to"
|
|
54
|
+
class="learn-topic-link block no-underline">
|
|
55
|
+
<LearnCard :title="topic.title">
|
|
56
|
+
<div class="flex items-center justify-between">
|
|
57
|
+
<h2 class="text-base font-semibold text-ink-800 dark:text-ink-50">{{ topic.title }}</h2>
|
|
58
|
+
<span class="text-ink-300 dark:text-ink-500 text-sm">→</span>
|
|
59
|
+
</div>
|
|
60
|
+
<p class="text-sm text-ink-600 dark:text-ink-300 mt-1">{{ topic.description }}</p>
|
|
61
|
+
</LearnCard>
|
|
62
|
+
</RouterLink>
|
|
63
|
+
</nav>
|
|
64
|
+
|
|
65
|
+
<p class="text-xs text-ink-400 dark:text-ink-500 mt-8">
|
|
66
|
+
{{ t('learn.glossaristOrgNote') }}
|
|
67
|
+
</p>
|
|
68
|
+
</div>
|
|
69
|
+
</template>
|
|
70
|
+
|
|
71
|
+
<style scoped>
|
|
72
|
+
.learn-topic-link:hover :deep(.learn-card) {
|
|
73
|
+
border-color: var(--color-accent, #0d9488);
|
|
74
|
+
}
|
|
75
|
+
</style>
|