rtm-activerecord 0.2.0
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.
- data/DISCLAIMER +13 -0
 - data/LICENSE +201 -0
 - data/README +4 -0
 - data/lib/rtm/activerecord/001_initial_schema.rb +119 -0
 - data/lib/rtm/activerecord/association_and_role.rb +54 -0
 - data/lib/rtm/activerecord/base.rb +83 -0
 - data/lib/rtm/activerecord/connect.rb +106 -0
 - data/lib/rtm/activerecord/io/from_xtm2.rb +266 -0
 - data/lib/rtm/activerecord/io/from_xtm2_libxml.rb +97 -0
 - data/lib/rtm/activerecord/io/to_jtm.rb +141 -0
 - data/lib/rtm/activerecord/io/to_string.rb +130 -0
 - data/lib/rtm/activerecord/io/to_xtm1.rb +162 -0
 - data/lib/rtm/activerecord/io/to_xtm2.rb +163 -0
 - data/lib/rtm/activerecord/io/to_yaml.rb +132 -0
 - data/lib/rtm/activerecord/literal_index.rb +38 -0
 - data/lib/rtm/activerecord/locators.rb +58 -0
 - data/lib/rtm/activerecord/merging.rb +310 -0
 - data/lib/rtm/activerecord/name_variant_occurrence.rb +86 -0
 - data/lib/rtm/activerecord/persistent_code_output.rb +22 -0
 - data/lib/rtm/activerecord/quaaxtm2rtm.rb +116 -0
 - data/lib/rtm/activerecord/quaaxtm2rtmviews.rb +137 -0
 - data/lib/rtm/activerecord/set_wrapper.rb +101 -0
 - data/lib/rtm/activerecord/sugar/association/hash_access.rb +22 -0
 - data/lib/rtm/activerecord/sugar/role/counterparts.rb +56 -0
 - data/lib/rtm/activerecord/sugar/topic/characteristics.rb +15 -0
 - data/lib/rtm/activerecord/sugar/topic/counterparts.rb +18 -0
 - data/lib/rtm/activerecord/sugar/topic/hash_access.rb +78 -0
 - data/lib/rtm/activerecord/sugar/topic/identifier_direct.rb +14 -0
 - data/lib/rtm/activerecord/sugar/topic/predefined_associations.rb +53 -0
 - data/lib/rtm/activerecord/tm_construct.rb +66 -0
 - data/lib/rtm/activerecord/tm_delegator.rb +417 -0
 - data/lib/rtm/activerecord/tm_set_delegator.rb +226 -0
 - data/lib/rtm/activerecord/tmdm.rb +309 -0
 - data/lib/rtm/activerecord/topic.rb +204 -0
 - data/lib/rtm/activerecord/topic_map.rb +435 -0
 - data/lib/rtm/activerecord/traverse_associations.rb +90 -0
 - data/lib/rtm/activerecord.rb +106 -0
 - metadata +120 -0
 
| 
         @@ -0,0 +1,86 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # Copyright: Copyright 2009 Topic Maps Lab, University of Leipzig.
         
     | 
| 
      
 2 
     | 
    
         
            +
            # License:   Apache License, Version 2.0
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            module RTM::AR
         
     | 
| 
      
 5 
     | 
    
         
            +
              class Name < Reifiable
         
     | 
| 
      
 6 
     | 
    
         
            +
                include RTM::Name
         
     | 
| 
      
 7 
     | 
    
         
            +
                wrapper_cache
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                parent :topic
         
     | 
| 
      
 10 
     | 
    
         
            +
                property :type, :aka => [:ty,:t], :rw => true, :type => :Topic, :wrap => true
         
     | 
| 
      
 11 
     | 
    
         
            +
                property_set :scope, :type => :Topic, :wrap => true, :add => :scope, :remove => :scope
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                property_set :variants, :aka => :vs, :type => :Variant, :wrap => true,
         
     | 
| 
      
 14 
     | 
    
         
            +
                  :create => :variant_internal, :create_aka => :cv,
         
     | 
| 
      
 15 
     | 
    
         
            +
                  :create_args => [ {:name => :value, :type => [:String, :Locator]}, {:name => :scope, :type => :Collection}]
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
              def create_variant(arg1, arg2, arg3 = :nothing)
         
     | 
| 
      
 18 
     | 
    
         
            +
                if arg1.is_a?(RTM::Locator)
         
     | 
| 
      
 19 
     | 
    
         
            +
                  raise("create_variant(value,scope), value: Locator, scope must be an Array") unless arg2.is_a?(Array)
         
     | 
| 
      
 20 
     | 
    
         
            +
                  if arg2.empty?
         
     | 
| 
      
 21 
     | 
    
         
            +
                    raise("create_variant(value,scope), value: Locator, scope must not be empty")
         
     | 
| 
      
 22 
     | 
    
         
            +
                  end
         
     | 
| 
      
 23 
     | 
    
         
            +
                  arg2.each do |theme|
         
     | 
| 
      
 24 
     | 
    
         
            +
                    raise("create_variant(value,scope), value: Locator, scope must contain Topic/Topic-References") unless (theme.is_a?(RTM::Topic) || theme.is_a?(String) || theme.is_a?(RTM::Locator))
         
     | 
| 
      
 25 
     | 
    
         
            +
                  end
         
     | 
| 
      
 26 
     | 
    
         
            +
                  return create_variant_internal(arg1, topic_map._topic_by_locator!(arg2) + self.scope.map{|t| t.__getobj__})
         
     | 
| 
      
 27 
     | 
    
         
            +
                elsif arg1.is_a?(String)
         
     | 
