Class: JSON::LD::Context::TermDefinition
- Inherits:
-
Object
- Object
- JSON::LD::Context::TermDefinition
- Defined in:
- lib/json/ld/context.rb
Overview
Term Definitions specify how properties and values have to be interpreted as well as the current vocabulary mapping and the default language
Instance Attribute Summary collapse
-
#container_mapping ⇒ '@index', ...
Container mapping.
-
#context ⇒ Hash{String => Object}
Term-specific context.
-
#id ⇒ RDF::URI
IRI map.
-
#language_mapping ⇒ String
Language mapping of term, ‘false` is used if there is explicitly no language mapping for this term.
-
#nest ⇒ String
Term used for nest properties.
-
#reverse_property ⇒ Boolean
Reverse Property.
-
#simple ⇒ Boolean
This is a simple term definition, not an expanded term definition.
-
#term ⇒ String
Term name.
-
#type_mapping ⇒ String
Type mapping.
Instance Method Summary collapse
-
#initialize(term, id: nil, type_mapping: nil, container_mapping: nil, language_mapping: nil, reverse_property: false, nest: nil, simple: false, context: nil) ⇒ TermDefinition
constructor
Create a new Term Mapping with an ID.
- #inspect ⇒ Object
-
#simple? ⇒ Boolean
This is a simple term definition, not an expanded term definition.
-
#to_context_definition(context) ⇒ String, Hash{String => Array[String], String}
Output Hash or String definition for this definition considering @language and @vocab.
-
#to_rb ⇒ String
Turn this into a source for a new instantiation FIXME: context serialization.
Constructor Details
#initialize(term, id: nil, type_mapping: nil, container_mapping: nil, language_mapping: nil, reverse_property: false, nest: nil, simple: false, context: nil) ⇒ TermDefinition
Create a new Term Mapping with an ID
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/json/ld/context.rb', line 75 def initialize(term, id: nil, type_mapping: nil, container_mapping: nil, language_mapping: nil, reverse_property: false, nest: nil, simple: false, context: nil) @term = term @id = id.to_s if id @type_mapping = type_mapping.to_s if type_mapping @container_mapping = container_mapping if container_mapping @language_mapping = language_mapping if language_mapping @reverse_property = reverse_property if reverse_property @nest = nest if nest @simple = simple if simple @context = context if context end |
Instance Attribute Details
#container_mapping ⇒ '@index', ...
Returns Container mapping.
40 41 42 |
# File 'lib/json/ld/context.rb', line 40 def container_mapping @container_mapping end |
#context ⇒ Hash{String => Object}
Term-specific context
58 59 60 |
# File 'lib/json/ld/context.rb', line 58 def context @context end |
#id ⇒ RDF::URI
Returns IRI map.
31 32 33 |
# File 'lib/json/ld/context.rb', line 31 def id @id end |
#language_mapping ⇒ String
Language mapping of term, ‘false` is used if there is explicitly no language mapping for this term.
47 48 49 |
# File 'lib/json/ld/context.rb', line 47 def language_mapping @language_mapping end |
#nest ⇒ String
Returns Term used for nest properties.
43 44 45 |
# File 'lib/json/ld/context.rb', line 43 def nest @nest end |
#reverse_property ⇒ Boolean
Returns Reverse Property.
50 51 52 |
# File 'lib/json/ld/context.rb', line 50 def reverse_property @reverse_property end |
#simple ⇒ Boolean
This is a simple term definition, not an expanded term definition
54 55 56 |
# File 'lib/json/ld/context.rb', line 54 def simple @simple end |
#term ⇒ String
Returns term name.
34 35 36 |
# File 'lib/json/ld/context.rb', line 34 def term @term end |
#type_mapping ⇒ String
Returns Type mapping.
37 38 39 |
# File 'lib/json/ld/context.rb', line 37 def type_mapping @type_mapping end |
Instance Method Details
#inspect ⇒ Object
151 152 153 154 155 156 157 158 159 160 161 162 |
# File 'lib/json/ld/context.rb', line 151 def inspect v = %w([TD) v << "id=#{@id}" v << "term=#{@term}" v << "rev" if reverse_property v << "container=#{container_mapping}" if container_mapping v << "lang=#{language_mapping.inspect}" unless language_mapping.nil? v << "type=#{type_mapping}" unless type_mapping.nil? v << "nest=#{nest.inspect}" unless nest.nil? v << "has-context" unless context.nil? v.join(" ") + "]" end |
#simple? ⇒ Boolean
This is a simple term definition, not an expanded term definition
62 |
# File 'lib/json/ld/context.rb', line 62 def simple?; simple; end |
#to_context_definition(context) ⇒ String, Hash{String => Array[String], String}
Output Hash or String definition for this definition considering @language and @vocab
100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 |
# File 'lib/json/ld/context.rb', line 100 def to_context_definition(context) cid = if context.vocab && id.start_with?(context.vocab) # Nothing to return unless it's the same as the vocab id == context.vocab ? context.vocab : id.to_s[context.vocab.length..-1] else # Find a term to act as a prefix iri, prefix = context.iri_to_term.detect {|i,p| id.to_s.start_with?(i.to_s)} iri && iri != id ? "#{prefix}:#{id.to_s[iri.length..-1]}" : id end if language_mapping.nil? && container_mapping.nil? && type_mapping.nil? && reverse_property.nil? && self.context.nil? && nest.nil? cid.to_s unless cid == term && context.vocab else defn = {} defn[reverse_property ? '@reverse' : '@id'] = cid.to_s unless cid == term && !reverse_property if type_mapping defn['@type'] = if KEYWORDS.include?(type_mapping) type_mapping else context.compact_iri(type_mapping, vocab: true) end end defn['@container'] = container_mapping if container_mapping # Language set as false to be output as null defn['@language'] = (language_mapping ? language_mapping : nil) unless language_mapping.nil? defn['@context'] = self.context unless self.context.nil? defn['@nest'] = selfnest unless self.nest.nil? defn end end |
#to_rb ⇒ String
Turn this into a source for a new instantiation FIXME: context serialization
141 142 143 144 145 146 147 148 149 |
# File 'lib/json/ld/context.rb', line 141 def to_rb defn = [%(TermDefinition.new\(#{term.inspect})] %w(id type_mapping container_mapping language_mapping reverse_property nest simple context).each do |acc| v = instance_variable_get("@#{acc}".to_sym) v = v.to_s if v.is_a?(RDF::Term) defn << "#{acc}: #{v.inspect}" if v end defn.join(', ') + ")" end |