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

Instance Method Details

#concept_schemesObject



64
65
66
67
68
69
70
71
72
73
# File 'app/models/concerns/publish_my_data/dataset_powers.rb', line 64

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

#cubeObject



84
85
86
87
88
89
90
# File 'app/models/concerns/publish_my_data/dataset_powers.rb', line 84

def cube
  if is_cube?
    PublishMyData::DataCube::Cube.new(self)
  else
    nil
  end
end

#example_resourcesObject



39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'app/models/concerns/publish_my_data/dataset_powers.rb', line 39

def example_resources
  return @example_resources if @example_resources

  resource_queries = self.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

#idObject



14
15
16
# File 'app/models/concerns/publish_my_data/dataset_powers.rb', line 14

def id
  to_param
end

#is_cube?Boolean

Returns:

  • (Boolean)


79
80
81
82
# File 'app/models/concerns/publish_my_data/dataset_powers.rb', line 79

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_uriObject



10
11
12
# File 'app/models/concerns/publish_my_data/dataset_powers.rb', line 10

def 
  self.class.(self.slug)
end

#ontologiesObject



53
54
55
56
57
58
59
60
61
62
# File 'app/models/concerns/publish_my_data/dataset_powers.rb', line 53

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_countObject



35
36
37
# File 'app/models/concerns/publish_my_data/dataset_powers.rb', line 35

def resource_count
  self.types.map{|t| type_count(t.uri)}.sum
end

#resources_in_dataset_criteriaObject



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_objObject



75
76
77
# File 'app/models/concerns/publish_my_data/dataset_powers.rb', line 75

def theme_obj
  Theme.find(self.theme.to_s) rescue nil
end

#to_paramObject



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



30
31
32
33
# File 'app/models/concerns/publish_my_data/dataset_powers.rb', line 30

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

#typesObject



26
27
28
# File 'app/models/concerns/publish_my_data/dataset_powers.rb', line 26

def types
  @types ||= RdfType.where('?s a ?uri').graph(self.data_graph_uri).resources
end