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
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
# Extends Lutaml::Rdf::Mapping with support for multiple rdf:type values.
|
|
4
|
-
#
|
|
5
|
-
# Usage in rdf do blocks:
|
|
6
|
-
# type "gloss:Concept" # single type (original API)
|
|
7
|
-
# types "gloss:Concept", "skos:Concept" # multiple types (new API)
|
|
8
|
-
module Lutaml
|
|
9
|
-
module Rdf
|
|
10
|
-
class Mapping
|
|
11
|
-
attr_writer :namespace_set, :rdf_subject, :rdf_type, :rdf_predicates,
|
|
12
|
-
:rdf_members
|
|
13
|
-
|
|
14
|
-
def types(*values)
|
|
15
|
-
@rdf_types = values.flatten.map(&:to_s)
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def rdf_types
|
|
19
|
-
if defined?(@rdf_types) && @rdf_types
|
|
20
|
-
@rdf_types
|
|
21
|
-
elsif @rdf_type
|
|
22
|
-
[@rdf_type.to_s]
|
|
23
|
-
else
|
|
24
|
-
[]
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def rdf_types=(values)
|
|
29
|
-
@rdf_types = values
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def has_types_or_predicates?
|
|
33
|
-
rdf_types.any? || rdf_predicates.any?
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
end
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
# Extends Lutaml::Rdf::MappingRule with `as:` option for URI-valued predicates.
|
|
4
|
-
#
|
|
5
|
-
# Usage:
|
|
6
|
-
# predicate :hasStatus, namespace: Ns, to: :status, as: :uri
|
|
7
|
-
# predicate :name, namespace: Ns, to: :name # default: :literal
|
|
8
|
-
module Lutaml
|
|
9
|
-
module Rdf
|
|
10
|
-
class MappingRule
|
|
11
|
-
attr_reader :as
|
|
12
|
-
|
|
13
|
-
def initialize(predicate_name, namespace:, to:, lang_tagged: false, as: :literal)
|
|
14
|
-
validate!(predicate_name, namespace, to)
|
|
15
|
-
@predicate_name = predicate_name.to_s.freeze
|
|
16
|
-
@namespace = namespace
|
|
17
|
-
@to = to
|
|
18
|
-
@lang_tagged = lang_tagged
|
|
19
|
-
@as = as
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def uri_value?
|
|
23
|
-
@as == :uri
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
end
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
# Extends Lutaml::Rdf::MemberRule with `inline:` and `link:` options.
|
|
4
|
-
#
|
|
5
|
-
# Usage:
|
|
6
|
-
# members :localizations, link: "gloss:hasLocalization"
|
|
7
|
-
# members :designations, link: ->(d) { skosxl_predicate_for(d) }
|
|
8
|
-
# members :definitions, link: "gloss:hasDefinition"
|
|
9
|
-
# members :sources # no linking predicate
|
|
10
|
-
module Lutaml
|
|
11
|
-
module Rdf
|
|
12
|
-
class MemberRule
|
|
13
|
-
attr_reader :attr_name, :inline, :link
|
|
14
|
-
|
|
15
|
-
def initialize(attr_name, inline: true, link: nil)
|
|
16
|
-
@attr_name = attr_name.to_sym
|
|
17
|
-
@inline = inline
|
|
18
|
-
@link = link
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def link_predicate_for(member, mapping)
|
|
22
|
-
return nil unless @link
|
|
23
|
-
|
|
24
|
-
case @link
|
|
25
|
-
when String
|
|
26
|
-
mapping.namespace_set.resolve_compact_iri(@link)
|
|
27
|
-
when Proc
|
|
28
|
-
uri = @link.call(member)
|
|
29
|
-
uri.include?(":") ? mapping.namespace_set.resolve_compact_iri(uri) : uri
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
end
|
|
@@ -1,222 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require "rdf/turtle"
|
|
4
|
-
|
|
5
|
-
# Extends Lutaml::Turtle::Transform to handle:
|
|
6
|
-
# - Multiple rdf:type values (types method)
|
|
7
|
-
# - URI-valued predicates (as: :uri)
|
|
8
|
-
# - Reference-only members (inline: false)
|
|
9
|
-
# - Linking predicates for members (link option)
|
|
10
|
-
# - Recursive prefix collection
|
|
11
|
-
# - Polymorphic member collections
|
|
12
|
-
module Lutaml
|
|
13
|
-
module Turtle
|
|
14
|
-
class Transform < Lutaml::Rdf::Transform
|
|
15
|
-
def model_to_data(instance, _format, options = {})
|
|
16
|
-
mapping = extract_turtle_mapping(options)
|
|
17
|
-
return "" unless mapping
|
|
18
|
-
|
|
19
|
-
if !mapping.rdf_subject && mapping.has_types_or_predicates? && mapping.rdf_members.empty?
|
|
20
|
-
raise MissingSubjectError,
|
|
21
|
-
"Turtle mapping requires a subject block"
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
graph = build_graph(mapping, instance)
|
|
25
|
-
return "" if graph.empty?
|
|
26
|
-
|
|
27
|
-
prefixes = collect_all_prefixes(mapping, instance)
|
|
28
|
-
RDF::Turtle::Writer.buffer(prefixes: prefixes) do |writer|
|
|
29
|
-
graph.each_statement { |stmt| writer << stmt }
|
|
30
|
-
end.strip
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
def data_to_model(data, _format, options = {})
|
|
34
|
-
mapping = extract_turtle_mapping(options)
|
|
35
|
-
unless mapping&.rdf_subject
|
|
36
|
-
raise MissingSubjectError,
|
|
37
|
-
"Turtle mapping requires a subject block"
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
graph = data.is_a?(RDF::Graph) ? data : Lutaml::Turtle::Adapter.parse(data)
|
|
41
|
-
attrs = extract_attributes(graph, mapping)
|
|
42
|
-
build_instance(attrs, options)
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
private
|
|
46
|
-
|
|
47
|
-
def extract_turtle_mapping(options)
|
|
48
|
-
options[:mappings] || mappings_for(:turtle, lutaml_register)
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
def build_graph(mapping, instance)
|
|
52
|
-
graph = RDF::Graph.new
|
|
53
|
-
|
|
54
|
-
if mapping.has_types_or_predicates?
|
|
55
|
-
subject_uri = if mapping.rdf_subject
|
|
56
|
-
RDF::URI(resolve_subject_uri(mapping, instance))
|
|
57
|
-
else
|
|
58
|
-
RDF::Node.new
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
emit_type_statements(graph, subject_uri, mapping)
|
|
62
|
-
emit_predicate_statements(graph, subject_uri, instance, mapping)
|
|
63
|
-
emit_member_link_statements(graph, subject_uri, instance, mapping)
|
|
64
|
-
emit_relationship_statements(graph, subject_uri, instance)
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
emit_child_resources(graph, instance, mapping)
|
|
68
|
-
|
|
69
|
-
graph
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
def emit_type_statements(graph, subject_uri, mapping)
|
|
73
|
-
mapping.rdf_types.each do |type_str|
|
|
74
|
-
type_uri = RDF::URI(mapping.namespace_set.resolve_compact_iri(type_str))
|
|
75
|
-
graph << RDF::Statement.new(subject_uri, RDF.type, type_uri)
|
|
76
|
-
end
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
def emit_predicate_statements(graph, subject_uri, instance, mapping)
|
|
80
|
-
mapping.rdf_predicates.each do |rule|
|
|
81
|
-
value = instance.public_send(rule.to)
|
|
82
|
-
next if value.nil?
|
|
83
|
-
|
|
84
|
-
Array(value).each do |v|
|
|
85
|
-
next if v.is_a?(String) && v.empty?
|
|
86
|
-
|
|
87
|
-
object = build_rdf_object(v, rule, mapping)
|
|
88
|
-
graph << RDF::Statement.new(subject_uri, RDF::URI(rule.uri), object)
|
|
89
|
-
end
|
|
90
|
-
end
|
|
91
|
-
end
|
|
92
|
-
|
|
93
|
-
def emit_member_link_statements(graph, subject_uri, instance, mapping)
|
|
94
|
-
mapping.rdf_members.each do |member_rule|
|
|
95
|
-
next unless member_rule.link
|
|
96
|
-
|
|
97
|
-
collection = Array(instance.public_send(member_rule.attr_name))
|
|
98
|
-
collection.each do |member|
|
|
99
|
-
child_mapping = member.class.mappings[:turtle]
|
|
100
|
-
next unless child_mapping&.rdf_subject
|
|
101
|
-
|
|
102
|
-
child_uri = RDF::URI(resolve_subject_uri(child_mapping, member))
|
|
103
|
-
link_uri = RDF::URI(member_rule.link_predicate_for(member, mapping))
|
|
104
|
-
next unless link_uri
|
|
105
|
-
|
|
106
|
-
graph << RDF::Statement.new(subject_uri, link_uri, child_uri)
|
|
107
|
-
end
|
|
108
|
-
end
|
|
109
|
-
end
|
|
110
|
-
|
|
111
|
-
def emit_relationship_statements(graph, subject_uri, instance)
|
|
112
|
-
return unless instance.is_a?(Glossarist::Rdf::Relationships)
|
|
113
|
-
|
|
114
|
-
Array(instance.relationship_triples).each do |pred_uri, obj_uri|
|
|
115
|
-
graph << RDF::Statement.new(subject_uri, RDF::URI(pred_uri), RDF::URI(obj_uri))
|
|
116
|
-
end
|
|
117
|
-
end
|
|
118
|
-
|
|
119
|
-
def emit_child_resources(graph, instance, mapping)
|
|
120
|
-
mapping.rdf_members.each do |member_rule|
|
|
121
|
-
collection = Array(instance.public_send(member_rule.attr_name))
|
|
122
|
-
collection.each do |member|
|
|
123
|
-
member_mapping = member.class.mappings[:turtle]
|
|
124
|
-
next unless member_mapping
|
|
125
|
-
|
|
126
|
-
graph << build_graph(member_mapping, member)
|
|
127
|
-
end
|
|
128
|
-
end
|
|
129
|
-
end
|
|
130
|
-
|
|
131
|
-
def build_rdf_object(value, rule, mapping = nil)
|
|
132
|
-
if rule.uri_value?
|
|
133
|
-
resolved = if mapping && value.include?(":")
|
|
134
|
-
mapping.namespace_set.resolve_compact_iri(value)
|
|
135
|
-
else
|
|
136
|
-
value
|
|
137
|
-
end
|
|
138
|
-
RDF::URI(resolved)
|
|
139
|
-
elsif rule.lang_tagged
|
|
140
|
-
lang = extract_language(value)
|
|
141
|
-
RDF::Literal.new(value.to_s, language: lang)
|
|
142
|
-
else
|
|
143
|
-
case value
|
|
144
|
-
when Integer then RDF::Literal.new(value, datatype: RDF::XSD.integer)
|
|
145
|
-
when Float then RDF::Literal.new(value, datatype: RDF::XSD.double)
|
|
146
|
-
when TrueClass, FalseClass then RDF::Literal.new(value, datatype: RDF::XSD.boolean)
|
|
147
|
-
else RDF::Literal.new(value.to_s)
|
|
148
|
-
end
|
|
149
|
-
end
|
|
150
|
-
end
|
|
151
|
-
|
|
152
|
-
def collect_all_prefixes(mapping, instance)
|
|
153
|
-
ns_set = collect_namespaces_recursive(mapping, instance)
|
|
154
|
-
ns_set.each.with_object({}) do |ns, h|
|
|
155
|
-
h[ns.prefix.to_sym] = ns.uri if ns.prefix && ns.uri
|
|
156
|
-
end
|
|
157
|
-
end
|
|
158
|
-
|
|
159
|
-
def collect_namespaces_recursive(mapping, instance)
|
|
160
|
-
ns_set = mapping.namespace_set
|
|
161
|
-
|
|
162
|
-
mapping.rdf_members.each do |member_rule|
|
|
163
|
-
collection = Array(instance.public_send(member_rule.attr_name))
|
|
164
|
-
next if collection.empty?
|
|
165
|
-
|
|
166
|
-
collection.map(&:class).uniq.each do |klass|
|
|
167
|
-
member_mapping = klass.mappings[:turtle]
|
|
168
|
-
next unless member_mapping
|
|
169
|
-
|
|
170
|
-
ns_set = ns_set.merge(member_mapping.namespace_set)
|
|
171
|
-
# Recurse into child members
|
|
172
|
-
child_ns = collect_namespaces_recursive(member_mapping, collection.first)
|
|
173
|
-
ns_set = ns_set.merge(child_ns)
|
|
174
|
-
end
|
|
175
|
-
end
|
|
176
|
-
|
|
177
|
-
ns_set
|
|
178
|
-
end
|
|
179
|
-
|
|
180
|
-
def extract_attributes(graph, mapping)
|
|
181
|
-
attrs = {}
|
|
182
|
-
first_type_uri = mapping.rdf_types.first
|
|
183
|
-
return attrs unless first_type_uri
|
|
184
|
-
|
|
185
|
-
type_uri = RDF::URI(mapping.namespace_set.resolve_compact_iri(first_type_uri))
|
|
186
|
-
matching_subjects = find_subjects_by_type(graph, type_uri)
|
|
187
|
-
|
|
188
|
-
matching_subjects.each do |subject|
|
|
189
|
-
mapping.rdf_predicates.each do |rule|
|
|
190
|
-
stmts = graph.query([subject, RDF::URI(rule.uri), nil])
|
|
191
|
-
next if stmts.empty?
|
|
192
|
-
|
|
193
|
-
values = stmts.map do |s|
|
|
194
|
-
rule.uri_value? ? s.object.to_s : literal_to_ruby(s.object)
|
|
195
|
-
end
|
|
196
|
-
attrs[rule.to] = values.length == 1 ? values.first : values
|
|
197
|
-
end
|
|
198
|
-
end
|
|
199
|
-
|
|
200
|
-
attrs
|
|
201
|
-
end
|
|
202
|
-
|
|
203
|
-
def find_subjects_by_type(graph, type_uri)
|
|
204
|
-
graph.query([nil, RDF.type, RDF::URI(type_uri)]).map(&:subject).uniq
|
|
205
|
-
end
|
|
206
|
-
|
|
207
|
-
def literal_to_ruby(rdf_object)
|
|
208
|
-
case rdf_object
|
|
209
|
-
when RDF::Literal
|
|
210
|
-
case rdf_object.datatype
|
|
211
|
-
when RDF::XSD.integer then rdf_object.value.to_i
|
|
212
|
-
when RDF::XSD.double, RDF::XSD.decimal, RDF::XSD.float then rdf_object.value.to_f
|
|
213
|
-
when RDF::XSD.boolean then rdf_object.value == "true"
|
|
214
|
-
else rdf_object.value
|
|
215
|
-
end
|
|
216
|
-
else
|
|
217
|
-
rdf_object.to_s
|
|
218
|
-
end
|
|
219
|
-
end
|
|
220
|
-
end
|
|
221
|
-
end
|
|
222
|
-
end
|
data/lib/glossarist/rdf/ext.rb
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require "lutaml/turtle"
|
|
4
|
-
require "lutaml/jsonld"
|
|
5
|
-
|
|
6
|
-
require_relative "ext/mapping_ext"
|
|
7
|
-
require_relative "ext/mapping_rule_ext"
|
|
8
|
-
require_relative "ext/member_rule_ext"
|
|
9
|
-
require_relative "ext/turtle_transform_ext"
|
|
10
|
-
require_relative "ext/jsonld_transform_ext"
|
|
11
|
-
|
|
12
|
-
# Update Lutaml::Rdf::Mapping#predicate to pass through `as` option.
|
|
13
|
-
# Update Lutaml::Rdf::Mapping#members to pass through `inline` and `link` options.
|
|
14
|
-
Lutaml::Rdf::Mapping.class_eval do
|
|
15
|
-
def predicate(name, namespace:, to:, lang_tagged: false, as: :literal)
|
|
16
|
-
@rdf_predicates << Lutaml::Rdf::MappingRule.new(
|
|
17
|
-
name,
|
|
18
|
-
namespace: namespace,
|
|
19
|
-
to: to,
|
|
20
|
-
lang_tagged: lang_tagged,
|
|
21
|
-
as: as,
|
|
22
|
-
)
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def members(attr_name, inline: true, link: nil)
|
|
26
|
-
@rdf_members << Lutaml::Rdf::MemberRule.new(attr_name, inline: inline, link: link)
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def deep_dup
|
|
30
|
-
self.class.new.tap do |new_mapping|
|
|
31
|
-
new_mapping.namespace_set = @namespace_set
|
|
32
|
-
new_mapping.rdf_subject = @rdf_subject
|
|
33
|
-
new_mapping.rdf_type = @rdf_type
|
|
34
|
-
new_mapping.rdf_types = @rdf_types&.dup
|
|
35
|
-
new_mapping.rdf_predicates = @rdf_predicates.dup
|
|
36
|
-
new_mapping.rdf_members = @rdf_members.dup
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
end
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Glossarist
|
|
4
|
-
module Rdf
|
|
5
|
-
# Included by RDF view classes that carry variable-predicate relationships.
|
|
6
|
-
#
|
|
7
|
-
# Standard SKOS/iso-thes relationships (broader, exactMatch, etc.) and
|
|
8
|
-
# glossarist-specific relationships (deprecates, compares, etc.) are
|
|
9
|
-
# emitted as direct triples with the predicate determined at runtime
|
|
10
|
-
# from REL_PROPERTY_MAP.
|
|
11
|
-
module Relationships
|
|
12
|
-
attr_reader :relationship_triples
|
|
13
|
-
|
|
14
|
-
def relationship_triples=(pairs)
|
|
15
|
-
@relationship_triples = Array(pairs)
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|