| 
      
 28 
     | 
    
         
            +
                  if arg3 == :nothing 
         
     | 
| 
      
 29 
     | 
    
         
            +
                    raise("create_variant(value,scope), value: String, scope must be an Array") unless arg2.is_a?(Array)
         
     | 
| 
      
 30 
     | 
    
         
            +
                    if arg2.empty?
         
     | 
| 
      
 31 
     | 
    
         
            +
                      raise("create_variant(value,scope), value: String, scope must not be empty")
         
     | 
| 
      
 32 
     | 
    
         
            +
                    end
         
     | 
| 
      
 33 
     | 
    
         
            +
                    arg2.each do |theme|
         
     | 
| 
      
 34 
     | 
    
         
            +
                      raise("create_variant(value,scope), value: String, scope must contain Topic/Topic-References") unless (theme.is_a?(RTM::Topic) || theme.is_a?(String) || theme.is_a?(RTM::Locator))
         
     | 
| 
      
 35 
     | 
    
         
            +
                    end
         
     | 
| 
      
 36 
     | 
    
         
            +
                    return create_variant_internal(arg1, topic_map._topic_by_locator!(arg2) + self.scope.map{|t| t.__getobj__})
         
     | 
| 
      
 37 
     | 
    
         
            +
                  elsif (arg2.is_a?(Locator) || arg2.is_a?(String))
         
     | 
| 
      
 38 
     | 
    
         
            +
                    if ((arg2 == RTM::PSI[:String]) || (arg2 == topic_map.create_locator(RTM::PSI[:String])))
         
     | 
| 
      
 39 
     | 
    
         
            +
                      return create_variant_internal(arg1, topic_map.create_locator(RTM::PSI[:String]), topic_map._topic_by_locator!(arg3) + self.scope.map{|t| t.__getobj__})
         
     | 
| 
      
 40 
     | 
    
         
            +
                    elsif ((arg2 == RTM::PSI[:IRI]) || (arg2 == topic_map.create_locator(RTM::PSI[:IRI])))
         
     | 
| 
      
 41 
     | 
    
         
            +
                      return create_variant_internal(arg1, topic_map.create_locator(RTM::PSI[:IRI]), topic_map._topic_by_locator!(arg3) + self.scope.map{|t| t.__getobj__})
         
     | 
| 
      
 42 
     | 
    
         
            +
                    elsif ((arg2 == RTM::PSI[:XML]) || (arg2 == topic_map.create_locator(RTM::PSI[:XML])))
         
     | 
| 
      
 43 
     | 
    
         
            +
                      return create_variant_internal(arg1, topic_map.create_locator(RTM::PSI[:XML]), topic_map._topic_by_locator!(arg3) + self.scope.map{|t| t.__getobj__})
         
     | 
| 
      
 44 
     | 
    
         
            +
                    else 
         
     | 
| 
      
 45 
     | 
    
         
            +
                      raise("create_variant(value,datatype,scope), value: String, unknown datatype")
         
     | 
| 
      
 46 
     | 
    
         
            +
                    end
         
     | 
| 
      
 47 
     | 
    
         
            +
                  else
         
     | 
| 
      
 48 
     | 
    
         
            +
                    raise("create_variant(value,datatype,scope), datatype must be a String (identifier) or Locator")
         
     | 
| 
      
 49 
     | 
    
         
            +
                  end 
         
     | 
| 
      
 50 
     | 
    
         
            +
                else
         
     | 
| 
      
 51 
     | 
    
         
            +
                  raise "create_variant: value not a Locator or String"
         
     | 
| 
      
 52 
     | 
    
         
            +
                end  
         
     | 
| 
      
 53 
     | 
    
         
            +
              end
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
                property :value, :rw => true, :type => :String, :aka => :v
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
                equality [:value, :type, :scope, :parent]
         
     | 
| 
      
 58 
     | 
    
         
            +
              end
         
     | 
| 
      
 59 
     | 
    
         
            +
              TopicName = Name
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
              class Variant < Reifiable
         
     | 
| 
      
 62 
     | 
    
         
            +
                include RTM::Variant
         
     | 
| 
      
 63 
     | 
    
         
            +
                wrapper_cache
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
      
 65 
     | 
    
         
            +
                parent :name, :aka => :topic_name
         
     | 
| 
      
 66 
     | 
    
         
            +
                property :value, :rw => true, :type => :String, :aka => :v
         
     | 
| 
      
 67 
     | 
    
         
            +
                property :datatype, :rw => true, :type => :Locator #, :wrap => true
         
     | 
| 
      
 68 
     | 
    
         
            +
                property_set :scope, :type => :Topic, :wrap => true, :add => :scope, :remove => :scope
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
                equality [:value, :datatype, :scope, :parent]
         
     | 
| 
      
 71 
     | 
    
         
            +
              end
         
     | 
| 
      
 72 
     | 
    
         
            +
             
     | 
| 
      
 73 
     | 
    
         
            +
              class Occurrence < Reifiable
         
     | 
| 
      
 74 
     | 
    
         
            +
                include RTM::Occurrence
         
     | 
| 
      
 75 
     | 
    
         
            +
                wrapper_cache
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
      
 77 
     | 
    
         
            +
                parent :topic
         
     | 
| 
      
 78 
     | 
    
         
            +
                property :value, :rw => true, :type => :String, :aka => :v
         
     | 
| 
      
 79 
     | 
    
         
            +
                property :datatype, :rw => true, :type => :String
         
     | 
| 
      
 80 
     | 
    
         
            +
             
     | 
| 
      
 81 
     | 
    
         
            +
                property_set :scope, :type => :Topic, :wrap => true, :add => :scope, :remove => :scope
         
     | 
