- From: Pierre-Antoine Champin <pierre-antoine@w3.org>
- Date: Wed, 8 Jan 2025 18:37:43 +0100
- To: Franconi Enrico <franconi@inf.unibz.it>, Doerthe Arndt <doerthe.arndt@tu-dresden.de>
- Cc: Niklas Lindström <lindstream@gmail.com>, RDF-star Working Group <public-rdf-star-wg@w3.org>
- Message-ID: <feaa2b39-c0b6-4fe4-8aa4-f93265eeb183@w3.org>
On 08/01/2025 18:29, Franconi Enrico wrote: > SMART. I like it. I like it too, this is very elegant, but... the proposed entailment patterns are mixing RDF and RDFS entailment. If we follow the current "layering", reif1 / reif2 would NOT produce the following triples in RDF-entailment (not RDFS) xxx rdf:type rdfs:Resource zzz rdf:type rdfs:Resource and therefore, Niklas' trick does not work anymore :-( Now, we may decide that "everything is a Resource" should belongs to RDF-semantics after all (rather than only RDFS), and that would solve the problem -- at the cost of destroying the last bit of consistency in the rdf:/rdfs: namespace split! :->. > —e. > >> On 8 Jan 2025, at 18:26, Doerthe Arndt <doerthe.arndt@tu-dresden.de> >> wrote: >> >> >> >>> Am 08.01.2025 um 18:14 schrieb Franconi Enrico <franconi@inf.unibz.it>: >>> >>> With this in mind: >>> >>> >>> if the triple structure appears in S then S RDF(S) entails >>> */reif0/* sss aaa ooo sss rdf:type rdfs:Resource . >>> ooo rdf:type rdfs:Resource . >>> aaa rdf:type rdf:Property . >>> */reif1/* sss aaa <<(xxx yyy zzz)>> <<(xxx yyy zzz)>> rdf:type >>> rdfs:Proposition . >>> */reif2/* <<(xxx yyy zzz)>> aaa ooo <<(xxx yyy zzz)>> rdf:type >>> rdfs:Proposition . >>> */reif3/* sss rdf:reifies ooo ooo rdf:type rdfs:Proposition . >>> >>> >>> On 8 Jan 2025, at 18:07, Doerthe Arndt <doerthe.arndt@tu-dresden.de> >>> wrote: >>> >>>> General: >>>> - Niklas made an interesting point: If you derive from >>>>> sss aaa <<(xxx yyy zzz)>> >>>>> >>>> that >>>> xxx a rdfs:Resource. and zzz a rdfs:Resource. >>>> then we do not need the „if the triple structure appears in S“ for >>>> rdf:Resource and can stick to „if S contains“. >>> >>> What if this triple structure is deeply embedded? >> >> >> I propose an alternative (based on Niklas idea): >> >> >>> >>> if S contains then S RDF(S) entails >>> */reif0/* sss aaa ooo sss rdf:type rdfs:Resource . >>> ooo rdf:type rdfs:Resource . >>> aaa rdf:type rdf:Property . >>> */reif1/* sss aaa <<(xxx yyy zzz)>> <<(xxx yyy zzz)>> rdf:type >>> rdfs:Proposition . >>> xxx rdf:type rdfs:Resource. >>> zzz rdf:type rdfs:Resource. >>> yyy rdf:type rdf:Property. >>> */reif2/* <<(xxx yyy zzz)>> aaa ooo <<(xxx yyy zzz)>> rdf:type >>> rdfs:Proposition . >>> xxx rdf:type rdfs:Resource. >>> zzz rdf:type rdfs:Resource. >>> yyy rdf:type rdf:Property. >>> */reif3/* sss rdf:reifies ooo ooo rdf:type rdfs:Proposition . >>> >> >> If I now have >> >> s p <<(a b <<(x y z)>>)>>. >> >> I get with reif1: >> >> <<(a b <<(x y z)>>)>> rdf:type rdfs:Resource. >> >> But from that, I get with reif2: >> >> <<(x y z)>> rdf:type rdfs:Resource. >> >> I can again apply reif2 and get: >> >> x a rdfs:Resource. >> z a rdfs:Resource. >> y a rdf:Property. >> >> Kind regards, >> Dörthe >> >>> >>> It seems I fixed your comment below with my latest proposal above. >>> Comments welcome! >>> —e. >>> >>>> Problem keeps being rdf entailment and the property. >>>> >>>> RDF: >>>> - I guess aaa in reif1 and reif2 should be yyy? >>>> >>>> RDFS: >>>> - we do not need >>>>> <<(xxx yyy zzz)>> rdf:type rdfs:Resource . >>>>> >>>> in reif1 and reif 2 because we get that with the existing rules >>>> from RDFS. >>>> We do need >>>> xxx a rdfs:Resource. >>>> and >>>> yyy a rdfs:Resource. >>>> instead. >>>> >>>> >>>> Kind regards, >>>> Dörthe >>>> >>>> >>>>> >>>>> >>>>>> On 8 Jan 2025, at 17:35, Franconi Enrico <franconi@inf.unibz.it> >>>>>> wrote: >>>>>> >>>>>> Option 1 (the current option) adds metamodelling inference only >>>>>> for asserted triples.: >>>>>> >>>>>> >>>>>> Option 1 (shallow metamodelling) >>>>>> >>>>>> >>>>>> * ⏩ |<[I+A](r), [I+A](rdf:Proposition)> ∈ >>>>>> IEXT([I+A](rdf:type))| >>>>>> if |r is a triple term and ∃ x,y . >>>>>> (<x,[I+A](r)> ∈ IEXT(y)) ⋁ (<[I+A](r),x> ∈ IEXT(y))| >>>>>> or if |∃ x . <x,[I+A](r)> ∈ >>>>>> IEXT([I+A](rdf:reifies))| ⏪️ >>>>>> >>>>>> Note that this is just wrong since in this case we have >>>>>> [I+A](rdfs:Resource) ≠ IR >>>>>> [I+A](rdfs:Property) ≠ IP >>>>>> >>>>>> >>>>>> Option 2 (true metamodelling) >>>>>> >>>>>> >>>>>> * ⏩ |<r, [I+A](rdf:Proposition)> ∈ IEXT([I+A](rdf:type))| >>>>>> if |r ∈ range(RE)| or >>>>>> if |∃ x,y . RE(x,[I+A](rdf:reifies),r)=y| ⏪️ >>>>>> * ⏩ |<r, [I+A](rdfs:Resource)> ∈ IEXT([I+A](rdf:type))| >>>>>> if |r ∈ range(RE)| or >>>>>> if |∃ x,y,z . RE(x,z,r)=y| or >>>>>> if |∃ x,y,z . RE(r,z,x)=y| ⏪️ >>>>>> * ⏩ |<r, [I+A](rdfs:Property)> ∈ IEXT([I+A](rdf:type))| >>>>>> if |∃ x,y,z . RE(x,r,z)=y| ⏪️ >>>>>> >>>>>> >>>>>> Option 2 adds new metamodelling conditions, which implies that >>>>>> >>>>>> [I+A](rdfs:Resource) = IR >>>>>> >>>>>> [I+A](rdfs:Property) = IP >>>>>> >>>>>> as it should. >>>>>> The entailment pattern for option 2 will have "if the triple >>>>>> structure appears in S”. >>>>>> >>>>>> —e. >>>>>> >>>>>>> On 8 Jan 2025, at 17:17, Doerthe Arndt >>>>>>> <doerthe.arndt@tu-dresden.de> wrote: >>>>>>> >>>>>>> Dear Niklas, >>>>>>> >>>>>>>> >>>>>>>> I think that it should be derived. And I agree that the triple >>>>>>>> constituents are resources (due to transparency). >>>>>>>> >>>>>>>> I believe the following rule does that (given the existing RDF >>>>>>>> 1.1 entailment): >>>>>>>> >>>>>>>> If S contains: >>>>>>>> >>>>>>>> sss aaa <<(xxx yyy zzz)>> . >>>>>>>> >>>>>>>> or S contains (in symmetric RDF): >>>>>>>> >>>>>>>> <<(xxx yyy zzz)>> aaa ooo . >>>>>>>> >>>>>>>> then S RDF(1.2)-entails (in symmetric RDF): >>>>>>>> >>>>>>>> <<(xxx yyy zzz)>> rdf:type rdf:Proposition . >>>>>>>> <<(xxx yyy zzz)>> rdf:propositionSubject xxx . >>>>>>>> <<(xxx yyy zzz)>> rdf:propositionPredicate yyy . >>>>>>>> <<(xxx yyy zzz)>> rdf:propositionObject zzz . >>>>>>>> >>>>>>>> Then define: >>>>>>>> >>>>>>>> rdf:propositionPredicate rdfs:range rdf:Property . >>>>>>>> >>>>>>>> To make yyy a property. (Which I think makes sense, even though >>>>>>>> weird triple terms misusing e.g. classes as properties would >>>>>>>> have weird consequences.) >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> It is a little bit more complicated because of the nesting. We >>>>>>> could have >>>>>>> >>>>>>> :a :b <<( :s :p <<( :x :y :z )>> )>>. >>>>>>> >>>>>>> we would want to derive that >>>>>>> >>>>>>> :y a rdf:Property. >>>>>>> >>>>>>> But that could still be done with a detailed version of Enrico’s >>>>>>> "triple structure appears in“ notation. We could still get your >>>>>>> triples. >>>>>>> >>>>>>> Another problem I see with your approach here is that we depend >>>>>>> on RDFS while the properties are already derived in RDF and I >>>>>>> assume that we want to keep it that way. >>>>>>> >>>>>>> Another question is whether or not we want the proposition >>>>>>> subject, predicate and object, but they could serve the purpose. >>>>>>> >>>>>>> Kind regards, >>>>>>> Dörthe >>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>>> >>> >> >
Received on Wednesday, 8 January 2025 17:37:48 UTC