openlogic-rdf 0.3.6
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/AUTHORS +3 -0
 - data/CREDITS +9 -0
 - data/README +361 -0
 - data/UNLICENSE +24 -0
 - data/VERSION +1 -0
 - data/bin/rdf +18 -0
 - data/etc/doap.nt +62 -0
 - data/lib/df.rb +1 -0
 - data/lib/rdf/cli.rb +200 -0
 - data/lib/rdf/format.rb +383 -0
 - data/lib/rdf/mixin/countable.rb +39 -0
 - data/lib/rdf/mixin/durable.rb +31 -0
 - data/lib/rdf/mixin/enumerable.rb +637 -0
 - data/lib/rdf/mixin/indexable.rb +26 -0
 - data/lib/rdf/mixin/inferable.rb +5 -0
 - data/lib/rdf/mixin/mutable.rb +191 -0
 - data/lib/rdf/mixin/queryable.rb +265 -0
 - data/lib/rdf/mixin/readable.rb +15 -0
 - data/lib/rdf/mixin/type_check.rb +21 -0
 - data/lib/rdf/mixin/writable.rb +152 -0
 - data/lib/rdf/model/graph.rb +263 -0
 - data/lib/rdf/model/list.rb +731 -0
 - data/lib/rdf/model/literal/boolean.rb +121 -0
 - data/lib/rdf/model/literal/date.rb +73 -0
 - data/lib/rdf/model/literal/datetime.rb +72 -0
 - data/lib/rdf/model/literal/decimal.rb +86 -0
 - data/lib/rdf/model/literal/double.rb +189 -0
 - data/lib/rdf/model/literal/integer.rb +126 -0
 - data/lib/rdf/model/literal/numeric.rb +184 -0
 - data/lib/rdf/model/literal/time.rb +87 -0
 - data/lib/rdf/model/literal/token.rb +47 -0
 - data/lib/rdf/model/literal/xml.rb +39 -0
 - data/lib/rdf/model/literal.rb +373 -0
 - data/lib/rdf/model/node.rb +156 -0
 - data/lib/rdf/model/resource.rb +28 -0
 - data/lib/rdf/model/statement.rb +296 -0
 - data/lib/rdf/model/term.rb +77 -0
 - data/lib/rdf/model/uri.rb +570 -0
 - data/lib/rdf/model/value.rb +133 -0
 - data/lib/rdf/nquads.rb +152 -0
 - data/lib/rdf/ntriples/format.rb +48 -0
 - data/lib/rdf/ntriples/reader.rb +239 -0
 - data/lib/rdf/ntriples/writer.rb +219 -0
 - data/lib/rdf/ntriples.rb +104 -0
 - data/lib/rdf/query/pattern.rb +329 -0
 - data/lib/rdf/query/solution.rb +252 -0
 - data/lib/rdf/query/solutions.rb +237 -0
 - data/lib/rdf/query/variable.rb +221 -0
 - data/lib/rdf/query.rb +404 -0
 - data/lib/rdf/reader.rb +511 -0
 - data/lib/rdf/repository.rb +389 -0
 - data/lib/rdf/transaction.rb +161 -0
 - data/lib/rdf/util/aliasing.rb +63 -0
 - data/lib/rdf/util/cache.rb +139 -0
 - data/lib/rdf/util/file.rb +38 -0
 - data/lib/rdf/util/uuid.rb +36 -0
 - data/lib/rdf/util.rb +6 -0
 - data/lib/rdf/version.rb +19 -0
 - data/lib/rdf/vocab/cc.rb +18 -0
 - data/lib/rdf/vocab/cert.rb +13 -0
 - data/lib/rdf/vocab/dc.rb +63 -0
 - data/lib/rdf/vocab/dc11.rb +23 -0
 - data/lib/rdf/vocab/doap.rb +45 -0
 - data/lib/rdf/vocab/exif.rb +168 -0
 - data/lib/rdf/vocab/foaf.rb +69 -0
 - data/lib/rdf/vocab/geo.rb +13 -0
 - data/lib/rdf/vocab/http.rb +26 -0
 - data/lib/rdf/vocab/owl.rb +59 -0
 - data/lib/rdf/vocab/rdfs.rb +17 -0
 - data/lib/rdf/vocab/rsa.rb +12 -0
 - data/lib/rdf/vocab/rss.rb +14 -0
 - data/lib/rdf/vocab/sioc.rb +93 -0
 - data/lib/rdf/vocab/skos.rb +36 -0
 - data/lib/rdf/vocab/wot.rb +21 -0
 - data/lib/rdf/vocab/xhtml.rb +9 -0
 - data/lib/rdf/vocab/xsd.rb +58 -0
 - data/lib/rdf/vocab.rb +215 -0
 - data/lib/rdf/writer.rb +475 -0
 - data/lib/rdf.rb +192 -0
 - metadata +173 -0
 
