Proposal of accessMode, accessModeSufficient, and accessibilitySummary properties for e.g. epubs #1100

Open
madeleinerothberg opened this Issue Apr 13, 2016 · 78 comments

Projects

None yet
@madeleinerothberg

This proposal comes from the digital publishing community, and specifically from the Epub 3.1 Accessibility Working Group (with support from the whole Epub 3.1 group).

This proposal addresses use cases in digital publishing for accessible ebooks for which current metadata is not sufficient. These use cases require distinguishing between an ebook which has the complete text and audio of the work, one with the complete text and partial audio, and one with the complete audio and partial text. Additional permutations of this sort arise as multimedia in ebooks is factored in, requiring an access mode-based solution rather than a vocabulary of types of books.

Like the existing accessibility properties, these new properties can apply to any CreativeWork. They might apply to physical books in some cases (particularly braille books and audio books on physical media) but this work is probably separate from the bibliographic extension.

We are proposing three properties:
accessMode: The human sensory perceptual system or cognitive faculty through which a person may process or perceive information.

accessModeSufficient: A list of single or combined accessModes that are sufficient to understand all the intellectual content of a resource.

accessibilitySummary: A human-readable summary of specific accessibility features or deficiencies, consistent with the other accessibility metadata but expressing subtleties such as "short descriptions are present but long descriptions will be needed for non-visual users" or "short descriptions are present and no long descriptions are needed."

accessMode is important for defining the basic contents of a file. Is this an ebook with audio or plain text? Are there visuals? Having this information allows a more personalized search process because tools can support users who are looking for materials that meet their needs with or without accessibilityFeatures.

accessModeSufficient is important for distinguishing the various ebook types described above. The use cases in our proposal show in detail why this is necessary to permit fine-grained description of accessible ebooks. It permits a metadata author to be specific about what combinations of access modes will give full access to a resource. Some metadata authors may not wish to author this property; they will still be able to make use of accessMode, which is simpler. Publishers working intensively on accessible ebooks will be motivated to understand and use both properties.

accessModeSufficient may also be useful to search engines seeking to filter resources for users. In some cases, it serves as an encoding of the combination of accessModes and accessibilityFeatures, revealing, for example, that a silent video is accessible even though it lacks captions, because there is no audio to be captioned, or that a web page that has images is accessible to a non-visual user because the images have been described.

accessibilitySummary offers a backup for subtle information that is hard to communicate with structured metadata but might be important to readers searching for a suitable ebook or other resource.

These properties are suitable for non-ebook use as well. Any multimedia resource can be better described with these properties.

The proposal is detailed at the following page, including use cases:
https://github.com/daisy/epub-revision-a11y/wiki/ePub-3.1-Accessibility--Proposal-To-Schema.org

@danbri danbri pushed a commit that referenced this issue Apr 13, 2016
Dan Brickley First cut at #1100 9b8edaf
@danbri danbri pushed a commit that referenced this issue Apr 13, 2016
Dan Brickley Added text for #1100 from https://github.com/daisy/epub-revision-a11y…
…/wiki/ePub-3.1-Accessibility--Proposal-To-Schema.org

Not currently defining via enumeration - should it?
b370ec4
@danbri danbri pushed a commit that referenced this issue Apr 13, 2016
Dan Brickley Added examples. #1100 d147e09
@danbri

Thanks for the detailed proposal. I have made a pass at implementing it for wider review and discussion.

Draft available at:

