Sha256: 954fc99043ee51dab4a04ae0c236ef9ee15b5f343d51b5ea3740e18183ad98c7

Contents?: true

Size: 1.27 KB

Versions: 1

Compression:

Stored size: 1.27 KB

Contents

module PubliSci
  module Prov
    class Derivation

      include PubliSci::CustomPredicate

      def subject(sub=nil)
        if sub
          @subject = sub
        else
          @subject ||= "#{Prov.base_url}/derivation/#{Time.now.nsec.to_s(32)}"
        end
      end

      def had_activity(activity=nil)
        if activity
          @had_activity = activity
        elsif @had_activity.is_a? Symbol
          raise "UnknownActivity #{@had_activity}" unless Prov.activities[@had_activity]
          @had_activity = Prov.activities[@had_activity]
        else
          @had_activity
        end
      end
      alias_method :activity, :had_activity

      def entity(entity=nil)
        if entity
          @entity = entity
        elsif @entity.is_a? Symbol
          raise "UnknownEntity #{@entity}" unless Prov.entities[@entity]
          @entity = Prov.entities[@entity]
        else
          @entity
        end
      end
      alias_method :data, :entity

      def to_n3
        str = "<#{subject}> a prov:Derivation ;\n"
        str << "\tprov:entity <#{entity}> ;\n" if entity
        str << "\tprov:hadActivity <#{had_activity}> ;\n" if had_activity

        add_custom(str)

        str[-2] = ".\n"
        str
      end

      def to_s
        subject
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
bio-publisci-0.0.6 lib/bio-publisci/metadata/prov/derivation.rb