| 
         @@ -0,0 +1,296 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module RDF
         
     | 
| 
      
 2 
     | 
    
         
            +
              ##
         
     | 
| 
      
 3 
     | 
    
         
            +
              # An RDF statement.
         
     | 
| 
      
 4 
     | 
    
         
            +
              #
         
     | 
| 
      
 5 
     | 
    
         
            +
              # @example Creating an RDF statement
         
     | 
| 
      
 6 
     | 
    
         
            +
              #   s = RDF::URI.new("http://rubygems.org/gems/rdf")
         
     | 
| 
      
 7 
     | 
    
         
            +
              #   p = RDF::DC.creator
         
     | 
| 
      
 8 
     | 
    
         
            +
              #   o = RDF::URI.new("http://ar.to/#self")
         
     | 
| 
      
 9 
     | 
    
         
            +
              #   RDF::Statement.new(s, p, o)
         
     | 
| 
      
 10 
     | 
    
         
            +
              #
         
     | 
| 
      
 11 
     | 
    
         
            +
              # @example Creating an RDF statement with a context
         
     | 
| 
      
 12 
     | 
    
         
            +
              #   RDF::Statement.new(s, p, o, :context => uri)
         
     | 
| 
      
 13 
     | 
    
         
            +
              #
         
     | 
| 
      
 14 
     | 
    
         
            +
              # @example Creating an RDF statement from a `Hash`
         
     | 
| 
      
 15 
     | 
    
         
            +
              #   RDF::Statement.new({
         
     | 
| 
      
 16 
     | 
    
         
            +
              #     :subject   => RDF::URI.new("http://rubygems.org/gems/rdf"),
         
     | 
| 
      
 17 
     | 
    
         
            +
              #     :predicate => RDF::DC.creator,
         
     | 
| 
      
 18 
     | 
    
         
            +
              #     :object    => RDF::URI.new("http://ar.to/#self"),
         
     | 
| 
      
 19 
     | 
    
         
            +
              #   })
         
     | 
| 
      
 20 
     | 
    
         
            +
              #
         
     | 
| 
      
 21 
     | 
    
         
            +
              class Statement
         
     | 
| 
      
 22 
     | 
    
         
            +
                include RDF::Value
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                ##
         
     | 
| 
      
 25 
     | 
    
         
            +
                # @private
         
     | 
| 
      
 26 
     | 
    
         
            +
                # @since 0.2.2
         
     | 
| 
      
 27 
     | 
    
         
            +
                def self.from(statement, options = {})
         
     | 
| 
      
 28 
     | 
    
         
            +
                  case statement
         
     | 
| 
      
 29 
     | 
    
         
            +
                    when Array, Query::Pattern
         
     | 
| 
      
 30 
     | 
    
         
            +
                      context = statement[3] == false ? nil : statement[3]
         
     | 
| 
      
 31 
     | 
    
         
            +
                      self.new(statement[0], statement[1], statement[2], options.merge(:context => context))
         
     | 
| 
      
 32 
     | 
    
         
            +
                    when Statement then statement
         
     | 
| 
      
 33 
     | 
    
         
            +
                    when Hash      then self.new(options.merge(statement))
         
     | 
| 
      
 34 
     | 
    
         
            +
                    else raise ArgumentError, "expected RDF::Statement, Hash, or Array, but got #{statement.inspect}"
         
     | 
| 
      
 35 
     | 
    
         
            +
                  end
         
     | 
| 
      
 36 
     | 
    
         
            +
                end
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
                # @return [Object]
         
     | 
| 
      
 39 
     | 
    
         
            +
                attr_accessor :id
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
                # @return [RDF::Resource]
         
     | 
| 
      
 42 
     | 
    
         
            +
                attr_accessor :context
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
                # @return [RDF::Resource]
         
     | 
| 
      
 45 
     | 
    
         
            +
                attr_accessor :subject
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
                # @return [RDF::URI]
         
     | 
| 
      
 48 
     | 
    
         
            +
                attr_accessor :predicate
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
                # @return [RDF::Term]
         
     | 
| 
      
 51 
     | 
    
         
            +
                attr_accessor :object
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
                ##
         
     | 
| 
      
 54 
     | 
    
         
            +
                # @overload initialize(options = {})
         
     | 
| 
      
 55 
     | 
    
         
            +
                #   @param  [Hash{Symbol => Object}] options
         
     | 
| 
      
 56 
     | 
    
         
            +
                #   @option options [RDF::Resource]  :subject   (nil)
         
     | 
