rubyrdf-sesame 0.0.1
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/History.txt +4 -0
 - data/License.txt +24 -0
 - data/Manifest.txt +28 -0
 - data/README.txt +84 -0
 - data/Rakefile +4 -0
 - data/config/hoe.rb +70 -0
 - data/config/requirements.rb +15 -0
 - data/lib/rdf/graph/sesame.rb +125 -0
 - data/lib/rdf/graph/sesame/version.rb +13 -0
 - data/lib/rdf/graph/sesame/xml_parser.rb +49 -0
 - data/lib/rubyrdf-sesame.rb +11 -0
 - data/log/debug.log +0 -0
 - data/script/console +11 -0
 - data/script/destroy +14 -0
 - data/script/generate +14 -0
 - data/script/txt2html +74 -0
 - data/setup.rb +1585 -0
 - data/tasks/deployment.rake +34 -0
 - data/tasks/environment.rake +7 -0
 - data/tasks/website.rake +17 -0
 - data/test/helper.rb +15 -0
 - data/test/test_sesame.rb +11 -0
 - data/test/test_xml_parser.rb +71 -0
 - data/website/index.html +154 -0
 - data/website/index.txt +85 -0
 - data/website/javascripts/rounded_corners_lite.inc.js +285 -0
 - data/website/stylesheets/screen.css +138 -0
 - data/website/template.html.erb +48 -0
 - metadata +104 -0
 
    
        data/History.txt
    ADDED
    
    
    
        data/License.txt
    ADDED
    
    | 
         @@ -0,0 +1,24 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Copyright (c) 2008 Paul Stadig
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            Redistribution and use in source and binary forms, with or without modification,
         
     | 
| 
      
 4 
     | 
    
         
            +
            are permitted provided that the following conditions are
         
     | 
| 
      
 5 
     | 
    
         
            +
            met:
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
               1. Redistributions of source code must retain the above copyright notice,
         
     | 
| 
      
 8 
     | 
    
         
            +
                  this list of conditions and the following disclaimer.
         
     | 
| 
      
 9 
     | 
    
         
            +
               2. Redistributions in binary form must reproduce the above copyright notice,
         
     | 
| 
      
 10 
     | 
    
         
            +
                  this list of conditions and the following disclaimer in the documentation
         
     | 
| 
      
 11 
     | 
    
         
            +
                  and/or other materials provided with the distribution.
         
     | 
| 
      
 12 
     | 
    
         
            +
               3. The name of the author may not be used to endorse or promote products
         
     | 
| 
      
 13 
     | 
    
         
            +
                  derived from this software without specific prior written permission.
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
         
     | 
| 
      
 16 
     | 
    
         
            +
            WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
         
     | 
| 
      
 17 
     | 
    
         
            +
            MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
         
     | 
| 
      
 18 
     | 
    
         
            +
            SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
         
     | 
| 
      
 19 
     | 
    
         
            +
            EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
         
     | 
| 
      
 20 
     | 
    
         
            +
            OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
         
     | 
| 
      
 21 
     | 
    
         
            +
            INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
         
     | 
| 
      
 22 
     | 
    
         
            +
            CONTRACT,STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
         
     | 
| 
      
 23 
     | 
    
         
            +
            IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
         
     | 
| 
      
 24 
     | 
    
         
            +
            OF SUCH DAMAGE.
         
     | 
    
        data/Manifest.txt
    ADDED
    
    | 
         @@ -0,0 +1,28 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            History.txt
         
     | 
| 
      
 2 
     | 
    
         
            +
            License.txt
         
     | 
| 
      
 3 
     | 
    
         
            +
            Manifest.txt
         
     | 
| 
      
 4 
     | 
    
         
            +
            README.txt
         
     | 
| 
      
 5 
     | 
    
         
            +
            Rakefile
         
     | 
| 
      
 6 
     | 
    
         
            +
            config/hoe.rb
         
     | 
| 
      
 7 
     | 
    
         
            +
            config/requirements.rb
         
     | 
| 
      
 8 
     | 
    
         
            +
            lib/rdf/graph/sesame.rb
         
     | 
| 
      
 9 
     | 
    
         
            +
            lib/rdf/graph/sesame/version.rb
         
     | 
| 
      
 10 
     | 
    
         
            +
            lib/rdf/graph/sesame/xml_parser.rb
         
     | 
| 
      
 11 
     | 
    
         
            +
            lib/rubyrdf-sesame.rb
         
     | 
| 
      
 12 
     | 
    
         
            +
            log/debug.log
         
     | 
| 
      
 13 
     | 
    
         
            +
            script/console
         
     | 
