Re: [External] : Re: Consolidating triple/edges

Hi Souri,


(NB: I'm adopting Andy's updated syntax introduced there:
https://www.w3.org/mid/94915f6b-b46f-44d4-91cc-db93d71fb3b9@apache.org

to avoid ambiguity.)


On 18/12/2023 22:53, Souripriya Das wrote:
> Hi Pierre-Antoine,
>
> The idea of RDFn profile sounds interesting, but what do you see as 
> the elements in "Full" MINUS "RDFn Profile"?
As I wrote below, the "RDFn" profile triple terms can not occur anywhere 
else than in the object of rdf:occurrenceOf.

So the following triple:

     <<( :s :p :o )>> :accordingTo :alice.


would be in RDF1.2 "Full", but not in RDF1.2 "RDFn".
Note that in RDF1.2 "RDFn", you could still write (in Turtle)


     <<| :id | :s :p :o >> :accordingTo :alice.

as it would be syntactic sugar for

     :id rdfs:occurrenceOf <<( :s :p :o)>>.
     :id :accordingTo :alice.


which meets the restrictions on the "RDFn" profile.



I am aware that RDFn, as you proposed it, is able to "emulate" the first 
example by using auto-named triples. I have my concerns with 
auto-naming, which I would rather keep out of the abstract syntax. But 
nevertheless, it is good to have guidance on how to encode RDF 1.2 
"Full" into more constrained profiles, and auto-naming can play this role.


I hope this answers your question.


   pa

>
> Thanks,
> Souri.
>
>
> ------------------------------------------------------------------------
> *From:* Pierre-Antoine Champin
> *Sent:* Monday, December 18, 2023 9:24 AM
> *To:* Andy Seaborne; RDF-star Working Group
> *Subject:* [External] : Re: Consolidating triple/edges
>
> Hi all,
>
> Andy's proposal below (which I have to say I like very much) gave me 
> an additional idea:
> if we were to follow it, we could consider introducing a third profile 
> that would sit between Basic (no triple terms) and "Full" (no 
> restrictuon), by allowing triple terms /only/ as the object of 
> rdf:occurrenceOf (in an asserted triple).
>
> A working title for this intermediate profile could be "RDFn" profile, 
> because my intuition is that this profile covers most of what RDFn 
> aims to do, and could be implemented in the same ways as RDFn (i.e. by 
> adding a 4th column to triples, the 4th column being the identifier).
>
> I see how more profile could mean more fragmentation of the 
> ecosystem... but it could also mean that more people find an option 
> they are happy with in RDF 1.2, and it is better if those options are 
> clearly laid out in the spec than "improvised" by each unhappy 
> implementer.
>
>   best
>
> On 12/12/2023 21:59, Andy Seaborne wrote:
>
>     Here is an attempt to write out the details of what I think has
>     been said recently.
>
>     It is addressing "publishing information about multi-edges".
>     (Ideas here are from WG members - the mistakes are mime.)
>
>
>     Multiple edges with the same label are handled as multiple
>     occurrences - the predicate URI of the RDF triple is thought as a
>     conceptual relationship - with multiple sets of annotations.
>
>     This preserves the uniqueness of triples in a graph, and allows
>     independent collections of assertions about a relationship. Such
>     collections of assertions do not get entangled on merge.
>
>
>     ## Turtle
>
>     Add to Turtle a new statement (grammar rule 2):
>
>        << occurrenceName | :s :p :o >> .
>
>     This names an occurrence of the triple s p o.
>
>     The triple is not asserted, keeping "assertion" and "occurrence"
>     as orthogonal concepts even if they might commonly be used together.
>
>     occurrenceName is a URI or blank node, including [] (the ANON
>     terminal rule 47 in Turtle - no triples inside the []).
>
>     It is better to have the name first to allow for split lines and
>     modified annotation syntax below.
>
>
>     ## N-Triples
>
>     In N-Triples, reflecting the RDF abstract data model, there is a
>     property to relate occurrence to a triple term.
>
>        :occurrenceName rdf:occurrenceOf << :s :p :o >> .
>
>     There are triples terms in the data model
>     (RDF-Concepts - section 3.1 : editors draft [2]).
>
>     Renaming "quoted triple" as "triple term" would be better because
>     it has less implication of the usage.
>
>     The NT syntax would be available in Turtle in the same way that
>     rdf:first is available in Turtle - and with the same expectation
>     that it would rarely be used.
>
>
>     ## RDF Graph Merge
>
>     Graph merge happens as before - blank nodes need to be kept apart.
>
>
>     ## Annotation
>
>     This gives the modified annotation syntax as per Thomas's email [1]:
>
>             :liz :spouse :dick { id:1 | :start 1964; :end 1974 |} .
>             :liz :spouse :dick { id:2 | :start 1975; :end 1976 |} .
>
>
>     Slight syntax tweak: For SPARQL, reusing { has to be careful
>     because { is a group start.
>
>     :liz :spouse :dick {| id:1 | :start 1964; :end 1974 |} .
>     :liz :spouse :dick {| id:2 | :start 1975; :end 1976 |} .
>
>         which would map to
>             id:1 rdfx:occurrenceOf << :liz :spouse :dick >> ;
>                  :start 1964; :end 1974 .
>
>             id:2 rdfx:occurrenceOf << :liz :spouse :dick >> ;
>                  :start 1975; :end 1976 .
>
>
>     and asserting:
>
>        :liz :spouse :dick .
>
>
>     ## Named occurrences in term slots
>
>     << occurrenceName | :s :p :o >> could also be used in a subject or
>     object slot with the occurenceName being the RDF term for subject
>     or object (c.f. RDF collections and predicate object lists) for
>     use with unasserted triples:
>
>     << [] | :s :p :o >>
>           :start 1964 ;
>           :end 1974 .
>
>         Andy
>
>     [1]
>     https://lists.w3.org/Archives/Public/public-rdf-star-wg/2023Dec/0024.html

>     <https://lists.w3.org/Archives/Public/public-rdf-star-wg/2023Dec/0024.html>
>
>     [2] https://w3c.github.io/rdf-concepts/spec/#section-triples

>     <https://w3c.github.io/rdf-concepts/spec/#section-triples>
>         (as of 2023-12-10)
>

Received on Tuesday, 19 December 2023 08:47:58 UTC