case_model 0.0.1 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/README.md +0 -11
 - data/case_model.gemspec +6 -1
 - data/lib/models/action.rb +35 -33
 - data/lib/models/answer.rb +23 -19
 - data/lib/models/application.rb +54 -41
 - data/lib/models/capability.rb +43 -15
 - data/lib/models/deployment_plan.rb +36 -29
 - data/lib/models/device.rb +24 -18
 - data/lib/models/ecosystem_host.rb +5 -3
 - data/lib/models/http_request.rb +20 -18
 - data/lib/models/installation.rb +46 -0
 - data/lib/models/installation_used_device.rb +18 -0
 - data/lib/models/location.rb +13 -11
 - data/lib/models/number.rb +27 -0
 - data/lib/models/ontology.rb +54 -33
 - data/lib/models/property.rb +46 -0
 - data/lib/models/question.rb +42 -37
 - data/lib/models/question_reply_type.rb +15 -11
 - data/lib/models/requirement.rb +16 -10
 - data/lib/models/scenario.rb +30 -0
 - data/lib/models/selection.rb +25 -23
 - data/lib/models/state_change.rb +15 -13
 - data/lib/models/temperature.rb +13 -11
 - data/lib/ontology/http_vocabulary.rb +14 -12
 - data/lib/ontology/local_vocabulary.rb +24 -18
 - data/lib/ontology/math_vocabulary.rb +13 -11
 - data/lib/ontology/rdf_vocabulary.rb +10 -8
 - data/lib/ontology/state_vocabulary.rb +8 -6
 - data/lib/services/application_by_capability_finder.rb +29 -27
 - data/lib/services/eye_serializer.rb +17 -15
 - data/lib/services/helper.rb +12 -0
 - data/lib/services/node_builder.rb +26 -24
 - data/lib/services/node_query.rb +46 -40
 - data/lib/services/reasoner.rb +60 -58
 - data/spec/spec_helper.rb +2 -0
 - metadata +64 -2
 
| 
         @@ -0,0 +1,27 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Model
         
     | 
| 
      
 2 
     | 
    
         
            +
              class Number
         
     | 
| 
      
 3 
     | 
    
         
            +
                attr_reader :query
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
                include Answer
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                def initialize(node, repository)
         
     | 
| 
      
 8 
     | 
    
         
            +
                  @query = NodeQuery.new(node, repository)
         
     | 
| 
      
 9 
     | 
    
         
            +
                end
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                def value
         
     | 
| 
      
 12 
     | 
    
         
            +
                  query.value(LV.value)
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                def value=(value)
         
     | 
| 
      
 16 
     | 
    
         
            +
                  query.set_value(LV.value, value)
         
     | 
| 
      
 17 
     | 
    
         
            +
                end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                def min_value
         
     | 
| 
      
 20 
     | 
    
         
            +
                  question.query.value(LV.minValue)
         
     | 
| 
      
 21 
     | 
    
         
            +
                end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                def max_value
         
     | 
| 
      
 24 
     | 
    
         
            +
                  question.query.value(LV.maxValue)
         
     | 
| 
      
 25 
     | 
    
         
            +
                end
         
     | 
| 
      
 26 
     | 
    
         
            +
              end
         
     | 
| 
      
 27 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/models/ontology.rb
    CHANGED
    
    | 
         @@ -3,50 +3,71 @@ require 'rdf/vocab' 
     | 
|
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            require_relative '../services/repository_proxy'
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
               
     | 
| 
      
 6 
     | 
    
         
            +
            module Model
         
     | 
| 
      
 7 
     | 
    
         
            +
              class Ontology
         
     | 
| 
      
 8 
     | 
    
         
            +
                attr_reader :repository
         
     | 
| 
       8 
9 
     | 
    
         | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
      
 10 
     | 
    
         
            +
                include RepositoryProxy
         
     | 
| 
       10 
11 
     | 
    
         | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
      
 12 
     | 
    
         
            +
                def self.from_n3(n3_input)
         
     | 
| 
      
 13 
     | 
    
         
            +
                  Ontology.new(RDF::Repository.new, n3_input)
         
     | 
| 
      
 14 
     | 
    
         
            +
                end
         
     | 
| 
       14 
15 
     | 
    
         | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
      
 16 
     | 
    
         
            +
                def initialize(repository, n3_input = nil)
         
     | 
| 
      
 17 
     | 
    
         
            +
                  @repository = repository
         
     | 
| 
      
 18 
     | 
    
         
            +
                  load_and_process_n3 n3_input if n3_input
         
     | 