| 
      
 82 
     | 
    
         
            +
                property :type, :aka => [:ty,:t], :rw => true, :type => :Topic, :wrap => true
         
     | 
| 
      
 83 
     | 
    
         
            +
             
     | 
| 
      
 84 
     | 
    
         
            +
                equality [:value, :datatype, :scope, :type, :parent]
         
     | 
| 
      
 85 
     | 
    
         
            +
              end
         
     | 
| 
      
 86 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,22 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # Copyright: Copyright 2009 Topic Maps Lab, University of Leipzig.
         
     | 
| 
      
 2 
     | 
    
         
            +
            # License:   Apache License, Version 2.0
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            enable_persistent_code_output = false
         
     | 
| 
      
 5 
     | 
    
         
            +
            class Module
         
     | 
| 
      
 6 
     | 
    
         
            +
              alias :module_eval_without_output :module_eval
         
     | 
| 
      
 7 
     | 
    
         
            +
              def module_eval(code,file,line)
         
     | 
| 
      
 8 
     | 
    
         
            +
                module_eval_without_output(code,file,line)
         
     | 
| 
      
 9 
     | 
    
         
            +
                File.open("/tmp/rtm.rb","a") do |f|
         
     | 
| 
      
 10 
     | 
    
         
            +
                  #puts self, self.class
         
     | 
| 
      
 11 
     | 
    
         
            +
                  @@first_class = true
         
     | 
| 
      
 12 
     | 
    
         
            +
                  @@last_self ||= nil
         
     | 
| 
      
 13 
     | 
    
         
            +
                  if ! @@last_self || @@last_self != self
         
     | 
| 
      
 14 
     | 
    
         
            +
                    f.puts "end\n\n" unless @@first_class
         
     | 
| 
      
 15 
     | 
    
         
            +
                    @@first_class = false
         
     | 
| 
      
 16 
     | 
    
         
            +
                    @@last_self = self
         
     | 
| 
      
 17 
     | 
    
         
            +
                    f.puts "#{self.class.to_s.downcase} #{self}"
         
     | 
| 
      
 18 
     | 
    
         
            +
                  end
         
     | 
| 
      
 19 
     | 
    
         
            +
                  f.puts code
         
     | 
| 
      
 20 
     | 
    
         
            +
                end
         
     | 
| 
      
 21 
     | 
    
         
            +
              end
         
     | 
| 
      
 22 
     | 
    
         
            +
            end if enable_persistent_code_output
         
     | 
| 
         @@ -0,0 +1,116 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # Copyright: Copyright 2009 Topic Maps Lab, University of Leipzig.
         
     | 
| 
      
 2 
     | 
    
         
            +
            # License:   Apache License, Version 2.0
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            require 'active_record'
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            module RTM
         
     | 
| 
      
 8 
     | 
    
         
            +
              module AR
         
     | 
| 
      
 9 
     | 
    
         
            +
                module TMDM
         
     | 
| 
      
 10 
     | 
    
         
            +
                  class Topic < ActiveRecord::Base;end
         
     | 
| 
      
 11 
     | 
    
         
            +
                  class ItemIdentifier < ActiveRecord::Base
         
     | 
| 
      
 12 
     | 
    
         
            +
                    belongs_to :topic_map_construct
         
     | 
| 
      
 13 
     | 
    
         
            +
                  end
         
     | 
| 
      
 14 
     | 
    
         
            +
                  class SubjectIdentifier < ActiveRecord::Base
         
     | 
| 
      
 15 
     | 
    
         
            +
                    belongs_to :topic
         
     | 
| 
      
 16 
     | 
    
         
            +
                  end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                  class SubjectLocator < ActiveRecord::Base
         
     | 
| 
      
 19 
     | 
    
         
            +
                    belongs_to :topic
         
     | 
| 
      
 20 
     | 
    
         
            +
                  end
         
     | 
| 
      
 21 
     | 
    
         
            +
                  
         
     | 
| 
      
 22 
     | 
    
         
            +
                  class QuaaxTM2RTM < ActiveRecord::Migration
         
     | 
| 
      
 23 
     | 
    
         
            +
                    def self.up
         
     | 
| 
      
 24 
     | 
    
         
            +
                      rename_table("qtm_topicmap", "topic_maps" )
         
     | 
| 
      
 25 
     | 
    
         
            +
                      rename_column("topic_maps", "baselocator", "base_locator")
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
                      rename_table("qtm_topic", "topics")
         
     | 
| 
      
 28 
     | 
    
         
            +
                      rename_column("topics", "topicmap_id", "topic_map_id")
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                      add_column :topics, :reified_id, :integer
         
     | 
| 
      
 31 
     | 
    
         
            +
                      add_column :topics, :reified_type, :string
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
                      rename_table "qtm_association", "associations"
         
     | 
| 
      
 34 
     | 
    
         
            +
                      rename_column "associations", "type_id", "ttype_id"
         
     | 
| 
      
 35 
     | 
    
         
            +
                      rename_column "associations", "topicmap_id", "topic_map_id"
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
                      rename_table "qtm_assocrole", "association_roles"
         
     | 
| 
      
 38 
     | 
    
         
            +
                      rename_column "association_roles", "type_id", "ttype_id"
         
     | 
| 
      
 39 
     | 
    
         
            +
                      rename_column "association_roles", "reference", "topic_id"
         
     | 
| 
      
 40 
     | 
    
         
            +
                      
         
     | 
| 
      
 41 
     | 
    
         
            +
                      rename_table "qtm_topicname", "topic_names"
         
     | 
| 
      
 42 
     | 
    
         
            +
                      rename_column "topic_names", "type_id", "ttype_id"
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
                      rename_table "qtm_occurrence", "occurrences"
         
     | 
