Sha256: 087e8c930254449f3f88bebf8782ad42eb5224a19306c6110b3d8284397dab3c

Contents?: true

Size: 1.5 KB

Versions: 8

Compression:

Stored size: 1.5 KB

Contents

module RDF
  ##
  # An RDF blank node, also known as an anonymous or unlabeled node.
  #
  # @example Creating a blank node with an implicit identifier
  #   bnode = RDF::Node.new
  #
  # @example Creating a blank node with an UUID identifier
  #   bnode = RDF::Node.uuid
  #   bnode.to_s #=> "_:504c0a30-0d11-012d-3f50-001b63cac539"
  #
  # @see http://rubygems.org/gems/uuid
  # @see http://rubygems.org/gems/uuidtools
  class Node < Resource
    ##
    # Returns a blank node with a random UUID-based identifier.
    #
    # @return [RDF::Node]
    def self.uuid
      begin
        require 'uuid'
        self.new(UUID.generate)
      rescue LoadError => e
        begin
          require 'uuidtools'
          self.new(UUIDTools::UUID.random_create)
        rescue LoadError => e
          raise LoadError.new("no such file to load -- uuid or uuidtools")
        end
      end
    end

    # @return [String]
    attr_accessor :id

    ##
    # @param  [#to_s] id
    def initialize(id = nil)
      @id = (id || "g#{object_id}").to_s
    end

    ##
    # Returns `true`.
    #
    # @return [Boolean]
    def node?
      true
    end

    ##
    # Returns `true`.
    #
    # @return [Boolean]
    def anonymous?
      true
    end

    alias_method :unlabeled?, :anonymous?

    ##
    # Returns `false`.
    #
    # @return [Boolean]
    def labeled?
      !unlabeled?
    end

    ##
    # Returns a string representation of this blank node.
    #
    # @return [String]
    def to_s
      "_:%s" % id.to_s
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
rdf-0.1.10 lib/rdf/model/node.rb
rdf-0.1.9 lib/rdf/model/node.rb
rdf-0.1.8 lib/rdf/model/node.rb
rdf-0.1.7 lib/rdf/model/node.rb
rdf-0.1.6.1 lib/rdf/model/node.rb
rdf-0.1.6 lib/rdf/model/node.rb
rdf-0.1.5 lib/rdf/model/node.rb
rdf-0.1.4 lib/rdf/model/node.rb