Module: PublishMyData::DatasetPowers
- Extended by:
- ActiveSupport::Concern
- Included in:
- Dataset
- Defined in:
- app/models/concerns/publish_my_data/dataset_powers.rb
Defined Under Namespace
Modules: ClassMethods
Instance Method Summary collapse
- #concept_schemes ⇒ Object
- #cube ⇒ Object
- #example_resources ⇒ Object
- #id ⇒ Object
- #is_cube? ⇒ Boolean
- #metadata_graph_uri ⇒ Object
- #ontologies ⇒ Object
- #resource_count ⇒ Object
- #resources_in_dataset_criteria ⇒ Object
- #theme_obj ⇒ Object
- #to_param ⇒ Object
- #type_count(type_uri) ⇒ Object
- #types ⇒ Object
Instance Method Details
#concept_schemes ⇒ Object
72 73 74 75 76 77 78 79 80 81 |
# File 'app/models/concerns/publish_my_data/dataset_powers.rb', line 72 def concept_schemes return @concept_schemes if @concept_schemes query = "SELECT DISTINCT ?uri WHERE {" query << " GRAPH <#{self.data_graph_uri.to_s}> {?s ?p ?o}" query << " { ?p <http://www.w3.org/2004/02/skos/core#inScheme> ?uri } UNION { ?o <http://www.w3.org/2004/02/skos/core#inScheme> ?uri }" query << " ?uri a <http://www.w3.org/2004/02/skos/core#ConceptScheme>" query << "}" @concept_schemes = ConceptScheme.find_by_sparql(query) end |
#cube ⇒ Object
92 93 94 95 96 97 98 |
# File 'app/models/concerns/publish_my_data/dataset_powers.rb', line 92 def cube if is_cube? PublishMyData::DataCube::Cube.new(self) else nil end end |
#example_resources ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'app/models/concerns/publish_my_data/dataset_powers.rb', line 44 def example_resources return @example_resources if @example_resources types = self.types.to_a types.reject!{|t| self.rdf_type.include?(t.uri)} resource_queries = types.map do |t| " { SELECT DISTINCT ?uri WHERE { ?uri a <#{t.uri.to_s}> } LIMIT 1 }" end query = "SELECT ?uri WHERE { GRAPH <#{self.data_graph_uri.to_s}> {" query << resource_queries.join(" UNION ") query << "}}" @example_resources = ExampleResource.find_by_sparql(query) @example_resources.each {|r| r.eager_load!} @example_resources end |
#id ⇒ Object
14 15 16 |
# File 'app/models/concerns/publish_my_data/dataset_powers.rb', line 14 def id to_param end |
#is_cube? ⇒ Boolean
87 88 89 90 |
# File 'app/models/concerns/publish_my_data/dataset_powers.rb', line 87 def is_cube? # return false # return false for now!! !!(Resource.where("?uri <http://purl.org/linked-data/cube#dataSet> <#{self.uri}>").graph(self.data_graph_uri).count > 0) end |
#metadata_graph_uri ⇒ Object
10 11 12 |
# File 'app/models/concerns/publish_my_data/dataset_powers.rb', line 10 def self.class.(self.slug) end |
#ontologies ⇒ Object
61 62 63 64 65 66 67 68 69 70 |
# File 'app/models/concerns/publish_my_data/dataset_powers.rb', line 61 def ontologies return @ontologies if @ontologies query = "SELECT DISTINCT ?uri WHERE {" query << " GRAPH <#{self.data_graph_uri.to_s}> {?s ?p ?o}" query << " { ?p <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> ?uri } UNION { ?o <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> ?uri }" query << " ?uri a <http://www.w3.org/2002/07/owl#Ontology>." query << "}" @ontologies = Ontology.find_by_sparql(query) end |
#resource_count ⇒ Object
40 41 42 |
# File 'app/models/concerns/publish_my_data/dataset_powers.rb', line 40 def resource_count self.types.map{|t| type_count(t.uri)}.sum end |
#resources_in_dataset_criteria ⇒ Object
22 23 24 |
# File 'app/models/concerns/publish_my_data/dataset_powers.rb', line 22 def resources_in_dataset_criteria Resource.all.graph(self.data_graph_uri) end |
#theme_obj ⇒ Object
83 84 85 |
# File 'app/models/concerns/publish_my_data/dataset_powers.rb', line 83 def theme_obj Theme.find(self.theme.to_s) rescue nil end |
#to_param ⇒ Object
18 19 20 |
# File 'app/models/concerns/publish_my_data/dataset_powers.rb', line 18 def to_param slug end |
#type_count(type_uri) ⇒ Object
35 36 37 38 |
# File 'app/models/concerns/publish_my_data/dataset_powers.rb', line 35 def type_count(type_uri) count_query = "SELECT ?uri WHERE { GRAPH <#{self.data_graph_uri.to_s}> { ?uri a <#{type_uri.to_s}> } }" SparqlQuery.new(count_query).count end |
#types ⇒ Object
26 27 28 29 30 31 32 33 |
# File 'app/models/concerns/publish_my_data/dataset_powers.rb', line 26 def types query = "SELECT DISTINCT ?uri WHERE {" query << " GRAPH <#{self.data_graph_uri.to_s}> { ?s a ?uri }" query << " FILTER (?s != <#{self.uri}>)" query << "}" @types ||= RdfType.find_by_sparql(query) end |