| 
      
 45 
     | 
    
         
            +
                      rename_column "occurrences", "type_id", "ttype_id"
         
     | 
| 
      
 46 
     | 
    
         
            +
                      
         
     | 
| 
      
 47 
     | 
    
         
            +
                      rename_table "qtm_variant", "variants"
         
     | 
| 
      
 48 
     | 
    
         
            +
                      rename_column "variants", "topicname_id", "topic_name_id"
         
     | 
| 
      
 49 
     | 
    
         
            +
                      
         
     | 
| 
      
 50 
     | 
    
         
            +
                      rename_table "qtm_topicmapconstructref", "item_identifiers"
         
     | 
| 
      
 51 
     | 
    
         
            +
                      rename_column "item_identifiers", "locator", "reference"
         
     | 
| 
      
 52 
     | 
    
         
            +
                      add_column :item_identifiers, :topic_map_id, :integer
         
     | 
| 
      
 53 
     | 
    
         
            +
                      ItemIdentifier.reset_column_information
         
     | 
| 
      
 54 
     | 
    
         
            +
                      ItemIdentifier.find(:all).each do |si|
         
     | 
| 
      
 55 
     | 
    
         
            +
                        si.update_attribute :topic_map_id, si.topic_map_construct.topic_map_id
         
     | 
| 
      
 56 
     | 
    
         
            +
                      end
         
     | 
| 
      
 57 
     | 
    
         
            +
                      
         
     | 
| 
      
 58 
     | 
    
         
            +
                      create_table :item_identifiers do |t|
         
     | 
| 
      
 59 
     | 
    
         
            +
                        t.column :topic_map_id, :integer, :null => false
         
     | 
| 
      
 60 
     | 
    
         
            +
                        t.column :reference, :string, :null => false
         
     | 
| 
      
 61 
     | 
    
         
            +
                        t.column :topic_map_construct_id, :integer
         
     | 
| 
      
 62 
     | 
    
         
            +
                        t.column :topic_map_construct_type, :string
         
     | 
| 
      
 63 
     | 
    
         
            +
                      end
         
     | 
| 
      
 64 
     | 
    
         
            +
                      SubjectIdentifier.reset_column_information
         
     | 
| 
      
 65 
     | 
    
         
            +
                      SubjectIdentifier.find(:all).each do |si|
         
     | 
| 
      
 66 
     | 
    
         
            +
                        si.update_attribute :topic_map_id, si.topic.topic_map_id
         
     | 
| 
      
 67 
     | 
    
         
            +
                      end
         
     | 
| 
      
 68 
     | 
    
         
            +
                      
         
     | 
| 
      
 69 
     | 
    
         
            +
                      rename_table "qtm_subjectidentifier", "subject_identifiers"
         
     | 
| 
      
 70 
     | 
    
         
            +
                      rename_column :subject_identifiers, "locator", "reference"
         
     | 
| 
      
 71 
     | 
    
         
            +
                      add_column :subject_identifiers, :topic_map_id, :integer
         
     | 
| 
      
 72 
     | 
    
         
            +
                      
         
     | 
| 
      
 73 
     | 
    
         
            +
                      SubjectIdentifier.reset_column_information
         
     | 
| 
      
 74 
     | 
    
         
            +
                      SubjectIdentifier.find(:all).each do |si|
         
     | 
| 
      
 75 
     | 
    
         
            +
                        si.update_attribute :topic_map_id, si.topic.topic_map_id
         
     | 
| 
      
 76 
     | 
    
         
            +
                      end
         
     | 
| 
      
 77 
     | 
    
         
            +
                      
         
     | 
| 
      
 78 
     | 
    
         
            +
                      rename_table "qtm_subjectlocator", "subject_locators"
         
     | 
| 
      
 79 
     | 
    
         
            +
                      rename_column :subject_locators, "locator", "reference"
         
     | 
| 
      
 80 
     | 
    
         
            +
                      add_column :subject_locators, :topic_map_id, :integer
         
     | 
| 
      
 81 
     | 
    
         
            +
                      
         
     | 
| 
      
 82 
     | 
    
         
            +
                      Topic.reset_column_information
         
     | 
| 
      
 83 
     | 
    
         
            +
                      SubjectLocator.reset_column_information
         
     | 
| 
      
 84 
     | 
    
         
            +
                      SubjectLocator.find(:all).each do |si|
         
     | 
| 
      
 85 
     | 
    
         
            +
                        si.update_attribute :topic_map_id, si.topic.topic_map_id
         
     | 
| 
      
 86 
     | 
    
         
            +
                      end
         
     | 
| 
      
 87 
     | 
    
         
            +
             
     | 
| 
      
 88 
     | 
    
         
            +
                      create_table :scoped_objects_topics do |t|
         
     | 
| 
      
 89 
     | 
    
         
            +
                        t.column :scoped_object_id, :integer
         
     | 
| 
      
 90 
     | 
    
         
            +
                        t.column :scoped_object_type, :string
         
     | 
| 
      
 91 
     | 
    
         
            +
                        t.column :topic_id, :integer
         
     | 
| 
      
 92 
     | 
    
         
            +
                      end
         
     | 
| 
      
 93 
     | 
    
         
            +
                      
         
     | 
| 
      
 94 
     | 
    
         
            +
                      # TODO: instance of
         
     | 
| 
      
 95 
     | 
    
         
            +
                      #       scope
         
     | 
| 
      
 96 
     | 
    
         
            +
                      #       reifier
         
     | 
| 
      
 97 
     | 
    
         
            +
                    end
         
     | 