| 
      
 14 
     | 
    
         
            +
            script/destroy
         
     | 
| 
      
 15 
     | 
    
         
            +
            script/generate
         
     | 
| 
      
 16 
     | 
    
         
            +
            script/txt2html
         
     | 
| 
      
 17 
     | 
    
         
            +
            setup.rb
         
     | 
| 
      
 18 
     | 
    
         
            +
            tasks/deployment.rake
         
     | 
| 
      
 19 
     | 
    
         
            +
            tasks/environment.rake
         
     | 
| 
      
 20 
     | 
    
         
            +
            tasks/website.rake
         
     | 
| 
      
 21 
     | 
    
         
            +
            test/helper.rb
         
     | 
| 
      
 22 
     | 
    
         
            +
            test/test_sesame.rb
         
     | 
| 
      
 23 
     | 
    
         
            +
            test/test_xml_parser.rb
         
     | 
| 
      
 24 
     | 
    
         
            +
            website/index.html
         
     | 
| 
      
 25 
     | 
    
         
            +
            website/index.txt
         
     | 
| 
      
 26 
     | 
    
         
            +
            website/javascripts/rounded_corners_lite.inc.js
         
     | 
| 
      
 27 
     | 
    
         
            +
            website/stylesheets/screen.css
         
     | 
