Title (goal)
live querying of object graph
Primary Actor script or program acting against the repository
Story

 Ingest and update routines often have to determine where in the graph of relationships to place a new (or updated) object, in doing so, querying a synchronously updated index of the relationships is necessary.  For example:

  1. find all children of an object when the relationship information is only stored on the children
  2. insert a new object within a chain of linked nodes
  3. perform the above operation with some concept of locking such that concurrent operations may insert objects into the same chain
CommentsIn previous versions of fedora, having the resource index synchronized caused a huge performance hit, but if updates weren't synchronized, the most common use cases would fail in unpredictable ways.  One query might not pick up recent changes, then the next one would, even with only a single process running against fedora.

 

Querying unidirectional relationships take the following form and seem to work in the alpha-4 release.

SELECT ?s WHERE { ?s <http://fedora.lib.virginia.edu/relationships#follows> <http://localhost:8080/rest/firstObject> }

4 Comments

  1. Unknown User (escowles@ucsd.edu)

    Given the need for synchronous updates, this is probably a good use case for the SPARQL query functionality built directly into fcrepo4, rather than an external triplestore asynchronously updated using fcrepo-jms-indexer-pluggable.

  2. Esme's suggestion may satisfy this use case, though it depends on what SPARQL queries need to be supported. Michael Durbin can you review and make note of any SPARQL queries (if any) that would need to be added?

    1. Michael Durbin, having the desired queries documented this week would be ideal since Unknown User (escowles@ucsd.edu) and Longshou Situ will both be on the sprint starting Monday.

  3. A little testing has shown that the querying needs are met by the internal SPARQL query functionality and that indeed, the update seems to be synchronous.

     

    The remaining requirements should be met by the forthcoming record locking feature.