| 
      
 19 
     | 
    
         
            +
                  # initialize_state
         
     | 
| 
      
 20 
     | 
    
         
            +
                end
         
     | 
| 
       20 
21 
     | 
    
         | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
      
 22 
     | 
    
         
            +
                def load_and_process_n3(n3_input)
         
     | 
| 
      
 23 
     | 
    
         
            +
                  (@n3_inputs ||= []) << n3_input
         
     | 
| 
      
 24 
     | 
    
         
            +
                  refresh
         
     | 
| 
      
 25 
     | 
    
         
            +
                end
         
     | 
| 
       25 
26 
     | 
    
         | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
      
 27 
     | 
    
         
            +
                def applications
         
     | 
| 
      
 28 
     | 
    
         
            +
                  query([nil, RDF.type, LV.Application]).
         
     | 
| 
      
 29 
     | 
    
         
            +
                    map(&:subject).uniq.map do |subject|
         
     | 
| 
      
 30 
     | 
    
         
            +
                    Application.new(subject, self)
         
     | 
| 
      
 31 
     | 
    
         
            +
                  end
         
     | 
| 
       29 
32 
     | 
    
         
             
                end
         
     | 
| 
       30 
     | 
    
         
            -
              end
         
     | 
| 
       31 
33 
     | 
    
         | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
      
 34 
     | 
    
         
            +
                def installations
         
     | 
| 
      
 35 
     | 
    
         
            +
                  query([nil, RDF.type, LV.Installation]).map do |statement|
         
     | 
| 
      
 36 
     | 
    
         
            +
                    Installation.new(statement.subject, self)
         
     | 
| 
      
 37 
     | 
    
         
            +
                  end
         
     | 
| 
       35 
38 
     | 
    
         
             
                end
         
     | 
| 
       36 
     | 
    
         
            -
              end
         
     | 
| 
       37 
39 
     | 
    
         | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
      
 40 
     | 
    
         
            +
                def devices
         
     | 
| 
      
 41 
     | 
    
         
            +
                  query([nil, RDF.type, LV.Device]).map do |statement|
         
     | 
| 
      
 42 
     | 
    
         
            +
                    Device.new(statement.subject, self)
         
     | 
| 
      
 43 
     | 
    
         
            +
                  end
         
     | 
| 
      
 44 
     | 
    
         
            +
                end
         
     | 
| 
       41 
45 
     | 
    
         | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
      
 46 
     | 
    
         
            +
                def scenarios
         
     | 
| 
      
 47 
     | 
    
         
            +
                  query([nil, RDF.type, LV.Scenario]).map do |statement|
         
     | 
| 
      
 48 
     | 
    
         
            +
                    Scenario.new(statement.subject, self)
         
     | 
| 
      
 49 
     | 
    
         
            +
                  end
         
     | 
| 
      
 50 
     | 
    
         
            +
                end
         
     | 
| 
       45 
51 
     | 
    
         | 
| 
       46 
     | 
    
         
            -
             
     | 
| 
      
 52 
     | 
    
         
            +
                def properties
         
     | 
| 
      
 53 
     | 
    
         
            +
                  query([nil, RDF.type, LV.Property]).map do |statement|
         
     | 
| 
      
 54 
     | 
    
         
            +
                    Property.new(statement.subject, self)
         
     | 
| 
      
 55 
     | 
    
         
            +
                  end
         
     | 
| 
      
 56 
     | 
    
         
            +
                end
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
                def device_with_description(description)
         
     | 
| 
      
 59 
     | 
    
         
            +
                  devices.find { |d| d.description == description }
         
     | 
| 
      
 60 
     | 
    
         
            +
                end
         
     | 
| 
       47 
61 
     | 
    
         | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
     | 
    
         
            -
                 
     | 
| 
      
 62 
     | 
    
         
            +
                def refresh
         
     | 
| 
      
 63 
     | 
    
         
            +
                  @n3_inputs.each { |input| Reasoner.new(self).load_and_process_n3(input) }
         
     | 
| 
      
 64 
     | 
    
         
            +
                end
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
                private
         
     | 
| 
      
 67 
     | 
    
         
            +
             
     | 
| 
      
 68 
     | 
    
         
            +
                ## load an empty State formula in case there are some StateChange statements
         
     | 
| 
      
 69 
     | 
    
         
            +
                def initialize_state
         
     | 
| 
      
 70 
     | 
    
         
            +
                  load_and_process_n3 '{ <http://example.com/x> <http://example.com/y> <http://example.com/z>.} a <http://purl.org/restdesc/states#State>.'
         
     | 