| 
      
 28 
     | 
    
         
            +
            website/template.html.erb
         
     | 
    
        data/README.txt
    ADDED
    
    | 
         @@ -0,0 +1,84 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            = rubyrdf-sesame
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            * {https://launchpad.net/rubyrdf-sesame/}[https://launchpad.net/rubyrdf-sesame/]
         
     | 
| 
      
 4 
     | 
    
         
            +
            * {http://rubyforge.org/rubyrdf/}[http://rubyforge.org/rubyrdf/]
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            == DESCRIPTION:
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            A RubyRDF graph implementation for the Sesame triple store.
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            == FEATURES/PROBLEMS:
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            * A RubyRDF graph implementation for the Sesame triple store.
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            == SYNOPSIS:
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            Can be used like any other RubyRDF graph:
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            === Adding data to a graph
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
              g = RDF::Graph::Sesame.new('http://openrdf.org/sesame/',
         
     | 
| 
      
 21 
     | 
    
         
            +
                                         'museum',
         
     | 
| 
      
 22 
     | 
    
         
            +
                                         'testuser',
         
     | 
| 
      
 23 
     | 
    
         
            +
                                         'opensesame')
         
     | 
| 
      
 24 
     | 
    
         
            +
              g.add(UriNode.new('http://paul.stadig.name/'), RDF::type, RDF::Resource)
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
            === Registering a new namespace
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
              RDF::Namespace.register(:dc, 'http://purl.org/dc/elements/1.1/')
         
     | 
| 
      
 29 
     | 
    
         
            +
              
         
     | 
| 
      
 30 
     | 
    
         
            +
              # you can also create instances of Triple and add them to the graph
         
     | 
| 
      
 31 
     | 
    
         
            +
              t = RDF::Triple.new(UriNode.new('http://paul.stadig.name/'), 
         
     | 
| 
      
 32 
     | 
    
         
            +
                                  DC::author, 
         
     | 
| 
      
 33 
     | 
    
         
            +
                                  g.new_blank_node('paul'))
         
     | 
| 
      
 34 
     | 
    
         
            +
              g.add(t)
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
            === Querying a graph
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
              q = Query.new
         
     | 
| 
      
 39 
     | 
    
         
            +
              q.select(:x, :y).where(:x, DC::author, :y)
         
     | 
| 
      
 40 
     | 
    
         
            +
              result = g.execute(q)
         
     | 
| 
      
 41 
     | 
    
         
            +
              result.bindings.each do |b|
         
     | 
| 
      
 42 
     | 
    
         
            +
                puts "x = #{b[:x]}"
         
     | 
| 
      
 43 
     | 
    
         
            +
                puts "y = #{b[:y]}"
         
     | 
| 
      
 44 
     | 
    
         
            +
              end
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
            == REQUIREMENTS:
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
            * ruby >= 1.8
         
     | 
| 
      
 49 
     | 
    
         
            +
            * rubygems >= 0.9.8
         
     | 
| 
      
 50 
     | 
    
         
            +
            * rubyrdf >= 0.0.1
         
     | 
| 
      
 51 
     | 
    
         
            +
            * mechanize >= 0.7.5
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
            == INSTALL:
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
            * sudo gem install rubyrdf-sesame
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
            == LICENSE:
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
      
 59 
     | 
    
         
            +
            (The BSD License (revised))
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
            Copyright (c) 2008 Paul Stadig
         
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
      
 63 
     | 
    
         
            +
            Redistribution and use in source and binary forms, with or without modification,
         
     | 
| 
      
 64 
     | 
    
         
            +
            are permitted provided that the following conditions are
         
     | 
| 
      
 65 
     | 
    
         
            +
            met:
         
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
      
 67 
     | 
    
         
            +
               1. Redistributions of source code must retain the above copyright notice,
         
     | 
| 
      
 68 
     | 
    
         
            +
                  this list of conditions and the following disclaimer.
         
     | 
| 
      
 69 
     | 
    
         
            +
               2. Redistributions in binary form must reproduce the above copyright notice,
         
     | 
| 
      
 70 
     | 
    
         
            +
                  this list of conditions and the following disclaimer in the documentation
         
     | 
| 
      
 71 
     | 
    
         
            +
                  and/or other materials provided with the distribution.
         
     | 
| 
      
 72 
     | 
    
         
            +
               3. The name of the author may not be used to endorse or promote products
         
     | 
| 
      
 73 
     | 
    
         
            +
                  derived from this software without specific prior written permission.
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
      
 75 
     | 
    
         
            +
            THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
         
     | 
| 
      
 76 
     | 
    
         
            +
            WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
         
     | 
| 
      
 77 
     | 
    
         
            +
            MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
         
     | 
| 
      
 78 
     | 
    
         
            +
            SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
         
     | 
| 
      
 79 
     | 
    
         
            +
            EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
         
     | 
| 
      
 80 
     | 
    
         
            +
            OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
         
     | 
| 
      
 81 
     | 
    
         
            +
            INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
         
     | 
| 
      
 82 
     | 
    
         
            +
            CONTRACT,STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
         
     | 
| 
      
 83 
     | 
    
         
            +
            IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
         
     | 
| 
      
 84 
     | 
    
         
            +
            OF SUCH DAMAGE.
         
     | 
    
        data/Rakefile
    ADDED
    
    
    
        data/config/hoe.rb
    ADDED
    
    | 
         @@ -0,0 +1,70 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'rdf/graph/sesame/version'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            AUTHOR = 'Paul Stadig'  # can also be an array of Authors
         
     | 
| 
      
 4 
     | 
    
         
            +
            EMAIL = 'paul@stadig.name'
         
     | 
| 
      
 5 
     | 
    
         
            +
            DESCRIPTION = 'A RubyRDF graph implementation for the Sesame triple store'
         
     | 
| 
      
 6 
     | 
    
         
            +
            GEM_NAME = 'rubyrdf-sesame' # what ppl will type to install your gem
         
     | 
| 
      
 7 
     | 
    
         
            +
            RUBYFORGE_PROJECT = 'rubyrdf' # The unix name for your project
         
     | 
| 
      
 8 
     | 
    
         
            +
            HOMEPATH = "http://#{RUBYFORGE_PROJECT}.rubyforge.org"
         
     | 
| 
      
 9 
     | 
    
         
            +
            DOWNLOAD_PATH = "http://rubyforge.org/projects/#{RUBYFORGE_PROJECT}"
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            @config_file = "~/.rubyforge/user-config.yml"
         
     | 
| 
      
 12 
     | 
    
         
            +
            @config = nil
         
     | 
| 
      
 13 
     | 
    
         
            +
            RUBYFORGE_USERNAME = "unknown"
         
     | 
| 
      
 14 
     | 
    
         
            +
            def rubyforge_username
         
     | 
| 
      
 15 
     | 
    
         
            +
              unless @config
         
     | 
| 
      
 16 
     | 
    
         
            +
                begin
         
     | 
| 
      
 17 
     | 
    
         
            +
                  @config = YAML.load(File.read(File.expand_path(@config_file)))
         
     | 
| 
      
 18 
     | 
    
         
            +
                rescue
         
     | 
| 
      
 19 
     | 
    
         
            +
                  puts <<-EOS
         
     | 
| 
      
 20 
     | 
    
         
            +
            ERROR: No rubyforge config file found: #{@config_file}
         
     | 
| 
      
 21 
     | 
    
         
            +
            Run 'rubyforge setup' to prepare your env for access to Rubyforge
         
     | 
| 
      
 22 
     | 
    
         
            +
             - See http://newgem.rubyforge.org/rubyforge.html for more details
         
     | 
| 
      
 23 
     | 
    
         
            +
                  EOS
         
     | 
| 
      
 24 
     | 
    
         
            +
                  exit
         
     | 
| 
      
 25 
     | 
    
         
            +
                end
         
     | 
| 
      
 26 
     | 
    
         
            +
              end
         
     | 
| 
      
 27 
     | 
    
         
            +
              RUBYFORGE_USERNAME.replace @config["username"]
         
     | 
| 
      
 28 
     | 
    
         
            +
            end
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
            REV = nil 
         
     | 
| 
      
 32 
     | 
    
         
            +
            # UNCOMMENT IF REQUIRED: 
         
     | 
| 
      
 33 
     | 
    
         
            +
            # REV = `svn info`.each {|line| if line =~ /^Revision:/ then k,v = line.split(': '); break v.chomp; else next; end} rescue nil
         
     | 
| 
      
 34 
     | 
    
         
            +
            VERS = RDF::Graph::Sesame::VERSION::STRING + (REV ? ".#{REV}" : "")
         
     | 
| 
      
 35 
     | 
    
         
            +
            RDOC_OPTS = ['--quiet', '--title', 'rubyrdf-sesame documentation',
         
     | 
| 
      
 36 
     | 
    
         
            +
                "--opname", "index.html",
         
     | 
| 
      
 37 
     | 
    
         
            +
                "--line-numbers", 
         
     | 
| 
      
 38 
     | 
    
         
            +
                "--main", "README",
         
     | 
| 
      
 39 
     | 
    
         
            +
                "--inline-source"]
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
            class Hoe
         
     | 
| 
      
 42 
     | 
    
         
            +
              def extra_deps 
         
     | 
| 
      
 43 
     | 
    
         
            +
                @extra_deps.reject! { |x| Array(x).first == 'hoe' } 
         
     | 
| 
      
 44 
     | 
    
         
            +
                @extra_deps
         
     | 
| 
      
 45 
     | 
    
         
            +
              end 
         
     | 
| 
      
 46 
     | 
    
         
            +
            end
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
            # Generate all the Rake tasks
         
     | 
| 
      
 49 
     | 
    
         
            +
            # Run 'rake -T' to see list of generated tasks (from gem root directory)
         
     | 
| 
      
 50 
     | 
    
         
            +
            $hoe = Hoe.new(GEM_NAME, VERS) do |p|
         
     | 
| 
      
 51 
     | 
    
         
            +
              p.developer(AUTHOR, EMAIL)
         
     | 
| 
      
 52 
     | 
    
         
            +
              p.description = DESCRIPTION
         
     | 
| 
      
 53 
     | 
    
         
            +
              p.summary = DESCRIPTION
         
     | 
| 
      
 54 
     | 
    
         
            +
              p.url = HOMEPATH
         
     | 
| 
      
 55 
     | 
    
         
            +
              p.rubyforge_name = RUBYFORGE_PROJECT if RUBYFORGE_PROJECT
         
     | 
| 
      
 56 
     | 
    
         
            +
              p.test_globs = ["test/**/test_*.rb"]
         
     | 
| 
      
 57 
     | 
    
         
            +
              p.clean_globs |= ['**/.*.sw?', '*.gem', '.config', '**/.DS_Store']  #An array of file patterns to delete on clean.
         
     | 
| 
      
 58 
     | 
    
         
            +
              
         
     | 
| 
      
 59 
     | 
    
         
            +
              # == Optional
         
     | 
| 
      
 60 
     | 
    
         
            +
              p.changes = p.paragraphs_of("History.txt", 0..1).join("\n\n")
         
     | 
| 
      
 61 
     | 
    
         
            +
              p.extra_deps = [['rubyrdf', '>=0.0.1'], ['mechanize', '>=0.7.5']]     # An array of rubygem dependencies [name, version], e.g. [ ['active_support', '>= 1.3.1'] ]
         
     | 
| 
      
 62 
     | 
    
         
            +
              
         
     | 
| 
      
 63 
     | 
    
         
            +
              #p.spec_extras = {}    # A hash of extra values to set in the gemspec.
         
     | 
| 
      
 64 
     | 
    
         
            +
              
         
     | 
| 
      
 65 
     | 
    
         
            +
            end
         
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
      
 67 
     | 
    
         
            +
            CHANGES = $hoe.paragraphs_of('History.txt', 0..1).join("\\n\\n")
         
     | 
| 
      
 68 
     | 
    
         
            +
            PATH    = (RUBYFORGE_PROJECT == GEM_NAME) ? RUBYFORGE_PROJECT : "#{RUBYFORGE_PROJECT}/#{GEM_NAME}"
         
     | 
| 
      
 69 
     | 
    
         
            +
            $hoe.remote_rdoc_dir = File.join(PATH.gsub(/^#{RUBYFORGE_PROJECT}\/?/,''), 'rdoc')
         
     | 
| 
      
 70 
     | 
    
         
            +
            $hoe.rsync_args = '-av --delete --ignore-errors'
         
     | 
| 
         @@ -0,0 +1,15 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'fileutils'
         
     | 
| 
      
 2 
     | 
    
         
            +
            include FileUtils
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            require 'rubygems'
         
     | 
| 
      
 5 
     | 
    
         
            +
            %w[rake hoe newgem rubigen].each do |req_gem|
         
     | 
| 
      
 6 
     | 
    
         
            +
              begin
         
     | 
| 
      
 7 
     | 
    
         
            +
                require req_gem
         
     | 
| 
      
 8 
     | 
    
         
            +
              rescue LoadError
         
     | 
| 
      
 9 
     | 
    
         
            +
                puts "This Rakefile requires the '#{req_gem}' RubyGem."
         
     | 
| 
      
 10 
     | 
    
         
            +
                puts "Installation: gem install #{req_gem} -y"
         
     | 
| 
      
 11 
     | 
    
         
            +
                exit
         
     | 
| 
      
 12 
     | 
    
         
            +
              end
         
     | 
| 
      
 13 
     | 
    
         
            +
            end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            $:.unshift(File.join(File.dirname(__FILE__), %w[.. lib]))
         
     | 
| 
         @@ -0,0 +1,125 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module RDF
         
     | 
| 
      
 2 
     | 
    
         
            +
              module Graph
         
     | 
| 
      
 3 
     | 
    
         
            +
                class Sesame < Base
         
     | 
| 
      
 4 
     | 
    
         
            +
                  attr_reader :host, :repository, :user
         
     | 
| 
      
 5 
     | 
    
         
            +
                  
         
     | 
| 
      
 6 
     | 
    
         
            +
                  def initialize(host, repository, user = nil, password = nil)
         
     | 
| 
      
 7 
     | 
    
         
            +
                    super()
         
     | 
| 
      
 8 
     | 
    
         
            +
                    @host, @repository = host, repository
         
     | 
| 
      
 9 
     | 
    
         
            +
                    @user = user
         
     | 
| 
      
 10 
     | 
    
         
            +
                    @agent = WWW::Mechanize.new
         
     | 
| 
      
 11 
     | 
    
         
            +
                    @agent.pluggable_parser['text/xml'] = XMLParser
         
     | 
| 
      
 12 
     | 
    
         
            +
                    unless user.to_s.empty?
         
     | 
| 
      
 13 
     | 
    
         
            +
                      options = {}
         
     | 
| 
      
 14 
     | 
    
         
            +
                      options['user'] = @user
         
     | 
| 
      
 15 
     | 
    
         
            +
                      options['password'] = password unless password.to_s.empty?
         
     | 
| 
      
 16 
     | 
    
         
            +
                      @agent.post("#{host}/servlets/login", options)
         
     | 
| 
      
 17 
     | 
    
         
            +
                    end
         
     | 
| 
      
 18 
     | 
    
         
            +
                  end
         
     | 
| 
      
 19 
     | 
    
         
            +
                  
         
     | 
| 
      
 20 
     | 
    
         
            +
                  def add(*triple)
         
     | 
| 
      
 21 
     | 
    
         
            +
                    triple = Triple.construct(*triple)
         
     | 
| 
      
 22 
     | 
    
         
            +
                    
         
     | 
| 
      
 23 
     | 
    
         
            +
                    raise RDF::UnassociatedBlankNodeError, "#{triple.subject} is not associated with this graph" if RDF::BlankNode?(triple.subject) && triple.subject.graph != self
         
     | 
| 
      
 24 
     | 
    
         
            +
                    raise RDF::UnassociatedBlankNodeError, "#{triple.object} is not associated with this graph" if RDF::BlankNode?(triple.object) && triple.object.graph != self
         
     | 
| 
      
 25 
     | 
    
         
            +
                    
         
     | 
| 
      
 26 
     | 
    
         
            +
                    @agent.post("#{host}/servlets/uploadData",
         
     | 
| 
      
 27 
     | 
    
         
            +
                      :repository => repository,
         
     | 
| 
      
 28 
     | 
    
         
            +
                      :data => triple.to_s,
         
     | 
| 
      
 29 
     | 
    
         
            +
                      :dataFormat => 'ntriples')
         
     | 
| 
      
 30 
     | 
    
         
            +
                  end
         
     | 
| 
      
 31 
     | 
    
         
            +
                  
         
     | 
| 
      
 32 
     | 
    
         
            +
                  def delete(*triple)
         
     | 
| 
      
 33 
     | 
    
         
            +
                    triple = Triple.construct(*triple)
         
     | 
| 
      
 34 
     | 
    
         
            +
                    @agent.post("#{host}/servlets/removeStatements",
         
     | 
| 
      
 35 
     | 
    
         
            +
                      :repository => repository,
         
     | 
| 
      
 36 
     | 
    
         
            +
                      :subject => triple.subject.to_s,
         
     | 
| 
      
 37 
     | 
    
         
            +
                      :predicate => triple.predicate.to_s,
         
     | 
| 
      
 38 
     | 
    
         
            +
                      :object => triple.object.to_s)
         
     | 
| 
      
 39 
     | 
    
         
            +
                  end
         
     | 
| 
      
 40 
     | 
    
         
            +
                  
         
     | 
| 
      
 41 
     | 
    
         
            +
                  def variable?(node)
         
     | 
| 
      
 42 
     | 
    
         
            +
                    node.is_a?(Symbol) || (RDF::BlankNode?(node) && node.graph != self)
         
     | 
| 
      
 43 
     | 
    
         
            +
                  end
         
     | 
| 
      
 44 
     | 
    
         
            +
                  
         
     | 
| 
      
 45 
     | 
    
         
            +
                  def match(s, p, o, result = nil)
         
     | 
| 
      
 46 
     | 
    
         
            +
                    result ||= RDF::Query::Result.new
         
     | 
| 
      
 47 
     | 
    
         
            +
                    map = {}
         
     | 
| 
      
 48 
     | 
    
         
            +
                    select = []
         
     | 
| 
      
 49 
     | 
    
         
            +
                    if variable?(s)
         
     | 
| 
      
 50 
     | 
    
         
            +
                      select << s
         
     | 
| 
      
 51 
     | 
    
         
            +
                      map[s] = RDF::BlankNode?(s) ? s.name : s.to_s
         
     | 
| 
      
 52 
     | 
    
         
            +
                    else
         
     | 
| 
      
 53 
     | 
    
         
            +
                      map[s] = s
         
     | 
| 
      
 54 
     | 
    
         
            +
                    end
         
     | 
| 
      
 55 
     | 
    
         
            +
                    
         
     | 
| 
      
 56 
     | 
    
         
            +
                    if variable?(p)
         
     | 
| 
      
 57 
     | 
    
         
            +
                      select << p
         
     | 
| 
      
 58 
     | 
    
         
            +
                      map[p] = RDF::BlankNode?(p) ? p.name : p.to_s
         
     | 
| 
      
 59 
     | 
    
         
            +
                    else
         
     | 
| 
      
 60 
     | 
    
         
            +
                      map[p] = p
         
     | 
| 
      
 61 
     | 
    
         
            +
                    end
         
     | 
| 
      
 62 
     | 
    
         
            +
                    
         
     | 
| 
      
 63 
     | 
    
         
            +
                    if variable?(o)
         
     | 
| 
      
 64 
     | 
    
         
            +
                      select << o
         
     | 
| 
      
 65 
     | 
    
         
            +
                      map[o] = RDF::BlankNode?(o) ? o.name : o.to_s
         
     | 
| 
      
 66 
     | 
    
         
            +
                    else
         
     | 
| 
      
 67 
     | 
    
         
            +
                      map[o] = o
         
     | 
| 
      
 68 
     | 
    
         
            +
                    end
         
     | 
| 
      
 69 
     | 
    
         
            +
                    
         
     | 
| 
      
 70 
     | 
    
         
            +
                    q = Query.new
         
     | 
| 
      
 71 
     | 
    
         
            +
                    if select.any?
         
     | 
| 
      
 72 
     | 
    
         
            +
                      q.select(select)
         
     | 
| 
      
 73 
     | 
    
         
            +
                    end
         
     | 
| 
      
 74 
     | 
    
         
            +
                    q.where(map[s], map[p], map[o])
         
     | 
| 
      
 75 
     | 
    
         
            +
                    execute(q)
         
     | 
| 
      
 76 
     | 
    
         
            +
                  end
         
     | 
| 
      
 77 
     | 
    
         
            +
                  
         
     | 
| 
      
 78 
     | 
    
         
            +
                  def execute(query)
         
     | 
| 
      
 79 
     | 
    
         
            +
                    query_string = "select "
         
     | 
| 
      
 80 
     | 
    
         
            +
                    if query.select_clause.any?
         
     | 
| 
      
 81 
     | 
    
         
            +
                      query_string += query.select_clause.join(", ")
         
     | 
| 
      
 82 
     | 
    
         
            +
                    else
         
     | 
| 
      
 83 
     | 
    
         
            +
                      query_string += " * "
         
     | 
| 
      
 84 
     | 
    
         
            +
                    end
         
     | 
| 
      
 85 
     | 
    
         
            +
                    
         
     | 
| 
      
 86 
     | 
    
         
            +
                    if query.where_clause.any?
         
     | 
| 
      
 87 
     | 
    
         
            +
                      query_string += " from " + 
         
     | 
| 
      
 88 
     | 
    
         
            +
                        query.where_clause.map{|w| "{#{to_q(w[0])}} #{to_q(w[1])} {#{to_q(w[2])}}"}.join(", ")
         
     | 
| 
      
 89 
     | 
    
         
            +
                    end
         
     | 
| 
      
 90 
     | 
    
         
            +
                    perform_select(query_string).result(self)
         
     | 
| 
      
 91 
     | 
    
         
            +
                  end
         
     | 
| 
      
 92 
     | 
    
         
            +
                  
         
     | 
| 
      
 93 
     | 
    
         
            +
                  def to_q(n)
         
     | 
| 
      
 94 
     | 
    
         
            +
                    RDF::BlankNode?(n) ? n.name : n.to_s
         
     | 
| 
      
 95 
     | 
    
         
            +
                  end
         
     | 
| 
      
 96 
     | 
    
         
            +
                  
         
     | 
| 
      
 97 
     | 
    
         
            +
                  def include?(*triple)
         
     | 
| 
      
 98 
     | 
    
         
            +
                    triple = Triple.construct(*triple)
         
     | 
| 
      
 99 
     | 
    
         
            +
                    perform_select("select Pred from {#{triple.subject}} Pred {#{triple.object}} where Pred = #{triple.predicate}").solution?
         
     | 
| 
      
 100 
     | 
    
         
            +
                  end
         
     | 
| 
      
 101 
     | 
    
         
            +
                  
         
     | 
| 
      
 102 
     | 
    
         
            +
                  def size
         
     | 
| 
      
 103 
     | 
    
         
            +
                    match(:s, :p, :o).bindings.size
         
     | 
| 
      
 104 
     | 
    
         
            +
                  end
         
     | 
| 
      
 105 
     | 
    
         
            +
                  
         
     | 
| 
      
 106 
     | 
    
         
            +
                  def clear
         
     | 
| 
      
 107 
     | 
    
         
            +
                    @agent.post("#{host}/servlets/clearRepository", :repository => repository)
         
     | 
| 
      
 108 
     | 
    
         
            +
                  end
         
     | 
| 
      
 109 
     | 
    
         
            +
                  
         
     | 
| 
      
 110 
     | 
    
         
            +
                  def perform_select(query)
         
     | 
| 
      
 111 
     | 
    
         
            +
                    #puts query
         
     | 
| 
      
 112 
     | 
    
         
            +
                    result = @agent.post("#{host}/servlets/evaluateTableQuery",
         
     | 
| 
      
 113 
     | 
    
         
            +
                                :repository => repository,
         
     | 
| 
      
 114 
     | 
    
         
            +
                                :query => query,
         
     | 
| 
      
 115 
     | 
    
         
            +
                                :queryLanguage => 'SeRQL',
         
     | 
| 
      
 116 
     | 
    
         
            +
                                :resultFormat => 'xml')
         
     | 
| 
      
 117 
     | 
    
         
            +
                    #puts result.header["Content-Type"]
         
     | 
| 
      
 118 
     | 
    
         
            +
                    #puts result.body
         
     | 
| 
      
 119 
     | 
    
         
            +
                    result
         
     | 
| 
      
 120 
     | 
    
         
            +
                  rescue WWW::Mechanize::ResponseCodeError
         
     | 
| 
      
 121 
     | 
    
         
            +
                    raise "invalid query '#{query}'"
         
     | 
| 
      
 122 
     | 
    
         
            +
                  end
         
     | 
| 
      
 123 
     | 
    
         
            +
                end
         
     | 
| 
      
 124 
     | 
    
         
            +
              end
         
     | 
| 
      
 125 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,49 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module RDF
         
     | 
| 
      
 2 
     | 
    
         
            +
              module Graph
         
     | 
| 
      
 3 
     | 
    
         
            +
                class Sesame
         
     | 
| 
      
 4 
     | 
    
         
            +
                  class XMLParser < WWW::Mechanize::File
         
     | 
| 
      
 5 
     | 
    
         
            +
                    attr_reader :parser
         
     | 
| 
      
 6 
     | 
    
         
            +
                    alias :root :parser
         
     | 
| 
      
 7 
     | 
    
         
            +
                    
         
     | 
| 
      
 8 
     | 
    
         
            +
                    def initialize(uri=nil, response=nil, body=nil, code=nil)
         
     | 
| 
      
 9 
     | 
    
         
            +
                      super(uri, response, body, code)
         
     | 
| 
      
 10 
     | 
    
         
            +
                      @parser = Hpricot.XML(body)
         
     | 
| 
      
 11 
     | 
    
         
            +
                    end
         
     | 
| 
      
 12 
     | 
    
         
            +
                    
         
     | 
| 
      
 13 
     | 
    
         
            +
                    def solution?
         
     | 
| 
      
 14 
     | 
    
         
            +
                      !@parser.search('tableQueryResult/tuple').empty?
         
     | 
| 
      
 15 
     | 
    
         
            +
                    end
         
     | 
| 
      
 16 
     | 
    
         
            +
                    
         
     | 
| 
      
 17 
     | 
    
         
            +
                    def result(graph)
         
     | 
| 
      
 18 
     | 
    
         
            +
                      header_map = []
         
     | 
| 
      
 19 
     | 
    
         
            +
                      @parser.search('tableQueryResult/header/columnName').each do |c|
         
     | 
| 
      
 20 
     | 
    
         
            +
                        header_map << c.inner_html
         
     | 
| 
      
 21 
     | 
    
         
            +
                      end
         
     | 
| 
      
 22 
     | 
    
         
            +
                      
         
     | 
| 
      
 23 
     | 
    
         
            +
                      @parser.search('tableQueryResult/tuple').inject(RDF::Query::Result.success!) do |r, row|
         
     | 
| 
      
 24 
     | 
    
         
            +
                        b = RDF::Query::Binding.new
         
     | 
| 
      
 25 
     | 
    
         
            +
                        header_map.each_with_index do |name, i|
         
     | 
| 
      
 26 
     | 
    
         
            +
                          b[name.to_sym] = parse_node(row.containers[i], graph)
         
     | 
| 
      
 27 
     | 
    
         
            +
                        end
         
     | 
| 
      
 28 
     | 
    
         
            +
                        r.bindings << b
         
     | 
| 
      
 29 
     | 
    
         
            +
                        r
         
     | 
| 
      
 30 
     | 
    
         
            +
                      end
         
     | 
| 
      
 31 
     | 
    
         
            +
                    end
         
     | 
| 
      
 32 
     | 
    
         
            +
                    
         
     | 
| 
      
 33 
     | 
    
         
            +
                    def parse_node(node, graph)
         
     | 
| 
      
 34 
     | 
    
         
            +
                      if node.name == 'uri'
         
     | 
| 
      
 35 
     | 
    
         
            +
                        RDF::UriNode.new(node.inner_html)
         
     | 
| 
      
 36 
     | 
    
         
            +
                      elsif node.name == 'bNode'
         
     | 
| 
      
 37 
     | 
    
         
            +
                        RDF::BlankNode.new(node.inner_html, graph)
         
     | 
| 
      
 38 
     | 
    
         
            +
                      elsif node.name == 'literal'
         
     | 
| 
      
 39 
     | 
    
         
            +
                        if node['datatype']
         
     | 
| 
      
 40 
     | 
    
         
            +
                          RDF::TypedLiteralNode.new(node.inner_html, node['datatype'])
         
     | 
| 
      
 41 
     | 
    
         
            +
                        elsif node['xml:lang']
         
     | 
| 
      
 42 
     | 
    
         
            +
                          RDF::PlainLiteralNode.new(node.inner_html, node['xml:lang'])
         
     | 
| 
      
 43 
     | 
    
         
            +
                        end
         
     | 
| 
      
 44 
     | 
    
         
            +
                      end
         
     | 
| 
      
 45 
     | 
    
         
            +
                    end
         
     | 
| 
      
 46 
     | 
    
         
            +
                  end
         
     | 
| 
      
 47 
     | 
    
         
            +
                end
         
     | 
| 
      
 48 
     | 
    
         
            +
              end
         
     | 
| 
      
 49 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,11 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            lib_dir = File.dirname(__FILE__)
         
     | 
| 
      
 2 
     | 
    
         
            +
            $:.unshift lib_dir unless $:.include?(lib_dir) || $:.include?(File.expand_path(lib_dir))
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            gem 'mechanize'
         
     | 
| 
      
 5 
     | 
    
         
            +
            require 'mechanize'
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            gem 'rubyrdf'
         
     | 
| 
      
 8 
     | 
    
         
            +
            require 'rubyrdf'
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            require 'rdf/graph/sesame'
         
     | 
| 
      
 11 
     | 
    
         
            +
            require 'rdf/graph/sesame/xml_parser'
         
     | 
    
        data/log/debug.log
    ADDED
    
    | 
         
            File without changes
         
     |