Sha256: 0f0c1f435df24e79b8aa393ac35a5cfdae50b355e946c29490a8d775a4e2215f

Contents?: true

Size: 1.58 KB

Versions: 18

Compression:

Stored size: 1.58 KB

Contents

module PublishMyData
  class Resource

    include Tripod::Resource
    include BasicFeatures

    field :rdf_type, RDF.type, :multivalued => true, :is_uri => true

    cattr_accessor :LOCAL_RESOURCES, :THIRD_PARTY_RESOURCES, :RESOURCES
    @@LOCAL_RESOURCES = [ConceptScheme, Ontology]
    @@THIRD_PARTY_RESOURCES = [ThirdParty::Ontology, ThirdParty::ConceptScheme]
    @@RESOURCES = [Dataset, Concept, OntologyClass, Property, RdfType]

    class << self
      def uri_from_host_and_doc_path(host, doc_path, format="")
        'http://' + host + '/id/' + doc_path.split('?')[0].sub(/\.#{format}$/,'')
      end

      alias_method :find_by_uri, :find
      def find(uri, opts={})
        resource = self.find_by_uri(uri)
        type = resource.read_predicate(RDF.type)

        resource_klasses = opts.fetch(:local, false) ? self.LOCAL_RESOURCES : self.THIRD_PARTY_RESOURCES
        resource_klasses.each do |klass|
          return klass.find(uri) if type.include?(klass.get_rdf_type)
        end
        self.RESOURCES.each do |klass|
          return klass.find(uri, :ignore_graph => true) if type.include?(klass.get_rdf_type)
        end
        return resource
      end
    end

    def theme
      dataset.theme_obj if dataset
    end

    def dataset
      Dataset.find(Dataset.uri_from_data_graph_uri(self.graph_uri)) rescue nil
    end

    def human_readable_label
      label #TODO fall back to other name-like predicates
    end

    def human_readable_name
      human_readable_label || uri.to_s
    end

    def human_readable_name_is_uri?
      human_readable_label ? false : true;
    end

  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
publish_my_data-1.3.25 app/models/publish_my_data/resource.rb
publish_my_data-1.3.24 app/models/publish_my_data/resource.rb
publish_my_data-1.3.23 app/models/publish_my_data/resource.rb
publish_my_data-1.3.22 app/models/publish_my_data/resource.rb
publish_my_data-1.3.21 app/models/publish_my_data/resource.rb
publish_my_data-1.3.20 app/models/publish_my_data/resource.rb
publish_my_data-1.3.19 app/models/publish_my_data/resource.rb
publish_my_data-1.3.18 app/models/publish_my_data/resource.rb
publish_my_data-1.3.17 app/models/publish_my_data/resource.rb
publish_my_data-1.3.16 app/models/publish_my_data/resource.rb
publish_my_data-1.3.15 app/models/publish_my_data/resource.rb
publish_my_data-1.3.14 app/models/publish_my_data/resource.rb
publish_my_data-1.3.13 app/models/publish_my_data/resource.rb
publish_my_data-1.3.12 app/models/publish_my_data/resource.rb
publish_my_data-1.3.11 app/models/publish_my_data/resource.rb
publish_my_data-1.3.10 app/models/publish_my_data/resource.rb
publish_my_data-1.3.9 app/models/publish_my_data/resource.rb
publish_my_data-1.3.8 app/models/publish_my_data/resource.rb