| 
      
 98 
     | 
    
         
            +
             
     | 
| 
      
 99 
     | 
    
         
            +
                    def self.down
         
     | 
| 
      
 100 
     | 
    
         
            +
                      raise "not supported"
         
     | 
| 
      
 101 
     | 
    
         
            +
                    end
         
     | 
| 
      
 102 
     | 
    
         
            +
             
     | 
| 
      
 103 
     | 
    
         
            +
                  end
         
     | 
| 
      
 104 
     | 
    
         
            +
                end
         
     | 
| 
      
 105 
     | 
    
         
            +
              end
         
     | 
| 
      
 106 
     | 
    
         
            +
            end
         
     | 
| 
      
 107 
     | 
    
         
            +
             
     | 
| 
      
 108 
     | 
    
         
            +
            #if __FILE__ == $0
         
     | 
| 
      
 109 
     | 
    
         
            +
            #  puts "Generating SQLite3 Databse tmdm.sqlite3."
         
     | 
| 
      
 110 
     | 
    
         
            +
            #  ActiveRecord::Base.establish_connection(
         
     | 
| 
      
 111 
     | 
    
         
            +
            #    :adapter => "sqlite3",
         
     | 
| 
      
 112 
     | 
    
         
            +
            #    :database  => "tmdm.sqlite3"
         
     | 
| 
      
 113 
     | 
    
         
            +
            #  )
         
     | 
| 
      
 114 
     | 
    
         
            +
            #  RTM::AR::TMDM::QuaaxTM2RTM.migrate(:up)
         
     | 
| 
      
 115 
     | 
    
         
            +
            #end
         
     | 
| 
      
 116 
     | 
    
         
            +
             
     | 
| 
         @@ -0,0 +1,137 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # Copyright: Copyright 2009 Topic Maps Lab, University of Leipzig.
         
     | 
| 
      
 2 
     | 
    
         
            +
            # License:   Apache License, Version 2.0
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            require 'active_record'
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            module RTM
         
     | 
| 
      
 8 
     | 
    
         
            +
              module AR
         
     | 
| 
      
 9 
     | 
    
         
            +
                module TMDM
         
     | 
| 
      
 10 
     | 
    
         
            +
                  class Topic < ActiveRecord::Base;end
         
     | 
| 
      
 11 
     | 
    
         
            +
                  class ItemIdentifier < ActiveRecord::Base
         
     | 
| 
      
 12 
     | 
    
         
            +
                    belongs_to :topic_map_construct
         
     | 
| 
      
 13 
     | 
    
         
            +
                  end
         
     | 
| 
      
 14 
     | 
    
         
            +
                  class SubjectIdentifier < ActiveRecord::Base
         
     | 
| 
      
 15 
     | 
    
         
            +
                    belongs_to :topic
         
     | 
| 
      
 16 
     | 
    
         
            +
                  end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                  class SubjectLocator < ActiveRecord::Base
         
     | 
| 
      
 19 
     | 
    
         
            +
                    belongs_to :topic
         
     | 
| 
      
 20 
     | 
    
         
            +
                  end
         
     | 
| 
      
 21 
     | 
    
         
            +
                  
         
     | 
| 
      
 22 
     | 
    
         
            +
                  class QuaaxTM2RTMViews < ActiveRecord::Migration
         
     | 
| 
      
 23 
     | 
    
         
            +
                    def self.up
         
     | 
| 
      
 24 
     | 
    
         
            +
                      create_view "topic_maps", "select id, baselocator from qtm_topicmap" do |t|
         
     | 
| 
      
 25 
     | 
    
         
            +
                        t.column :id
         
     | 
| 
      
 26 
     | 
    
         
            +
                        t.column :base_locator
         
     | 
| 
      
 27 
     | 
    
         
            +
                      end
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
                      create_view "topics", "select id, topicmap_id, null, null from qtm_topic" do |t|
         
     | 
| 
      
 30 
     | 
    
         
            +
                        t.column :id
         
     | 
| 
      
 31 
     | 
    
         
            +
                        t.column :topic_map_id
         
     | 
| 
      
 32 
     | 
    
         
            +
                        t.column :reified_id
         
     | 
| 
      
 33 
     | 
    
         
            +
                        t.column :reified_type
         
     | 
| 
      
 34 
     | 
    
         
            +
                      end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
                      create_view "associations", "select id, topicmap_id, type_id from qtm_association" do |t|
         
     | 
| 
      
 37 
     | 
    
         
            +
                        t.column :id
         
     | 
| 
      
 38 
     | 
    
         
            +
                        t.column :topic_map_id
         
     | 
| 
      
 39 
     | 
    
         
            +
                        t.column :ttype_id
         
     | 
| 
      
 40 
     | 
    
         
            +
                      end
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
                      create_view "association_roles", "select id, association_id, type_id, reference from qtm_assocrole" do |t|
         
     | 
| 
      
 43 
     | 
    
         
            +
                        t.column :id
         
     | 
| 
      
 44 
     | 
    
         
            +
                        t.column :association_id
         
     | 
| 
      
 45 
     | 
    
         
            +
                        t.column :ttype_id
         
     | 
| 
      
 46 
     | 
    
         
            +
                        t.column :topic_id
         
     | 
| 
      
 47 
     | 
    
         
            +
                      end
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
                      create_view "topic_names", "select id, topic_id, type_id, value from qtm_topicname" do |t|
         
     | 
| 
      
 50 
     | 
    
         
            +
                        t.column :id
         
     | 
| 
      
 51 
     | 
    
         
            +
                        t.column :topic_id
         
     | 
| 
      
 52 
     | 
    
         
            +
                        t.column :ttype_id
         
     | 
