- From: Bob Morris <morris.bob@gmail.com>
- Date: Fri, 20 Jun 2014 16:08:55 -0400
- To: Robert Sanderson <azaroth42@gmail.com>
- Cc: Patrick Cuba <cubap@slu.edu>, public-openannotation <public-openannotation@w3.org>
- Message-ID: <CADUi7O7aYa_ZfLFJOBkKnygBZnVw3o+zbW6d10EF9Ntz_v71VA@mail.gmail.com>
We experimented with PubSubHubub (PSH) using SPARQLPush [1] in an early version of FilteredPush [2] for semantically supported notifications of annotations. These include, but are not limited to, actionable annotations about resource change proposals and the resulting action, We had several issues, some of which it looks like ResourceSync can deal with but others, perhaps by intent, not. In some deployments the biggest issue with pushing certain annotations was that in some cases, consuming applications were behind firewalls that limited what we can push. However, those clients typically were managing resources, e.g. databases, that were separately exposed on the web and needed to be synchronized to some other resource, but can only be done through the "invisible" client. However, it could be assumed that the client can make http GET requests on port 80 to http servers that would deliver the synchronization advice. I can't tell how or if ResourceSync would manage this use case, but I wouldn't think it hard. We have a more general requirement than ResourceSync seems to cover (though it looks extensible...). Namely, in the first instance we generate OA annotations that contain \assertions/ that a certain resource \should/ be changed in various ways. We modeled this with a proposed addition to OA called "Expectation", which covers, at the moment, only the standard models of SQL changes, along with one named "SolveWithMoreData". The latter means that the annotator claims a change is needed, but doesn't know what it should be [3]. My quick reading of the ResourceSync documentation is that it suffers the same issue we do, namely that if one wants add types more than the specified ones, then new types must be added at the ontology level, putting an added burden on consuming applications to be able to interpret the new type. Our consuming synchronization targets have carefully controlled authority as to whether to actually make the recommended synchronization. As to what \actually/ happened to the target resource, we prefer to relegate that to annotation conversations---i.e. the consumer of the oa:Annotation that advises a change produces an oa:Annotation whose target is the original annotation, and reports whether or not it accepted the suggested change. That helps us keep a provenance of the synchronizations (e.g. "I changed my resource because you changed yours even though I think you're wrong.") Finally, with SPARQLPush, we had difficulty keeping provenance because the annotation data were kept in a triple store that had to be defended against annotations being semantically polluted by the addition of triples shared with other annotations. For reasons having to do with other data harvesting concerns of our applications, we found it more convenient to use a document store for the annotations and RDFize them on demand. I know others use quad stores to solve this problem, but we live in a world where there are potentially billions of resources that might need changing on quality control grounds or to signal initial creation and scalability worried us. Bob Morris [1] https://code.google.com/p/sparqlpush/ [2] http://wiki.filteredpush.org/ [3] http://www.plosone.org/article/info%3Adoi%2F10.1371%2Fjournal.pone.0076093 On Fri, Jun 20, 2014 at 3:24 PM, Robert Sanderson <azaroth42@gmail.com> wrote: > > Hi Patrick, > > It's certainly not crazy, and I don't know of a solution other than the > ResourceSync option that Herbert describes. > I think this would be a great use case to take forwards to the API > component of the W3C Working Group discussion, not only between systems but > also at an internal level so that we have a robust event system within a > client side (e.g. javascript) API for browsers. > > Thanks! > > Rob > > > > On Tue, Jun 17, 2014 at 3:09 PM, Patrick Cuba <cubap@slu.edu> wrote: > >> context: OAC (and SharedCanvas and IIIF) in web applications for >> manuscript studies using linked open data structures. >> >> *Annotation update notification service:* >> >> Is there a place in a spec for an annotation which carries an endpoint >> with it to notify about updates? Certainly not all annotation stores or >> applications would honor this, but if they did it may improve the lives of >> large repositories that share much of their data. >> >> For example: >> <anno> a oa:Annotation ; >> eg:onUpdate "example.com/anno-notify" . >> >> When someone (some machine) updates this annotation, the new annotation >> URI can be sent to the endpoint where it would be consumed by some service >> so the watcher would know something happened. >> >> Perhaps for a cleaner world, there is a separate digital object that is a >> Notifier like: >> <Notifier> a eg:Notification ; >> eg:watches <anno> ; >> eg:onUpdate "example.com/anno-notify" ; >> eg:onTargeted "example.com/anno-notify" ; >> eg:onEmbodied "example.com/anno-notify" . >> >> If I support it, I can look for these Notifiers on the graph when I make >> changes or a store may register them independently if Stanford decides to >> start following whose publicly using their manifests without just sending a >> robot out for a stroll every once in an iteration. >> >> I imagine a public annotation store can do this outside of standards >> without too much grief, but it may be something an annotation generator (or >> creator) would want to attach to an annotation regardless of the location. >> >> Is this crazy or already possible? Events are closely tied to the >> annotation objects developers create in web applications with great effect, >> but to attach events/watchers to annotations in the wild may be a step too >> far. >> >> Patrick Cuba >> Center for Digital Humanities >> Saint Louis University >> > > > > -- > Rob Sanderson > Technology Collaboration Facilitator > Digital Library Systems and Services > Stanford, CA 94305 > -- Robert A. Morris Emeritus Professor of Computer Science UMASS-Boston 100 Morrissey Blvd Boston, MA 02125-3390 Filtered Push Project Harvard University Herbaria Harvard University email: morris.bob@gmail.com web: http://efg.cs.umb.edu/ web: http://wiki.filteredpush.org http://www.cs.umb.edu/~ram === The content of this communication is made entirely on my own behalf and in no way should be deemed to express official positions of The University of Massachusetts at Boston or Harvard University.
Received on Friday, 20 June 2014 20:09:24 UTC