| 
      
 57 
     | 
    
         
            +
                #   @option options [RDF::URI]       :predicate (nil)
         
     | 
| 
      
 58 
     | 
    
         
            +
                #   @option options [RDF::Term]      :object    (nil)
         
     | 
| 
      
 59 
     | 
    
         
            +
                #   @option options [RDF::Resource]  :context   (nil)
         
     | 
| 
      
 60 
     | 
    
         
            +
                #
         
     | 
| 
      
 61 
     | 
    
         
            +
                # @overload initialize(subject, predicate, object, options = {})
         
     | 
| 
      
 62 
     | 
    
         
            +
                #   @param  [RDF::Resource]          subject
         
     | 
| 
      
 63 
     | 
    
         
            +
                #   @param  [RDF::URI]               predicate
         
     | 
| 
      
 64 
     | 
    
         
            +
                #   @param  [RDF::Term]              object
         
     | 
| 
      
 65 
     | 
    
         
            +
                #   @param  [Hash{Symbol => Object}] options
         
     | 
| 
      
 66 
     | 
    
         
            +
                #   @option options [RDF::Resource]  :context   (nil)
         
     | 
| 
      
 67 
     | 
    
         
            +
                def initialize(subject = nil, predicate = nil, object = nil, options = {})
         
     | 
| 
      
 68 
     | 
    
         
            +
                  case subject
         
     | 
| 
      
 69 
     | 
    
         
            +
                    when Hash
         
     | 
| 
      
 70 
     | 
    
         
            +
                      @options   = subject.dup
         
     | 
| 
      
 71 
     | 
    
         
            +
                      @subject   = @options.delete(:subject)
         
     | 
| 
      
 72 
     | 
    
         
            +
                      @predicate = @options.delete(:predicate)
         
     | 
| 
      
 73 
     | 
    
         
            +
                      @object    = @options.delete(:object)
         
     | 
| 
      
 74 
     | 
    
         
            +
                    else
         
     | 
| 
      
 75 
     | 
    
         
            +
                      @options   = !options.empty? ? options.dup : {}
         
     | 
| 
      
 76 
     | 
    
         
            +
                      @subject   = subject
         
     | 
| 
      
 77 
     | 
    
         
            +
                      @predicate = predicate
         
     | 
| 
      
 78 
     | 
    
         
            +
                      @object    = object
         
     | 
| 
      
 79 
     | 
    
         
            +
                  end
         
     | 
| 
      
 80 
     | 
    
         
            +
                  @id      = @options.delete(:id) if @options.has_key?(:id)
         
     | 
| 
      
 81 
     | 
    
         
            +
                  @context = @options.delete(:context)
         
     | 
| 
      
 82 
     | 
    
         
            +
                  initialize!
         
     | 
| 
      
 83 
     | 
    
         
            +
                end
         
     | 
| 
      
 84 
     | 
    
         
            +
             
     | 
| 
      
 85 
     | 
    
         
            +
                ##
         
     | 
| 
      
 86 
     | 
    
         
            +
                # @private
         
     | 
| 
      
 87 
     | 
    
         
            +
                def initialize!
         
     | 
| 
      
 88 
     | 
    
         
            +
                  @context   = Node.intern(@context)   if @context.is_a?(Symbol)
         
     | 
| 
      
 89 
     | 
    
         
            +
                  @subject   = Node.intern(@subject)   if @subject.is_a?(Symbol)
         
     | 
| 
      
 90 
     | 
    
         
            +
                  @predicate = Node.intern(@predicate) if @predicate.is_a?(Symbol)
         
     | 
| 
      
 91 
     | 
    
         
            +
                  @object    = case @object
         
     | 
| 
      
 92 
     | 
    
         
            +
                    when nil    then nil
         
     | 
| 
      
 93 
     | 
    
         
            +
                    when Symbol then Node.intern(@object)
         
     | 
| 
      
 94 
     | 
    
         
            +
                    when Term   then @object
         
     | 
| 
      
 95 
     | 
    
         
            +
                    else Literal.new(@object)
         
     | 
| 
      
 96 
     | 
    
         
            +
                  end
         
     | 
| 
      
 97 
     | 
    
         
            +
                end
         
     | 
| 
      
 98 
     | 
    
         
            +
             
     | 
| 
      
 99 
     | 
    
         
            +
                ##
         
     | 
| 
      
 100 
     | 
    
         
            +
                # Returns `true` to indicate that this value is a statement.
         
     | 
| 
      
 101 
     | 
    
         
            +
                #
         
     | 
| 
      
 102 
     | 
    
         
            +
                # @return [Boolean]
         
     | 
| 
      
 103 
     | 
    
         
            +
                def statement?
         
     | 
