[poe] Wording and RDF semantics: Collection - List - Sequence ...

nitmws has just created a new issue for https://github.com/w3c/poe:

== Wording and RDF semantics: Collection - List - Sequence ... ==
Digging deeper into the RDF behind the *Collection Classes of ODRL for #226 I noticed the IM uses a terminology which is not clear:
* **collection in the IM**: e.g. in 2.2 and 2.3 - "Asset/PartyCollection - an Asset/Party that is a _collection_ of resources." The further definition of the *Collection does not say a word about ordering, it only talks about "all items in the collection" - in terms of RDF 1.1 Semantics, see below, they could be a Collection or a Container.
* **Collection in the RDF 1.1 Semantics** - https://www.w3.org/TR/rdf11-mt/#rdf-collections - is defined as

> RDF provides a vocabulary for describing collections, i.e.'list structures', in terms of head-tail links. Collections differ from containers in allowing branching structure and in having an explicit terminator, allowing applications to determine the exact set of items in the collection.

* ... these "head-tail links" implement in fact an order of the items - and uses the rdf:first and rdf:rest relationships for the links.
* A **Container is in RDF 1.1 Semantics** a kind of enumeration (= Things are only members of the Container but have no relationships among them) - with three specific types
- in an rdf:Bag the Things are not ordered
- in an rdf:Seq the Things are ordered
- in an rdf:Alt the Things are alternatives, only one of them may be used
* **JSON-LD does not use "collection" as a term**, only as an linguistic attribute, e.g. "JSON-LD uses the same array representation as JSON, the _collection_ is unordered by default" (https://www.w3.org/TR/json-ld/ - section 3.1)
* ... but JSON-LD differentiates between unordered arrays (see above) and "ordered collections" (see section 6.11): to make an array ordered the JSON-LD keyword  @list must be used. (I didn't find quickly a clear statement by JSON-LD if a @list is RDFied to a rdf:List or something else.)
* ... and the ODRL IM defines in section 2.5.2 that the @list keyword must be used for the sequence of constraints related to an andSequence.
* The internal confusion in the RDF Universe is 
  * that the RDF 1.1 Semantics document uses different terms in headlines and in the vocabulary: D.3 is headlined and shows an "RDF Collection" but the class representing this is named rdf:List.
  * that JSON-LD uses terms which are coined by RDF 1.1 with different semantics, and free-text like "unordered array" is not related to a corresponding RDF 1.1 term.

I see this **state of not clear definitions in the ODRL IM:**
1. Key issue: I see not strategy to follow the RDF 1.1 terms - which should be a preference as ODRL IM builds on RDF.
2. Currently the RDF expression/serialisation of these "collections" is not defined:
  * AssetCollection
  * PartyCollection
  * ... they are not an ordered list and could be implemented following RDF 1.1 terminology by the RDF Container rdf:Bag.
2. "Half-baked" is Constraint Class - rightOperand - "list of ..."
as it is not clear: is the RDF semantics of rdf:list applied to this list? By what has  been discussed in #255 it could also be an unordered list, an rdf:Bag. And: does an ordered list have to be an rdf:List - or could it be also an rdf:Seq?
3. unclear is 2.5.2 Logical Constraint Class as it uses JSON-LD terminology for a part of the definition:
- the definition of the only property says "... its value is a list of the existing Constraint instances."
- further down for the andSequence is stated, it must use the @list keyword in JSON-LD
- open issue: may the "list of existing ..." related to "or", "xone" and "and" be unordered lists?

What do our RDF experts think about that?

Please view or discuss this issue at https://github.com/w3c/poe/issues/256 using your GitHub account

Received on Wednesday, 13 September 2017 08:24:22 UTC