| 
      
 71 
     | 
    
         
            +
                end
         
     | 
| 
       51 
72 
     | 
    
         
             
              end
         
     | 
| 
       52 
73 
     | 
    
         
             
            end
         
     | 
| 
         @@ -0,0 +1,46 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Model
         
     | 
| 
      
 2 
     | 
    
         
            +
              class Property
         
     | 
| 
      
 3 
     | 
    
         
            +
                attr_reader :query
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
                def initialize(node, repository)
         
     | 
| 
      
 6 
     | 
    
         
            +
                  @query = NodeQuery.new(node, repository)
         
     | 
| 
      
 7 
     | 
    
         
            +
                end
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                def uri
         
     | 
| 
      
 10 
     | 
    
         
            +
                  if query.value_exists?(LV.type)
         
     | 
| 
      
 11 
     | 
    
         
            +
                    query.value(LV.type).to_s
         
     | 
| 
      
 12 
     | 
    
         
            +
                  else
         
     | 
| 
      
 13 
     | 
    
         
            +
                    query.node_uri
         
     | 
| 
      
 14 
     | 
    
         
            +
                  end
         
     | 
| 
      
 15 
     | 
    
         
            +
                end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                def description
         
     | 
| 
      
 18 
     | 
    
         
            +
                  query.value(LV.description)
         
     | 
| 
      
 19 
     | 
    
         
            +
                end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                def unit
         
     | 
| 
      
 22 
     | 
    
         
            +
                  val = query.value(LV.unit)
         
     | 
| 
      
 23 
     | 
    
         
            +
                  val.to_s if val
         
     | 
| 
      
 24 
     | 
    
         
            +
                end
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                def value
         
     | 
| 
      
 27 
     | 
    
         
            +
                  val = query.value(LV.value)
         
     | 
| 
      
 28 
     | 
    
         
            +
                  val.to_s if val
         
     | 
| 
      
 29 
     | 
    
         
            +
                end
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
                def maximum
         
     | 
| 
      
 32 
     | 
    
         
            +
                  val = query.value(LV.maximum)
         
     | 
| 
      
 33 
     | 
    
         
            +
                  val.to_s if val
         
     | 
| 
      
 34 
     | 
    
         
            +
                end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
                def minimum
         
     | 
| 
      
 37 
     | 
    
         
            +
                  val = query.value(LV.minimum)
         
     | 
| 
      
 38 
     | 
    
         
            +
                  val.to_s if val
         
     | 
| 
      
 39 
     | 
    
         
            +
                end
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
                def device
         
     | 
| 
      
 42 
     | 
    
         
            +
                  device_node = query.value(LV.device)
         
     | 
| 
      
 43 
     | 
    
         
            +
                  Device.new device_node, query.repository if device_node
         
     | 
| 
      
 44 
     | 
    
         
            +
                end
         
     | 
| 
      
 45 
     | 
    
         
            +
              end
         
     | 
| 
      
 46 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/models/question.rb
    CHANGED
    
    | 
         @@ -1,51 +1,56 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
       2 
     | 
    
         
            -
               
     | 
| 
      
 1 
     | 
    
         
            +
            module Model
         
     | 
| 
      
 2 
     | 
    
         
            +
              class Question
         
     | 
| 
      
 3 
     | 
    
         
            +
                attr_reader :query
         
     | 
| 
       3 
4 
     | 
    
         | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
      
 5 
     | 
    
         
            +
                def initialize(node, repository)
         
     | 
| 
      
 6 
     | 
    
         
            +
                  @query = NodeQuery.new(node, repository)
         
     | 
| 
      
 7 
     | 
    
         
            +
                end
         
     | 
| 
       7 
8 
     | 
    
         | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
      
 9 
     | 
    
         
            +
                def uri
         
     | 
| 
      
 10 
     | 
    
         
            +
                  query.node_uri
         
     | 
| 
      
 11 
     | 
    
         
            +
                end
         
     | 
| 
       11 
12 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
      
 13 
     | 
    
         
            +
                def text
         
     | 
| 
      
 14 
     | 
    
         
            +
                  query.value(QV.text).to_s
         
     | 
| 
      
 15 
     | 
    
         
            +
                end
         
     | 
| 
       15 
16 
     | 
    
         | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
      
 17 
     | 
    
         
            +
                def reply_type
         
     | 
| 
      
 18 
     | 
    
         
            +
                  QuestionReplyType.to_sym(query)
         
     | 
| 
      
 19 
     | 
    
         
            +
                end
         
     | 
| 
       19 
20 
     | 
    
         | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
                 
     | 
