Module: Krikri::LDP::RdfSource
- Extended by:
- ActiveSupport::Concern
- Includes:
- Resource
- Included in:
- OriginalRecordMetadata
- Defined in:
- lib/krikri/ldp/rdf_source.rb
Overview
Adds simple LDP persistence to ActiveTriples::Resource classes
Instance Method Summary collapse
-
#get(*args) ⇒ Object
GETs the LDP resource from #rdf_subject and resets this object’s RDF::Graph to match the one returned from the LDP server.
-
#save ⇒ Object
PUTs the LDP resource named in #rdf_subject, populating it’s content (graph) from the object’s RDF::Graph.
-
#save_and_reload(*args) ⇒ Object
Saves and forces reload.
-
#save_with_provenance(activity_uri) ⇒ Object
Adds an appropritate provenance statement with the given URI and saves the resource.
Methods included from Resource
#delete!, #etag, #exists?, #http_head, #ldp_connection, #modified_date
Instance Method Details
#get(*args) ⇒ Object
GETs the LDP resource from #rdf_subject and resets this object’s RDF::Graph to match the one returned from the LDP server.
39 40 41 42 43 |
# File 'lib/krikri/ldp/rdf_source.rb', line 39 def get(*args) result = super reload_ldp result end |
#save ⇒ Object
this may leave the resource’s graph out of sync with the LDP endpoint since the endpoint may add management triples when saving.
PUTs the LDP resource named in #rdf_subject, populating it’s content (graph) from the object’s RDF::Graph.
18 19 20 21 |
# File 'lib/krikri/ldp/rdf_source.rb', line 18 def save(*) result = super(dump(:ttl)) result end |
#save_and_reload(*args) ⇒ Object
Saves and forces reload. This updates the graph with any management triples added by the LDP endpoint.
28 29 30 31 32 |
# File 'lib/krikri/ldp/rdf_source.rb', line 28 def save_and_reload(*args) result = save(*args) get({}, true) result end |
#save_with_provenance(activity_uri) ⇒ Object
Assuming a Marmotta LDP server, there are version URIs available (via Memento) which could be used for a direct PROV implementation. Consider options for doing that either alongside or in place of this approach.
Adds an appropritate provenance statement with the given URI and saves the resource.
This method treats RDFSources as stateful resources. This is in conflict with the PROV model, which assumes each revision is its own Resource. The internal predicate ‘dpla:wasRevisedBy` is used for non-generating revisions of stateful RDFSources.
66 67 68 69 70 71 |
# File 'lib/krikri/ldp/rdf_source.rb', line 66 def save_with_provenance(activity_uri) predicate = exists? ? RDF::DPLA.wasRevisedBy : RDF::PROV.wasGeneratedBy self << RDF::Statement(self, predicate, activity_uri) save end |