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
-
#as_set ⇒ Boolean
readonly
If container mapping was defined along with @set.
-
#container_mapping ⇒ '@index', ...
Base container mapping, without @set.
-
#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.
-
#prefix ⇒ Object
writeonly
Indicate that term may be used as a prefix.
-
#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, prefix: nil, context: nil) ⇒ TermDefinition
constructor
Create a new Term Mapping with an ID.
- #inspect ⇒ Object
-
#prefix? ⇒ Boolean
This is an appropriate term to use as the prefix of a compact IRI.
-
#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, prefix: nil, context: nil) ⇒ TermDefinition
Create a new Term Mapping with an ID
89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/json/ld/context.rb', line 89 def initialize(term, id: nil, type_mapping: nil, container_mapping: nil, language_mapping: nil, reverse_property: false, nest: nil, simple: false, prefix: nil, context: nil) @term = term @id = id.to_s unless id.nil? @type_mapping = type_mapping.to_s unless type_mapping.nil? self.container_mapping = container_mapping unless container_mapping.nil? @language_mapping = language_mapping unless language_mapping.nil? @reverse_property = reverse_property @nest = nest unless nest.nil? @simple = simple @prefix = prefix unless prefix.nil? @context = context unless context.nil? end |
Instance Attribute Details
#as_set ⇒ Boolean (readonly)
If container mapping was defined along with @set
45 46 47 |
# File 'lib/json/ld/context.rb', line 45 def as_set @as_set end |
#container_mapping ⇒ '@index', ...
Base container mapping, without @set
41 42 43 |
# File 'lib/json/ld/context.rb', line 41 def container_mapping @container_mapping end |
#context ⇒ Hash{String => Object}
Term-specific context
66 67 68 |
# File 'lib/json/ld/context.rb', line 66 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.
52 53 54 |
# File 'lib/json/ld/context.rb', line 52 def language_mapping @language_mapping end |
#nest ⇒ String
Returns Term used for nest properties.
48 49 50 |
# File 'lib/json/ld/context.rb', line 48 def nest @nest end |
#prefix=(value) ⇒ Object (writeonly)
Indicate that term may be used as a prefix
62 63 64 |
# File 'lib/json/ld/context.rb', line 62 def prefix=(value) @prefix = value end |
#reverse_property ⇒ Boolean
Returns Reverse Property.
55 56 57 |
# File 'lib/json/ld/context.rb', line 55 def reverse_property @reverse_property end |
#simple ⇒ Boolean
This is a simple term definition, not an expanded term definition
59 60 61 |
# File 'lib/json/ld/context.rb', line 59 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
177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 |
# File 'lib/json/ld/context.rb', line 177 def inspect v = %w([TD) v << "id=#{@id}" v << "term=#{@term}" v << "rev" if reverse_property v << "container=#{container_mapping}" if container_mapping v << "as_set=#{as_set.inspect}" 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 << "simple=true" if @simple v << "prefix=#{@prefix.inspect}" unless @prefix.nil? v << "has-context" unless context.nil? v.join(" ") + "]" end |
#prefix? ⇒ Boolean
This is an appropriate term to use as the prefix of a compact IRI
74 |
# File 'lib/json/ld/context.rb', line 74 def prefix?; @prefix; end |
#simple? ⇒ Boolean
This is a simple term definition, not an expanded term definition
70 |
# File 'lib/json/ld/context.rb', line 70 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
125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 |
# File 'lib/json/ld/context.rb', line 125 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 simple? 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 cm = [container_mapping, ('@set' if as_set)].compact cm = cm.first if cm.length == 1 defn['@container'] = cm unless cm.empty? # Language set as false to be output as null defn['@language'] = (@language_mapping ? @language_mapping : nil) unless @language_mapping.nil? defn['@context'] = @context if @context defn['@nest'] = @nest if @nest defn['@prefix'] = @prefix unless @prefix.nil? || (context.processingMode || 'json-ld-1.0') == 'json-ld-1.0' defn end end |
#to_rb ⇒ String
Turn this into a source for a new instantiation FIXME: context serialization
164 165 166 167 168 169 170 171 172 173 174 175 |
# File 'lib/json/ld/context.rb', line 164 def to_rb defn = [%(TermDefinition.new\(#{term.inspect})] %w(id type_mapping container_mapping language_mapping reverse_property nest simple prefix context).each do |acc| v = instance_variable_get("@#{acc}".to_sym) v = v.to_s if v.is_a?(RDF::Term) if acc == 'container_mapping' && as_set v = v ? [v, '@set'] : '@set' end defn << "#{acc}: #{v.inspect}" if v end defn.join(', ') + ")" end |