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, base = nil) ⇒ RDF::Resource

Represent an id as an IRI or Blank Node

Parameters:

  • id (String)
  • base (RDF::URI) (defaults to: nil)

    (nil)

Returns:

  • (RDF::Resource)


70
71
72
73
74
75
76
77
78
79
# File 'lib/json/ld/utils.rb', line 70

def as_resource(id, base = nil)
  @nodes ||= {} # Re-use BNodes
  if id[0,2] == '_:'
    (@nodes[id] ||= RDF::Node.new(id[2..-1]))
  elsif base
    base.join(id)
  else
    RDF::URI(id)
  end
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