Skip to content

Commit

Permalink
Add id_generator and clean the code
Browse files Browse the repository at this point in the history
  • Loading branch information
imadbourouche committed Jan 20, 2025
1 parent cd9ffe2 commit 42a6d1f
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 12 deletions.
28 changes: 21 additions & 7 deletions lib/ontologies_linked_data/models/mod/semantic_artefact.rb
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ def attribute_mapped(name, **options)
end
end

model :artefact, namespace: :mod, :name_with => :acronym
model :SemanticArtefact, namespace: :mod, name_with: ->(s) { artefact_id_generator(s) }

# # SemanticArtefact attrs that map with ontology
attribute_mapped :acronym, namespace: :mod, mapped_to: { model: :ontology, attribute: :acronym }
Expand Down Expand Up @@ -118,10 +118,10 @@ def attribute_mapped(name, **options)


attribute :ontology, type: :ontology

links_load :acronym
#LinkedData::Hypermedia::Link.new("distributions", lambda {|s| "artefacts/#{s.acronym}/distributions"}, LinkedData::Models::SemanticArtefactDistribution.uri_type)
link_to LinkedData::Hypermedia::Link.new("record", lambda {|s| "artefacts/#{s.acronym}/record"}),
link_to LinkedData::Hypermedia::Link.new("distributions", lambda {|s| "artefacts/#{s.acronym}/distributions"}, LinkedData::Models::SemanticArtefactDistribution.type_uri),
LinkedData::Hypermedia::Link.new("record", lambda {|s| "artefacts/#{s.acronym}/record"}),
LinkedData::Hypermedia::Link.new("resources", lambda {|s| "artefacts/#{s.acronym}/resources"}),
LinkedData::Hypermedia::Link.new("single_resource", lambda {|s| "artefacts/#{s.acronym}/resources/{:resourceID}"}),
LinkedData::Hypermedia::Link.new("classes", lambda {|s| "artefacts/#{s.acronym}/classes"}, LinkedData::Models::Class.uri_type),
Expand All @@ -135,11 +135,23 @@ def attribute_mapped(name, **options)

serialize_default :acronym, :title, :accessRights, :creator, :URI, :versionIRI, :description, :language
serialize_never :ontology


def self.artefact_id_generator(ss)
ss.ontology.bring(:acronym) if !ss.ontology.loaded_attributes.include?(:acronym)
raise ArgumentError, "Acronym is nil to generate id" if ss.ontology.acronym.nil?
return RDF::URI.new(
"#{(Goo.id_prefix)}artefacts/#{CGI.escape(ss.ontology.acronym.to_s)}"
)
end

def initialize
super
end

def self.type_uri
self.namespace[self.model_name].to_s
end

def self.find(artefact_id)
ont = Ontology.find(artefact_id).include(:acronym).first
return nil unless ont
Expand Down Expand Up @@ -191,11 +203,13 @@ def self.all_artefacts(options = {})
end

def latest_distribution(status)
SemanticArtefactDistribution.new(@ontology.latest_submission(status))
sub = @ontology.latest_submission(status)
SemanticArtefactDistribution.new(sub) unless sub.nil?
end

def distribution(dist_id)
SemanticArtefactDistribution.new(@ontology.submission(dist_id))
sub = @ontology.submission(dist_id)
SemanticArtefactDistribution.new(sub) unless sub.nil?
end

def all_distributions(options = {})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ def attribute_mapped(name, **options)
end
end

model :artefact_distribution, namespace: :mod, name_with: ->(s) { distribution_id_generator(s) }
model :SemanticArtefactDistribution, namespace: :mod, name_with: ->(s) { distribution_id_generator(s) }

# SAD attrs that map with submission
attribute_mapped :distributionId, mapped_to: { model: :ontology_submission, attribute: :submissionId }
Expand Down Expand Up @@ -66,18 +66,25 @@ def attribute_mapped(name, **options)


def self.distribution_id_generator(ss)
"generated_test_id_#{SecureRandom.uuid}"
end
ss.submission.ontology.bring(:acronym) if !ss.submission.ontology.loaded_attributes.include?(:acronym)
raise ArgumentError, "Acronym is nil to generate id" if ss.submission.ontology.acronym.nil?
return RDF::URI.new(
"#{(Goo.id_prefix)}artefacts/#{CGI.escape(ss.submission.ontology.acronym.to_s)}/distributions/#{ss.submission.submissionId.to_s}"
)
end


def initialize(sub)
super()
@submission = sub
@submission.bring(*[:submissionId])
@type = "http://www.isibang.ac.in/ns/mod#SemanticartefactDistribution"
@submission.bring(*[:submissionId, :ontology=>[:acronym]])
@distributionId = sub.submissionId
end

def self.type_uri
self.namespace[self.model_name].to_s
end

# Method to fetch specific attributes and populate the SemanticArtefact instance
def bring(*attributes)
attributes = [attributes] unless attributes.is_a?(Array)
Expand Down

0 comments on commit 42a6d1f

Please sign in to comment.