| 
      
 53 
     | 
    
         
            +
                        t.column :value
         
     | 
| 
      
 54 
     | 
    
         
            +
                      end
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
                      create_view "occurrence", "select id, topic_id, type_id, value, datatype from qtm_occurrence" do |t|
         
     | 
| 
      
 57 
     | 
    
         
            +
                        t.column :id
         
     | 
| 
      
 58 
     | 
    
         
            +
                        t.column :topic_id
         
     | 
| 
      
 59 
     | 
    
         
            +
                        t.column :ttype_id
         
     | 
| 
      
 60 
     | 
    
         
            +
                        t.column :value
         
     | 
| 
      
 61 
     | 
    
         
            +
                        t.column :datatype
         
     | 
| 
      
 62 
     | 
    
         
            +
                      end
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
                      create_view "variants", "select id, topicname_id, value, datatype from qtm_variant" do |t|
         
     | 
| 
      
 65 
     | 
    
         
            +
                        t.column :id
         
     | 
| 
      
 66 
     | 
    
         
            +
                        t.column :topic_name_id
         
     | 
| 
      
 67 
     | 
    
         
            +
                        t.column :value
         
     | 
| 
      
 68 
     | 
    
         
            +
                        t.column :datatype
         
     | 
| 
      
 69 
     | 
    
         
            +
                      end
         
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
      
 71 
     | 
    
         
            +
                      rename_table "qtm_topicmapconstructref", "item_identifiers"
         
     | 
| 
      
 72 
     | 
    
         
            +
                      rename_column "item_identifiers", "locator", "reference"
         
     | 
| 
      
 73 
     | 
    
         
            +
                      add_column :item_identifiers, :topic_map_id, :integer
         
     | 
| 
      
 74 
     | 
    
         
            +
                      ItemIdentifier.reset_column_information
         
     | 
| 
      
 75 
     | 
    
         
            +
                      ItemIdentifier.find(:all).each do |si|
         
     | 
| 
      
 76 
     | 
    
         
            +
                        si.update_attribute :topic_map_id, si.topic_map_construct.topic_map_id
         
     | 
| 
      
 77 
     | 
    
         
            +
                      end
         
     | 
| 
      
 78 
     | 
    
         
            +
                      
         
     | 
| 
      
 79 
     | 
    
         
            +
                      create_table :item_identifiers do |t|
         
     | 
| 
      
 80 
     | 
    
         
            +
                        t.column :topic_map_id, :integer, :null => false
         
     | 
| 
      
 81 
     | 
    
         
            +
                        t.column :reference, :string, :null => false
         
     | 
| 
      
 82 
     | 
    
         
            +
                        t.column :topic_map_construct_id, :integer
         
     | 
| 
      
 83 
     | 
    
         
            +
                        t.column :topic_map_construct_type, :string
         
     | 
| 
      
 84 
     | 
    
         
            +
                      end
         
     | 
| 
      
 85 
     | 
    
         
            +
                      SubjectIdentifier.reset_column_information
         
     | 
| 
      
 86 
     | 
    
         
            +
                      SubjectIdentifier.find(:all).each do |si|
         
     | 
| 
      
 87 
     | 
    
         
            +
                        si.update_attribute :topic_map_id, si.topic.topic_map_id
         
     | 
| 
      
 88 
     | 
    
         
            +
                      end
         
     | 
| 
      
 89 
     | 
    
         
            +
                      
         
     | 
| 
      
 90 
     | 
    
         
            +
                      rename_table "qtm_subjectidentifier", "subject_identifiers"
         
     | 
| 
      
 91 
     | 
    
         
            +
                      rename_column :subject_identifiers, "locator", "reference"
         
     | 
| 
      
 92 
     | 
    
         
            +
                      add_column :subject_identifiers, :topic_map_id, :integer
         
     | 
| 
      
 93 
     | 
    
         
            +
                      
         
     | 
| 
      
 94 
     | 
    
         
            +
                      SubjectIdentifier.reset_column_information
         
     | 
| 
      
 95 
     | 
    
         
            +
                      SubjectIdentifier.find(:all).each do |si|
         
     | 
| 
      
 96 
     | 
    
         
            +
                        si.update_attribute :topic_map_id, si.topic.topic_map_id
         
     | 
| 
      
 97 
     | 
    
         
            +
                      end
         
     | 
| 
      
 98 
     | 
    
         
            +
                      
         
     | 
| 
      
 99 
     | 
    
         
            +
                      rename_table "qtm_subjectlocator", "subject_locators"
         
     | 
| 
      
 100 
     | 
    
         
            +
                      rename_column :subject_locators, "locator", "reference"
         
     | 
| 
      
 101 
     | 
    
         
            +
                      add_column :subject_locators, :topic_map_id, :integer
         
     | 
| 
      
 102 
     | 
    
         
            +
                      
         
     | 
| 
      
 103 
     | 
    
         
            +
                      Topic.reset_column_information
         
     | 
| 
      
 104 
     | 
    
         
            +
                      SubjectLocator.reset_column_information
         
     | 
| 
      
 105 
     | 
    
         
            +
                      SubjectLocator.find(:all).each do |si|
         
     | 
| 
      
 106 
     | 
    
         
            +
                        si.update_attribute :topic_map_id, si.topic.topic_map_id
         
     | 
| 
      
 107 
     | 
    
         
            +
                      end
         
     | 
| 
      
 108 
     | 
    
         
            +
             
     | 
| 
      
 109 
     | 
    
         
            +
                      create_table :scoped_objects_topics do |t|
         
     | 
| 
      
 110 
     | 
    
         
            +
                        t.column :scoped_object_id, :integer
         
     | 