| 
      
 104 
     | 
    
         
            +
                  true
         
     | 
| 
      
 105 
     | 
    
         
            +
                end
         
     | 
| 
      
 106 
     | 
    
         
            +
             
     | 
| 
      
 107 
     | 
    
         
            +
                ##
         
     | 
| 
      
 108 
     | 
    
         
            +
                # @return [Boolean]
         
     | 
| 
      
 109 
     | 
    
         
            +
                def invalid?
         
     | 
| 
      
 110 
     | 
    
         
            +
                  !valid?
         
     | 
| 
      
 111 
     | 
    
         
            +
                end
         
     | 
| 
      
 112 
     | 
    
         
            +
             
     | 
| 
      
 113 
     | 
    
         
            +
                ##
         
     | 
| 
      
 114 
     | 
    
         
            +
                # @return [Boolean]
         
     | 
| 
      
 115 
     | 
    
         
            +
                def valid?
         
     | 
| 
      
 116 
     | 
    
         
            +
                  has_subject? && has_predicate? && has_object?
         
     | 
| 
      
 117 
     | 
    
         
            +
                end
         
     | 
| 
      
 118 
     | 
    
         
            +
             
     | 
| 
      
 119 
     | 
    
         
            +
                ##
         
     | 
| 
      
 120 
     | 
    
         
            +
                # @return [Boolean]
         
     | 
| 
      
 121 
     | 
    
         
            +
                def asserted?
         
     | 
| 
      
 122 
     | 
    
         
            +
                  !quoted?
         
     | 
| 
      
 123 
     | 
    
         
            +
                end
         
     | 
| 
      
 124 
     | 
    
         
            +
             
     | 
| 
      
 125 
     | 
    
         
            +
                ##
         
     | 
| 
      
 126 
     | 
    
         
            +
                # @return [Boolean]
         
     | 
| 
      
 127 
     | 
    
         
            +
                def quoted?
         
     | 
| 
      
 128 
     | 
    
         
            +
                  false
         
     | 
| 
      
 129 
     | 
    
         
            +
                end
         
     | 
| 
      
 130 
     | 
    
         
            +
             
     | 
| 
      
 131 
     | 
    
         
            +
                ##
         
     | 
| 
      
 132 
     | 
    
         
            +
                # @return [Boolean]
         
     | 
| 
      
 133 
     | 
    
         
            +
                def inferred?
         
     | 
| 
      
 134 
     | 
    
         
            +
                  false
         
     | 
| 
      
 135 
     | 
    
         
            +
                end
         
     | 
| 
      
 136 
     | 
    
         
            +
             
     | 
| 
      
 137 
     | 
    
         
            +
                ##
         
     | 
| 
      
 138 
     | 
    
         
            +
                # @return [Boolean]
         
     | 
| 
      
 139 
     | 
    
         
            +
                def has_graph?
         
     | 
| 
      
 140 
     | 
    
         
            +
                  has_context?
         
     | 
| 
      
 141 
     | 
    
         
            +
                end
         
     | 
| 
      
 142 
     | 
    
         
            +
             
     | 
| 
      
 143 
     | 
    
         
            +
                ##
         
     | 
| 
      
 144 
     | 
    
         
            +
                # @return [Boolean]
         
     | 
| 
      
 145 
     | 
    
         
            +
                def has_context?
         
     | 
| 
      
 146 
     | 
    
         
            +
                  !!context
         
     | 
| 
      
 147 
     | 
    
         
            +
                end
         
     | 
| 
      
 148 
     | 
    
         
            +
             
     | 
| 
      
 149 
     | 
    
         
            +
                ##
         
     | 
| 
      
 150 
     | 
    
         
            +
                # @return [Boolean]
         
     | 
| 
      
 151 
     | 
    
         
            +
                def has_subject?
         
     | 
| 
      
 152 
     | 
    
         
            +
                  !!subject
         
     | 
| 
      
 153 
     | 
    
         
            +
                end
         
     | 
| 
      
 154 
     | 
    
         
            +
             
     | 
| 
      
 155 
     | 
    
         
            +
                ##
         
     | 
| 
      
 156 
     | 
    
         
            +
                # @return [Boolean]
         
     | 
| 
      
 157 
     | 
    
         
            +
                def has_predicate?
         
     | 
| 
      
 158 
     | 
    
         
            +
                  !!predicate
         
     | 
| 
      
 159 
     | 
    
         
            +
                end
         
     | 
| 
      
 160 
     | 
    
         
            +
             
     | 
| 
      
 161 
     | 
    
         
            +
                ##
         
     | 
| 
      
 162 
     | 
    
         
            +
                # @return [Boolean]
         
     | 
