Re: anno-ACTION-29: Create draft proposal for rendering state/selector

On Wed, Nov 25, 2015 at 1:26 PM, Robert Sanderson <azaroth42@gmail.com>
wrote:

>
> Meta -- is there a github issue for this for tracking? If not can we
> create one please?
>

Happy to. When this action first started we were using GitHub less than we
are now, so I ran with it “in place,” but I think we’re far enough along
that this is actionable now, and I’ll move it to GH shortly.


> +1 to the use case and functionality addition. There doesn't seem like
> another way to accommodate it, and the implications on the model and
> vocabulary are relatively minor.
> I propose that we accept (if we haven't already) this as a feature to
> include in the current specs.
>
> I'm fine with a carefully worded MAY. We wouldn't want a validation system
> to throw a warning for every SpecificResource that does not have a
> renderedVia property, for example.
>

Good point!


>
> I think there's a difference between Rendering Agent and State.  State
> should get you the right representation, but then the client still needs to
> render it.  Other use cases that have been discussed in this space are 3d
> models, where you need to get the right representation (such as via conneg)
> and then render the model appropriately such that the annotation is
> visible.  Also formats that are not implemented in browsers, such as
> Jpeg2000 or (previously?) WebP.
>

Server State vs. Client State? /me ducks. ;)

Let’s not go there.

I’m fine with `renderedVia` on the SpecificResource. It at least serves as
a good starting point, and doesn’t state (heh) more than it should.

I’ll get this started first as an issue, and then (possibly) as a (new
thing) "4.6 Rendering of a Resource” (names…as ever…subject to change).

Thanks, Rob!
Benjamin