| 
      
 111 
     | 
    
         
            +
                        t.column :scoped_object_type, :string
         
     | 
| 
      
 112 
     | 
    
         
            +
                        t.column :topic_id, :integer
         
     | 
| 
      
 113 
     | 
    
         
            +
                      end
         
     | 
| 
      
 114 
     | 
    
         
            +
                      
         
     | 
| 
      
 115 
     | 
    
         
            +
                      # TODO: instance of
         
     | 
| 
      
 116 
     | 
    
         
            +
                      #       scope
         
     | 
| 
      
 117 
     | 
    
         
            +
                      #       reifier
         
     | 
| 
      
 118 
     | 
    
         
            +
                    end
         
     | 
| 
      
 119 
     | 
    
         
            +
             
     | 
| 
      
 120 
     | 
    
         
            +
                    def self.down
         
     | 
| 
      
 121 
     | 
    
         
            +
                      raise "not supported"
         
     | 
| 
      
 122 
     | 
    
         
            +
                    end
         
     | 
| 
      
 123 
     | 
    
         
            +
             
     | 
| 
      
 124 
     | 
    
         
            +
                  end
         
     | 
| 
      
 125 
     | 
    
         
            +
                end
         
     | 
| 
      
 126 
     | 
    
         
            +
              end
         
     | 
| 
      
 127 
     | 
    
         
            +
            end
         
     | 
| 
      
 128 
     | 
    
         
            +
             
     | 
| 
      
 129 
     | 
    
         
            +
            #if __FILE__ == $0
         
     | 
| 
      
 130 
     | 
    
         
            +
            #  puts "Generating SQLite3 Databse tmdm.sqlite3."
         
     | 
| 
      
 131 
     | 
    
         
            +
            #  ActiveRecord::Base.establish_connection(
         
     | 
| 
      
 132 
     | 
    
         
            +
            #    :adapter => "sqlite3",
         
     | 
| 
      
 133 
     | 
    
         
            +
            #    :database  => "tmdm.sqlite3"
         
     | 
| 
      
 134 
     | 
    
         
            +
            #  )
         
     | 
| 
      
 135 
     | 
    
         
            +
            #  RTM::AR::TMDM::QuaaxTM2RTM.migrate(:up)
         
     | 
| 
      
 136 
     | 
    
         
            +
            #end
         
     | 
| 
      
 137 
     | 
    
         
            +
             
     | 
| 
         @@ -0,0 +1,101 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # Copyright: Copyright 2009 Topic Maps Lab, University of Leipzig.
         
     | 
| 
      
 2 
     | 
    
         
            +
            # License:   Apache License, Version 2.0
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            module RTM::AR
         
     | 
| 
      
 5 
     | 
    
         
            +
              class Topics < TMSetDelegator
         
     | 
| 
      
 6 
     | 
    
         
            +
                def wrap(obj)
         
     | 
| 
      
 7 
     | 
    
         
            +
                  Topic.wrap(obj)
         
     | 
| 
      
 8 
     | 
    
         
            +
                end
         
     | 
| 
      
 9 
     | 
    
         
            +
              end
         
     | 
| 
      
 10 
     | 
    
         
            +
              class Constructs < TMSetDelegator
         
     | 
| 
      
 11 
     | 
    
         
            +
                def wrap(obj)
         
     | 
| 
      
 12 
     | 
    
         
            +
                  Construct.wrap(obj)
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
              end
         
     | 
| 
      
 15 
     | 
    
         
            +
              class Associations < TMSetDelegator
         
     | 
| 
      
 16 
     | 
    
         
            +
                def wrap(obj)
         
     | 
| 
      
 17 
     | 
    
         
            +
                  Association.wrap(obj)
         
     | 
| 
      
 18 
     | 
    
         
            +
                end
         
     | 
| 
      
 19 
     | 
    
         
            +
              end
         
     | 
| 
      
 20 
     | 
    
         
            +
              class Names < TMSetDelegator
         
     | 
| 
      
 21 
     | 
    
         
            +
                def wrap(obj)
         
     | 
| 
      
 22 
     | 
    
         
            +
                  Name.wrap(obj)
         
     | 
| 
      
 23 
     | 
    
         
            +
                end
         
     | 
| 
      
 24 
     | 
    
         
            +
              end
         
     | 
| 
      
 25 
     | 
    
         
            +
              class Occurrences < TMSetDelegator
         
     | 
| 
      
 26 
     | 
    
         
            +
                def wrap(obj)
         
     | 
| 
      
 27 
     | 
    
         
            +
                  Occurrence.wrap(obj)
         
     | 
| 
      
 28 
     | 
    
         
            +
                end
         
     | 
| 
      
 29 
     | 
    
         
            +
              end
         
     | 
| 
      
 30 
     | 
    
         
            +
              class Roles < TMSetDelegator
         
     | 
| 
      
 31 
     | 
    
         
            +
                def wrap(obj)
         
     | 
| 
      
 32 
     | 
    
         
            +
                  Role.wrap(obj)
         
     | 
| 
      
 33 
     | 
    
         
            +
                end
         
     | 
| 
      
 34 
     | 
    
         
            +
               end
         
     | 
| 
      
 35 
     | 
    
         
            +
              class Reifiables < TMSetDelegator
         
     | 
| 
      
 36 
     | 
    
         
            +
                def wrap(obj)
         
     | 
| 
      
 37 
     | 
    
         
            +
                  Construct.wrap(obj)
         
     | 
| 
      
 38 
     | 
    
         
            +
                end
         
     | 
| 
      
 39 
     | 
    
         
            +
              end
         
     | 