| 
       23 
     | 
    
         
            -
                return nil if node.nil?
         
     | 
| 
      
 21 
     | 
    
         
            +
                def has_answer?
         
     | 
| 
      
 22 
     | 
    
         
            +
                  query.value_exists?(QV.has_answer)
         
     | 
| 
      
 23 
     | 
    
         
            +
                end
         
     | 
| 
       24 
24 
     | 
    
         | 
| 
       25 
     | 
    
         
            -
                 
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
      
 25 
     | 
    
         
            +
                # returns an existing one or nil if there is no
         
     | 
| 
      
 26 
     | 
    
         
            +
                def answer
         
     | 
| 
      
 27 
     | 
    
         
            +
                  node = query.value(QV.has_answer)
         
     | 
| 
      
 28 
     | 
    
         
            +
                  return nil if node.nil?
         
     | 
| 
       27 
29 
     | 
    
         | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
                answer || create_answer
         
     | 
| 
       31 
     | 
    
         
            -
              end
         
     | 
| 
      
 30 
     | 
    
         
            +
                  Answer.create(reply_type, node, query.repository)
         
     | 
| 
      
 31 
     | 
    
         
            +
                end
         
     | 
| 
       32 
32 
     | 
    
         | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
      
 33 
     | 
    
         
            +
                # creates a new answer or returns an existing one
         
     | 
| 
      
 34 
     | 
    
         
            +
                def answer!
         
     | 
| 
      
 35 
     | 
    
         
            +
                  answer || create_answer
         
     | 
| 
      
 36 
     | 
    
         
            +
                end
         
     | 
| 
       34 
37 
     | 
    
         | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
      
 38 
     | 
    
         
            +
                private
         
     | 
| 
       36 
39 
     | 
    
         | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
                node = generate_answer_node
         
     | 
| 
       39 
     | 
    
         
            -
                repository << [ node, RDF.type, QV.answer_type ]
         
     | 
| 
       40 
     | 
    
         
            -
                answer_query = NodeQuery.new(node, repository)
         
     | 
| 
       41 
     | 
    
         
            -
                answer_query.set_value(QV.answers, query.node)
         
     | 
| 
       42 
     | 
    
         
            -
                query.set_value(QV.has_answer, node)
         
     | 
| 
      
 40 
     | 
    
         
            +
                def repository; query.repository; end
         
     | 
| 
       43 
41 
     | 
    
         | 
| 
       44 
     | 
    
         
            -
                 
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
      
 42 
     | 
    
         
            +
                def create_answer
         
     | 
| 
      
 43 
     | 
    
         
            +
                  node = generate_answer_node
         
     | 
| 
      
 44 
     | 
    
         
            +
                  repository << [ node, RDF.type, QV.answer_type ]
         
     | 
| 
      
 45 
     | 
    
         
            +
                  repository << [ node, QV.answers, query.node ]
         
     | 
| 
      
 46 
     | 
    
         
            +
                  repository << [ query.node, QV.has_answer, node ]
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
                  answer
         
     | 
| 
      
 49 
     | 
    
         
            +
                end
         
     | 
| 
       46 
50 
     | 
    
         | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
      
 51 
     | 
    
         
            +
                def generate_answer_node
         
     | 
| 
      
 52 
     | 
    
         
            +
                  question_uri_hash = query.node.to_s.hash.to_s
         
     | 
| 
      
 53 
     | 
    
         
            +
                  ('answer' + question_uri_hash).to_sym
         
     | 
| 
      
 54 
     | 
    
         
            +
                end
         
     | 
| 
       50 
55 
     | 
    
         
             
              end
         
     | 
| 
       51 
56 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,14 +1,18 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
       2 
     | 
    
         
            -
               
     | 
| 
       3 
     | 
    
         
            -
                 
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
                   
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
                   
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
                   
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
                   
     | 
| 
      
 1 
     | 
    
         
            +
            module Model
         
     | 
| 
      
 2 
     | 
    
         
            +
              class QuestionReplyType
         
     | 
| 
      
 3 
     | 
    
         
            +
                def self.to_sym(query)
         
     | 
| 
      
 4 
     | 
    
         
            +
                  case query.value(QV.replyType)
         
     | 
| 
      
 5 
     | 
    
         
            +
                  when QV.Number
         
     | 
| 
      
 6 
     | 
    
         
            +
                    :number
         
     | 
| 
      
 7 
     | 
    
         
            +
                  when QV.Location
         
     | 
| 
      
 8 
     | 
    
         
            +
                    :location
         
     | 
| 
      
 9 
     | 
    
         
            +
                  when QV.Temperature
         
     | 
