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.
Files changed (114) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1 -1
  3. data/.rubocop_todo.yml +413 -63
  4. data/CLAUDE.md +1 -1
  5. data/Gemfile +1 -1
  6. data/README.adoc +4 -1
  7. data/glossarist.gemspec +2 -1
  8. data/lib/glossarist/bibliography_data.rb +41 -0
  9. data/lib/glossarist/bibliography_entry.rb +13 -0
  10. data/lib/glossarist/citation.rb +8 -2
  11. data/lib/glossarist/cli/export_command.rb +10 -5
  12. data/lib/glossarist/cli/validate_command.rb +21 -5
  13. data/lib/glossarist/collection.rb +2 -2
  14. data/lib/glossarist/collections/bibliography_collection.rb +2 -1
  15. data/lib/glossarist/collections/collection.rb +2 -2
  16. data/lib/glossarist/collections/localization_collection.rb +4 -4
  17. data/lib/glossarist/concept_collector.rb +6 -6
  18. data/lib/glossarist/concept_document.rb +2 -3
  19. data/lib/glossarist/concept_manager.rb +6 -8
  20. data/lib/glossarist/concept_set.rb +4 -4
  21. data/lib/glossarist/concept_store.rb +84 -0
  22. data/lib/glossarist/dataset_validator.rb +2 -1
  23. data/lib/glossarist/gcr_package_definition.rb +37 -0
  24. data/lib/glossarist/gcr_statistics.rb +2 -2
  25. data/lib/glossarist/glossary_definition.rb +1 -1
  26. data/lib/glossarist/glossary_store.rb +201 -0
  27. data/lib/glossarist/managed_concept_collection.rb +2 -2
  28. data/lib/glossarist/managed_concept_data.rb +2 -0
  29. data/lib/glossarist/rdf/gloss_citation.rb +8 -4
  30. data/lib/glossarist/rdf/gloss_concept.rb +13 -4
  31. data/lib/glossarist/rdf/gloss_concept_date.rb +4 -2
  32. data/lib/glossarist/rdf/gloss_concept_reference.rb +6 -3
  33. data/lib/glossarist/rdf/gloss_concept_source.rb +6 -3
  34. data/lib/glossarist/rdf/gloss_designation.rb +63 -26
  35. data/lib/glossarist/rdf/gloss_grammar_info.rb +19 -9
  36. data/lib/glossarist/rdf/gloss_locality.rb +6 -3
  37. data/lib/glossarist/rdf/gloss_localized_concept.rb +14 -7
  38. data/lib/glossarist/rdf/gloss_non_verbal_rep.rb +9 -4
  39. data/lib/glossarist/rdf/gloss_pronunciation.rb +13 -6
  40. data/lib/glossarist/rdf/gloss_reference.rb +8 -4
  41. data/lib/glossarist/rdf/namespaces.rb +3 -2
  42. data/lib/glossarist/rdf/relationship_predicates.rb +79 -0
  43. data/lib/glossarist/rdf/v3/configuration.rb +0 -2
  44. data/lib/glossarist/rdf/v3.rb +4 -43
  45. data/lib/glossarist/rdf.rb +26 -23
  46. data/lib/glossarist/register_data.rb +68 -18
  47. data/lib/glossarist/schema_migration.rb +8 -5
  48. data/lib/glossarist/sts/importer.rb +0 -1
  49. data/lib/glossarist/transforms/concept_to_gloss_transform.rb +57 -72
  50. data/lib/glossarist/v2/concept_data.rb +2 -1
  51. data/lib/glossarist/v2/concept_document.rb +1 -1
  52. data/lib/glossarist/v2/configuration.rb +0 -2
  53. data/lib/glossarist/v2/managed_concept_data.rb +1 -0
  54. data/lib/glossarist/v2.rb +12 -12
  55. data/lib/glossarist/v3/concept_data.rb +2 -1
  56. data/lib/glossarist/v3/concept_document.rb +1 -1
  57. data/lib/glossarist/v3/configuration.rb +0 -2
  58. data/lib/glossarist/v3/managed_concept_data.rb +1 -0
  59. data/lib/glossarist/v3.rb +16 -16
  60. data/lib/glossarist/validation/asset_index.rb +2 -2
  61. data/lib/glossarist/validation/bibliography_index.rb +11 -8
  62. data/lib/glossarist/validation/rules/asciidoc_xref_rule.rb +2 -1
  63. data/lib/glossarist/validation/rules/authoritative_source_rule.rb +1 -1
  64. data/lib/glossarist/validation/rules/bibliography_yaml_rule.rb +1 -1
  65. data/lib/glossarist/validation/rules/citation_completeness_rule.rb +1 -1
  66. data/lib/glossarist/validation/rules/concept_count_rule.rb +2 -3
  67. data/lib/glossarist/validation/rules/concept_id_rule.rb +0 -1
  68. data/lib/glossarist/validation/rules/concept_id_uniqueness_rule.rb +0 -1
  69. data/lib/glossarist/validation/rules/concept_mention_rule.rb +1 -2
  70. data/lib/glossarist/validation/rules/concept_status_rule.rb +1 -2
  71. data/lib/glossarist/validation/rules/concept_uri_rule.rb +1 -1
  72. data/lib/glossarist/validation/rules/date_type_rule.rb +5 -3
  73. data/lib/glossarist/validation/rules/date_validity_rule.rb +1 -1
  74. data/lib/glossarist/validation/rules/definition_content_rule.rb +1 -2
  75. data/lib/glossarist/validation/rules/domain_target_rule.rb +1 -1
  76. data/lib/glossarist/validation/rules/duplicate_term_rule.rb +1 -2
  77. data/lib/glossarist/validation/rules/entry_status_rule.rb +1 -2
  78. data/lib/glossarist/validation/rules/filename_id_rule.rb +2 -3
  79. data/lib/glossarist/validation/rules/image_reference_rule.rb +3 -2
  80. data/lib/glossarist/validation/rules/l10n_uuid_integrity_rule.rb +1 -2
  81. data/lib/glossarist/validation/rules/language_coverage_rule.rb +1 -2
  82. data/lib/glossarist/validation/rules/language_list_rule.rb +2 -3
  83. data/lib/glossarist/validation/rules/locality_completeness_rule.rb +3 -1
  84. data/lib/glossarist/validation/rules/localization_consistency_rule.rb +1 -1
  85. data/lib/glossarist/validation/rules/localization_presence_rule.rb +0 -1
  86. data/lib/glossarist/validation/rules/model_validity_rule.rb +1 -1
  87. data/lib/glossarist/validation/rules/orphaned_bibliography_rule.rb +2 -1
  88. data/lib/glossarist/validation/rules/orphaned_images_rule.rb +6 -4
  89. data/lib/glossarist/validation/rules/orphaned_l10n_files_rule.rb +1 -2
  90. data/lib/glossarist/validation/rules/preferred_term_rule.rb +1 -2
  91. data/lib/glossarist/validation/rules/related_concept_cycle_rule.rb +2 -2
  92. data/lib/glossarist/validation/rules/related_concept_rule.rb +1 -2
  93. data/lib/glossarist/validation/rules/related_concept_symmetry_rule.rb +1 -1
  94. data/lib/glossarist/validation/rules/related_concept_target_rule.rb +1 -1
  95. data/lib/glossarist/validation/rules/source_type_rule.rb +2 -2
  96. data/lib/glossarist/validation/rules/source_urn_format_rule.rb +2 -2
  97. data/lib/glossarist/validation/rules/terms_presence_rule.rb +1 -1
  98. data/lib/glossarist/validation/rules/uuid_format_rule.rb +1 -1
  99. data/lib/glossarist/validation/rules.rb +18 -49
  100. data/lib/glossarist/version.rb +1 -1
  101. data/lib/glossarist.rb +13 -11
  102. data/scripts/migrate_dataset.rb +14 -8
  103. data/scripts/migrate_isotc204_to_v3.rb +3 -1
  104. data/scripts/migrate_isotc211_to_v3.rb +5 -3
  105. data/scripts/migrate_osgeo_to_v3.rb +4 -2
  106. data/scripts/upgrade_dataset_to_v3.rb +0 -0
  107. metadata +24 -11
  108. data/lib/glossarist/rdf/ext/jsonld_transform_ext.rb +0 -208
  109. data/lib/glossarist/rdf/ext/mapping_ext.rb +0 -37
  110. data/lib/glossarist/rdf/ext/mapping_rule_ext.rb +0 -27
  111. data/lib/glossarist/rdf/ext/member_rule_ext.rb +0 -34
  112. data/lib/glossarist/rdf/ext/turtle_transform_ext.rb +0 -222
  113. data/lib/glossarist/rdf/ext.rb +0 -39
  114. 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