| 
      
 163 
     | 
    
         
            +
                def has_object?
         
     | 
| 
      
 164 
     | 
    
         
            +
                  !!object
         
     | 
| 
      
 165 
     | 
    
         
            +
                end
         
     | 
| 
      
 166 
     | 
    
         
            +
             
     | 
| 
      
 167 
     | 
    
         
            +
                ##
         
     | 
| 
      
 168 
     | 
    
         
            +
                # Returns `true` if the subject or object of this statement is a blank
         
     | 
| 
      
 169 
     | 
    
         
            +
                # node.
         
     | 
| 
      
 170 
     | 
    
         
            +
                #
         
     | 
| 
      
 171 
     | 
    
         
            +
                # @return [Boolean]
         
     | 
| 
      
 172 
     | 
    
         
            +
                def has_blank_nodes?
         
     | 
| 
      
 173 
     | 
    
         
            +
                  (has_object? && object.node?) || (has_subject? && subject.node?)
         
     | 
| 
      
 174 
     | 
    
         
            +
                end
         
     | 
| 
      
 175 
     | 
    
         
            +
             
     | 
| 
      
 176 
     | 
    
         
            +
                ##
         
     | 
| 
      
 177 
     | 
    
         
            +
                # @param  [Statement] other
         
     | 
| 
      
 178 
     | 
    
         
            +
                # @return [Boolean]
         
     | 
| 
      
 179 
     | 
    
         
            +
                def eql?(other)
         
     | 
| 
      
 180 
     | 
    
         
            +
                  other.is_a?(Statement) && self == other && (self.context || false) == (other.context || false)
         
     | 
| 
      
 181 
     | 
    
         
            +
                end
         
     | 
| 
      
 182 
     | 
    
         
            +
             
     | 
| 
      
 183 
     | 
    
         
            +
                ##
         
     | 
| 
      
 184 
     | 
    
         
            +
                # @param  [Object] other
         
     | 
| 
      
 185 
     | 
    
         
            +
                # @return [Boolean]
         
     | 
| 
      
 186 
     | 
    
         
            +
                def ==(other)
         
     | 
| 
      
 187 
     | 
    
         
            +
                  to_a == other.to_a
         
     | 
| 
      
 188 
     | 
    
         
            +
                end
         
     | 
| 
      
 189 
     | 
    
         
            +
             
     | 
| 
      
 190 
     | 
    
         
            +
                ##
         
     | 
| 
      
 191 
     | 
    
         
            +
                # @param  [Statement] other
         
     | 
| 
      
 192 
     | 
    
         
            +
                # @return [Boolean]
         
     | 
| 
      
 193 
     | 
    
         
            +
                def ===(other)
         
     | 
| 
      
 194 
     | 
    
         
            +
                  return false if has_context?   && !context.eql?(other.context)
         
     | 
| 
      
 195 
     | 
    
         
            +
                  return false if has_subject?   && !subject.eql?(other.subject)
         
     | 
| 
      
 196 
     | 
    
         
            +
                  return false if has_predicate? && !predicate.eql?(other.predicate)
         
     | 
| 
      
 197 
     | 
    
         
            +
                  return false if has_object?    && !object.eql?(other.object)
         
     | 
| 
      
 198 
     | 
    
         
            +
                  return true
         
     | 
| 
      
 199 
     | 
    
         
            +
                end
         
     | 
| 
      
 200 
     | 
    
         
            +
             
     | 
| 
      
 201 
     | 
    
         
            +
                ##
         
     | 
| 
      
 202 
     | 
    
         
            +
                # @param  [Integer] index
         
     | 
| 
      
 203 
     | 
    
         
            +
                # @return [RDF::Term]
         
     | 
| 
      
 204 
     | 
    
         
            +
                def [](index)
         
     | 
| 
      
 205 
     | 
    
         
            +
                  case index
         
     | 
| 
      
 206 
     | 
    
         
            +
                    when 0 then self.subject
         
     | 
| 
      
 207 
     | 
    
         
            +
                    when 1 then self.predicate
         
     | 
| 
      
 208 
     | 
    
         
            +
                    when 2 then self.object
         
     | 
| 
      
 209 
     | 
    
         
            +
                    when 3 then self.context
         
     | 
| 
      
 210 
     | 
    
         
            +
                    else nil
         
     | 
| 
      
 211 
     | 
    
         
            +
                  end
         
     | 
| 
      
 212 
     | 
    
         
            +
                end
         
     | 
| 
      
 213 
     | 
    
         
            +
             
     | 
| 
      
 214 
     | 
    
         
            +
                ##
         
     | 
| 
      
 215 
     | 
    
         
            +
                # @param  [Integer]    index
         
     | 