| 
      
 10 
     | 
    
         
            +
                    :temperature
         
     | 
| 
      
 11 
     | 
    
         
            +
                  when QV.Select
         
     | 
| 
      
 12 
     | 
    
         
            +
                    :select
         
     | 
| 
      
 13 
     | 
    
         
            +
                  else
         
     | 
| 
      
 14 
     | 
    
         
            +
                    nil
         
     | 
| 
      
 15 
     | 
    
         
            +
                  end
         
     | 
| 
       12 
16 
     | 
    
         
             
                end
         
     | 
| 
       13 
17 
     | 
    
         
             
              end
         
     | 
| 
       14 
18 
     | 
    
         
             
            end
         
     | 
    
        data/lib/models/requirement.rb
    CHANGED
    
    | 
         @@ -1,17 +1,23 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require_relative '../services/question_references'
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
               
     | 
| 
      
 3 
     | 
    
         
            +
            module Model
         
     | 
| 
      
 4 
     | 
    
         
            +
              class Requirement
         
     | 
| 
      
 5 
     | 
    
         
            +
                attr_reader :query
         
     | 
| 
       5 
6 
     | 
    
         | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
      
 7 
     | 
    
         
            +
                def initialize(node, repository)
         
     | 
| 
      
 8 
     | 
    
         
            +
                  @query = NodeQuery.new(node, repository)
         
     | 
| 
      
 9 
     | 
    
         
            +
                end
         
     | 
| 
       9 
10 
     | 
    
         | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
      
 11 
     | 
    
         
            +
                def uri
         
     | 
| 
      
 12 
     | 
    
         
            +
                  query.node_uri
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                def description
         
     | 
| 
      
 16 
     | 
    
         
            +
                  query.value(LV.description)
         
     | 
| 
      
 17 
     | 
    
         
            +
                end
         
     | 
| 
       13 
18 
     | 
    
         | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
      
 19 
     | 
    
         
            +
                def satisfied?
         
     | 
| 
      
 20 
     | 
    
         
            +
                  query.value(LV.satisfied) == true
         
     | 
| 
      
 21 
     | 
    
         
            +
                end
         
     | 
| 
       16 
22 
     | 
    
         
             
              end
         
     | 
| 
       17 
23 
     | 
    
         
             
            end
         
     | 
| 
         @@ -0,0 +1,30 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Model
         
     | 
| 
      
 2 
     | 
    
         
            +
              class Scenario
         
     | 
| 
      
 3 
     | 
    
         
            +
                attr_reader :query
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
                def initialize(node, repository)
         
     | 
| 
      
 6 
     | 
    
         
            +
                  @query = NodeQuery.new(node, repository)
         
     | 
| 
      
 7 
     | 
    
         
            +
                end
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                def description
         
     | 
| 
      
 10 
     | 
    
         
            +
                  query.value(LV.description)
         
     | 
| 
      
 11 
     | 
    
         
            +
                end
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                def value(key)
         
     | 
| 
      
 14 
     | 
    
         
            +
                  camelized_key = camelize(key.to_s)
         
     | 
| 
      
 15 
     | 
    
         
            +
                  query.value(LV.uri_for(camelized_key)).to_s
         
     | 
| 
      
 16 
     | 
    
         
            +
                end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                private
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                def camelize(str)
         
     | 
| 
      
 21 
     | 
    
         
            +
                  str.split('_').each_with_index.map do |part, i|
         
     | 
| 
      
 22 
     | 
    
         
            +
                    if i == 0
         
     | 
| 
      
 23 
     | 
    
         
            +
                      part
         
     | 
| 
      
 24 
     | 
    
         
            +
                    else
         
     | 
| 
      
 25 
     | 
    
         
            +
                      part.capitalize
         
     | 
| 
      
 26 
     | 
    
         
            +
                    end
         
     | 
| 
      
 27 
     | 
    
         
            +
                  end.join
         
     | 
| 
      
 28 
     | 
    
         
            +
                end
         
     | 
| 
      
 29 
     | 
    
         
            +
              end
         
     | 
| 
      
 30 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/models/selection.rb
    CHANGED
    
    | 
         @@ -1,32 +1,34 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
       2 
     | 
    
         
            -
               
     | 
| 
      
 1 
     | 
    
         
            +
            module Model
         
     | 
| 
      
 2 
     | 
    
         
            +
              class Selection
         
     | 
| 
      
 3 
     | 
    
         
            +
                attr_reader :query
         
     | 
| 
       3 
4 
     | 
    
         | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
      
 5 
     | 
    
         
            +
                include Answer
         
     | 
