- 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