glossarist 2.8.1 → 2.8.4
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.
- checksums.yaml +4 -4
- data/.rubocop.yml +1 -1
- data/.rubocop_todo.yml +413 -63
- data/CLAUDE.md +1 -1
- data/Gemfile +1 -1
- data/README.adoc +4 -1
- data/glossarist.gemspec +2 -1
- data/lib/glossarist/bibliography_data.rb +41 -0
- data/lib/glossarist/bibliography_entry.rb +13 -0
- data/lib/glossarist/citation.rb +8 -2
- data/lib/glossarist/cli/export_command.rb +10 -5
- data/lib/glossarist/cli/validate_command.rb +21 -5
- data/lib/glossarist/collection.rb +2 -2
- data/lib/glossarist/collections/bibliography_collection.rb +2 -1
- data/lib/glossarist/collections/collection.rb +2 -2
- data/lib/glossarist/collections/localization_collection.rb +4 -4
- data/lib/glossarist/concept_collector.rb +6 -6
- data/lib/glossarist/concept_document.rb +2 -3
- data/lib/glossarist/concept_manager.rb +6 -8
- data/lib/glossarist/concept_set.rb +4 -4
- data/lib/glossarist/concept_store.rb +84 -0
- data/lib/glossarist/dataset_validator.rb +2 -1
- data/lib/glossarist/gcr_package_definition.rb +37 -0
- data/lib/glossarist/gcr_statistics.rb +2 -2
- data/lib/glossarist/glossary_definition.rb +1 -1
- data/lib/glossarist/glossary_store.rb +201 -0
- data/lib/glossarist/managed_concept_collection.rb +2 -2
- data/lib/glossarist/managed_concept_data.rb +2 -0
- data/lib/glossarist/rdf/gloss_citation.rb +8 -4
- data/lib/glossarist/rdf/gloss_concept.rb +13 -4
- data/lib/glossarist/rdf/gloss_concept_date.rb +4 -2
- data/lib/glossarist/rdf/gloss_concept_reference.rb +6 -3
- data/lib/glossarist/rdf/gloss_concept_source.rb +6 -3
- data/lib/glossarist/rdf/gloss_designation.rb +63 -26
- data/lib/glossarist/rdf/gloss_grammar_info.rb +19 -9
- data/lib/glossarist/rdf/gloss_locality.rb +6 -3
- data/lib/glossarist/rdf/gloss_localized_concept.rb +14 -7
- data/lib/glossarist/rdf/gloss_non_verbal_rep.rb +9 -4
- data/lib/glossarist/rdf/gloss_pronunciation.rb +13 -6
- data/lib/glossarist/rdf/gloss_reference.rb +8 -4
- data/lib/glossarist/rdf/namespaces.rb +3 -2
- data/lib/glossarist/rdf/relationship_predicates.rb +79 -0
- data/lib/glossarist/rdf/v3/configuration.rb +0 -2
- data/lib/glossarist/rdf/v3.rb +4 -43
- data/lib/glossarist/rdf.rb +26 -23
- data/lib/glossarist/register_data.rb +68 -18
- data/lib/glossarist/schema_migration.rb +8 -5
- data/lib/glossarist/sts/importer.rb +0 -1
- data/lib/glossarist/transforms/concept_to_gloss_transform.rb +57 -72
- data/lib/glossarist/v2/concept_data.rb +2 -1
- data/lib/glossarist/v2/concept_document.rb +1 -1
- data/lib/glossarist/v2/configuration.rb +0 -2
- data/lib/glossarist/v2/managed_concept_data.rb +1 -0
- data/lib/glossarist/v2.rb +12 -12
- data/lib/glossarist/v3/concept_data.rb +2 -1
- data/lib/glossarist/v3/concept_document.rb +1 -1
- data/lib/glossarist/v3/configuration.rb +0 -2
- data/lib/glossarist/v3/managed_concept_data.rb +1 -0
- data/lib/glossarist/v3.rb +16 -16
- data/lib/glossarist/validation/asset_index.rb +2 -2
- data/lib/glossarist/validation/bibliography_index.rb +11 -8
- data/lib/glossarist/validation/rules/asciidoc_xref_rule.rb +2 -1
- data/lib/glossarist/validation/rules/authoritative_source_rule.rb +1 -1
- data/lib/glossarist/validation/rules/bibliography_yaml_rule.rb +1 -1
- data/lib/glossarist/validation/rules/citation_completeness_rule.rb +1 -1
- data/lib/glossarist/validation/rules/concept_count_rule.rb +2 -3
- data/lib/glossarist/validation/rules/concept_id_rule.rb +0 -1
- data/lib/glossarist/validation/rules/concept_id_uniqueness_rule.rb +0 -1
- data/lib/glossarist/validation/rules/concept_mention_rule.rb +1 -2
- data/lib/glossarist/validation/rules/concept_status_rule.rb +1 -2
- data/lib/glossarist/validation/rules/concept_uri_rule.rb +1 -1
- data/lib/glossarist/validation/rules/date_type_rule.rb +5 -3
- data/lib/glossarist/validation/rules/date_validity_rule.rb +1 -1
- data/lib/glossarist/validation/rules/definition_content_rule.rb +1 -2
- data/lib/glossarist/validation/rules/domain_target_rule.rb +1 -1
- data/lib/glossarist/validation/rules/duplicate_term_rule.rb +1 -2
- data/lib/glossarist/validation/rules/entry_status_rule.rb +1 -2
- data/lib/glossarist/validation/rules/filename_id_rule.rb +2 -3
- data/lib/glossarist/validation/rules/image_reference_rule.rb +3 -2
- data/lib/glossarist/validation/rules/l10n_uuid_integrity_rule.rb +1 -2
- data/lib/glossarist/validation/rules/language_coverage_rule.rb +1 -2
- data/lib/glossarist/validation/rules/language_list_rule.rb +2 -3
- data/lib/glossarist/validation/rules/locality_completeness_rule.rb +3 -1
- data/lib/glossarist/validation/rules/localization_consistency_rule.rb +1 -1
- data/lib/glossarist/validation/rules/localization_presence_rule.rb +0 -1
- data/lib/glossarist/validation/rules/model_validity_rule.rb +1 -1
- data/lib/glossarist/validation/rules/orphaned_bibliography_rule.rb +2 -1
- data/lib/glossarist/validation/rules/orphaned_images_rule.rb +6 -4
- data/lib/glossarist/validation/rules/orphaned_l10n_files_rule.rb +1 -2
- data/lib/glossarist/validation/rules/preferred_term_rule.rb +1 -2
- data/lib/glossarist/validation/rules/related_concept_cycle_rule.rb +2 -2
- data/lib/glossarist/validation/rules/related_concept_rule.rb +1 -2
- data/lib/glossarist/validation/rules/related_concept_symmetry_rule.rb +1 -1
- data/lib/glossarist/validation/rules/related_concept_target_rule.rb +1 -1
- data/lib/glossarist/validation/rules/source_type_rule.rb +2 -2
- data/lib/glossarist/validation/rules/source_urn_format_rule.rb +2 -2
- data/lib/glossarist/validation/rules/terms_presence_rule.rb +1 -1
- data/lib/glossarist/validation/rules/uuid_format_rule.rb +1 -1
- data/lib/glossarist/validation/rules.rb +18 -49
- data/lib/glossarist/version.rb +1 -1
- data/lib/glossarist.rb +13 -11
- data/scripts/migrate_dataset.rb +14 -8
- data/scripts/migrate_isotc204_to_v3.rb +3 -1
- data/scripts/migrate_isotc211_to_v3.rb +5 -3
- data/scripts/migrate_osgeo_to_v3.rb +4 -2
- data/scripts/upgrade_dataset_to_v3.rb +0 -0
- metadata +24 -11
- data/lib/glossarist/rdf/ext/jsonld_transform_ext.rb +0 -208
- data/lib/glossarist/rdf/ext/mapping_ext.rb +0 -37
- data/lib/glossarist/rdf/ext/mapping_rule_ext.rb +0 -27
- data/lib/glossarist/rdf/ext/member_rule_ext.rb +0 -34
- data/lib/glossarist/rdf/ext/turtle_transform_ext.rb +0 -222
- data/lib/glossarist/rdf/ext.rb +0 -39
- data/lib/glossarist/rdf/relationships.rb +0 -19
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "lutaml/store"
|
|
4
|
+
require "zip"
|
|
5
|
+
|
|
6
|
+
module Glossarist
|
|
7
|
+
class GlossaryStore
|
|
8
|
+
attr_reader :package
|
|
9
|
+
|
|
10
|
+
def initialize
|
|
11
|
+
@package = nil
|
|
12
|
+
@concept_document_class = V3::ConceptDocument
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# ── Load ──
|
|
16
|
+
|
|
17
|
+
def load_directory(path, format: nil)
|
|
18
|
+
metadata = load_metadata_from_directory(path)
|
|
19
|
+
@concept_document_class = resolve_concept_document_class(metadata)
|
|
20
|
+
|
|
21
|
+
definition = GcrPackageDefinition.definition(
|
|
22
|
+
concept_document_class: @concept_document_class,
|
|
23
|
+
)
|
|
24
|
+
@package = Lutaml::Store::PackageStore.load(
|
|
25
|
+
definition, path, transport: :directory, format: format
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
apply_metadata(metadata)
|
|
29
|
+
self
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def load_zip(path, format: nil)
|
|
33
|
+
metadata = load_metadata_from_zip(path)
|
|
34
|
+
@concept_document_class = resolve_concept_document_class(metadata)
|
|
35
|
+
|
|
36
|
+
definition = GcrPackageDefinition.definition(
|
|
37
|
+
concept_document_class: @concept_document_class,
|
|
38
|
+
)
|
|
39
|
+
@package = Lutaml::Store::PackageStore.load(
|
|
40
|
+
definition, path, transport: :zip, format: format
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
apply_metadata(metadata)
|
|
44
|
+
self
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def load(path, format: nil)
|
|
48
|
+
ext = File.extname(path).downcase
|
|
49
|
+
if [".gcr", ".zip"].include?(ext)
|
|
50
|
+
load_zip(path, format: format)
|
|
51
|
+
else
|
|
52
|
+
load_directory(path, format: format)
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# ── Save ──
|
|
57
|
+
|
|
58
|
+
def save_directory(path, format: nil, formats: {})
|
|
59
|
+
@package.save(path, transport: :directory, format: format,
|
|
60
|
+
formats: formats)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def save_zip(path, format: nil, formats: {})
|
|
64
|
+
@package.save(path, transport: :zip, format: format, formats: formats)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
# ── Concepts ──
|
|
68
|
+
|
|
69
|
+
def concepts
|
|
70
|
+
@package.models_for(@concept_document_class).map(&:to_managed_concept)
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def concept(uuid)
|
|
74
|
+
doc = @package.fetch_model(@concept_document_class, uuid)
|
|
75
|
+
doc&.to_managed_concept
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def add_concept(managed_concept)
|
|
79
|
+
ensure_package
|
|
80
|
+
doc = @concept_document_class.from_managed_concept(managed_concept)
|
|
81
|
+
doc.id = managed_concept.uuid
|
|
82
|
+
@package.add_model(doc)
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def remove_concept(uuid)
|
|
86
|
+
@package.remove_model(@concept_document_class, uuid)
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def concept_count
|
|
90
|
+
@package.model_count(@concept_document_class)
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def concept_exists?(uuid)
|
|
94
|
+
@package.model_exists?(@concept_document_class, uuid)
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
# ── Metadata ──
|
|
98
|
+
|
|
99
|
+
def metadata
|
|
100
|
+
@package&.metadata
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
def metadata=(value)
|
|
104
|
+
ensure_package
|
|
105
|
+
@package.metadata = value
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
# ── Register Data ──
|
|
109
|
+
|
|
110
|
+
def register_data
|
|
111
|
+
@package.models_for(RegisterData).first
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
def register_data=(value)
|
|
115
|
+
ensure_package
|
|
116
|
+
existing = register_data
|
|
117
|
+
@package.remove_model(RegisterData, existing.key) if existing
|
|
118
|
+
@package.add_model(value)
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
# ── Bibliography ──
|
|
122
|
+
|
|
123
|
+
def bibliography
|
|
124
|
+
@package.models_for(BibliographyData).first
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
def bibliography=(value)
|
|
128
|
+
ensure_package
|
|
129
|
+
existing = bibliography
|
|
130
|
+
@package.remove_model(BibliographyData, existing.shortname) if existing
|
|
131
|
+
@package.add_model(value)
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
# ── Images ──
|
|
135
|
+
|
|
136
|
+
def image(path)
|
|
137
|
+
@package.asset(path)
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
def add_image(path, content)
|
|
141
|
+
ensure_package
|
|
142
|
+
@package.add_asset(path, content)
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
def image_paths
|
|
146
|
+
@package.asset_paths.select { |p| p.start_with?("images/") }
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
# ── Stats ──
|
|
150
|
+
|
|
151
|
+
def stats
|
|
152
|
+
@package&.stats
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
# ── Convenience ──
|
|
156
|
+
|
|
157
|
+
def build_metadata(shortname:, version:, **opts)
|
|
158
|
+
GcrMetadata.from_concepts(concepts, register_data: register_data, options: {
|
|
159
|
+
shortname: shortname,
|
|
160
|
+
version: version,
|
|
161
|
+
**opts,
|
|
162
|
+
})
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
private
|
|
166
|
+
|
|
167
|
+
def ensure_package
|
|
168
|
+
return if @package
|
|
169
|
+
|
|
170
|
+
definition = GcrPackageDefinition.definition(
|
|
171
|
+
concept_document_class: @concept_document_class,
|
|
172
|
+
)
|
|
173
|
+
@package = Lutaml::Store::PackageStore.new(definition)
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
def resolve_concept_document_class(metadata)
|
|
177
|
+
version = metadata&.schema_version.to_s
|
|
178
|
+
ConceptDocument.for_version(version)
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
def load_metadata_from_directory(path)
|
|
182
|
+
file_path = File.join(path, "metadata.yaml")
|
|
183
|
+
return nil unless File.exist?(file_path)
|
|
184
|
+
|
|
185
|
+
GcrMetadata.from_yaml(File.read(file_path, encoding: "utf-8"))
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
def load_metadata_from_zip(path)
|
|
189
|
+
Zip::File.open(path) do |zf|
|
|
190
|
+
entry = zf.find_entry("metadata.yaml")
|
|
191
|
+
return nil unless entry
|
|
192
|
+
|
|
193
|
+
GcrMetadata.from_yaml(entry.get_input_stream.read)
|
|
194
|
+
end
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
def apply_metadata(metadata)
|
|
198
|
+
@package.metadata = metadata if metadata && @package
|
|
199
|
+
end
|
|
200
|
+
end
|
|
201
|
+
end
|
|
@@ -6,6 +6,7 @@ module Glossarist
|
|
|
6
6
|
attribute :uri, :string
|
|
7
7
|
attribute :localized_concepts, :hash
|
|
8
8
|
attribute :domains, ConceptReference, collection: true
|
|
9
|
+
attribute :tags, :string, collection: true
|
|
9
10
|
attribute :sources, ConceptSource, collection: true
|
|
10
11
|
attribute :localizations, LocalizedConcept,
|
|
11
12
|
collection: Collections::LocalizationCollection,
|
|
@@ -19,6 +20,7 @@ module Glossarist
|
|
|
19
20
|
map %i[localized_concepts localizedConcepts], to: :localized_concepts
|
|
20
21
|
map %i[domains groups], to: :domains,
|
|
21
22
|
with: { from: :domains_from_yaml, to: :domains_to_yaml }
|
|
23
|
+
map :tags, to: :tags
|
|
22
24
|
map :sources, to: :sources
|
|
23
25
|
map :localizations, to: :localizations,
|
|
24
26
|
with: { from: :localizations_from_yaml, to: :localizations_to_yaml }
|
|
@@ -18,10 +18,14 @@ module Glossarist
|
|
|
18
18
|
|
|
19
19
|
types "gloss:Citation"
|
|
20
20
|
|
|
21
|
-
predicate :citationSource, namespace: Namespaces::GlossaristNamespace,
|
|
22
|
-
|
|
23
|
-
predicate :
|
|
24
|
-
|
|
21
|
+
predicate :citationSource, namespace: Namespaces::GlossaristNamespace,
|
|
22
|
+
to: :source
|
|
23
|
+
predicate :citationId, namespace: Namespaces::GlossaristNamespace,
|
|
24
|
+
to: :id
|
|
25
|
+
predicate :citationVersion, namespace: Namespaces::GlossaristNamespace,
|
|
26
|
+
to: :version
|
|
27
|
+
predicate :citationLink, namespace: Namespaces::GlossaristNamespace,
|
|
28
|
+
to: :link
|
|
25
29
|
|
|
26
30
|
members :locality, link: "gloss:hasLocality"
|
|
27
31
|
end
|
|
@@ -5,8 +5,6 @@ require "lutaml/model"
|
|
|
5
5
|
module Glossarist
|
|
6
6
|
module Rdf
|
|
7
7
|
class GlossConcept < Lutaml::Model::Serializable
|
|
8
|
-
include Relationships
|
|
9
|
-
|
|
10
8
|
attribute :identifier, :string
|
|
11
9
|
attribute :status, :string
|
|
12
10
|
attribute :localizations, GlossLocalizedConcept, collection: true
|
|
@@ -14,6 +12,10 @@ module Glossarist
|
|
|
14
12
|
attribute :domains, GlossConceptReference, collection: true
|
|
15
13
|
attribute :dates, GlossConceptDate, collection: true
|
|
16
14
|
|
|
15
|
+
RelationshipPredicates::CONCEPT_REL_PREDICATES.each_key do |type|
|
|
16
|
+
attribute :"#{type}_targets", :string, collection: true
|
|
17
|
+
end
|
|
18
|
+
|
|
17
19
|
rdf do
|
|
18
20
|
namespace Namespaces::GlossaristNamespace,
|
|
19
21
|
Namespaces::SkosNamespace,
|
|
@@ -26,8 +28,10 @@ module Glossarist
|
|
|
26
28
|
|
|
27
29
|
types "gloss:Concept", "skos:Concept"
|
|
28
30
|
|
|
29
|
-
predicate :identifier, namespace: Namespaces::GlossaristNamespace,
|
|
30
|
-
|
|
31
|
+
predicate :identifier, namespace: Namespaces::GlossaristNamespace,
|
|
32
|
+
to: :identifier
|
|
33
|
+
predicate :hasStatus, namespace: Namespaces::GlossaristNamespace,
|
|
34
|
+
to: :status, uri_reference: true
|
|
31
35
|
|
|
32
36
|
members :localizations,
|
|
33
37
|
link: "gloss:hasLocalization"
|
|
@@ -37,6 +41,11 @@ module Glossarist
|
|
|
37
41
|
link: "gloss:hasDomain"
|
|
38
42
|
members :dates,
|
|
39
43
|
link: "gloss:hasDate"
|
|
44
|
+
|
|
45
|
+
RelationshipPredicates::CONCEPT_REL_PREDICATES.each do |type, (ns, name)|
|
|
46
|
+
predicate name, namespace: ns, to: :"#{type}_targets",
|
|
47
|
+
uri_reference: true
|
|
48
|
+
end
|
|
40
49
|
end
|
|
41
50
|
end
|
|
42
51
|
|
|
@@ -16,8 +16,10 @@ module Glossarist
|
|
|
16
16
|
|
|
17
17
|
types "gloss:ConceptDate"
|
|
18
18
|
|
|
19
|
-
predicate :dateValue, namespace: Namespaces::GlossaristNamespace,
|
|
20
|
-
|
|
19
|
+
predicate :dateValue, namespace: Namespaces::GlossaristNamespace,
|
|
20
|
+
to: :date_value
|
|
21
|
+
predicate :dateType, namespace: Namespaces::GlossaristNamespace,
|
|
22
|
+
to: :date_type, uri_reference: true
|
|
21
23
|
end
|
|
22
24
|
end
|
|
23
25
|
end
|
|
@@ -19,9 +19,12 @@ module Glossarist
|
|
|
19
19
|
|
|
20
20
|
types "gloss:ConceptReference"
|
|
21
21
|
|
|
22
|
-
predicate :refType, namespace: Namespaces::GlossaristNamespace,
|
|
23
|
-
|
|
24
|
-
predicate :
|
|
22
|
+
predicate :refType, namespace: Namespaces::GlossaristNamespace,
|
|
23
|
+
to: :ref_type
|
|
24
|
+
predicate :conceptId, namespace: Namespaces::GlossaristNamespace,
|
|
25
|
+
to: :concept_id
|
|
26
|
+
predicate :sourceUri, namespace: Namespaces::GlossaristNamespace,
|
|
27
|
+
to: :source
|
|
25
28
|
predicate :urn, namespace: Namespaces::GlossaristNamespace, to: :urn
|
|
26
29
|
end
|
|
27
30
|
end
|
|
@@ -17,9 +17,12 @@ module Glossarist
|
|
|
17
17
|
|
|
18
18
|
types "gloss:ConceptSource"
|
|
19
19
|
|
|
20
|
-
predicate :sourceStatus, namespace: Namespaces::GlossaristNamespace,
|
|
21
|
-
|
|
22
|
-
predicate :
|
|
20
|
+
predicate :sourceStatus, namespace: Namespaces::GlossaristNamespace,
|
|
21
|
+
to: :status, uri_reference: true
|
|
22
|
+
predicate :sourceType, namespace: Namespaces::GlossaristNamespace,
|
|
23
|
+
to: :type, uri_reference: true
|
|
24
|
+
predicate :modification, namespace: Namespaces::GlossaristNamespace,
|
|
25
|
+
to: :modification
|
|
23
26
|
|
|
24
27
|
members :origin, link: "gloss:sourceOrigin"
|
|
25
28
|
end
|
|
@@ -5,17 +5,31 @@ require "lutaml/model"
|
|
|
5
5
|
module Glossarist
|
|
6
6
|
module Rdf
|
|
7
7
|
COMMON_DESIGNATION_PREDICATES = lambda { |dsl|
|
|
8
|
-
dsl.predicate :literalForm, namespace: Namespaces::SkosxlNamespace,
|
|
9
|
-
|
|
10
|
-
dsl.predicate :
|
|
11
|
-
|
|
12
|
-
dsl.predicate :
|
|
13
|
-
|
|
14
|
-
dsl.predicate :
|
|
15
|
-
|
|
16
|
-
dsl.predicate :
|
|
8
|
+
dsl.predicate :literalForm, namespace: Namespaces::SkosxlNamespace,
|
|
9
|
+
to: :designation
|
|
10
|
+
dsl.predicate :normativeStatus,
|
|
11
|
+
namespace: Namespaces::GlossaristNamespace, to: :normative_status, uri_reference: true
|
|
12
|
+
dsl.predicate :hasTermType, namespace: Namespaces::GlossaristNamespace,
|
|
13
|
+
to: :term_type, uri_reference: true
|
|
14
|
+
dsl.predicate :isInternational,
|
|
15
|
+
namespace: Namespaces::GlossaristNamespace, to: :international
|
|
16
|
+
dsl.predicate :isAbsent, namespace: Namespaces::GlossaristNamespace,
|
|
17
|
+
to: :absent
|
|
18
|
+
dsl.predicate :geographicalArea,
|
|
19
|
+
namespace: Namespaces::GlossaristNamespace, to: :language
|
|
20
|
+
dsl.predicate :language, namespace: Namespaces::DctermsNamespace,
|
|
21
|
+
to: :lang_code
|
|
22
|
+
dsl.predicate :script, namespace: Namespaces::GlossaristNamespace,
|
|
23
|
+
to: :script
|
|
24
|
+
dsl.predicate :conversionSystem,
|
|
25
|
+
namespace: Namespaces::GlossaristNamespace, to: :system
|
|
17
26
|
dsl.members :pronunciations, link: "gloss:hasPronunciation"
|
|
18
27
|
dsl.members :sources
|
|
28
|
+
|
|
29
|
+
RelationshipPredicates::DESIGNATION_REL_PREDICATES.each do |type, (ns, name)|
|
|
30
|
+
dsl.predicate name, namespace: ns, to: :"#{type}_targets",
|
|
31
|
+
uri_reference: true
|
|
32
|
+
end
|
|
19
33
|
}.freeze
|
|
20
34
|
|
|
21
35
|
DESIGNATION_NAMESPACES = [
|
|
@@ -27,8 +41,6 @@ module Glossarist
|
|
|
27
41
|
].freeze
|
|
28
42
|
|
|
29
43
|
class GlossDesignation < Lutaml::Model::Serializable
|
|
30
|
-
include Relationships
|
|
31
|
-
|
|
32
44
|
attribute :designation, :string
|
|
33
45
|
attribute :normative_status, :string
|
|
34
46
|
attribute :type, :string
|
|
@@ -44,10 +56,16 @@ module Glossarist
|
|
|
44
56
|
attribute :pronunciations, GlossPronunciation, collection: true
|
|
45
57
|
attribute :sources, GlossConceptSource, collection: true
|
|
46
58
|
|
|
59
|
+
RelationshipPredicates::DESIGNATION_REL_PREDICATES.each_key do |type|
|
|
60
|
+
attribute :"#{type}_targets", :string, collection: true
|
|
61
|
+
end
|
|
62
|
+
|
|
47
63
|
rdf do
|
|
48
64
|
namespace(*DESIGNATION_NAMESPACES)
|
|
49
65
|
|
|
50
|
-
subject
|
|
66
|
+
subject do |d|
|
|
67
|
+
"concept/#{d.concept_id}/#{d.lang_code}/designation/#{d.index}"
|
|
68
|
+
end
|
|
51
69
|
|
|
52
70
|
types "gloss:Designation", "skosxl:Label"
|
|
53
71
|
|
|
@@ -64,14 +82,19 @@ module Glossarist
|
|
|
64
82
|
rdf do
|
|
65
83
|
namespace(*DESIGNATION_NAMESPACES)
|
|
66
84
|
|
|
67
|
-
subject
|
|
85
|
+
subject do |d|
|
|
86
|
+
"concept/#{d.concept_id}/#{d.lang_code}/designation/#{d.index}"
|
|
87
|
+
end
|
|
68
88
|
|
|
69
89
|
types "gloss:Expression", "skosxl:Label"
|
|
70
90
|
|
|
71
91
|
COMMON_DESIGNATION_PREDICATES.call(self)
|
|
72
|
-
predicate :prefix, namespace: Namespaces::GlossaristNamespace,
|
|
73
|
-
|
|
74
|
-
predicate :
|
|
92
|
+
predicate :prefix, namespace: Namespaces::GlossaristNamespace,
|
|
93
|
+
to: :prefix
|
|
94
|
+
predicate :usageInfo, namespace: Namespaces::GlossaristNamespace,
|
|
95
|
+
to: :usage_info
|
|
96
|
+
predicate :fieldOfApplication,
|
|
97
|
+
namespace: Namespaces::GlossaristNamespace, to: :field_of_application
|
|
75
98
|
members :grammar_info, link: "gloss:hasGrammarInfo"
|
|
76
99
|
end
|
|
77
100
|
end
|
|
@@ -84,18 +107,26 @@ module Glossarist
|
|
|
84
107
|
rdf do
|
|
85
108
|
namespace(*DESIGNATION_NAMESPACES)
|
|
86
109
|
|
|
87
|
-
subject
|
|
110
|
+
subject do |d|
|
|
111
|
+
"concept/#{d.concept_id}/#{d.lang_code}/designation/#{d.index}"
|
|
112
|
+
end
|
|
88
113
|
|
|
89
114
|
types "gloss:Abbreviation", "skosxl:Label"
|
|
90
115
|
|
|
91
116
|
COMMON_DESIGNATION_PREDICATES.call(self)
|
|
92
|
-
predicate :prefix, namespace: Namespaces::GlossaristNamespace,
|
|
93
|
-
|
|
94
|
-
predicate :
|
|
117
|
+
predicate :prefix, namespace: Namespaces::GlossaristNamespace,
|
|
118
|
+
to: :prefix
|
|
119
|
+
predicate :usageInfo, namespace: Namespaces::GlossaristNamespace,
|
|
120
|
+
to: :usage_info
|
|
121
|
+
predicate :fieldOfApplication,
|
|
122
|
+
namespace: Namespaces::GlossaristNamespace, to: :field_of_application
|
|
95
123
|
members :grammar_info, link: "gloss:hasGrammarInfo"
|
|
96
|
-
predicate :isAcronym, namespace: Namespaces::GlossaristNamespace,
|
|
97
|
-
|
|
98
|
-
predicate :
|
|
124
|
+
predicate :isAcronym, namespace: Namespaces::GlossaristNamespace,
|
|
125
|
+
to: :acronym
|
|
126
|
+
predicate :isInitialism, namespace: Namespaces::GlossaristNamespace,
|
|
127
|
+
to: :initialism
|
|
128
|
+
predicate :isTruncation, namespace: Namespaces::GlossaristNamespace,
|
|
129
|
+
to: :truncation
|
|
99
130
|
end
|
|
100
131
|
end
|
|
101
132
|
|
|
@@ -103,7 +134,9 @@ module Glossarist
|
|
|
103
134
|
rdf do
|
|
104
135
|
namespace(*DESIGNATION_NAMESPACES)
|
|
105
136
|
|
|
106
|
-
subject
|
|
137
|
+
subject do |d|
|
|
138
|
+
"concept/#{d.concept_id}/#{d.lang_code}/designation/#{d.index}"
|
|
139
|
+
end
|
|
107
140
|
|
|
108
141
|
types "gloss:Symbol", "skosxl:Label"
|
|
109
142
|
|
|
@@ -117,7 +150,9 @@ module Glossarist
|
|
|
117
150
|
rdf do
|
|
118
151
|
namespace(*DESIGNATION_NAMESPACES)
|
|
119
152
|
|
|
120
|
-
subject
|
|
153
|
+
subject do |d|
|
|
154
|
+
"concept/#{d.concept_id}/#{d.lang_code}/designation/#{d.index}"
|
|
155
|
+
end
|
|
121
156
|
|
|
122
157
|
types "gloss:LetterSymbol", "skosxl:Label"
|
|
123
158
|
|
|
@@ -133,7 +168,9 @@ module Glossarist
|
|
|
133
168
|
rdf do
|
|
134
169
|
namespace(*DESIGNATION_NAMESPACES)
|
|
135
170
|
|
|
136
|
-
subject
|
|
171
|
+
subject do |d|
|
|
172
|
+
"concept/#{d.concept_id}/#{d.lang_code}/designation/#{d.index}"
|
|
173
|
+
end
|
|
137
174
|
|
|
138
175
|
types "gloss:GraphicalSymbol", "skosxl:Label"
|
|
139
176
|
|
|
@@ -15,18 +15,28 @@ module Glossarist
|
|
|
15
15
|
rdf do
|
|
16
16
|
namespace Namespaces::GlossaristNamespace
|
|
17
17
|
|
|
18
|
-
subject
|
|
18
|
+
subject do |g|
|
|
19
|
+
"concept/#{g.concept_id}/#{g.lang_code}/designation/#{g.index}/grammar"
|
|
20
|
+
end
|
|
19
21
|
|
|
20
22
|
types "gloss:GrammarInfo"
|
|
21
23
|
|
|
22
|
-
predicate :gender, namespace: Namespaces::GlossaristNamespace,
|
|
23
|
-
|
|
24
|
-
predicate :
|
|
25
|
-
|
|
26
|
-
predicate :
|
|
27
|
-
|
|
28
|
-
predicate :
|
|
29
|
-
|
|
24
|
+
predicate :gender, namespace: Namespaces::GlossaristNamespace,
|
|
25
|
+
to: :gender, uri_reference: true
|
|
26
|
+
predicate :number, namespace: Namespaces::GlossaristNamespace,
|
|
27
|
+
to: :number, uri_reference: true
|
|
28
|
+
predicate :isNoun, namespace: Namespaces::GlossaristNamespace,
|
|
29
|
+
to: :noun?
|
|
30
|
+
predicate :isVerb, namespace: Namespaces::GlossaristNamespace,
|
|
31
|
+
to: :verb?
|
|
32
|
+
predicate :isAdjective, namespace: Namespaces::GlossaristNamespace,
|
|
33
|
+
to: :adjective?
|
|
34
|
+
predicate :isAdverb, namespace: Namespaces::GlossaristNamespace,
|
|
35
|
+
to: :adverb?
|
|
36
|
+
predicate :isPreposition, namespace: Namespaces::GlossaristNamespace,
|
|
37
|
+
to: :preposition?
|
|
38
|
+
predicate :isParticiple, namespace: Namespaces::GlossaristNamespace,
|
|
39
|
+
to: :participle?
|
|
30
40
|
end
|
|
31
41
|
|
|
32
42
|
def noun?
|
|
@@ -16,9 +16,12 @@ module Glossarist
|
|
|
16
16
|
|
|
17
17
|
types "gloss:Locality"
|
|
18
18
|
|
|
19
|
-
predicate :localityType, namespace: Namespaces::GlossaristNamespace,
|
|
20
|
-
|
|
21
|
-
predicate :
|
|
19
|
+
predicate :localityType, namespace: Namespaces::GlossaristNamespace,
|
|
20
|
+
to: :locality_type
|
|
21
|
+
predicate :referenceFrom, namespace: Namespaces::GlossaristNamespace,
|
|
22
|
+
to: :reference_from
|
|
23
|
+
predicate :referenceTo, namespace: Namespaces::GlossaristNamespace,
|
|
24
|
+
to: :reference_to
|
|
22
25
|
end
|
|
23
26
|
end
|
|
24
27
|
end
|
|
@@ -32,13 +32,20 @@ module Glossarist
|
|
|
32
32
|
|
|
33
33
|
types "gloss:LocalizedConcept", "skos:Concept"
|
|
34
34
|
|
|
35
|
-
predicate :language, namespace: Namespaces::DctermsNamespace,
|
|
36
|
-
|
|
37
|
-
predicate :
|
|
38
|
-
|
|
39
|
-
predicate :
|
|
40
|
-
|
|
41
|
-
predicate :
|
|
35
|
+
predicate :language, namespace: Namespaces::DctermsNamespace,
|
|
36
|
+
to: :language_code
|
|
37
|
+
predicate :hasEntryStatus, namespace: Namespaces::GlossaristNamespace,
|
|
38
|
+
to: :entry_status, uri_reference: true
|
|
39
|
+
predicate :domain, namespace: Namespaces::GlossaristNamespace,
|
|
40
|
+
to: :domain
|
|
41
|
+
predicate :release, namespace: Namespaces::GlossaristNamespace,
|
|
42
|
+
to: :release
|
|
43
|
+
predicate :lineageSimilarity,
|
|
44
|
+
namespace: Namespaces::GlossaristNamespace, to: :lineage_similarity
|
|
45
|
+
predicate :script, namespace: Namespaces::GlossaristNamespace,
|
|
46
|
+
to: :script
|
|
47
|
+
predicate :conversionSystem,
|
|
48
|
+
namespace: Namespaces::GlossaristNamespace, to: :system
|
|
42
49
|
|
|
43
50
|
members :designations,
|
|
44
51
|
link: ->(d) { GlossLocalizedConcept.skosxl_label_for(d) }
|
|
@@ -16,13 +16,18 @@ module Glossarist
|
|
|
16
16
|
rdf do
|
|
17
17
|
namespace Namespaces::GlossaristNamespace
|
|
18
18
|
|
|
19
|
-
subject
|
|
19
|
+
subject do |n|
|
|
20
|
+
"concept/#{n.concept_id}/#{n.lang_code}/nonverbal/#{n.index}"
|
|
21
|
+
end
|
|
20
22
|
|
|
21
23
|
types "gloss:NonVerbalRepresentation"
|
|
22
24
|
|
|
23
|
-
predicate :representationType,
|
|
24
|
-
|
|
25
|
-
predicate :
|
|
25
|
+
predicate :representationType,
|
|
26
|
+
namespace: Namespaces::GlossaristNamespace, to: :representation_type
|
|
27
|
+
predicate :representationRef,
|
|
28
|
+
namespace: Namespaces::GlossaristNamespace, to: :representation_ref
|
|
29
|
+
predicate :representationText,
|
|
30
|
+
namespace: Namespaces::GlossaristNamespace, to: :representation_text
|
|
26
31
|
|
|
27
32
|
members :sources
|
|
28
33
|
end
|
|
@@ -17,15 +17,22 @@ module Glossarist
|
|
|
17
17
|
rdf do
|
|
18
18
|
namespace Namespaces::GlossaristNamespace
|
|
19
19
|
|
|
20
|
-
subject
|
|
20
|
+
subject do |p|
|
|
21
|
+
"concept/#{p.concept_id}/#{p.lang_code}/pronunciation/#{p.index}"
|
|
22
|
+
end
|
|
21
23
|
|
|
22
24
|
types "gloss:Pronunciation"
|
|
23
25
|
|
|
24
|
-
predicate :pronunciationContent,
|
|
25
|
-
|
|
26
|
-
predicate :
|
|
27
|
-
|
|
28
|
-
predicate :
|
|
26
|
+
predicate :pronunciationContent,
|
|
27
|
+
namespace: Namespaces::GlossaristNamespace, to: :content
|
|
28
|
+
predicate :pronunciationLanguage,
|
|
29
|
+
namespace: Namespaces::GlossaristNamespace, to: :language
|
|
30
|
+
predicate :pronunciationScript,
|
|
31
|
+
namespace: Namespaces::GlossaristNamespace, to: :script
|
|
32
|
+
predicate :pronunciationCountry,
|
|
33
|
+
namespace: Namespaces::GlossaristNamespace, to: :country
|
|
34
|
+
predicate :pronunciationSystem,
|
|
35
|
+
namespace: Namespaces::GlossaristNamespace, to: :system
|
|
29
36
|
end
|
|
30
37
|
end
|
|
31
38
|
end
|
|
@@ -30,12 +30,16 @@ module Glossarist
|
|
|
30
30
|
|
|
31
31
|
types "gloss:Reference"
|
|
32
32
|
|
|
33
|
-
predicate :citationText, namespace: Namespaces::GlossaristNamespace,
|
|
34
|
-
|
|
33
|
+
predicate :citationText, namespace: Namespaces::GlossaristNamespace,
|
|
34
|
+
to: :text
|
|
35
|
+
predicate :source, namespace: Namespaces::GlossaristNamespace,
|
|
36
|
+
to: :source
|
|
35
37
|
predicate :refId, namespace: Namespaces::GlossaristNamespace, to: :id
|
|
36
|
-
predicate :version, namespace: Namespaces::GlossaristNamespace,
|
|
38
|
+
predicate :version, namespace: Namespaces::GlossaristNamespace,
|
|
39
|
+
to: :version
|
|
37
40
|
predicate :link, namespace: Namespaces::GlossaristNamespace, to: :link
|
|
38
|
-
predicate :refType, namespace: Namespaces::GlossaristNamespace,
|
|
41
|
+
predicate :refType, namespace: Namespaces::GlossaristNamespace,
|
|
42
|
+
to: :ref_type
|
|
39
43
|
predicate :urn, namespace: Namespaces::GlossaristNamespace, to: :urn
|
|
40
44
|
predicate :term, namespace: Namespaces::GlossaristNamespace, to: :term
|
|
41
45
|
members :locality, link: "gloss:hasLocality"
|