| 
      
 40 
     | 
    
         
            +
              class Variants < TMSetDelegator
         
     | 
| 
      
 41 
     | 
    
         
            +
                def wrap(obj)
         
     | 
| 
      
 42 
     | 
    
         
            +
                  Variant.wrap(obj)
         
     | 
| 
      
 43 
     | 
    
         
            +
                end
         
     | 
| 
      
 44 
     | 
    
         
            +
              end
         
     | 
| 
      
 45 
     | 
    
         
            +
              class TopicMaps < TMSetDelegator
         
     | 
| 
      
 46 
     | 
    
         
            +
                def [](obj)
         
     | 
| 
      
 47 
     | 
    
         
            +
                  # support for getting topic_map by base_locator
         
     | 
| 
      
 48 
     | 
    
         
            +
                  if obj.is_a? String
         
     | 
| 
      
 49 
     | 
    
         
            +
                    # return wrap(__getobj__.find { |tm| tm.base_locator == obj })
         
     | 
| 
      
 50 
     | 
    
         
            +
                    return wrap(TMDM::TopicMap.find_by_base_locator(obj))
         
     | 
| 
      
 51 
     | 
    
         
            +
                  end
         
     | 
| 
      
 52 
     | 
    
         
            +
                  # normal index retrieval
         
     | 
| 
      
 53 
     | 
    
         
            +
                  super
         
     | 
| 
      
 54 
     | 
    
         
            +
                end
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
                def wrap(obj)
         
     | 
| 
      
 57 
     | 
    
         
            +
                  TopicMap.wrap(obj)
         
     | 
| 
      
 58 
     | 
    
         
            +
                end
         
     | 
| 
      
 59 
     | 
    
         
            +
              end
         
     | 
| 
      
 60 
     | 
    
         
            +
              class Locators < TMSetDelegator
         
     | 
| 
      
 61 
     | 
    
         
            +
                def [](obj)
         
     | 
| 
      
 62 
     | 
    
         
            +
                  # support for getting locators by reference
         
     | 
| 
      
 63 
     | 
    
         
            +
                  if obj.is_a? String
         
     | 
| 
      
 64 
     | 
    
         
            +
                    return wrap(__getobj__.find { |tm| tm.reference == obj })
         
     | 
| 
      
 65 
     | 
    
         
            +
                  end
         
     | 
| 
      
 66 
     | 
    
         
            +
                  # normal index retrieval
         
     | 
| 
      
 67 
     | 
    
         
            +
                  super
         
     | 
| 
      
 68 
     | 
    
         
            +
                end
         
     | 
| 
      
 69 
     | 
    
         
            +
                def wrap(obj)
         
     | 
| 
      
 70 
     | 
    
         
            +
                  return nil unless obj
         
     | 
| 
      
 71 
     | 
    
         
            +
                  return obj if obj.respond_to? :__getobj__
         
     | 
| 
      
 72 
     | 
    
         
            +
                  case obj.class.name
         
     | 
| 
      
 73 
     | 
    
         
            +
                  when "RTM::AR::TMDM::ItemIdentifier"
         
     | 
| 
      
 74 
     | 
    
         
            +
                    ItemIdentifier.wrap(obj)
         
     | 
| 
      
 75 
     | 
    
         
            +
                  when "RTM::AR::TMDM::SubjectIdentifier"
         
     | 
| 
      
 76 
     | 
    
         
            +
                    SubjectIdentifier.wrap(obj)
         
     | 
| 
      
 77 
     | 
    
         
            +
                  when "RTM::AR::TMDM::SubjectLocator"
         
     | 
| 
      
 78 
     | 
    
         
            +
                    SubjectLocator.wrap(obj)        
         
     | 
| 
      
 79 
     | 
    
         
            +
                  else
         
     | 
| 
      
 80 
     | 
    
         
            +
                    Locator.wrap(obj)
         
     | 
| 
      
 81 
     | 
    
         
            +
                  end
         
     | 
| 
      
 82 
     | 
    
         
            +
                end
         
     | 
| 
      
 83 
     | 
    
         
            +
              end
         
     | 
| 
      
 84 
     | 
    
         
            +
              
         
     | 
| 
      
 85 
     | 
    
         
            +
              class ItemIdentifiers < Locators
         
     | 
| 
      
 86 
     | 
    
         
            +
                def wrap(obj)
         
     | 
| 
      
 87 
     | 
    
         
            +
                  ItemIdentifier.wrap(obj)
         
     | 
| 
      
 88 
     | 
    
         
            +
                end      
         
     | 
| 
      
 89 
     | 
    
         
            +
              end
         
     | 
| 
      
 90 
     | 
    
         
            +
              class SubjectIdentifiers < Locators
         
     | 
| 
      
 91 
     | 
    
         
            +
                def wrap(obj)
         
     | 
| 
      
 92 
     | 
    
         
            +
                  SubjectIdentifier.wrap(obj)
         
     | 
| 
      
 93 
     | 
    
         
            +
                end      
         
     | 
| 
      
 94 
     | 
    
         
            +
                
         
     | 
| 
      
 95 
     | 
    
         
            +
              end
         
     | 
| 
      
 96 
     | 
    
         
            +
              class SubjectLocators < Locators
         
     | 
| 
      
 97 
     | 
    
         
            +
                def wrap(obj)
         
     | 
| 
      
 98 
     | 
    
         
            +
                  SubjectLocator.wrap(obj)
         
     | 
| 
      
 99 
     | 
    
         
            +
                end
         
     | 
| 
      
 100 
     | 
    
         
            +
              end
         
     | 
| 
      
 101 
     | 
    
         
            +
            end
         
     |