Overview
This document includes general discussions about the overall approach and descriptions of known existing change management approaches for various institutions.
General Discussion on Approaches
Question: Which might be easier... When data is changed, approaches to identifying changes...
- a diff between the new and old record - challenging with RDF because the graph is unordered, so doing the comparison can require extra processing. There would need to be some scaffolding to create some structure. Diffs are applied in order. Diff UI to show what has changed makes understanding the impact of the changes easier to understand.
- list the changes
How to distinguish the impact of changes? Determines how much info to present. Human users want to focus in on impactful changes.
Best practices questions:
- format of the notification and how granular it needs to be
- for systems that cache authoritative data, what would be updated based on the changes (partial changes vs. entire cached data)
Two audiences of the stream:
- machine/cache
- cache wants everything up to date all the time
- applications that cache may need to take action when a change occurs
- human
- wants to avoid noise of non-impactful changes
- wants attention drawn to impactful changes where they may need to take action
Action based workflows...
- What types of changes require significant action when they occur?
Change management documents produced by authoritative providers
Library of Congress
LOC implements Activity Stream and has types.
- URI belongs to a scheme when active (e.g. subject scheme). This is identified by a triple. The scheme triple is removed when it is deprecated.
- Sometimes a term may move from one authority (e.g. subject) to another (e.g. genre). Adds a triple identifying the new term (e.g. use_instead predicate). Complicated when the change is a split. Which term's URI should be used for use_instead?
Activity Stream is under development and is likely going to be a change management feed using JSON-LD. Currently, LOC is using an Atom Feed to provide some basic change management info.
MeSH
- documents deletions
Getty
- uses Activity Streams
- mentions Activity Streams in ITWG Technical Update slide 12
3rd party vendor notification
When an entity is requested and is not available, some 3rd party vendor's allow the requestor to be notified when the authority provider adds the entity to the authority.
Example format:
Change management processing by downstream users
Change document specification approaches
rdflib
Reference: https://rdrr.io/cran/rdflib/man/rdflib-package.html
This is an R package used to manipulate triples. Worth looking at how it specifies changes.
- add - rdf_add - could be used to express adding a triple
- delete - do not see a spec for removing a triple
rdf_add
Reference: https://rdrr.io/cran/rdflib/man/rdf_add.html
rdf_add could be used to specify adding a triple.
Example:
rdf <- rdf() rdf_add(rdf, subject="http://www.dajobe.org/", predicate="http://purl.org/dc/elements/1.1/language", object="en") ## non-URI string in subject indicates a blank subject ## (prefixes to "_:b0") rdf_add(rdf, "b0", "http://schema.org/jobTitle", "Professor") ## identically a blank subject. ## Note rdf is unchanged when we add the same triple twice. rdf_add(rdf, "b0", "http://schema.org/jobTitle", "Professor", subjectType = "blank") ## blank node with empty string creates a default blank node id rdf_add(rdf, "", "http://schema.org/jobTitle", "Professor") ## Subject and Object both recognized as URI resources: rdf_add(rdf, "https://orcid.org/0000-0002-1642-628X", "http://schema.org/homepage", "http://carlboettiger.info") ## Force object to be literal, not URI resource rdf_add(rdf, "https://orcid.org/0000-0002-1642-628X", "http://schema.org/homepage", "http://carlboettiger.info", objectType = "literal")
SPARQL
This is how you add/delete triples with SPARQL.
PREFIX dc: <http://purl.org/dc/elements/1.1/> INSERT { <http://example/egbook> dc:title "This is an example title" } WHERE {}
PREFIX dc: <http://purl.org/dc/elements/1.1/> DELETE DATA { <http://example/egbook> dc:title "This is an example title" }