Sha256: 827ad8e61f5ce155b9c2d6a9f42941ad0f2cdcad4ec4a2a5784cd3e08026de9a

Contents?: true

Size: 950 Bytes

Versions: 9

Compression:

Stored size: 950 Bytes

Contents

module PubliSci
  module CustomPredicate
    def has(predicate, object)
      if object.is_a? Symbol
        obj = object
      else
        predicate = RDF::Resource(predicate) if RDF::Resource(predicate).valid?
        obj = RDF::Resource(object)
        obj = RDF::Literal(object) unless obj.valid?
      end
        ((@custom ||= {})[predicate] ||= []) << obj
    end
    alias_method :set, :has

    def custom
      @custom
    end

    def add_custom(str)
      if custom
        custom.map{|k,v|
          pk = k.respond_to?(:to_base) ? k.to_base : k
          v.map{|vv|
            if vv.is_a? Symbol

              deref = Prov.registry.values.map{|h|
                h[vv] if vv
              }.reject{|x| x==nil}
              raise "Unknown Element #{vv}" unless deref.size > 0
              vv = RDF::Resource(deref.first)
            end
            str << "\t#{pk} #{vv.to_base} ;\n"
          }
        }
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 2 rubygems

Version Path
publisci-0.1.6 lib/publisci/mixins/custom_predicate.rb
publisci-0.1.5 lib/publisci/mixins/custom_predicate.rb
publisci-0.1.4 lib/publisci/mixins/custom_predicate.rb
publisci-0.1.3 lib/publisci/mixins/custom_predicate.rb
publisci-0.1.2 lib/bio-publisci/mixins/custom_predicate.rb
bio-publisci-0.1.0 lib/bio-publisci/mixins/custom_predicate.rb
bio-publisci-0.0.8 lib/bio-publisci/mixins/custom_predicate.rb
bio-publisci-0.0.7 lib/bio-publisci/mixins/custom_predicate.rb
bio-publisci-0.0.6 lib/bio-publisci/mixins/custom_predicate.rb