W3C home > Mailing lists > Public > public-annotation@w3.org > November 2015

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

From: Benjamin Young <bigbluehat@hypothes.is>
Date: Mon, 16 Nov 2015 17:14:28 -0500
Message-ID: <CAE3H5FLmTEDkoka0n6U94eRqmDDNVZfGCDXfCLUZtBP9ENsG+g@mail.gmail.com>
To: Web Annotation Working Group <public-annotation@w3.org>
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'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",
    "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",
    "homepage": "http://hypothes.is/"
  }
}
```

Turning the `prov:qualifiedUsage a prov:Usage; prov:entity` chain into just
`renderedVia` (or similar) is beyond my physic.

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 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
>
>
>
>
>
>
>
>
>
Received on Monday, 16 November 2015 22:14:57 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 18:54:42 UTC