>
> Rob
>
>
> On Wed, Nov 25, 2015 at 9:01 AM, Ivan Herman <ivan@w3.org> wrote:
>
>>
>> On 25 Nov 2015, at 17:44, Benjamin Young <bigbluehat@hypothes.is> wrote:
>>
>> On Wed, Nov 25, 2015 at 6:09 AM, Ivan Herman <ivan@w3.org> wrote:
>>
>>> Benjamin,
>>>
>>> I am fine with what you propose, and have only one minor remark. You say:
>>>
>>> “If a target is transformed by the user agent, information about the
>>> software used SHOULD be recorded, so that future consuming applications
>>> (and their developers) can make use of the information in order to optimize
>>> selection and rendering.”
>>>
>>> I have the impression that SHOULD is too strong. This whole thing may
>>> very well depend on the application setup and usage environment, and MAY
>>> may (sic!) be enough. But I admit I do not have a very strong opinion on
>>> this.
>>>
>>
>> My concern with it being “lowered” to a MAY is that it’ll just get
>> overlooked and not done. SHOULD is still less than MUST after all. :)
>>
>>
>> Well… SHOULD, in our terminology (ie, the RFC2119) means:
>>
>> > SHOULD  This word, or the adjective "RECOMMENDED", mean that there may
>> exist valid reasons in particular circumstances to ignore a particular
>> item, but the full implications must be understood and carefully weighed
>> before choosing a different course.
>>
>> It *is* a fairly strong requirement. Whereas
>>
>> > MAY This word, or the adjective "OPTIONAL", mean that an item is truly
>> optional.  One vendor may choose to include the item because a particular
>> marketplace requires it or because the vendor feels that it enhances the
>> product while another vendor may omit the same item. An implementation
>> which does not include a particular option MUST be prepared to interoperate
>> with another implementation which does include the option, though perhaps
>> with reduced functionality. In the same vein an implementation which does
>> include a particular option MUST be prepared to interoperate with another
>> implementation which does not include the option (except, of course, for
>> the feature the option provides.)
>>
>> Seems to fit the situation better. It is still stronger than what you
>> describe above
>>
>> Ivan
>>
>>
>>
>> Without this information the (rash) assumption is made that the resource
>> was viewed via the browser’s rendering engine. If that document were a PDF,
>> EPUB, or even a CSV served by a system providing annotation today that’d
>> likely very much not the case.
>>
>> There are also scenarios, such as the Scalar CMS [1], which ships a
>> “heavily” semantic RDFa HTML document to the browser and then fully
>> transforms the thing on arrival into a different DOM. Such that if you were
>> to annotate against the rendered thing, the selectors you stored would not
>> match the resource you’d GET back.
>>
>> [1] http://scalar.usc.edu/scalar/
>>
>> If this got lowered to a MAY, my guess is that it would only be recorded
>> when the self-focused consuming application cared to care about its future
>> self—which, honestly, doesn’t even happen as often as one may expect. It
>> certainly wouldn’t happen with a focus to value made for others for
>> considering the selectors made against the resource.
>>
>> However, I will add that this render scenario may be better framed as a
>> State class…in which case…your though to lower this to MAY seems reasonable…
>> http://w3c.github.io/web-annotation/model/wd/#states
>>
>> I’ll keep thinking about it. I’d prefer SHOULD, but…it’s not the biggest
>> fish we’re frying here…
>>
>> Thanks!
>> Benjamin
>> —
>> Developer Advocate
>> http://hypothes.is/
>>
>>
>>
>>> Ivan
>>>
>>>
>>> On 24 Nov 2015, at 20:45, Benjamin Young <bigbluehat@hypothes.is> wrote:
>>>
>>> On Tue, Nov 17, 2015 at 6:08 AM, Ivan Herman <ivan@w3.org> wrote:
>>>
>>>>
>>>> On 16 Nov 2015, at 23:14, Benjamin Young <bigbluehat@hypothes.is>
>>>> wrote:
>>>>
>>>> This one's been on my list for awhile, and I've dug into the space
>>>> several times, and here (at last) is the output.
>>>>
>>>> I dug through the following vocabularies:
>>>>  - prov-o:SoftwareAgent
>>>>  - dcterms:Software
>>>>    - we already include `dcterms` as a prefix
>>>>  - foaf:Agent
>>>>    - `foaf` is also included already
>>>>  - doap
>>>>    -
>>>> https://github.com/edumbill/doap/wiki/JSON-LD-@context-for-package.json
>>>>    - non-normative afaik
>>>>    - context doc is incomplete (at best), but DOAP is used at Apache &
>>>> PyPi among others
>>>>  - schema.org's SoftwareApplication
>>>>    - by far the most thorough that I looked into
>>>>    - according to some chats at TPAC, we can reference them now/soon
>>>>
>>>> PROV-O has the right terminology in the form of `prov:qualifiedUsage`
>>>> and it's `prov:Usage` class. Schema.org <http://schema.org/>'s
>>>> schema:SoftwareApplication (and possibly schema:WebApplication) include a
>>>> couple properties (and perhaps a few others) which are clearer in their
>>>> specification than `dcterms`, `foaf`, etc. More info below.
>>>>
>>>> Here's an example of what I'm thinking based on the above--I'm using
>>>> full CURIE names for the new keys. The other's are specified in
>>>> http://www.w3.org/ns/anno.jsonld
>>>> ```
>>>> {
>>>>   "type": "Annotation",
>>>>   "target": {
>>>>     "type": "SpecificResource",
>>>>     "source": "http://example.com/",
>>>>     "selector": [{...}, {...}],
>>>>     "prov:qualifiedUsage": {
>>>>       "type": ["prov:Usage", "prov:EntityInfluence"],
>>>>       "prov:entity": {
>>>>         "id": "https://github.com/mozilla/pdf.js/releases/tag/v1.1.114
>>>> ",
>>>>         "type": "Software",
>>>>         "name": "PDF.js",
>>>>         "schema:softwareVersion": "1.1.114",
>>>>         "schema:browserRequirements": "HTML5, CSS, JavaScript"
>>>>       }
>>>>     }
>>>>   },
>>>>   "generator": {
>>>>     "type": "Software",
>>>>     "name": "Hypothes.is <http://hypothes.is/>",
>>>>     "homepage": "http://hypothes.is/"
>>>>   }
>>>> }
>>>> ```
>>>>
>>>> What I'd like this to end up looking like, however, is this example:
>>>> ```
>>>> {
>>>>   "type": "Annotation",
>>>>   "target": {
>>>>     "type": "SpecificResource",
>>>>     "source": "http://example.com/",
>>>>     "selector": [{...}, {...}],
>>>>     "renderedVia": {
>>>>       "id": "https://github.com/mozilla/pdf.js/releases/tag/v1.1.114",
>>>>       "type": "Software",
>>>>       "name": "PDF.js",
>>>>       "softwareVersion": "1.1.114",
>>>>       "browserRequirements": "HTML5, CSS, JavaScript"
>>>>     }
>>>>   },
>>>>   "generator": {
>>>>     "type": "Software",
>>>>     "name": "Hypothes.is <http://hypothes.is/>",
>>>>     "homepage": "http://hypothes.is/"
>>>>   }
>>>> }
>>>> ```
>>>>
>>>> Turning the `prov:qualifiedUsage a prov:Usage; prov:entity` chain into
>>>> just `renderedVia` (or similar) is beyond my physic.
>>>>
>>>>
>>>> I would be worried about bringing prov into this. There is relatively
>>>> complex model behind the Provenance ontology[1], and trying to fuse these
>>>> things seems to be way more than what we need.
>>>>
>>>> [1] http://www.w3.org/TR/2013/REC-prov-dm-20130430/
>>>>
>>>>
>>>> Is something like that even possible? If that's not, then I propose we
>>>> define `renderedVia` to mean essentially that--the usage of this
>>>> SpecificResource (in this case that target source + this selector list) is
>>>> qualified by the use of this rendering system...such that these selectors
>>>> may not work if the rendering scenario is different.
>>>>
>>>>
>>>> I think that doing partially ourselves, and use either Schema and/or
>>>> DOAP terms is way enough for what we need. Let us try to keep it simple.
>>>>
>>>> My only problem with DOAP is that it is not really maintained by anyone
>>>> right now. Last time I talked to Edd Dumbill seemed to suggest that he had
>>>> moved on; the repo has not been touched for years. That being said, there
>>>> is a decent deployment of his terms, so this is a possibility.
>>>>
>>>> There are some projects (I would have to dig them out) that are
>>>> concerned about the scholarly references of software which could be used
>>>> here, but I would not think we should spend too much energy into this.
>>>> Users/implementations may use their own vocabularies if we just provide
>>>> some sort of elementary scaffolding: that is all we need to do imho. Ie,
>>>> more or less what you have in the example above with name, homepage,
>>>> software versions, maybe 1-2 terms more, and stop there…
>>>>
>>>
>>> Agree completely. I did the PROV “homework” only because we’d used it
>>> elsewhere. But I’m happy to consider it beyond what we need for this case.
>>>
>>> Given that, here’s (essentially) what I’d propose for the “richest”
>>> expression of a renderer:
>>>
>>> ```
>>> {
>>>   "type": "Annotation",
>>>   "target": {
>>>     "type": "SpecificResource",
>>>     "source": "http://example.com/",
>>>     "selector": [{...}, {...}],
>>>     "renderedVia": {
>>>       "id": "https://github.com/mozilla/pdf.js/releases/tag/v1.1.114",
>>>       "type": "Software",
>>>       "name": "PDF.js”,
>>>       “homepage”: “https://github.com/mozilla/pdf.js”,
>>>       "softwareVersion": "1.1.114"
>>>     }
>>>   },
>>>   "generator": {
>>>     "type": "Software",
>>>     "name": "Hypothes.is <http://hypothes.is/>",
>>>     "homepage": "http://hypothes.is/"
>>>   }
>>> }
>>> ```
>>>
>>> The only addition, then, to what we have in `generator` is the
>>> `schema:softwareVersion` from http://schema.org/SoftwareApplication
>>>
>>> I removed (since my earlier example) the `browserRequirements` field as
>>> it’s not really programmatically actionable as defined (it’s just “prose”
>>> for a human being really). `softwareVersion` is also just Text, but there’s
>>> some expectation there about what will be stored.
>>>
>>> It’s a bit tricky (I’ll admit) to measure the possibility of how this
>>> can and would be used by others outside of the producing system.
>>>
>>> In Hypothes.is <http://hypothes.is/>, my hope / plan is that we’ll
>>> store it for our own documentation to understand what’s changed. If we’re
>>> consistent about it, then we’ll at least know that the XPath selectors we
>>> stored are likely useless if we’re no rendering via a newer version of
>>> PDF.js…but sadly, comparing “1.2.2” to “1.1.114” is…not uncomplicated…
>>>
>>> So. I’m completely open to suggestions, but I think *not* giving people
>>> a place to put this data (however “rough” it may be) is worse—as it’s
>>> anybodies guess what those selectors were built with.
>>>
>>> The essence would be:
>>> “If a target is transformed by the user agent, information about the
>>> software used SHOULD be recorded, so that future consuming applications
>>> (and their developers) can make use of the information in order to optimize
>>> selection and rendering.”
>>>
>>> …that’s a bit rough, but you get the idea. :)
>>>
>>> Thanks!
>>> Benjamin
>>> —
>>> Developer Advocate
>>> http://hypothes.is/
>>>
>>>
>>>>
>>>> Ivan
>>>>
>>>>
>>>> I toyed (for a bit) using prov:qualifiedDerivation, but that seemed to
>>>> require stating more about this new generated resource (the PDF.js
>>>> representation of the resource referenced by the `target`) rather than
>>>> about the `SpecificResource`--such as "when you use this SpecificResource
>>>> you should care about this situation" vs. "hey look! PDF.js made a new
>>>> thing out of this other thing...and you should care." Especially given that
>>>> things like Text Quote Selector are pretty resilient (assuming only the
>>>> structure of the document changes between format vs. the content) such that
>>>> this "qualified usage" may or may not be of value to the consumer of the
>>>> annotation for it's own rendering / display of the document + the
>>>> annotation.
>>>>
>>>> Regardless of which terms we use or what we call the key, the best
>>>> place I could find to put it was as a property on `SpecificResource` as
>>>> having it on the annotation (as generator is) sends the wrong message about
>>>> what's effected by this information.
>>>>
>>>> Also, `renderedVia` seemed more correct than `hasRenderer`.
>>>>
>>>> Thoughts welcome!
>>>> Benjamin
>>>> --
>>>> Developer Advocate
>>>> http://hypothes.is/
>>>>
>>>> On Wed, Oct 21, 2015 at 11:36 AM, Web Annotation Working Group Issue
>>>> Tracker <sysbot+tracker@w3.org> wrote:
>>>>
>>>>> anno-ACTION-29: Create draft proposal for rendering state/selector
>>>>>
>>>>> http://www.w3.org/annotation/track/actions/29
>>>>>
>>>>> Assigned to: Benjamin Young
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>> ----
>>>> Ivan Herman, W3C
>>>> Digital Publishing Lead
>>>> Home: http://www.w3.org/People/Ivan/
>>>> mobile: +31-641044153
>>>> ORCID ID: http://orcid.org/0000-0003-0782-2704
>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>> ----
>>> Ivan Herman, W3C
>>> Digital Publishing Lead
>>> Home: http://www.w3.org/People/Ivan/
>>> mobile: +31-641044153
>>> ORCID ID: http://orcid.org/0000-0003-0782-2704
>>>
>>>
>>>
>>>
>>>
>>
>>
>> ----
>> Ivan Herman, W3C
>> Digital Publishing Lead
>> Home: http://www.w3.org/People/Ivan/
>> mobile: +31-641044153
>> ORCID ID: http://orcid.org/0000-0003-0782-2704
>>
>>
>>
>>
>>
>
>
> --
> Rob Sanderson
> Information Standards Advocate
> Digital Library Systems and Services
> Stanford, CA 94305
>

Received on Wednesday, 25 November 2015 20:02:12 UTC