| 
       5 
6 
     | 
    
         | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
      
 7 
     | 
    
         
            +
                def initialize(node, repository)
         
     | 
| 
      
 8 
     | 
    
         
            +
                  @query = NodeQuery.new(node, repository)
         
     | 
| 
      
 9 
     | 
    
         
            +
                end
         
     | 
| 
       9 
10 
     | 
    
         | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
      
 11 
     | 
    
         
            +
                def options
         
     | 
| 
      
 12 
     | 
    
         
            +
                  if question.query.value_exists?(QV.options)
         
     | 
| 
      
 13 
     | 
    
         
            +
                    RDF::List.new(question.query.value(QV.options), query.repository)
         
     | 
| 
      
 14 
     | 
    
         
            +
                  elsif question.query.value_exists?(QV.option)
         
     | 
| 
      
 15 
     | 
    
         
            +
                    question.query.values(QV.option)
         
     | 
| 
      
 16 
     | 
    
         
            +
                  else
         
     | 
| 
      
 17 
     | 
    
         
            +
                    nil
         
     | 
| 
      
 18 
     | 
    
         
            +
                  end
         
     | 
| 
       17 
19 
     | 
    
         
             
                end
         
     | 
| 
       18 
     | 
    
         
            -
              end
         
     | 
| 
       19 
20 
     | 
    
         | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
      
 21 
     | 
    
         
            +
                def selected
         
     | 
| 
      
 22 
     | 
    
         
            +
                  query.value(LV.selected)
         
     | 
| 
      
 23 
     | 
    
         
            +
                end
         
     | 
| 
       23 
24 
     | 
    
         | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
      
 25 
     | 
    
         
            +
                def selected=(value)
         
     | 
| 
      
 26 
     | 
    
         
            +
                  # in case it is an array, store all the answers
         
     | 
| 
      
 27 
     | 
    
         
            +
                  if value.is_a? Array
         
     | 
| 
      
 28 
     | 
    
         
            +
                    value.each { |v| query.set_value(LV.selected, v, false) }
         
     | 
| 
      
 29 
     | 
    
         
            +
                  else
         
     | 
| 
      
 30 
     | 
    
         
            +
                    query.set_value(LV.selected, value)
         
     | 
| 
      
 31 
     | 
    
         
            +
                  end
         
     | 
| 
       30 
32 
     | 
    
         
             
                end
         
     | 
| 
       31 
33 
     | 
    
         
             
              end
         
     | 
| 
       32 
34 
     | 
    
         
             
            end
         
     | 
    
        data/lib/models/state_change.rb
    CHANGED
    
    | 
         @@ -1,19 +1,21 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
       2 
     | 
    
         
            -
               
     | 
| 
      
 1 
     | 
    
         
            +
            module Model
         
     | 
| 
      
 2 
     | 
    
         
            +
              class StateChange
         
     | 
| 
      
 3 
     | 
    
         
            +
                attr_reader :query
         
     | 
| 
       3 
4 
     | 
    
         | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
      
 5 
     | 
    
         
            +
                def initialize(node, repository)
         
     | 
| 
      
 6 
     | 
    
         
            +
                  @query = NodeQuery.new(node, repository)
         
     | 
| 
      
 7 
     | 
    
         
            +
                end
         
     | 
| 
       7 
8 
     | 
    
         | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
      
 9 
     | 
    
         
            +
                def apply
         
     | 
| 
      
 10 
     | 
    
         
            +
                  new_repo = query.repository.clone
         
     | 
| 
      
 11 
     | 
    
         
            +
                  new_repo.load_and_process_n3(state_rules)
         
     | 
| 
      
 12 
     | 
    
         
            +
                  new_repo
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
       13 
14 
     | 
    
         | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
      
 15 
     | 
    
         
            +
                private
         
     | 
| 
       15 
16 
     | 
    
         | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
      
 17 
     | 
    
         
            +
                def state_rules
         
     | 
| 
      
 18 
     | 
    
         
            +
                  File.read(File.dirname(__FILE__) + '/../descriptions/states.n3')
         
     | 
| 
      
 19 
     | 
    
         
            +
                end
         
     | 
| 
       18 
20 
     | 
    
         
             
              end
         
     | 
| 
       19 
21 
     | 
    
         
             
            end
         
     | 
    
        data/lib/models/temperature.rb
    CHANGED
    
    | 
         @@ -1,17 +1,19 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
       2 
     | 
    
         
            -
               
     | 
| 
      
 1 
     | 
    
         
            +
            module Model
         
     | 