| 
      
 216 
     | 
    
         
            +
                # @param  [RDF::Term] value
         
     | 
| 
      
 217 
     | 
    
         
            +
                # @return [RDF::Term]
         
     | 
| 
      
 218 
     | 
    
         
            +
                def []=(index, value)
         
     | 
| 
      
 219 
     | 
    
         
            +
                  case index
         
     | 
| 
      
 220 
     | 
    
         
            +
                    when 0 then self.subject   = value
         
     | 
| 
      
 221 
     | 
    
         
            +
                    when 1 then self.predicate = value
         
     | 
| 
      
 222 
     | 
    
         
            +
                    when 2 then self.object    = value
         
     | 
| 
      
 223 
     | 
    
         
            +
                    when 3 then self.context   = value
         
     | 
| 
      
 224 
     | 
    
         
            +
                    else nil
         
     | 
| 
      
 225 
     | 
    
         
            +
                  end
         
     | 
| 
      
 226 
     | 
    
         
            +
                end
         
     | 
| 
      
 227 
     | 
    
         
            +
             
     | 
| 
      
 228 
     | 
    
         
            +
                ##
         
     | 
| 
      
 229 
     | 
    
         
            +
                # @return [Array(RDF::Term)]
         
     | 
| 
      
 230 
     | 
    
         
            +
                def to_quad
         
     | 
| 
      
 231 
     | 
    
         
            +
                  [subject, predicate, object, context]
         
     | 
| 
      
 232 
     | 
    
         
            +
                end
         
     | 
| 
      
 233 
     | 
    
         
            +
             
     | 
| 
      
 234 
     | 
    
         
            +
                ##
         
     | 
| 
      
 235 
     | 
    
         
            +
                # @return [Array(RDF::Term)]
         
     | 
| 
      
 236 
     | 
    
         
            +
                def to_triple
         
     | 
| 
      
 237 
     | 
    
         
            +
                  [subject, predicate, object]
         
     | 
| 
      
 238 
     | 
    
         
            +
                end
         
     | 
| 
      
 239 
     | 
    
         
            +
             
     | 
| 
      
 240 
     | 
    
         
            +
                alias_method :to_a,   :to_triple
         
     | 
| 
      
 241 
     | 
    
         
            +
                alias_method :to_ary, :to_triple
         
     | 
| 
      
 242 
     | 
    
         
            +
             
     | 
| 
      
 243 
     | 
    
         
            +
                ##
         
     | 
| 
      
 244 
     | 
    
         
            +
                # Returns the terms of this statement as a `Hash`.
         
     | 
| 
      
 245 
     | 
    
         
            +
                #
         
     | 
| 
      
 246 
     | 
    
         
            +
                # @param  [Symbol] subject_key
         
     | 
| 
      
 247 
     | 
    
         
            +
                # @param  [Symbol] predicate_key
         
     | 
| 
      
 248 
     | 
    
         
            +
                # @param  [Symbol] object_key
         
     | 
| 
      
 249 
     | 
    
         
            +
                # @return [Hash{Symbol => RDF::Term}]
         
     | 
| 
      
 250 
     | 
    
         
            +
                def to_hash(subject_key = :subject, predicate_key = :predicate, object_key = :object, context_key = :context)
         
     | 
| 
      
 251 
     | 
    
         
            +
                  {subject_key => subject, predicate_key => predicate, object_key => object, context_key => context}
         
     | 
| 
      
 252 
     | 
    
         
            +
                end
         
     | 
| 
      
 253 
     | 
    
         
            +
             
     | 
| 
      
 254 
     | 
    
         
            +
                ##
         
     | 
| 
      
 255 
     | 
    
         
            +
                # Returns a string representation of this statement.
         
     | 
| 
      
 256 
     | 
    
         
            +
                #
         
     | 
| 
      
 257 
     | 
    
         
            +
                # @return [String]
         
     | 
| 
      
 258 
     | 
    
         
            +
                def to_s
         
     | 
| 
      
 259 
     | 
    
         
            +
                  StringIO.open do |buffer|
         
     | 
| 
      
 260 
     | 
    
         
            +
                    buffer << case subject
         
     | 
| 
      
 261 
     | 
    
         
            +
                      when RDF::Node    then subject.to_s
         
     | 
| 
      
 262 
     | 
    
         
            +
                      when RDF::URI     then "<#{subject}>"
         
     | 
| 
      
 263 
     | 
    
         
            +
                      else subject.inspect
         
     | 
| 
      
 264 
     | 
    
         
            +
                    end
         
     | 
| 
      
 265 
     | 
    
         
            +
                    buffer << " <#{predicate}> "
         
     | 
