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



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

#cubeObject



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_resourcesObject



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

#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)


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_uriObject



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

def 
  self.class.(self.slug)
end

#ontologiesObject



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_countObject



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_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



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_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



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

#typesObject



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