Class: Glossarist::Transforms::ConceptToGlossTransform

Inherits:
Object
  • Object
show all
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 =
{
  "broader" => "#{SKOS}broader",
  "narrower" => "#{SKOS}narrower",
  "broader_generic" => "#{ISO}broaderGeneric",
  "narrower_generic" => "#{ISO}narrowerGeneric",
  "broader_partitive" => "#{ISO}broaderPartitive",
  "narrower_partitive" => "#{ISO}narrowerPartitive",
  "broader_instantial" => "#{ISO}broaderInstantial",
  "narrower_instantial" => "#{ISO}narrowerInstantial",
  "equivalent" => "#{SKOS}exactMatch",
  "close_match" => "#{SKOS}closeMatch",
  "broad_match" => "#{SKOS}broadMatch",
  "narrow_match" => "#{SKOS}narrowMatch",
  "related_match" => "#{SKOS}relatedMatch",
  "see" => "#{SKOS}related",
  "deprecates" => "#{GLOSS}deprecates",
  "supersedes" => "#{GLOSS}supersedes",
  "superseded_by" => "#{GLOSS}supersededBy",
  "compare" => "#{GLOSS}compares",
  "contrast" => "#{GLOSS}contrasts",
  "sequentially_related_concept" => "#{GLOSS}sequentiallyRelated",
  "spatially_related_concept" => "#{GLOSS}spatiallyRelated",
  "temporally_related_concept" => "#{GLOSS}temporallyRelated",
  "homograph" => "#{GLOSS}hasHomograph",
  "false_friend" => "#{GLOSS}hasFalseFriend",
  "related_concept_broader" => "#{GLOSS}relatedConceptBroader",
  "related_concept_narrower" => "#{GLOSS}relatedConceptNarrower",
  "abbreviated_form_for" => "#{GLOSS}abbreviatedFormFor",
  "short_form_for" => "#{GLOSS}shortFormFor",
}.freeze
DATE_TYPE_MAP =
{
  "accepted" => "#{GLOSS}status/accepted",
  "amended" => "#{GLOSS}status/amended",
  "retired" => "#{GLOSS}status/retired",
}.freeze

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(managed_concept, options = {}) ⇒ ConceptToGlossTransform

Returns a new instance of ConceptToGlossTransform.



63
64
65
66
# File 'lib/glossarist/transforms/concept_to_gloss_transform.rb', line 63

def initialize(managed_concept, options = {})
  @concept = managed_concept
  @options = options
end

Class Method Details

.transform(managed_concept, options = {}) ⇒ Object



55
56
57
# File 'lib/glossarist/transforms/concept_to_gloss_transform.rb', line 55

def self.transform(managed_concept, options = {})
  new(managed_concept, options).build
end

.transform_document(concepts, options = {}) ⇒ Object



59
60
61
# File 'lib/glossarist/transforms/concept_to_gloss_transform.rb', line 59

def self.transform_document(concepts, options = {})
  new(nil, options).build_document(concepts)
end

Instance Method Details

#buildObject



68
69
70
# File 'lib/glossarist/transforms/concept_to_gloss_transform.rb', line 68

def build
  build_gloss_concept(concept)
end

#build_document(concepts) ⇒ Object



72
73
74
75
76
# File 'lib/glossarist/transforms/concept_to_gloss_transform.rb', line 72

def build_document(concepts)
  gloss_concepts = concepts.map { |c| build_gloss_concept(c) }
  doc = Rdf::GlossDocument.new(concepts: gloss_concepts)
  Rdf::GlossDocument.to_turtle(doc)
end

#to_jsonl_lineObject



104
105
106
107
108
109
# File 'lib/glossarist/transforms/concept_to_gloss_transform.rb', line 104

def to_jsonl_line
  return "" unless @concept

  gc = build_gloss_concept(@concept)
  Rdf::GlossConcept.to_jsonld(gc)
end

#to_jsonld(concepts_or_concept = nil) ⇒ Object



90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'lib/glossarist/transforms/concept_to_gloss_transform.rb', line 90

def to_jsonld(concepts_or_concept = nil)
  if concepts_or_concept.is_a?(Array)
    gloss_concepts = concepts_or_concept.map { |c| build_gloss_concept(c) }
    doc = Rdf::GlossDocument.new(concepts: gloss_concepts)
    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) ⇒ Object



78
79
80
81
82
83
84
85
86
87
88
# File 'lib/glossarist/transforms/concept_to_gloss_transform.rb', line 78

def to_turtle(concepts_or_concept = nil)
  if concepts_or_concept.is_a?(Array)
    build_document(concepts_or_concept)
  else
    target = concepts_or_concept || @concept
    return "" unless target

    gc = build_gloss_concept(target)
    Rdf::GlossConcept.to_turtle(gc)
  end
end