In putting this together the most obvious question to ask was about the values of these properties. Schema.org has the notion of an Enumeration, which allows us to define natural-language-neutral URLs for well known property values (e.g. http://schema.org/True). Our previous accessibility-related properties e.g. http://schema.org/accessibilityFeature haven't yet used this construct and instead documented rough lists of possible values in a Wiki. I have for now followed that approach here, and have made a JSON-LD example which shows repeated use of a property for multiple values. This will look somewhat more verbose in RDFa/Microdata. Was this approach your intention or should we look to define more rigid enumerations for accessMode and accessibilitySummary? /cc @betehess who has been investigating the tradeoffs around strings vs enumerated URLs for opening hours ("Monday" vs http://schema.org/Monday etc.).

<script type="application/ld+json">
{
  "@context": "http://schema.org/",
  "@type": "Book",
  "name": "Some graphic novel",
  "accessMode": ["textual", "visual"],
  "accessModeSufficient": ["textual", "visual"],
  "accessibilitySummary": "Visual elements are not described."
}
</script>

Also: accessibilitySummary ... can we think through whether this broadly-named property could also serve a purpose for real world / physical accessibility eg. of places? We have discussed such functionality previously (#254).

/cc @chaals @vholland @rvguha @pmika @scor @shankarnat @tmarshbing

@danbri danbri self-assigned this Apr 13, 2016
@chaals

So interpreting what the array means is where I got stuck. In your example, you need all the modes. But many resources have multiple sets of accessModeSufficient. So given a movie which requires either audio, or visual+text, to be usable, does something like the following work?

<script type="application/ld+json">
{
  "@context": "http://schema.org/",
  "@type": "Movie",
  "name": "Some graphic novel",
  "accessMode": ["textual", "visual"],
  "accessModeSufficient": ["textual", "visual"]
  "accessModeSufficient": ["audio"],
  "accessibilitySummary": "There is audio description, and closed captioning of the main audio"
}
</script>

Also: accessibilitySummary ... can we think through whether this broadly-named property could also serve a purpose for real world / physical accessibility eg. of places? We have discussed such functionality previously (#254).

Yes, it wouldn't be a bad start.

@madeleinerothberg

Charles,
You are interpreting the array of accessModeSufficient values correctly. The intent is that user must be able to use all of the modes in any one line together to fully use the resource, but in some cases there are several distinct combinations that are sufficient, each with their own accessModeSufficient statement. Your movie example works perfectly. It would make sense to add

"accessibilityFeature": ["audioDescription", "captions"]

Use of accessibilitySummary for general description of accessible places makes sense. We would need to edit the definition, and I would suggest adding a warning that if structured metadata fields are available, they should be used instead of or in addition to a plain-text summary. If summary is the only field adopted widely, we will have less functionality than if accessMode and accessibilityFeature are adopted widely.

@chaals

@madeleinerothberg yes it makes sense to add the accessibilityFeatures.

@danbri does my syntax give the right structure? I've got a head full of 'flu, but it strikes me that there should be a node in the middle, so the resulting data doesn't look like

resource -> accessModeSufficient -> (the two arrays, merged).

?

@danbri

Ah, yes it sounds like some substructure is needed then.

Also I think related to @chaals' point: there's a convention that we try to stick to which is that the meaning of one property/value pair ought not to be undermined by a nearby additional property/value pair, to avoid confusion if the data is subsetted. I don't think we always stick to it though. Sorry that isn't the most helpful explanation, I'll try to work through an example asap.

@madeleinerothberg

Yes, we need some way for each accessModeSufficient statement to remain separate. I wouldn't say that one statement "undermines" the next; each one adds more data about the resource being described without changing the truthfulness of the previous statements. But that might be different than your intended meaning for undermined.

@chaals

I think we should move forward on accessibilitySummary while we figure out how to get the model right for the other two. It would indeed be a very valuable property to describe places and products.

@danbri

@madeleinerothberg - yes, I was trying to say that we want an additive design as you outline

@madeleinerothberg

I'd be happy to move forward with accessibilitySummary and accessMode (which does not require complicated modeling), but let's not delay figuring out the model for accessModeSufficient. Having summary without the others would encourage use of less structured data when more structure is ultimately going to provide better results. The EPUB community is also eager to get this metadata in place and is moving toward a version 3.1. How can we work this out? Would a synchronous call for interested participants be helpful?

@madeleinerothberg

With Schema 3.0 launched, I'd like to see these accessibility proposals included in the next release. What is necessary to do that?

@danbri

Per email exchange, let's try to have a call with @chaals and any other interested parties in early-mid June.

@danbri
{
  "@context": "http://schema.org/",
  "@type": "Movie",
  "name": "Some graphic novel",
  "accessMode": ["textual", "visual"],
  "accessModeSufficient": ["textual", "visual"],
  "accessModeSufficient": ["audio"],
  "accessibilitySummary": "There is audio description, and closed captioning of the main audio"
}

parses to

_:b0 http://schema.org/accessMode "textual" .
_:b0 http://schema.org/accessMode "visual" .
_:b0 http://schema.org/accessModeSufficient "audio" .
_:b0 http://schema.org/accessibilitySummary "There is audio description, and closed captioning of the main audio" .
_:b0 http://schema.org/name "Some graphic novel" .
_:b0 http://www.w3.org/1999/02/22-rdf-syntax-ns#type http://schema.org/Movie .

@danbri

rough example attempt

{
"@context": "http://schema.org/",
"@type": "Movie",
"name": "Some graphic novel",
"accessMode": ["textual", "visual"],
"accessModeSufficient": { "@list": ["textual", "visual"] },
"accessModeSufficient": { "@list": ["audio"] },
"accessibilitySummary": "There is audio description, and closed captioning of the main audio"
}

but I don't see what I expect in http://json-ld.org/playground/ per https://www.w3.org/TR/json-ld/#sets-and-lists

@danbri

AHA

this.

{
  "@context": "http://schema.org/",
  "@type": "Movie",
  "name": "Some graphic novel",
  "accessMode": ["textual", "visual"],
  "accessModeSufficient": [ { "@list": ["textual", "visual"] }, { "@list": ["audio"] } ],
  "accessibilitySummary": "There is audio description, and closed captioning of the main audio"
}

_:b0 http://schema.org/accessMode "textual" .
_:b0 http://schema.org/accessMode "visual" .
_:b0 http://schema.org/accessModeSufficient _:b1 .
_:b0 http://schema.org/accessModeSufficient _:b3 .
_:b0 http://schema.org/accessibilitySummary "There is audio description, and closed captioning of the main audio" .
_:b0 http://schema.org/name "Some graphic novel" .
_:b0 http://www.w3.org/1999/02/22-rdf-syntax-ns#type http://schema.org/Movie .
_:b1 http://www.w3.org/1999/02/22-rdf-syntax-ns#first "textual" .
_:b1 http://www.w3.org/1999/02/22-rdf-syntax-ns#rest _:b2 .
_:b2 http://www.w3.org/1999/02/22-rdf-syntax-ns#first "visual" .
_:b2 http://www.w3.org/1999/02/22-rdf-syntax-ns#rest http://www.w3.org/1999/02/22-rdf-syntax-ns#nil .
_:b3 http://www.w3.org/1999/02/22-rdf-syntax-ns#first "audio" .
_:b3 http://www.w3.org/1999/02/22-rdf-syntax-ns#rest http://www.w3.org/1999/02/22-rdf-syntax-ns#nil .

Alternative would be to use http://schema.org/ItemList

@danbri
danbri commented Jun 30, 2016 edited

Here is an alternative formulation that does not use RDF (ie. JSON-LD + RDFa friendly) lists, but instead uses the ListItem construction we have within schema.org:

{
  "@context": "http://schema.org/",
  "@type": "Movie",
  "name": "Some graphic novel",
  "accessMode": ["textual", "visual"],
  "accessModeSufficient": [ 
       { "@typeof": "ListItem", "itemListElement": ["textual", "visual"] }, 
       { "@typeof": "ListItem", "itemListElement": ["audio"] } ],
  "accessibilitySummary": "There is audio description, and closed captioning of the main audio"
}

The triples view from JSON-LD parser (the Playground tool again) is:

_:b0 http://schema.org/accessMode "textual" .
_:b0 http://schema.org/accessMode "visual" .
_:b0 http://schema.org/accessModeSufficient _:b1 .
_:b0 http://schema.org/accessModeSufficient _:b2 .
_:b0 http://schema.org/accessibilitySummary "There is audio description, and closed captioning of the main audio" .
_:b0 http://schema.org/name "Some graphic novel" .
_:b0 http://www.w3.org/1999/02/22-rdf-syntax-ns#type http://schema.org/Movie .
_:b1 http://schema.org/@typeof "ListItem" .
_:b1 http://schema.org/itemListElement "textual" .
_:b1 http://schema.org/itemListElement "visual" .
_:b2 http://schema.org/@typeof "ListItem" .
_:b2 http://schema.org/itemListElement "audio" .

Tradeoff is that this design is syntax-neutral and works equally well or badly in Microdata. In doing so it opts out of the syntax-level support in JSON-LD (via "@list") and in RDFa 1.1 (via @inlist ).

https://www.w3.org/TR/rdfa-syntax/#list-generation

@danbri

Q: to what extent could these concepts be applied to description of Events?

@darobin

FWIW I don't think that modelling things as untyped lists of lists is very human-friendly, or in fact good modelling. Doubly so as none of the lists in question are in fact ordered, which means they aren't really lists... Semantically, this is saying that ["textual", "visual"] is a different requirement from ["visual", "textual"] — I don't think that's true.

At this point we're really better off having a new class, says AccessModality. This has the added advantage that you can also attach a useful description to it, an indication of how to access a given modality. The modalities on one AccessModality are anded; several AccessModalitys can be specified and those are ored.

{
  "@context": "http://schema.org/",
  "@type": "Movie",
  "name": "Some graphic novel",
  "accessMode": ["textual", "visual"],
  "accessModeSufficient": [ 
    {
      "@type": "AccessModality",
      "requiredModality": ["textual", "visual"],
      "name": "Closed-captioning"
    },
    {
      "@type": "AccessModality",
      "requiredModality": ["audio"],
      "description": "Audio description",
      "url": "http://berjon.com/singing-some-beyonce.mp3"
    }
  ]
}

This might further obviate the need for accessibilitySummary since the modalities can describe that. It could also be more oriented towards universal design (rather than just a11y) and be used to specify other aspects (eg. requires a touch device, a colour screen…)

@clapierre

Your approach sounds interesting, will be interested to hear what others think. This approach would not replace the need for accessibilitySummary as this can be used outside of accessModeSufficient for other accessibility descriptions needed in other disciplines other than Digital Publishing.

@danbri

@darobin. - the motivation for a list is that it becomes harder to accidentally subset the data, casually altering its semantics quite strongly. The encoding of OWL rules in RDF/S exploited similar structures. It ain't pretty, for sure, but when what you want to say doesn't really partition into independent triples the options are awkward.

@madeleinerothberg
madeleinerothberg commented Jun 30, 2016 edited

Writing existing use cases in the syntax DanBri proposed, we get these examples. Comments and corrections welcome.

Use case 2.B from:
https://github.com/daisy/epub-revision-a11y/wiki/ePub-3.1-Accessibility--Proposal-To-Schema.org

"Alice in Wonderland" – Children's book with illustrations
A novel for children, with complementary illustrations.
Case 2.B - audio media overlays for the text of the story, short descriptions of illustrations.

According to syntax in:
#1100 (comment)

{
  "@context": "http://schema.org/",
  "@type": "Book",
  "name": "Alice in Wonderland",
  "accessMode": ["auditory", "textual", "visual"],
  "accessibilityFeature": ["alternativeText", "synchronizedAudioText"],
  "accessModeSufficient": [ { "@list": ["textual"] }, { "@list": ["textual", "visual"] }, { "@list": [“auditory"] }, { "@list": ["auditory", "visual"] }, { "@list": ["auditory", "visual"] }, { "@list": ["auditory", "visual", "textual"] } ],
  "accessibilitySummary": "Short descriptions are provided; long descriptions of the images are not needed for most readers."
}

If instead we use the syntax in:
#1100 (comment)

{
  "@context": "http://schema.org/",
  "@type": “Book",
  "name": "Alice in Wonderland",
  "accessMode": ["auditory", "textual", "visual"],
  "accessibilityFeature": ["alternativeText", "synchronizedAudioText"],
  "accessModeSufficient": [ 
       { "@typeof": "ListItem", "itemListElement": ["textual"] }, 
       { "@typeof": "ListItem", "itemListElement": ["textual", "visual"] }, 
       { "@typeof": "ListItem", "itemListElement": ["auditory"] }, 
       { "@typeof": "ListItem", "itemListElement": ["auditory", "visual"] }, 
       { "@typeof": "ListItem", "itemListElement": ["auditory", "textual"] }, 
       { "@typeof": "ListItem", "itemListElement": ["auditory", "textual", "visual"] } ],
  "accessibilitySummary": "Short descriptions are provided; long descriptions of the images are not needed for most readers."
}
@darobin

@danbri That can support the case for @list (though I would contend it is a case for @set) in the branches, but not a case for lists of lists.

Also I'm not sure about the "accidentally subset data" problem; I mean this could happen at any time, and is very dependent on how you process the data. We can't be defensive against all such arbitrary cases, unless we start hashing, no?

@madeleinerothberg

@chaals, @danbri, does @set make sense? @darobin is correct that the items in the groups (and the groups themselves) do not require a specific order. What is the best way to model this aspect?

@jaygray0919

@set is a W3C JSON-LD issue: https://www.w3.org/TR/json-ld/
Is there order in set? I was not aware of that.

@madeleinerothberg

@jaygray0919, Robin implied that @set does not imply order, while @list does. That matches what I understand in the JSON-LD spec. For accessModeSufficient, order is not important, but correctly interpreting the array is critical.

@iherman

Just as a side remark: it is indeed correct that RDF/OWL does use RDF Lists when, in fact, unordered collections are required model wise (see, e.g., the Class Disjointness Example in the OWL Primer). This could be considered a hack; I am not sure it is a good idea to make this hack explicit, because it just leads to misunderstandings. In other words, I think using and explicit @list or @set will just be the source of confusion for many users, and it should be avoided.

My preference goes to @darobin's proposal. The added advantage is that it indeed makes it possible (now or in the future) to add additional properties to each accessModeSufficient option. As an example, when I first read through the examples, it was not really clear to me what the various accessModeSufficient options meant, for example for Moby Dick and, actually, the example did add some explanatory note in some cases to make it more clear. Well, adding those explanatory notes to the model itself is a good idea (just as the example of @darobin shows). But I agree with @clapierre that the accessibilitySummary is still necessary.

That being said, model wise there is no real difference between @darobin's model and @danbri's proposal based on schema lists. The latter uses ItemList (@danbri, your example used ListItem, isn't that a bug, shouldn't it be ItemList?) instead of AccessModality for the type, and itemListElement instead of requiredModality for the array; that is all! It has the same advantage as @darobin's approach but uses a generic structure instead of a specific one. I am not sure whether that is an advantage or not (do schema processors make something special with this?). Actually, we may also combine these: we could define AccessModality as a subclass of ItemList and then the only modification in @darobin's example is to use itemListElement...

@jaygray0919

Agree with @iherman. May I repeat this open issue: #1170. It is one example of setting order for a list per Ivan's discussion. It also presents a real problem with the domain of ListItem nextItem. IMHO it's a simple, non-controversial proposal. However, we'll defer to the heavyweights on this thread.

@darobin

@iherman I agree that my proposal is very close to @danbri's (that's on purpose :) but the ItemList/ListItem issue is part of why I prefer a specialised syntax: since those objects are simultaneously items in a list and lists of items, both classes could in fact apply… I find that confusing (but maybe it's just me). Also, the various list things I would expect to be @list in the context, whereas in minting our properties we could make them @set.

@danbri

To address an earlier point, yes I did screw up an example somewhere and wrote ItemList for ListItem or vice-versa; I thought I'd fixed all occurances of that but apparently not.

Following this discussion, I am going off the idea of using syntax-specific lists, or ItemList, but perhaps a custom subtype of it so we can (in theory at least) re-use numberOfItems as a simple checking mechanism.

@madeleinerothberg

@danbri or @chaals, can you let us know the specific syntax you would like to recommend? I can then use that to generate examples for the elements on the pending page.

@iherman

This issue seems to have stalled... Putting my hat of IDPF EPUB WG on, there is a certain level of urgency to solve it. Indeed, the WG is on its way to wind down, and this issue is important to close the work related to accessibility.

If I look at my comment, @darobin's answer, as well as @danbri's answer, can we agree that @darobin's original proposal wins? I guess the next step would be for @madeleinerothberg to finalize the examples using the final term set and structure, and to add the terms, with their proper definition, to the schema.org tree...

@danbri

I'm happy to work from @darobin 's i.e. #1100 (comment) but I'm still concerned that dropping triples radically changes the meaning of the data. Can we have some kind of count or other metadata so (as with the old OWL stuff) it is possible to check that all the constraints have been communicated?

@iherman

I'm still concerned that dropping triples radically changes the meaning of the data. Can we have some kind of count or other metadata so (as with the old OWL stuff) it is possible to check that all the constraints have been communicated?

@danbri can you elaborate? I am not sure I understand your concerns (although @madeleinerothberg or @clapierre may, they are more versed in the details than I am).

@danbri

@iherman they didn't raise it, I brought this up. It's hard to articulate, so I'll pick a different and loosely analogous scenario:

Consider trying to express something like "Entrance criteria for Dan's nightclub: dresscode is: shoes-or-footcovering, trousers-or-skirt, shirt-or-equiv", i.e. you can get in if you meet these 3 points.

Because of the way RDF-based languages work, with AND'd independent triples, if some collection of triples are believed to be true, you ought to also believe any subset. And such subsets can be legitimately acquired e.g. by SPARQL querying a larger collection. So the concern is equivalent to worrying that some schema designs for this situation would make it possible to end up with a subset that is "also true" at one level but misleading, e.g. you'd convince yourself you could get entry to the fictional nightclub while only wearing shoes-or-footcovering.

That's why I brought up the otherwise annoying RDF list construction: it is organized in a way that makes it obvious when you have a truncated list. A check/count (e.g. a custom property like "numDresscodeConstraints: 3" would be similar. OWL used the list structure because it has a lot of machinery for defining class membership rules in terms of complicated criteria.

Maybe I'm making a fuss about nothing here, I will admit that the concern seems a little theoretical. Copying @rvguha who may have some perspective.

@iherman

@danbri, I understand what you mean. And, whilst I can also see there is a danger or, more exactly, applications may have to add some application level logic if they want to avoid such distortions, I believe the, shall we say, clumsiness of reinforcing a list (both in JSON-LD and in RDFa) may be a bigger problem in practice. Let alone the additional semantic fact that @darobin mentioned: if we use a list, we give the (false) impression that the order of the term matter, which is obviously not the case. (This is a problem in the OWL usage of lists as well: obviously, for example, order does not count in the case of disjointness of classes, but the RDF formulation of OWL does give this impression; OWL reasoners and usage just gloss over that issue...)

So... none of the solution are, semantically, crystal clear. Alas! But if so, I believe we should go for the approach that is the simplest for users who may not even follow what we are talking about...

(Yep, this is the problem that we do not have a standard, sort of, "closed set" in RDF. But, well...)

@danbri

So I think this is my last proposal, compared to @darobin's.

dan's:
{
  "@context": "http://schema.org/",
  "@type": "Movie",
  "accessModeSufficient": [ 
    { 
      "@type": "ItemList", 
      "itemListElement": ["textual", "visual"] 
    }, 
    { 
      "@type": "ItemList", 
      "itemListElement": ["audio"] 
    } 
    ],

}

Robin's:
{
  "@context": "http://schema.org/",
  "@type": "Movie",
  "accessModeSufficient": [ 
    {
      "@type": "AccessModality",
      "requiredModality": ["textual", "visual"],
      "name": "Closed-captioning"
    },
    {
      "@type": "AccessModality",
      "requiredModality": ["audio"],
      "description": "Audio description",
      "url": "http://berjon.com/singing-some-beyonce.mp3"
    }
  ]
}

If we go with the latter we'll still need to get the property definitions working (without mention of lists).

Currently we draft this for requiredModality: "A list of single or combined accessModes that are sufficient to understand all the intellectual content of a resource. Expected values include: auditory, tactile, textual, visual."

How about: "Combined access modalities are expressed via repeated properties. If multiple modalities are needed, this is expressed as several requiredModality properties of a common AccessModality."

@iherman

@danbri @darobin I do not really have a strong feeling; as I said, I have a slight preference for @darobin's version but I think your version works just fine, too. If we go for yours, I think the possibility of having a "name" and a "description" would still be handy, but that may be usable with any schema.org entry, so we may get that for free. I am not sure what the decision procedure is of choosing among those two...

As for the description for requiredModality: it looks o.k. to me, but I defer to @madeleinerothberg and @clapierre for this.

@darobin

@iherman ItemList inherits from Thing, so it does have name and description. The two proposals are equivalent (and equally verbose, mine just mentions a few extra things that could also be on @danbri's), the only differences I see (correct me if I'm wrong) are:

  • Usage of a specific AccessModality type and requiredModality property. Whether this has value depends I guess on whether they might be reused elsewhere, and on aesthetic considerations of readability versus generality.
  • The fact that requiredModality can be expressed as a set instead of a list. This may be a pedantic distinction — I would expect any processor that understands this to cope just the same.

I don't have a strong preference, I'm just trying to help the discussion. Our biggest issue with the existing accessibility properties is that we don't understand them; since we understand both of the above proposals we can live with either.

@danbri

Let's try to wrap this up. @chaals are you around?

@madeleinerothberg

I'm working on examples using @darobin's syntax right now. I want to discuss naming of the components with the epub a11y working group -- back with examples soon.

@madeleinerothberg
madeleinerothberg commented Sep 1, 2016 edited

I adapted @darobin's syntax and provide below two examples, a movie and a book with synchronized audio.

This model introduces two new sub-parts of accessModeSufficient, and I suggest a new name for one of them. The "accessModeSufficient" statement has a repeatable part which Robin called "AccessModality". This is the element that holds a single sufficient combination to ensure that the modalities for that combination remain bound together as a group. I suggest we name that element "AccessModeCombination" instead.

Within the combination element is another element, which Robin called "requiredModality", that holds the set of access modes. These can be expressed on one line in JSON, but the rules of RDF are such that they could be separated from each other, which is why we need the grouping element around them. I suggest keeping the name requiredModality for this element, since in the context of the specific access mode combination being described, each of the modalities is required to make the combination work.

There is a "description" string associated with each combination. Previous comments on this thread said that the notes on the original wiki page where helpful, so I used "description" to describe the kind of experience offered with that combination of access modes; this might be a plain text label used by readers to confirm that the combination they are being offered meets their needs or it might just be good documentation for this example. I used sensory language – "see text" and "hear text" rather than "read" – for clarity of what access mode is in use, to show good practice in the example.

Robin's original example included a URL for an audio file with the audio description combination, but without a better exploration of best practice for including audio description for a movie, I'd rather not code that into an example in the documentation.

Here are the examples:
Example 1

{
  "@context": "http://schema.org/",
  "@type": "Movie",
  "accessMode": ["auditory", "visual"],
  "accessibilityFeature": ["audioDescription", "captions"],
  "accessModeSufficient": [ 
    {
      "@type": "AccessModeCombination",
      "requiredModality": ["textual", "visual"],
      "description": "Closed captioning"
    },
    {
      "@type": "AccessModeCombination",
      "requiredModality": ["audio"],
      "description": "Audio description"
    }
  ],
  "accessibilitySummary": "Captions provided in English; short scenes in French have English subtitles instead."
}

Example 2

{
  "@context": "http://schema.org/",
  "@type": "Book",
  "name": "Alice in Wonderland",
  "accessMode": ["auditory", "textual", "visual"],
  "accessibilityFeature": ["alternativeText", "synchronizedAudioText"],
  "accessModeSufficient": [ 
    {
      "@type": "AccessModeCombination",
      "requiredModality": ["textual"],
      "description": "See the text"
    },
    {
      "@type": "AccessModeCombination",
      "requiredModality": ["textual", "visual"],
      "description": "See the text and images"
    },
    {
      "@type": "AccessModeCombination",
      "requiredModality": ["auditory"],
      "description": "Hear the text and image descriptions"
    },
    {
      "@type": "AccessModeCombination",
      "requiredModality": ["auditory", "visual"],
      "description": "Hear the text and see the images"
    },
    {
      "@type": "AccessModeCombination",
      "requiredModality": ["auditory", "visual", "textual"],
      "description": "Hear the text and see the text and images"
    }
  ],
  "accessibilitySummary": "Short descriptions are provided; long descriptions of the images are not needed for most readers."
}
@rvguha
@clapierre

You can see what we are proposing in the Accessibility Techniques document
http://www.idpf.org/epub/a11y/techniques/#sec-meta-002

@thadguidry
thadguidry commented Sep 6, 2016 edited

@clapierre I think your example meta property values for accessModeSufficient should contain comma ',' to separate visual and textual and to signify a list of potential values in the string.

From this: <meta property="schema:accessModeSufficient">textual visual</meta>
To this: <meta property="schema:accessModeSufficient">textual, visual</meta>

because accessModeSufficient might have values containing whitespace in the future... i.e. Google Glasses, textual, Ericsson Brainwave , etc... as accessibility modes for supporting formats themselves might expand beyond just textual and visual...think VR experiences for the deaf or blind and how they might be wildly different for those users versus those without impairments.

@mattgarrish

@thadguidry Yes, I raised the same on the last call after seeing the revised proposal and then forgot to change. I'm just preparing the new release now, so I'll see what I can do to correct before we announce. We also plan to explain the differences in expression in the next draft, given that the EPUB package metadata only supports very basic metadata.

@danbri

Using a comma separated list is a different design to those we discussed so far (which was repeating properties or using explicit list structures to make sure we know if data gets subsetted since that changes its meaning).

If we did go for comma lists we might want to assert that the order is insignificant (and/or encourage A-Z order).

@madeleinerothberg

Matt isn't proposing a different design for schema.org; for use on the broader web, the design we've agreed to is best for capturing the structure. However, inside EPUB, a different binding is necessary due to EPUB's limitations. Our techniques document can recommend that web sites use proper schema markup in their HTML, while holding the simpler markup inside EPUB files.

@madeleinerothberg

Are the new examples ready to go on the pending pages for the metadata elements?
https://pending.schema.org/accessModeSufficient
https://pending.schema.org/accessMode

@mattgarrish

Yes, I think the advice Dan is offering is what we need to expand on for EPUB, but I wouldn't let EPUB influence this work. It's anticipated the next major version will provide richer metadata, but until then we have to work around the limitations of simple property expressions.

@danbri

I may even be saying that this could be a good idea for the mainstream schema.org representation. However the rough consensus here seemed to be that I was making a bit of a fuss over nothing regarding concerns about atomic vs composite meaning and repeated properties. Maybe @rvguha can figure out what I was on about and jump in here?

In terms of syntax, the idea is that

"requiredModality": ["auditory", "visual"],

could become just

"requiredModality": "auditory, visual" ...

...which packs an entire list in a single property, a behaviour which simultaneously makes it difficult to process w.r.t. the sub-components (except via clumsy regular expressions), but also safe from being fragmented into sub-graphs with accidental meaning change.

@thadguidry

@danbri yes, fragmentation avoidance is a benefit. One more thought, which I think I had mentioned offlist before to some folks about a new DataType possibility for supporting simple lists ?

Here is where some Schema.org Properties could accept either existing Text, or proposed TestList, or OrderedTextList.

DataType: TextList
Description: A list of values separated by a comma. Example: "carrots, apples, bananas"

DataType: OrderedTextList
Description: An ordered list of values separated by a comma. Example: "apples, bananas,, carrots"

@rvguha
@thadguidry

@rvguha I'm ok with just List

@rvguha
rvguha commented Sep 6, 2016 edited
@danbri

Meaning our existing http://schema.org/ItemList ? (which offers numberOfItems for the paranoid), rather than the built-in list machinery of e.g. JSON-LD (@inlist ...

@rvguha
@thadguidry
thadguidry commented Sep 8, 2016 edited

@danbri BUT...the description on the ItemList:itemListElement shows enclosing quotes around each element in the List however...

For itemListElement values, you can use simple strings (e.g. "Peter", "Paul", "Mary"), existing entities, or use ListItem.

Is the description saying it is ok to use my proposed simple form with "Peter, Paul, Mary" ?

Example:
{
"@context": "http://schema.org",
"@type": "ItemList",
"@url": "http://en.wikipedia.org/wiki/Billboard_200",
"name": "Top music artists",
"description": "The artists with the most cumulative weeks at number one according to Billboard 200",
"itemListElement": "Prince, Michael Jackson, Rolling Stones"
}

TODO ? We don't seem to have the simple Text List case in any of 1-6 examples on ItemList, so I think that is throwing me off and probably others as well. Let's fix that if we can, and give the simple List form (only 1 pair of enclosing quotes with comma separating your elements) in the description for itemListElement.

@vholland

The comma-separated list is going to be error-prone. As an example, for top artist, should I interpret "Peter, Paul, and Mary" as 3 entities or 1?

While I agree we should put the burden on data consumers to do the heavy lifting, we shouldn't make their work impossible. CSV-style quoting is rather ugly.

@rvguha
@darobin

@thadguidry No, the description says it would be okay to have:

itemListElement: ["Peter", "Paul", "Mary"]

instead of

itemListElement: [
  {
    "@type": "ListItem",
    "item": { "@type": "Person", "givenName": "Peter" }
  },
  {
    "@type": "ListItem",
    "item": { "@type": "Person", "givenName": "Paul" }
  },
  {
    "@type": "ListItem",
    "item": { "@type": "Person", "givenName": "Mary" }
  }
]

(Not that they're equivalent, but both are allowed.)

Processing commas (or any other syntax inside literals) is not for schema.org to decide, that's up to the individual syntaxes. Also, I would like to get on the record that it is a really, really bad idea that will collide with large amounts of existing content. It also doesn't buy much compared to the first example above.

@thadguidry

All - awesome. Everyone agrees, bad idea of simple comma separated list for itemListElement. And I also thought it was a bad idea sorta and saw the documentation issues. And why I brought it up, which was I saw sites doing those kind of things. Probably because of our weak example of it and the wording in the description.

So...

The good idea is now to just clarify with a good example and put inside the description that you should use the [ ] array holder. And also note that 'it is a bad idea to use a simple comma separated list, instead use the [ ] array holder, such as itemListElement: ["Peter", "Paul", "Mary"] or something to that effect.

@madeleinerothberg

Do we need to address the issue that came up earlier on this thread, that "list" implies that the order matters while "set" does not? For the accessModeSufficient use case, order does not matter.

@danbri

We ought to be explicit and say that the ordering is not relevant.

@tmarshbing

Can we not use http://schema.org/itemListOrder of "Unordered" if we want to be explicit?

@danbri

Good point. So let's be explicit in the property definitions that the itemListOrder is "Unordered", rather than have the instance data need to express it.

@rvguha
@danbri

A number of us are at W3C TPAC this week, and aspire to meet towards finishing this work but haven't managed it yet...

@clapierre

Hi Dan, George, Avneesh and I are here and will talk with you after this meeting we are all in in RDF Namespaces. :)

@danbri

We are now in a room. Ping @chaals though assume you are busy with webplatform.

@danbri

Notes from meeting:

For example, a digital book that is mostly text with some simple images that
has alt text associated with the image. In this case, the
accessModeSufficient would be 'textual' because the entire book can be understood
or perceived by a person using assistive technology.

If the book did not have alt text, we would instead say that the accessModeSufficient
had two values, which had two values (expressed as an [[ItemList]], 'visual' and
'textual'). The order of the list does not matter, and the intent is to express that
the content is difficult or impossible to use without each of these access modalities.

Not to be used:

Such distinctions naturally have a degree of subjectivity. While this terminology
can be used for general-purpose descriptions of content, it is also
applicable to tools and environments that personalize content to the accessibility
needs of specific users and tasks.

RESOLVED:

  • happy with ItemList
  • action: dan to update examples to use itemlist by friday
  • need to add IDPF and/or Daily Wiki links as explanation.
  • considered renaming sufficientAccessMode but declined to, due to related standards at IDPF and IMS using the current terminology.
@clapierre

Here is a link to our wiki definition of AccessMode, AccessModeSufficient, and AccessibilitySummary.

https://github.com/daisy/epub-revision-a11y/wiki/ePub-3.1-Accessibility--Proposal-To-Schema.org

@danbri

Also resolved:

  • We will remove this list: "colorDependent, chartOnVisual, chemOnVisual, diagramOnVisual, mathOnVisual, musicOnVisual, textOnVisual." from accessMode and replace it with a link to a document giving these or similar, perhaps/ideally a Wiki that can evolve.
  • accessibilitySummary - it could be a short textual block inline or a link to a document/page. And, further, that future application of this property to physical accessibility would be reasonable.
@darobin

Regarding the list of terms I would personally prefer it if they stayed in schema.org to benefit from broader review. Our interest in this topic stems from the fact that we tried to use the existing accessibility description features and based on the documentation we couldn't figure it out unambiguously — so we gave up.

I am leery that moving things to an external wiki punts.

@clapierre

Dan asked for our IDPF EPUB 3.1 Timeline where we will also be releasing the Accessibility Guidelines 1.0 which relies on the Schema.org metadata.

Timeline (ideal world):
Final editors draft: 1 August
Elevation to Public Draft status : 1 September
Elevation to Proposed status and IP review (45 days) 1 October
Submission of spec with implementation roadmap, membership vote (30 Days) 15 November
(BOD may decide to postpone vote depending on implementation status)
Vote concludes: 15 December

@danbri

@darobin - as @clapierre points out - we have a limited time window, I'd like to get these basics done asap. Currently e.g. 'chemOnVisual' (within schema.org) has no kind of proposed definition (or thing to link to) and just serves to confuse the majority of readers.

@madeleinerothberg

All of these decisions look fine to me except that I would argue to keep "colorDependent" in the accessMode vocabulary. It is used to flag material which would be difficult to use for someone with color blindness, which is one of the more common visual impairments.

In addition, I would argue to keep textOnVisual, which has been a feature of access mode going back several iterations in IMS (with the name textOnImage). Again, this is a common problem for accessibility, when text is included in an image and cannot be adjusted visually or read aloud by TTS.

The proposal to add accessMode and its vocabulary doesn't currently include definitions for each term, but as part of this process we will create documentation that includes those definitions and any other materials that the community would like. Would that help alleviate the concerns about these terms?

@danbri

@madeleinerothberg can you point us to definitions for these. Currently the draft definitions are just a list of mysterious (to the uninitiated...) strings. Is there an URL elsewhere that e.g. 'textOnVisual' should link to, or a short phrase defining it?

@madeleinerothberg

ColorDependent and textOnImage are both defined in the IMS Access for All v3 public draft in the Data Element Specification document, linked below. We can use these short definitions or improve them, as seems best to this community. We will post additional definitions so that all terms in the schema vocabularies have definitions.

Definition of colorDependent from IMS is "Information is conveyed that requires the ability to perceive colour." (It lists the term as "colour", but IMS has decided to adopt the schema.org suggestion of colorDependent since that is a much clearer name; updates to be published soon.)
https://www.imsglobal.org/accessibility/afav3p0pd/AfA3p0_DESinfoModel_v1p0pd.html#_Toc323719848

Definition of textOnImage from IMS is "Information is conveyed using text where the text is embedded in an image."
https://www.imsglobal.org/accessibility/afav3p0pd/AfA3p0_DESinfoModel_v1p0pd.html#_Toc323719895

@iherman iherman referenced this issue in w3c/dpub-pwp-ucr Sep 28, 2016
Open

9. Accessibility #133

@madeleinerothberg

Is this what everyone has in mind for ItemList syntax?

Example 1

{
  "@context": "http://schema.org/",
  "@type": "Movie",
  "accessMode": ["auditory", "visual"],
  "accessibilityFeature": ["audioDescription", "captions"],
  "accessModeSufficient": [ 
    {
      "@type": "ItemList", 
      "itemListElement": ["textual", "visual"], 
      "description": "Closed captioning"
    },
    {
      "@type": "ItemList", 
      "itemListElement": ["auditory"], 
      "description": "Audio description"
    }
  ],
  "accessibilitySummary": "Captions provided in English; short scenes in French have English subtitles instead."
}

Example 2

{
  "@context": "http://schema.org/",
  "@type": "Book",
  "name": "Alice in Wonderland",
  "accessMode": ["auditory", "textual", "visual"],
  "accessibilityFeature": ["alternativeText", "synchronizedAudioText"],
  "accessModeSufficient": [ 
    {
      "@type": "ItemList", 
      "itemListElement": ["textual"], 
      "description": "See the text"
    },
    {
      "@type": "ItemList", 
      "itemListElement": ["textual", "visual"], 
      "description": "See the text and images"
    },
    {
      "@type": "ItemList", 
      "itemListElement": ["auditory"], 
      "description": "Hear the text and image descriptions"
    },
    {
      "@type": "ItemList", 
      "itemListElement": ["auditory", "visual"], 
      "description": "Hear the text and see the images"
    },
    {
      "@type": "ItemList", 
      "itemListElement": ["auditory", "visual", "textual"], 
      "description": "Hear the text and see the text and images"
    }
  ],
  "accessibilitySummary": "Short descriptions are provided; long descriptions of the images are not needed for most readers."
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment