def subject
      if instance_variable_defined?(:@subject)
        @subject
      else
        rdf_node = Redland.librdf_statement_get_subject(rdf_statement)
        @subject = rdf_node.null? ? nil : Node.new(rdf_node)
      end
    end
def subject
      if instance_variable_defined?(:@subject)
        @subject
      else
        rdf_node = Redland.librdf_statement_get_subject(rdf_statement)
        @subject = rdf_node.null? ? nil : Node.new(rdf_node)
      end
    end
Create an RDF statement.

 @param [Hash] source
 @option source [Node, String, URI, nil] :subject
 @option source [Node, String, URI, nil] :predicate
 @option source [Node, String, URI, nil] :object
 @raise [NotImplementedError] if cannot create a Statement from the given source.
 @raise [RedlandError] if it fails to create a Statement.
 Subject of the statment.

 @return [Node, nil]