| 
      
 2 
     | 
    
         
            +
              class Temperature
         
     | 
| 
      
 3 
     | 
    
         
            +
                attr_reader :query
         
     | 
| 
       3 
4 
     | 
    
         | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
      
 5 
     | 
    
         
            +
                include Answer
         
     | 
| 
       5 
6 
     | 
    
         | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
      
 7 
     | 
    
         
            +
                def initialize(node, repository)
         
     | 
| 
      
 8 
     | 
    
         
            +
                  @query = NodeQuery.new(node, repository)
         
     | 
| 
      
 9 
     | 
    
         
            +
                end
         
     | 
| 
       9 
10 
     | 
    
         | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
      
 11 
     | 
    
         
            +
                def in_celsius
         
     | 
| 
      
 12 
     | 
    
         
            +
                  query.value(LV.in_celsius)
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
       13 
14 
     | 
    
         | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
      
 15 
     | 
    
         
            +
                def in_celsius=(value)
         
     | 
| 
      
 16 
     | 
    
         
            +
                  query.set_value(LV.in_celsius, value)
         
     | 
| 
      
 17 
     | 
    
         
            +
                end
         
     | 
| 
       16 
18 
     | 
    
         
             
              end
         
     | 
| 
       17 
19 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,17 +1,19 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
       2 
     | 
    
         
            -
               
     | 
| 
       3 
     | 
    
         
            -
                 
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            module Model
         
     | 
| 
      
 2 
     | 
    
         
            +
              class HttpVocabulary
         
     | 
| 
      
 3 
     | 
    
         
            +
                def self.method_missing(name, *arguments, &block)
         
     | 
| 
      
 4 
     | 
    
         
            +
                  uri_for(name)
         
     | 
| 
      
 5 
     | 
    
         
            +
                end
         
     | 
| 
       5 
6 
     | 
    
         | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
      
 7 
     | 
    
         
            +
                def self.method_name
         
     | 
| 
      
 8 
     | 
    
         
            +
                  uri_for('methodName')
         
     | 
| 
      
 9 
     | 
    
         
            +
                end
         
     | 
| 
       9 
10 
     | 
    
         | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
      
 11 
     | 
    
         
            +
                def self.request_uri
         
     | 
| 
      
 12 
     | 
    
         
            +
                  uri_for('requestURI')
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
       13 
14 
     | 
    
         | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
      
 15 
     | 
    
         
            +
                def self.uri_for(name)
         
     | 
| 
      
 16 
     | 
    
         
            +
                  RDF::URI("http://www.w3.org/2011/http##{name}")
         
     | 
| 
      
 17 
     | 
    
         
            +
                end
         
     | 
| 
       16 
18 
     | 
    
         
             
              end
         
     | 
| 
       17 
19 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,26 +1,32 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'rdf'
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
               
     | 
| 
       5 
     | 
    
         
            -
                 
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
      
 3 
     | 
    
         
            +
            module Model
         
     | 
| 
      
 4 
     | 
    
         
            +
              class LocalVocabulary
         
     | 
| 
      
 5 
     | 
    
         
            +
                def self.method_missing(name, *arguments, &block)
         
     | 
| 
      
 6 
     | 
    
         
            +
                  uri_for(name)
         
     | 
| 
      
 7 
     | 
    
         
            +
                end
         
     | 
| 
       7 
8 
     | 
    
         | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
      
 9 
     | 
    
         
            +
                def self.name
         
     | 
| 
      
 10 
     | 
    
         
            +
                  uri_for('name')
         
     | 
| 
      
 11 
     | 
    
         
            +
                end
         
     | 
| 
       11 
12 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
      
 13 
     | 
    
         
            +
                def self.question_type
         
     | 
| 
      
 14 
     | 
    
         
            +
                  uri_for('question')
         
     | 
| 
      
 15 
     | 
    
         
            +
                end
         
     | 
| 
       15 
16 
     | 
    
         | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
      
 17 
     | 
    
         
            +
                def self.answer_type
         
     | 
| 
      
 18 
     | 
    
         
            +
                  uri_for('answer')
         
     | 
| 
      
 19 
     | 
    
         
            +
                end
         
     | 
| 
       19 
20 
     | 
    
         | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
      
 21 
     | 
    
         
            +
                def self.uri_for(name)
         
     | 
| 
      
 22 
     | 
    
         
            +
                  RDF::URI("#{prefix}#{name}")
         
     | 
| 
      
 23 
     | 
    
         
            +
                end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                def self.prefix
         
     | 
| 
      
 26 
     | 
    
         
            +
                  'http://matus.tomlein.org/case/'
         
     | 
