- From: Fabio Vitali <fabio.vitali@unibo.it>
- Date: Thu, 16 Jun 2022 12:07:03 +0000
- To: Pierre-Antoine Champin <pierre-antoine@w3.org>
- CC: Souripriya Das <souripriya.das@oracle.com>, "public-rdf-star@w3.org" <public-rdf-star@w3.org>
Dear Pierre-Antoine, good answer! I came to pretty much the same conclusions as you did, but I also have another solution using an occurrence-like predicate as in section 2.3 of [1], as follows (I, too, inverted the direction so as to make the quoted triples the subject and not the object of readBy, readOn, knownBy and heardBy): Case 1 ------ _:c1 :occurrenceOf << :dan :adores :eve>> . _:c2 :occurrenceOf << _:c1 :readBy :cindy >> . _:c3 :occurrenceOf << _:c1 :readOn :email >> . _:c4 :occurrenceOf << _:c1 :readOn :paper >> . _:c5 :occurrenceOf << _:c2 :knownBy :bob >> . _:c6 :occurrenceOf << _:c3 :knownBy :bob >> . _:c7 :occurrenceOf << _:c4 :knownBy :bob >> . _:c5 :heardBy :alice. _:c6 :heardBy :alice. _:c7 :heardBy :alice. Case 2 ------ :dan :adores :eve. _:c1 :occurrenceOf << :dan :adores :eve>> . _:c1 :readBy :cindy; :readOn :email, :paper. _:c2 :occurrenceOf << _:c1 :readBy :cindy >> . _:c3 :occurrenceOf << _:c1 :readOn :email >> . _:c4 :occurrenceOf << _:c1 :readOn :paper >> . _:c2 :knownBy :bob. _:c3 :knownBy :bob. _:c4 :knownBy :bob. _:c5 :occurrenceOf << _:c2 :knownBy :bob >> . _:c6 :occurrenceOf << _:c3 :knownBy :bob >> . _:c7 :occurrenceOf << _:c4 :knownBy :bob >> . _:c5 :heardBy :alice. _:c6 :heardBy :alice. _:c7 :heardBy :alice. Would it work? [1] https://w3c.github.io/rdf-star/cg-spec/editors_draft.html -- Also, your second solution uses named graphs. > Another way to model this would be to *name* the set of beliefs of bob: > > :alice :heard << :bob :knew :sb >> . > :sb :triples ( > << :cindy :read << :dan :adores :eve >> >> > << << :cindy :read << :dan :adores :eve >> >> :from :email123 >> > << << :cindy :read << :dan :adores :eve >> >> :from :paper456 >> > ). > > This can be seen as an RDF-star-encoded named graph. > I still believe that an evolution of rdf-star to include non-asserted named graphs would be useful and timely. For instance conjectures [2] Case 1 - using conjectures - strong form ---------------------------------------- A conjecture is a special named graph whose content is NOT asserted. CONJECTURE :c1 { :dan :adores :eve. } CONJECTURE :c2 { :c1 :readBy :cindy; :readOn :email, :paper. } CONJECTURE :c3 { :c2 :knownBy :bob. } :c3 :heardBy :alice. I am using name graphs for grouping and identifiers, and adding the CONJECTURE keyword to mention that the content of the graphs is NOT asserted. This corresponds to a fully RDF-compliant representation in weak form using just ONE more triple per non-asserted predicate: Case 1 - using conjectures - weak form -------------------------------------- In the weak form any conjectured predicate is replaced by a newly minted predicate which is then said to be a conjectural form of the original predicate. Thus for instance predicate c1:adores is NOT :adores, but it is a conjectural form of it easily associatable to it. Similarly all the others. Thus we obtain: GRAPH :c1 { :dan c1:adores :eve. c1:adores conj:isAConjecturalFormOf :adores. } GRAPH :c2 { :c1 c2:readBy :cindy; c2:readOn :email, :paper. c2:readBy conj:isAConjecturalFormOf :readBy. c2:readOn conj:isAConjecturalFormOf :readOn. } GRAPH :c3 { :c2 c3:knownBy :bob. c3:knownBy conj:isAConjecturalFormOf :knownBy. } :c3 :heardBy :alice. Case 2 - using conjectures - strong form ---------------------------------------- A collapsed conjecture is a special named graph whose content is both conjectured AND asserted at the same time. It is similar but not identical to annotated statements in rdf-star. COLLAPSED CONJECTURE :c1 { :dan :adores :eve. } COLLAPSED CONJECTURE :c2 { :c1 :readBy :cindy; :readOn :email, :paper. } COLLAPSED CONJECTURE :c3 { :c2 :knownBy :bob. } :c3 :heardBy :alice. This corresponds to a fully RDF-compliant representation in weak form. Case 2 - using conjectures - weak form -------------------------------------- In the weak form any collapsed graph is replaced with two graphs, one corresponding to the conjectural graph and the other reasserting the conjectured triples (with the original predicate) and connecting it to the conjectural one (with the conj:collapses predicate), thus obtaining a fully compliant RDF.1. dataset: GRAPH :c1 { :dan c1:adores :eve. c1:adores conj:isAConjecturalFormOf :adores. } GRAPH :cc1 { :dan :adores :eve. :cc1 conj:collapses :c1. } GRAPH :c2 { :c1 c2:readBy :cindy; c2:readOn :email, :paper. c2:readBy conj:isAConjecturalFormOf :readBy. c2:readOn conj:isAConjecturalFormOf :readOn. } GRAPH :cc2 { :c1 :readBy :cindy; :readOn :email, :paper. :cc2 conj:collapses :c2. } GRAPH :c3 { :c2 c3:knownBy :bob. c3:knownBy conj:isAConjecturalFormOf :knownBy. } GRAPH :cc3 { :c2 :knownBy :bob. :cc3 conj:collapses :c3. } :c3 :heardBy :alice. Ciao Fabio [2] http://conjectures.altervista.org/ -- > On 16 Jun 2022, at 00:50, Pierre-Antoine Champin <pierre-antoine@w3.org> wrote: > > > On 10/06/2022 15:05, Souripriya Das wrote: >> What would be the best ways to represent the two cases of the following sentence in RDF-star: >> Alice heard that Bob knew that Cindy read, from email and in paper, that Dan adores Eve >> i.e., >> Alice heard [] >> | >> Bob knew [] >> | >> Cindy read {from email; in paper} [] >> | >> Dan Adores Eve >> > For a start, I will neglect the "from email, in paper" part, see below. > >> Case 1: The only asserted triple should be: Alice heard <something>. All the remaining triples (i.e., those that make up the <something> portion) should be quoted triples only (i.e., not asserted triples). > In Turtle-star, this would be > > :alice :heard << > :bob :knew << > :cindy :read << > :dan :adores :eve > >> > >> > >>. >> >> Case 2: Every triple used to represent this sentence should be an asserted (i.e., not just quoted) triple. > same as above + assert all the nested triples, i.e. > > ;bob :knew << :cindy :read << :dan :adores :eve >> >>. > :cindy :read << :dan :adores :eve >>. > :dan :adores :eve. > > The annotation syntax can not be used to reduce redundancy here, because it is designed for cases where the quoted triple is the *subject*, while in your example they all appear in *object* position. > If we assumed an alternative vocabulary, where predicate would be in the other direction, you could write it: > > :dan :adores :eve {| > :readBy :cindy {| > :knownBy :bob {| > :heardBy :alice > |} > |} > |}. > > ---- > Now, about "from email; in paper". > This makes the example tricky, because basically, what Bob knew can no longer be represented by a single triple. We could model this by stating that bob knew several triples: > > ;bob :knew > << :cindy :read << :dan :adores :eve >> >> ; > << << :cindy :read << :dan :adores :eve >> >> :from :email123 >> ; > << << :cindy :read << :dan :adores :eve >> >> :from :paper456 >> . > > But then in turn, that's 3 triples that alice must have heard of... > > Another way to model this would be to *name* the set of beliefs of bob: > > :alice :heard << :bob :knew :sb >> . > :sb :triples ( > << :cindy :read << :dan :adores :eve >> >> > << << :cindy :read << :dan :adores :eve >> >> :from :email123 >> > << << :cindy :read << :dan :adores :eve >> >> :from :paper456 >> > ). > > This can be seen as an RDF-star-encoded named graph. > > best >> >> Thanks, >> Souri. >> > <OpenPGP_0x9D1EDAEEEF98D438.asc>
Received on Thursday, 16 June 2022 12:07:20 UTC