- From: Niklas Lindström <lindstream@gmail.com>
- Date: Fri, 26 Apr 2024 23:08:41 +0200
- To: RDF-star Working Group <public-rdf-star-wg@w3.org>
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 Friday, 26 April 2024 21:09:13 UTC