| 
      
 27 
     | 
    
         
            +
                end
         
     | 
| 
       22 
28 
     | 
    
         
             
              end
         
     | 
| 
       23 
     | 
    
         
            -
            end
         
     | 
| 
       24 
29 
     | 
    
         | 
| 
       25 
     | 
    
         
            -
            LV = LocalVocabulary
         
     | 
| 
       26 
     | 
    
         
            -
            QV = LocalVocabulary
         
     | 
| 
      
 30 
     | 
    
         
            +
              LV = LocalVocabulary
         
     | 
| 
      
 31 
     | 
    
         
            +
              QV = LocalVocabulary
         
     | 
| 
      
 32 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -1,15 +1,17 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
       2 
     | 
    
         
            -
               
     | 
| 
       3 
     | 
    
         
            -
                 
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            module Model
         
     | 
| 
      
 2 
     | 
    
         
            +
              class MathVocabulary
         
     | 
| 
      
 3 
     | 
    
         
            +
                def self.method_missing(name, *arguments, &block)
         
     | 
| 
      
 4 
     | 
    
         
            +
                  uri_for(name)
         
     | 
| 
      
 5 
     | 
    
         
            +
                end
         
     | 
| 
       5 
6 
     | 
    
         | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
      
 7 
     | 
    
         
            +
                def self.less_than
         
     | 
| 
      
 8 
     | 
    
         
            +
                  uri_for('lessThan')
         
     | 
| 
      
 9 
     | 
    
         
            +
                end
         
     | 
| 
       9 
10 
     | 
    
         | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
      
 11 
     | 
    
         
            +
                def self.uri_for(name)
         
     | 
| 
      
 12 
     | 
    
         
            +
                  RDF::URI("http://www.w3.org/2000/10/swap/math##{name}")
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
       12 
14 
     | 
    
         
             
              end
         
     | 
| 
       13 
     | 
    
         
            -
            end
         
     | 
| 
       14 
15 
     | 
    
         | 
| 
       15 
     | 
    
         
            -
            MV = MathVocabulary
         
     | 
| 
      
 16 
     | 
    
         
            +
              MV = MathVocabulary
         
     | 
| 
      
 17 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -1,11 +1,13 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
       2 
     | 
    
         
            -
               
     | 
| 
       3 
     | 
    
         
            -
                 
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            module Model
         
     | 
| 
      
 2 
     | 
    
         
            +
              class RDFVocabulary
         
     | 
| 
      
 3 
     | 
    
         
            +
                def self.method_missing(name, *arguments, &block)
         
     | 
| 
      
 4 
     | 
    
         
            +
                  uri_for(name)
         
     | 
| 
      
 5 
     | 
    
         
            +
                end
         
     | 
| 
       5 
6 
     | 
    
         | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
      
 7 
     | 
    
         
            +
                def self.uri_for(name)
         
     | 
| 
      
 8 
     | 
    
         
            +
                  RDF::URI("http://www.w3.org/1999/02/22-rdf-syntax-ns##{name}")
         
     | 
| 
      
 9 
     | 
    
         
            +
                end
         
     | 
| 
       8 
10 
     | 
    
         
             
              end
         
     | 
| 
       9 
     | 
    
         
            -
            end
         
     | 
| 
       10 
11 
     | 
    
         | 
| 
       11 
     | 
    
         
            -
            RDFV = RDFVocabulary
         
     | 
| 
      
 12 
     | 
    
         
            +
              RDFV = RDFVocabulary
         
     | 
| 
      
 13 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -1,9 +1,11 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
       2 
     | 
    
         
            -
               
     | 
| 
       3 
     | 
    
         
            -
                 
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            module Model
         
     | 
| 
      
 2 
     | 
    
         
            +
              class StateVocabulary
         
     | 
| 
      
 3 
     | 
    
         
            +
                def self.method_missing(name, *arguments, &block)
         
     | 
| 
      
 4 
     | 
    
         
            +
                  uri_for(name)
         
     | 
| 
      
 5 
     | 
    
         
            +
                end
         
     | 
| 
       5 
6 
     | 
    
         | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
      
 7 
     | 
    
         
            +
                def self.uri_for(name)
         
     | 
| 
      
 8 
     | 
    
         
            +
                  RDF::URI("http://matus.tomlein.org/case/#{name}")
         
     | 
| 
      
 9 
     | 
    
         
            +
                end
         
     | 
| 
       8 
10 
     | 
    
         
             
              end
         
     | 
| 
       9 
11 
     | 
    
         
             
            end
         
     |