Class: Glossarist::Transforms::ConceptToGlossTransform
- Inherits:
-
Object
- Object
- Glossarist::Transforms::ConceptToGlossTransform
- Defined in:
- lib/glossarist/transforms/concept_to_gloss_transform.rb
Overview
Transforms Glossarist domain model objects into ontology-faithful RDF using lutaml-model serializable view classes.
Creates GlossConcept/GlossLocalizedConcept/GlossDesignation instances and delegates Turtle/JSON-LD serialization to lutaml-model.
Constant Summary collapse
- GLOSS =
Rdf::Namespaces::GlossaristNamespace.uri
- SKOS =
Rdf::Namespaces::SkosNamespace.uri
- XL =
Rdf::Namespaces::SkosxlNamespace.uri
- ISO =
Rdf::Namespaces::IsoThesNamespace.uri
- DCT =
Rdf::Namespaces::DctermsNamespace.uri
- RDF_NS =
Rdf::Namespaces::RdfNamespace.uri
- REL_PROPERTY_MAP =
Rdf::RelationshipPredicates::ALL_REL_PREDICATES .transform_values { |ns, name| ns[name] } .transform_keys(&:to_s) .freeze
- DESIGNATION_BUILDERS =
Maps each Designation subclass to the method that builds its RDF counterpart. Lookup is by exact class — a Designation instance is always exactly one of these classes (the STI pattern in Designation::Base#of_yaml enforces this). Adding a new Designation subclass means adding one entry here, not editing a case/when.
{ Designation::Abbreviation => :build_gloss_abbreviation, Designation::Expression => :build_gloss_expression, Designation::GraphicalSymbol => :build_gloss_graphical_symbol, Designation::LetterSymbol => :build_gloss_letter_symbol, Designation::Symbol => :build_gloss_symbol, }.freeze
Class Method Summary collapse
- .transform(managed_concept, options = {}) ⇒ Object
- .transform_document(concepts, figures: [], tables: [], formulas: [], **options) ⇒ Object
Instance Method Summary collapse
- #build ⇒ Object
- #build_document(concepts, figures: [], tables: [], formulas: []) ⇒ Object
-
#initialize(managed_concept, options = {}) ⇒ ConceptToGlossTransform
constructor
A new instance of ConceptToGlossTransform.
- #to_jsonl_line ⇒ Object
- #to_jsonld(concepts_or_concept = nil, figures: [], tables: [], formulas: []) ⇒ Object
- #to_turtle(concepts_or_concept = nil, figures: [], tables: [], formulas: []) ⇒ Object
Constructor Details
#initialize(managed_concept, options = {}) ⇒ ConceptToGlossTransform
Returns a new instance of ConceptToGlossTransform.
46 47 48 49 |
# File 'lib/glossarist/transforms/concept_to_gloss_transform.rb', line 46 def initialize(managed_concept, = {}) @concept = managed_concept @options = end |
Class Method Details
.transform(managed_concept, options = {}) ⇒ Object
36 37 38 |
# File 'lib/glossarist/transforms/concept_to_gloss_transform.rb', line 36 def self.transform(managed_concept, = {}) new(managed_concept, ).build end |
.transform_document(concepts, figures: [], tables: [], formulas: [], **options) ⇒ Object
40 41 42 43 44 |
# File 'lib/glossarist/transforms/concept_to_gloss_transform.rb', line 40 def self.transform_document(concepts, figures: [], tables: [], formulas: [], **) new(nil, ).build_document(concepts, figures: figures, tables: tables, formulas: formulas) end |
Instance Method Details
#build ⇒ Object
51 52 53 |
# File 'lib/glossarist/transforms/concept_to_gloss_transform.rb', line 51 def build build_gloss_concept(concept) end |
#build_document(concepts, figures: [], tables: [], formulas: []) ⇒ Object
55 56 57 58 59 60 61 62 63 64 |
# File 'lib/glossarist/transforms/concept_to_gloss_transform.rb', line 55 def build_document(concepts, figures: [], tables: [], formulas: []) gloss_concepts = concepts.map { |c| build_gloss_concept(c) } doc = Rdf::GlossDocument.new( concepts: gloss_concepts, figures: figures.map { |f| build_gloss_figure(f) }, tables: tables.map { |t| build_gloss_table(t) }, formulas: formulas.map { |f| build_gloss_formula(f) }, ) Rdf::GlossDocument.to_turtle(doc) end |
#to_jsonl_line ⇒ Object
102 103 104 105 106 107 |
# File 'lib/glossarist/transforms/concept_to_gloss_transform.rb', line 102 def to_jsonl_line return "" unless @concept gc = build_gloss_concept(@concept) Rdf::GlossConcept.to_jsonld(gc) end |
#to_jsonld(concepts_or_concept = nil, figures: [], tables: [], formulas: []) ⇒ Object
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/glossarist/transforms/concept_to_gloss_transform.rb', line 80 def to_jsonld(concepts_or_concept = nil, figures: [], tables: [], formulas: []) if concepts_or_concept.is_a?(Array) gloss_concepts = concepts_or_concept.map do |c| build_gloss_concept(c) end doc = Rdf::GlossDocument.new( concepts: gloss_concepts, figures: figures.map { |f| build_gloss_figure(f) }, tables: tables.map { |t| build_gloss_table(t) }, formulas: formulas.map { |f| build_gloss_formula(f) }, ) Rdf::GlossDocument.to_jsonld(doc) else target = concepts_or_concept || @concept return "" unless target gc = build_gloss_concept(target) Rdf::GlossConcept.to_jsonld(gc) end end |
#to_turtle(concepts_or_concept = nil, figures: [], tables: [], formulas: []) ⇒ Object
66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/glossarist/transforms/concept_to_gloss_transform.rb', line 66 def to_turtle(concepts_or_concept = nil, figures: [], tables: [], formulas: []) if concepts_or_concept.is_a?(Array) build_document(concepts_or_concept, figures: figures, tables: tables, formulas: formulas) else target = concepts_or_concept || @concept return "" unless target gc = build_gloss_concept(target) Rdf::GlossConcept.to_turtle(gc) end end |