| 
      
 266 
     | 
    
         
            +
                    buffer << case object
         
     | 
| 
      
 267 
     | 
    
         
            +
                      when RDF::Literal then object.to_s
         
     | 
| 
      
 268 
     | 
    
         
            +
                      when RDF::Node    then object.to_s
         
     | 
| 
      
 269 
     | 
    
         
            +
                      when RDF::URI     then "<#{object}>"
         
     | 
| 
      
 270 
     | 
    
         
            +
                      else object.inspect
         
     | 
| 
      
 271 
     | 
    
         
            +
                    end
         
     | 
| 
      
 272 
     | 
    
         
            +
                    buffer << case context
         
     | 
| 
      
 273 
     | 
    
         
            +
                      when nil then " ."
         
     | 
| 
      
 274 
     | 
    
         
            +
                      else " <#{context}> ."
         
     | 
| 
      
 275 
     | 
    
         
            +
                    end
         
     | 
| 
      
 276 
     | 
    
         
            +
                    buffer.string
         
     | 
| 
      
 277 
     | 
    
         
            +
                  end
         
     | 
| 
      
 278 
     | 
    
         
            +
                end
         
     | 
| 
      
 279 
     | 
    
         
            +
             
     | 
| 
      
 280 
     | 
    
         
            +
                ##
         
     | 
| 
      
 281 
     | 
    
         
            +
                # Returns a graph containing this statement in reified form.
         
     | 
| 
      
 282 
     | 
    
         
            +
                #
         
     | 
| 
      
 283 
     | 
    
         
            +
                # @param  [Hash{Symbol => Object}] options
         
     | 
| 
      
 284 
     | 
    
         
            +
                # @return [RDF::Graph]
         
     | 
| 
      
 285 
     | 
    
         
            +
                # @see    http://www.w3.org/TR/rdf-primer/#reification
         
     | 
| 
      
 286 
     | 
    
         
            +
                def reified(options = {})
         
     | 
| 
      
 287 
     | 
    
         
            +
                  RDF::Graph.new(options[:context]) do |graph|
         
     | 
| 
      
 288 
     | 
    
         
            +
                    subject = options[:subject] || RDF::Node.new(options[:id])
         
     | 
| 
      
 289 
     | 
    
         
            +
                    graph << [subject, RDF.type,      RDF[:Statement]]
         
     | 
| 
      
 290 
     | 
    
         
            +
                    graph << [subject, RDF.subject,   self.subject]
         
     | 
| 
      
 291 
     | 
    
         
            +
                    graph << [subject, RDF.predicate, self.predicate]
         
     | 
| 
      
 292 
     | 
    
         
            +
                    graph << [subject, RDF.object,    self.object]
         
     | 
| 
      
 293 
     | 
    
         
            +
                  end
         
     | 
| 
      
 294 
     | 
    
         
            +
                end
         
     | 
| 
      
 295 
     | 
    
         
            +
              end
         
     | 
| 
      
 296 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,77 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module RDF
         
     | 
| 
      
 2 
     | 
    
         
            +
              ##
         
     | 
| 
      
 3 
     | 
    
         
            +
              # An RDF term.
         
     | 
| 
      
 4 
     | 
    
         
            +
              #
         
     | 
| 
      
 5 
     | 
    
         
            +
              # Terms can be used as subjects, predicates, objects, and contexts of
         
     | 
| 
      
 6 
     | 
    
         
            +
              # statements.
         
     | 
| 
      
 7 
     | 
    
         
            +
              #
         
     | 
| 
      
 8 
     | 
    
         
            +
              # @since 0.3.0
         
     | 
| 
      
 9 
     | 
    
         
            +
              module Term
         
     | 
| 
      
 10 
     | 
    
         
            +
                include RDF::Value
         
     | 
| 
      
 11 
     | 
    
         
            +
                include Comparable
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                ##
         
     | 
| 
      
 14 
     | 
    
         
            +
                # Compares `self` to `other` for sorting purposes.
         
     | 
| 
      
 15 
     | 
    
         
            +
                #
         
     | 
| 
      
 16 
     | 
    
         
            +
                # Subclasses should override this to provide a more meaningful
         
     | 
| 
      
 17 
     | 
    
         
            +
                # implementation than the default which simply performs a string
         
     | 
| 
      
 18 
     | 
    
         
            +
                # comparison based on `#to_s`.
         
     | 
| 
      
 19 
     | 
    
         
            +
                #
         
     | 
| 
      
 20 
     | 
    
         
            +
                # @abstract
         
     | 
| 
      
 21 
     | 
    
         
            +
                # @param  [Object]  other
         
     | 