@@ -16,8 +16,8 @@ module Glossarist
16
16
  }.compact
17
17
  end
18
18
 
19
- def each(&block)
20
- @managed_concepts.each(&block)
19
+ def each(&)
20
+ @managed_concepts.each(&)
21
21
  end
22
22
 
23
23
  # Returns concept with given ID, if it is present in collection, or +nil+
@@ -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, to: :source
22
- predicate :citationId, namespace: Namespaces::GlossaristNamespace, to: :id
23
- predicate :citationVersion, namespace: Namespaces::GlossaristNamespace, to: :version
24
- predicate :citationLink, namespace: Namespaces::GlossaristNamespace, to: :link
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, to: :identifier
30
- predicate :hasStatus, namespace: Namespaces::GlossaristNamespace, to: :status, as: :uri
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, to: :date_value
20
- predicate :dateType, namespace: Namespaces::GlossaristNamespace, to: :date_type, as: :uri
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, to: :ref_type
23
- predicate :conceptId, namespace: Namespaces::GlossaristNamespace, to: :concept_id
24
- predicate :sourceUri, namespace: Namespaces::GlossaristNamespace, to: :source
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, to: :status, as: :uri
21
- predicate :sourceType, namespace: Namespaces::GlossaristNamespace, to: :type, as: :uri
22
- predicate :modification, namespace: Namespaces::GlossaristNamespace, to: :modification
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, to: :designation
9
- dsl.predicate :normativeStatus, namespace: Namespaces::GlossaristNamespace, to: :normative_status, as: :uri
10
- dsl.predicate :hasTermType, namespace: Namespaces::GlossaristNamespace, to: :term_type, as: :uri
11
- dsl.predicate :isInternational, namespace: Namespaces::GlossaristNamespace, to: :international
12
- dsl.predicate :isAbsent, namespace: Namespaces::GlossaristNamespace, to: :absent
13
- dsl.predicate :geographicalArea, namespace: Namespaces::GlossaristNamespace, to: :language
14
- dsl.predicate :language, namespace: Namespaces::DctermsNamespace, to: :lang_code
15
- dsl.predicate :script, namespace: Namespaces::GlossaristNamespace, to: :script
16
- dsl.predicate :conversionSystem, namespace: Namespaces::GlossaristNamespace, to: :system
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 { |d| "concept/#{d.concept_id}/#{d.lang_code}/designation/#{d.index}" }
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 { |d| "concept/#{d.concept_id}/#{d.lang_code}/designation/#{d.index}" }
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, to: :prefix
73
- predicate :usageInfo, namespace: Namespaces::GlossaristNamespace, to: :usage_info
74
- predicate :fieldOfApplication, namespace: Namespaces::GlossaristNamespace, to: :field_of_application
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 { |d| "concept/#{d.concept_id}/#{d.lang_code}/designation/#{d.index}" }
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, to: :prefix
93
- predicate :usageInfo, namespace: Namespaces::GlossaristNamespace, to: :usage_info
94
- predicate :fieldOfApplication, namespace: Namespaces::GlossaristNamespace, to: :field_of_application
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, to: :acronym
97
- predicate :isInitialism, namespace: Namespaces::GlossaristNamespace, to: :initialism
98
- predicate :isTruncation, namespace: Namespaces::GlossaristNamespace, to: :truncation
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 { |d| "concept/#{d.concept_id}/#{d.lang_code}/designation/#{d.index}" }
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 { |d| "concept/#{d.concept_id}/#{d.lang_code}/designation/#{d.index}" }
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 { |d| "concept/#{d.concept_id}/#{d.lang_code}/designation/#{d.index}" }
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 { |g| "concept/#{g.concept_id}/#{g.lang_code}/designation/#{g.index}/grammar" }
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, to: :gender, as: :uri
23
- predicate :number, namespace: Namespaces::GlossaristNamespace, to: :number, as: :uri
24
- predicate :isNoun, namespace: Namespaces::GlossaristNamespace, to: :noun?
25
- predicate :isVerb, namespace: Namespaces::GlossaristNamespace, to: :verb?
26
- predicate :isAdjective, namespace: Namespaces::GlossaristNamespace, to: :adjective?
27
- predicate :isAdverb, namespace: Namespaces::GlossaristNamespace, to: :adverb?
28
- predicate :isPreposition, namespace: Namespaces::GlossaristNamespace, to: :preposition?
29
- predicate :isParticiple, namespace: Namespaces::GlossaristNamespace, to: :participle?
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, to: :locality_type
20
- predicate :referenceFrom, namespace: Namespaces::GlossaristNamespace, to: :reference_from
21
- predicate :referenceTo, namespace: Namespaces::GlossaristNamespace, to: :reference_to
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, to: :language_code
36
- predicate :hasEntryStatus, namespace: Namespaces::GlossaristNamespace, to: :entry_status, as: :uri
37
- predicate :domain, namespace: Namespaces::GlossaristNamespace, to: :domain
38
- predicate :release, namespace: Namespaces::GlossaristNamespace, to: :release
39
- predicate :lineageSimilarity, namespace: Namespaces::GlossaristNamespace, to: :lineage_similarity
40
- predicate :script, namespace: Namespaces::GlossaristNamespace, to: :script
41
- predicate :conversionSystem, namespace: Namespaces::GlossaristNamespace, to: :system
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 { |n| "concept/#{n.concept_id}/#{n.lang_code}/nonverbal/#{n.index}" }
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, namespace: Namespaces::GlossaristNamespace, to: :representation_type
24
- predicate :representationRef, namespace: Namespaces::GlossaristNamespace, to: :representation_ref
25
- predicate :representationText, namespace: Namespaces::GlossaristNamespace, to: :representation_text
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 { |p| "concept/#{p.concept_id}/#{p.lang_code}/pronunciation/#{p.index}" }
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, namespace: Namespaces::GlossaristNamespace, to: :content
25
- predicate :pronunciationLanguage, namespace: Namespaces::GlossaristNamespace, to: :language
26
- predicate :pronunciationScript, namespace: Namespaces::GlossaristNamespace, to: :script
27
- predicate :pronunciationCountry, namespace: Namespaces::GlossaristNamespace, to: :country
28
- predicate :pronunciationSystem, namespace: Namespaces::GlossaristNamespace, to: :system
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, to: :text
34
- predicate :source, namespace: Namespaces::GlossaristNamespace, to: :source
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, to: :version
38
+ predicate :version, namespace: Namespaces::GlossaristNamespace,
39
+ to: :version
37
40
  predicate :link, namespace: Namespaces::GlossaristNamespace, to: :link
38
- predicate :refType, namespace: Namespaces::GlossaristNamespace, to: :ref_type
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"