- From: Robert Sanderson <azaroth42@gmail.com>
- Date: Thu, 30 Oct 2014 14:06:31 -0700
- To: James M Snell <jasnell@gmail.com>
- Cc: "public-socialweb@w3.org" <public-socialweb@w3.org>, Web Annotation <public-annotation@w3.org>
- Message-ID: <CABevsUFFRaFsSDW+7Cf3wHEU_pq-Q_=HkONCAjE-2x-PSWr0_g@mail.gmail.com>
Hi James, Thanks so much for your amazingly fast response, and thanks also to all those who were part of the joint WG session! Some comments inline below.... On Thu, Oct 30, 2014 at 8:08 AM, James M Snell <jasnell@gmail.com> wrote: > > Based on what I've been able to gather, the Annotation WG appears to > be using the Open Annotation Data Model [1] as the starting point, > with JSON-LD as the primary serialization. Yes, that's correct, with an emphasis on starting point :) > An Activity is effectively an Actor-Verb-Object statement. [...] Looking over the Open Annotations Data Model, I see that there are a > number of modules. The core, properties, however, seem to be hasBody, > hasTarget, annotatedBy, annotatedAt, serializedBy, serializedAt, and > motivatedBy. Yes, and from those the core set of properties are the ones that you focus on below. > Let's just focus on a couple of these: > { > "@context": "...", > "oa:hasBody": { > "@type": "xsd:string", > "@value": "A simple value" > }, > As a note, this is not valid in the CG's Open Annotation model (the Body must be a resource, not a Literal) and would also not be a valid serialization in the ED coming from discussions this week (the Body may be a Literal, but must be represented as a simple string rather than with an explicit data type). > "oa:hasTarget": { > "@id": "http://example.org/foo##a+text-fragment > <http://example.org/foo#%23a+text-fragment> > }, > "oa:annotatedBy": "acct:sally@example.org", > "oa:annotatedAt": "2014-10-30T12:34:56Z", > "oa:motivatedBy": "oa:editing" > } > > Within Activity Streams, we have two possible ways of moving forward: > A. We can use the OA vocabulary within the direct object of an > Activity statement: > +1 User: Sally Action: Created / Uploaded Object: Annotation Which works reasonably well but has some issues. Even more > interesting, however, is that we can... > > B. We can leverage the JSON-LD to map somewhat seamlessly between the > Activity Streams and OA Vocabularies: > > { > "@context": [ > "http://asjsonld.mybluemix.net", > { > "oa": "http://www.w3.org/ns/oa#", > "object": "oa:hasBody", > "target": "oa:hasTarget", > "actor": "oa:annotatedBy", > "published": "oa:annotatedAt", > "generator": "oa:serializedBy" > } > ], > > "@type": "oa:Annotation", > "actor": "acct:sally@example.org", > "object": { > "@type": "xsd:string", > "@value": "This is a simple annotation" > }, > "target": "http://example.org/something##this+is+something > <http://example.org/something#%23this+is+something>", > "oa:motivatedBy": { > "@type": "oa:Motivation", > "@id": "oa:editing" > } > } > As I understand it, please correct me if I'm wrong, this version amounts to: User: Sally Action: Annotated Object: "This is a simple annotation" and the target in Activity Streams speak is the indirect object, which happens to be the Target in Open Annotation speak. As confusing as it sounds, I think these are the other way round, and the as:target is actually the oa:body. If the verb is "annotated", and example.org/something is "Something" in natural language: Sally annotated Something with "This is a simple annotation" Actor Verb Object [preposition] Target Whereas the version above seems more like: Sally created a comment with the value "This is a simple annotation" about Something Option C. Instead, we could represent the annotation as an activity that the user takes on the target resource, with the body of the annotation as the extra information. We could map the motivation to the verb, and keep the class as Annotation... { "@type": "oa:Annotation", "verb" : "oa:commenting", "actor": "acct:sally@example.org", "object": "http://example.org/something##this+is+something <http://example.org/something#%23this+is+something>", // oa:target "target": "This is a simple annotation" // oa:body } User: Sally Action: commenting [on] Object: http://example.org/something [IndirectObject: "This is a simple annotation"] And thus the English sentence: Sally commented on Something with "This is a simple annotation" Equivalently, for some of the other motivations: * Sally bookmarked Something * Sally identified Something as SomethingElse * Sally replied to Something with "a simple reply" * Sally highlighted Something * Sally classified Something as a SomethingElse * Sally described Something as "a simple description" Also, some questions that I couldn't figure out from AS-core and AS-vocabulary: 1. Can there be multiple objects and targets? We allow multiple bodies and multiple targets in the current specification, without using the multiplicity constructs and just by repeating the predicate (in RDF terms). In JSON(-LD) terms, the values of object and target would be arrays. 2. Can there be a target without an object? If not, as body is optional, option B would not work for bookmark or highlight. 3. Can there be a class /and/ a verb as above in option C, to support the class and motivation? And if so, should the AS-core spec describe the precedence between the two? The rationale for both at once is that the resource is an Annotation, and it was created with some intent. For example, the annotation created with the intent to describe the target is not /itself/ a Description... it links the description in the body to the resource that it describes. Thanks again James, and if you're still at TPAC (and get this on Thursday afternoon) and would like to discuss, I'm happy to jump out of the Digital Publishing IG to do so. Rob -- Rob Sanderson Technology Collaboration Facilitator Digital Library Systems and Services Stanford, CA 94305
Received on Thursday, 30 October 2014 21:06:59 UTC