| 
      
 22 
     | 
    
         
            +
                # @return [Integer] `-1`, `0`, or `1`
         
     | 
| 
      
 23 
     | 
    
         
            +
                def <=>(other)
         
     | 
| 
      
 24 
     | 
    
         
            +
                  self.to_s <=> other.to_s
         
     | 
| 
      
 25 
     | 
    
         
            +
                end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
                ##
         
     | 
| 
      
 28 
     | 
    
         
            +
                # Compares `self` to `other` to implement RDFterm-equal.
         
     | 
| 
      
 29 
     | 
    
         
            +
                #
         
     | 
| 
      
 30 
     | 
    
         
            +
                # Subclasses should override this to provide a more meaningful
         
     | 
| 
      
 31 
     | 
    
         
            +
                # implementation than the default which simply performs a string
         
     | 
| 
      
 32 
     | 
    
         
            +
                # comparison based on `#to_s`.
         
     | 
| 
      
 33 
     | 
    
         
            +
                #
         
     | 
| 
      
 34 
     | 
    
         
            +
                # @abstract
         
     | 
| 
      
 35 
     | 
    
         
            +
                # @param  [Object]  other
         
     | 
| 
      
 36 
     | 
    
         
            +
                # @return [Integer] `-1`, `0`, or `1`
         
     | 
| 
      
 37 
     | 
    
         
            +
                #
         
     | 
| 
      
 38 
     | 
    
         
            +
                # @see http://www.w3.org/TR/rdf-sparql-query/#func-RDFterm-equal
         
     | 
| 
      
 39 
     | 
    
         
            +
                def ==(other)
         
     | 
| 
      
 40 
     | 
    
         
            +
                  super
         
     | 
| 
      
 41 
     | 
    
         
            +
                end
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
                ##
         
     | 
| 
      
 44 
     | 
    
         
            +
                # Determins if `self` is the same term as `other`.
         
     | 
| 
      
 45 
     | 
    
         
            +
                #
         
     | 
| 
      
 46 
     | 
    
         
            +
                # Subclasses should override this to provide a more meaningful
         
     | 
| 
      
 47 
     | 
    
         
            +
                # implementation than the default which simply performs a string
         
     | 
| 
      
 48 
     | 
    
         
            +
                # comparison based on `#to_s`.
         
     | 
| 
      
 49 
     | 
    
         
            +
                #
         
     | 
| 
      
 50 
     | 
    
         
            +
                # @abstract
         
     | 
| 
      
 51 
     | 
    
         
            +
                # @param  [Object]  other
         
     | 
| 
      
 52 
     | 
    
         
            +
                # @return [Integer] `-1`, `0`, or `1`
         
     | 
| 
      
 53 
     | 
    
         
            +
                #
         
     | 
| 
      
 54 
     | 
    
         
            +
                # @see http://www.w3.org/TR/rdf-sparql-query/#func-sameTerm
         
     | 
| 
      
 55 
     | 
    
         
            +
                def eql?(other)
         
     | 
| 
      
 56 
     | 
    
         
            +
                  super
         
     | 
| 
      
 57 
     | 
    
         
            +
                end
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
      
 59 
     | 
    
         
            +
                ##
         
     | 
| 
      
 60 
     | 
    
         
            +
                # Returns `true` if this term is constant.
         
     | 
| 
      
 61 
     | 
    
         
            +
                #
         
     | 
| 
      
 62 
     | 
    
         
            +
                # @return [Boolean] `true` or `false`
         
     | 
| 
      
 63 
     | 
    
         
            +
                # @see    #variable?
         
     | 
| 
      
 64 
     | 
    
         
            +
                def constant?
         
     | 
| 
      
 65 
     | 
    
         
            +
                  !(variable?)
         
     | 
| 
      
 66 
     | 
    
         
            +
                end
         
     | 
| 
      
 67 
     | 
    
         
            +
             
     | 
| 
      
 68 
     | 
    
         
            +
                ##
         
     | 
| 
      
 69 
     | 
    
         
            +
                # Returns `true` if this term is variable.
         
     | 
| 
      
 70 
     | 
    
         
            +
                #
         
     | 
| 
      
 71 
     | 
    
         
            +
                # @return [Boolean] `true` or `false`
         
     | 
| 
      
 72 
     | 
    
         
            +
                # @see    #constant?
         
     | 
| 
      
 73 
     | 
    
         
            +
                def variable?
         
     | 
| 
      
 74 
     | 
    
         
            +
                  false
         
     | 
| 
      
 75 
     | 
    
         
            +
                end
         
     | 
| 
      
 76 
     | 
    
         
            +
              end # Term
         
     | 
| 
      
 77 
     | 
    
         
            +
            end # RDF
         
     |