Re: The singleton property option

The singleton property approach has many downsides and is pragmatically unworkable.  There is a good reason people are not happy with this approach.


Bryan

________________________________
From: Niklas Lindström <lindstream@gmail.com>
Sent: Friday, April 26, 2024 2:08:41 PM
To: RDF-star Working Group
Subject: [EXTERNAL] The singleton property option

CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you can confirm the sender and know the content is safe.



For completeness (and perhaps to widen the perspective), here is the
singleton property option I briefly mentioned on the semantics call
(and alluded to in [1]). Also see [2] for the original; this is just a
quick strawman adaptation for the benefit of the LPG perspective.

It extends RDF 1.1 differently; no triple terms, no opacity, just:

1. Allow bnodes as predicates (blank predicates).
2. Define rdf:singletonPropertyOf for linking those to the property
they represent instances/occurrences/edges of.

3. Well-formedness conditions:
3.1 Bnode predicates are only to be used once; with one s and o
(similar to list cons nodes, who are "single purposed").
3.2 The rdf:singletonPropertyOf is semantically functional (exactly
like rdf:first and rdf:rest).

4. For optimization, implementations can put triples with blank
predicates in a dedicated table (using edgename as unique key),
relying on well-formedness for cohesion. Such a table is completed in
two steps: 1) the singleton assertion inserts s and o for edgename; 2)
the rdf:singletonPropertyOf assertion inserts p for edgename. If
well-formedness is broken, all optimization bets are off. Perhaps a
dedicated skolemization scheme can be employed for some more control
and/or "unstarring".

5. RDF-star syntax obviously needs no naming syntax; naming these
would break well-formedness.
6. What these *mean* of course needs a good definition (property
specializations, edge type instances or similar). Are they asserted?
Sure. Do they assert something using their rdf:singletonPropertyOf
property as predicate? No. (Could they? Well, they can be declared
("inline") to *also* be subPropertyOf the same property, and through
entailment that would happen.)
7. Reifiers become a usage pattern (informative) as suggested from the
property edge perspective. Any desired :reifiedBy or :partOf relation
can link predicate singletons to one or more "reifiers".

Basic example:

    << :s :p :o >> :source <stream662be7ba> ;
        :timestampMills 1714153402 .

Expands to:

    :s _:e1 :o .
    _:e1 rdf:singletonPropertyOf :p ;
        :source <stream662be7ba> ;
        :timestampMills 1714153402 .

Annotation syntax:

    :s :p :o {| :reifiedBy <#reifier> |} .

Expands to:

    :s :p :o .
    :s _:e1 :o .
    _:e1 rdf:singletonPropertyOf :p ;
      :reifiedBy <#reifier> .

Possible singleton property entailment?:

    _:e1 a rdf:SingletonProperty;
        rdf:subject :s ;
        rdf:prediate :p ;
        rdf:object :o .

Will entailment break well-formedness if (accidentally?) *put back*
into a regular graph? Of course, just as RDF lists are "broken"
whenever that happens (as in look terrible when serialized, make no
sense when queried, etc.).

Best regards,
Niklas

[1]: <https://lists.w3.org/Archives/Public/public-rdf-star-wg/2024Apr/0158.html>
[2]: <https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4350149/>

Received on Monday, 29 April 2024 17:06:49 UTC