Module: RoadForest::AffordanceClient

Included in:
TypeHandlers::RDFaWriter::AffordanceDecorator, TypeHandlers::RDFaWriter::AffordanceDecorator
Defined in:
lib/roadforest/type-handlers/rdfa-writer/environment-decorator.rb

Constant Summary collapse

Af =
Graph::Af

Instance Method Summary collapse

Instance Method Details

#affordance_node?(node, graph) ⇒ Boolean

Returns:

  • (Boolean)


59
60
61
62
63
64
65
66
# File 'lib/roadforest/type-handlers/rdfa-writer/environment-decorator.rb', line 59

def affordance_node?(node, graph)
  query = ::RDF::Query.new do
    pattern [node, ::RDF.type, :type]
  end
  !!( query.execute(graph).find do |solution|
    all_affordances.include?(solution[:type])
  end)
end

#affordance_present(aff) ⇒ Object



25
26
27
28
29
# File 'lib/roadforest/type-handlers/rdfa-writer/environment-decorator.rb', line 25

def affordance_present(aff)
  ::RDF::Query.new do
    pattern [:any, ::RDF.type, aff ]
  end
end

#affordance_type_in_graph?(node, type, graph) ⇒ Boolean

Returns:

  • (Boolean)


68
69
70
71
72
73
74
75
76
# File 'lib/roadforest/type-handlers/rdfa-writer/environment-decorator.rb', line 68

def affordance_type_in_graph?(node, type, graph)
  #puts "\n#{__FILE__}:#{__LINE__} => \n#{graph.dump(:nquads)}"
  query_matches(has_affordance(node, type).tap{|value|
    #puts "#{__FILE__}:#{__LINE__} => #{[value.patterns,
    #value.execute(graph)].inspect}"
  }, graph).tap{|value|
    #puts "#{__FILE__}:#{__LINE__} => #{value.inspect}"
  }
end

#affordances_in_graph?(graph) ⇒ Boolean

Returns:

  • (Boolean)


52
53
54
55
56
57
# File 'lib/roadforest/type-handlers/rdfa-writer/environment-decorator.rb', line 52

def affordances_in_graph?(graph)
  all_affordances.each do |aff|
    return true if query_matches(affordance_present(aff), graph)
  end
  return false
end

#all_affordancesObject



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/roadforest/type-handlers/rdfa-writer/environment-decorator.rb', line 7

def all_affordances
  @all_affordances ||=
    [
      Af.Affordance,
      Af.Null,
      Af.Safe,
      Af.Idempotent,
      Af.Unsafe,
      Af.Navigate,
      Af.Embed,
      Af.Metadata,
      Af.Update,
      Af.Remove,
      Af.Create,
      Af.Mutate,
  ]
end

#has_affordance(node, type) ⇒ Object



31
32
33
34
35
36
37
38
39
# File 'lib/roadforest/type-handlers/rdfa-writer/environment-decorator.rb', line 31

def has_affordance(node, type)
  if type.is_a? Symbol
    type = Af[type]
  end
  ::RDF::Query.new do
    pattern([:node, ::RDF.type, type, nil])
    pattern([:node, Af.target, node, nil])
  end
end

#parameterized_navigation_affordance_in_graph?(node, graph) ⇒ Boolean

Returns:

  • (Boolean)


78
79
80
81
# File 'lib/roadforest/type-handlers/rdfa-writer/environment-decorator.rb', line 78

def parameterized_navigation_affordance_in_graph?(node, graph)
  return false #to be implemented
  query_matches(has_affordance(node, :Navigate) + payload_has_param(node), graph)
end

#payload_has_param(node) ⇒ Object



41
42
43
44
45
46
# File 'lib/roadforest/type-handlers/rdfa-writer/environment-decorator.rb', line 41

def payload_has_param(node)
  ::RDF::Query.new do
    pattern([:node, Af.payload, :context, nil])
    pattern([ :param, ::RDF.type, Af.Parameter, :context ])
  end
end

#query_matches(query, graph) ⇒ Object



48
49
50
# File 'lib/roadforest/type-handlers/rdfa-writer/environment-decorator.rb', line 48

def query_matches(query, graph)
  return (not graph.first(query).nil?)
end