...
- Create a REST API endpoint for audit events attached to each resource, which allows creating external events and retrieving all events
- Update the repository to create audit event records in this container for internal events
- Create configurable option to allow or disallow deleting events in the repository
- Make sure that other repository functionality is not impacted by enabling or disabling in-repository audit event persistence
- Document end-to-end recipe for configuring event service with in-repository audit event persistence
RDF Vocabulary
A typical Following the Audit Service PROV-O vs PREMIS guidelines, a typical event encoded in RDF would look like this:
Code Block |
---|
@prefix fedora: <http://fedora.info/definitions/v4/repository#> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix premis: <http://www.loc.gov/premis/rdf/v1#> . @prefix prov: <http://www.w3.org/ns/prov#> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . <event1> a prov:InstantaneousEvent, premis:Event ; premis:hasEventRelatedAgent <agent1> ; premis:hasEventType <http://id.loc.gov/vocabulary/preservationEvents/cre> ; fedora:hasParent <http://localhost:8080/rest/55/59/ec/05/5559ec05-6ab1-4d61-905a-a5f3da360b23> ; prov:atTime "2012-04-30T20:40:40"^^xsd:dateTime . <agent1> a premis:Agent ; premis:agentType <http://id.loc.gov/vocabulary/preservation/agentType/sof> ; foaf:name "Client Software v1.2.3"^^xsd:String ; prov:actedOnBehalfOf <agent2> . <agent2> a premis:Agent ; premis:agentType <http://id.loc.gov/vocabulary/preservation/agentType/per> ; foaf:nick "jquser"^^xsd:String . |
1. Is fedora:hasParent
the right predicate to use to link to the resource being acted on, or is there a more appropriate predicate to use?
...
2. Should we use prov:atTime
or premis:hasEventDateTime
for recording the event timestamp?
...
3. Should we simplify the agents down to strings?
Code Block |
---|
<event1> a prov:InstantaneousEvent ; premis:hasEventRelatedAgent "jquser"^^xsd:string, "Client Software v1.2.3"^^xsd:string . |
...
4. Should we include checksums produced by fixity checks?
Code Block |
---|
<event1> a prov:InstantaneousEvent ; premis:hasFixity <event1#fixity1> ; premis:EventOutcomeInformation "SUCCESS" . <event1#fixity1> a premis:Fixity ; premis:hasMessageDigest "cf23df2207d99a74fbe169e3eba035e633b65d94"^^xsd:string ; premis:hasMessageDigestAlgorithm "SHA1"^^xsd:string . |
...