Module: JSON::LD::Utils

Included in:
Compact, Context, Expand, Flatten, Frame, FromRDF, ToRDF, Writer
Defined in:
lib/json/ld/utils.rb

Instance Method Summary collapse

Instance Method Details

#as_resource(id) ⇒ RDF::Resource

Represent an id as an IRI or Blank Node

Parameters:

  • id (String)

Returns:

  • (RDF::Resource)


69
70
71
72
# File 'lib/json/ld/utils.rb', line 69

def as_resource(id)
  @nodes ||= {} # Re-use BNodes
  id[0,2] == '_:' ? (@nodes[id] ||= RDF::Node.new(id[2..-1])) : RDF::URI(id)
end

#blank_node?(value) ⇒ Boolean

Is value a blank node? Value is a blank node

Parameters:

  • value (Object)

Returns:

  • (Boolean)


29
30
31
32
33
34
35
36
# File 'lib/json/ld/utils.rb', line 29

def blank_node?(value)
  case value
  when nil    then true
  when String then value[0,2] == '_:'
  else
    (node?(value) || node_reference?(value)) && value.fetch('@id', '_:')[0,2] == '_:'
  end
end

#index?(value) ⇒ Boolean

Is value annotated?

Parameters:

  • value (Object)

Returns:

  • (Boolean)


52
53
54
# File 'lib/json/ld/utils.rb', line 52

def index?(value)
  value.is_a?(Hash) && value.has_key?('@index')
end

#list?(value) ⇒ Boolean

Is value an expaned @list?

Parameters:

  • value (Object)

Returns:

  • (Boolean)


43
44
45
# File 'lib/json/ld/utils.rb', line 43

def list?(value)
  value.is_a?(Hash) && value.has_key?('@list')
end

#node?(value) ⇒ Boolean

Is value a node? A value is a node if

  • it is a Hash

  • it is not a @value, @set or @list

  • it has more than 1 key or any key is not @id

Parameters:

  • value (Object)

Returns:

  • (Boolean)


10
11
12
13
14
# File 'lib/json/ld/utils.rb', line 10

def node?(value)
  value.is_a?(Hash) &&
    (value.keys & %w(@value @list @set)).empty? &&
    !(value.keys - ['@id']).empty?
end

#node_reference?(value) ⇒ Boolean

Is value a node reference?

Parameters:

  • value (Object)

Returns:

  • (Boolean)


20
21
22
# File 'lib/json/ld/utils.rb', line 20

def node_reference?(value)
  value.is_a?(Hash) && value.keys == %w(@id)
end

#value?(value) ⇒ Boolean

Is value literal?

Parameters:

  • value (Object)

Returns:

  • (Boolean)


61
62
63
# File 'lib/json/ld/utils.rb', line 61

def value?(value)
  value.is_a?(Hash) && value.has_key?('@value')
end