- From: Anthony Moretti <anthony.moretti@gmail.com>
- Date: Thu, 23 Dec 2021 08:48:00 +1030
- To: Fabio Vitali <fabio.vitali@unibo.it>
- Cc: thomas lörtsch <tl@rat.io>, Pierre-Antoine Champin <pierre-antoine.champin@ercim.eu>, "public-rdf-star@w3.org" <public-rdf-star@w3.org>
- Message-ID: <CACusdfTMn4Z9oJo=WbyfX6ULfs3jSH0nuBQ0FB_H5Air3DT5Zg@mail.gmail.com>
> > { :FabioVitali :marriedTo :MargotRobbie . } > > is just as perfectly valid as the first graph, but, sadly, not true in any > past (and, I am ready to bet, future) temporal interval. Hahaha, brilliant 😂 Anthony On Thu, Dec 23, 2021 at 3:22 AM Fabio Vitali <fabio.vitali@unibo.it> wrote: > Dear Anthony, > > > Earlier Fabio wrote: > > << :dihydrogen-monoxide :form :liquid >> > > physical:lowTemp :0Centigrade; > > physical:highTemp :100Centigrade; > > physical:pressure :1atm. > > > > Hi Fabio. If I'm way off forgive me, but these seem to be constraints > for description rather than actual description, if so is that what SHACL > could be used for? Maybe my understanding is way off though. > > Uhm.... maybe I am misreading the multiple uses of Shacl, but it seems to > me more a way to express validity constraints over graphs rather than truth > constraints. They are not the same thing. > > For instance, the graph: > > { :RichardB :marriedTo :ElizabethT . } > > is a valid graph whose truth is temporally constrained (there are two > temporal intervals where the statement is true), while: > > { :FabioVitali :marriedTo :MargotRobbie . } > > is just as perfectly valid as the first graph, but, sadly, not true in any > past (and, I am ready to bet, future) temporal interval. > > I believe. > > Ciao > > Fabio > > > > > Regards > > Anthony > > > > > > On Wed, Dec 22, 2021 at 11:07 AM thomas lörtsch <tl@rat.io> wrote: > > > > > > > Am 21.12.2021 um 21:23 schrieb Pierre-Antoine Champin < > pierre-antoine.champin@ercim.eu>: > > > > > > Hi Thomas, > > > > > > a few comments: > > > > > > On 21/12/2021 17:53, thomas lörtsch wrote: > > >> (...) > > >> This is a problem with more than one dimension: > > >> - between asserted and not asserted there are degrees of "asserted > under certain conditions", like e.g. the assertion of the marriage between > Taylor and Burton only being valid in certain periods > > >> > > > In RDF semantics (both the current standard and the proposed > RDF-star), a triple is either true or false. Any "degree of assertedness" > or "conditional assertion" falls outside the standard base semantics. Of > course, an application can extend the base semantics (using RDFS/OWL > axioms, N3 rules, or hard-coded mechanisms) in order to handle intermediate > forms of assertions. But then, in order to be interoperable with other > applications, triples that are "conditionnally asserted" from the p.o.v. of > the app should be *not* asserted from the p.o.v. of the base semantics. > > > > Tell that Fabio, not me. If you don’t assert those triples explicitly > then in plain RDF they are not asserted at all. Consequently what Dörthe > and Fabio propose may of course work as desired in local applications but > on the semantic web at large is quite invisible. Which is was what I was > trying to explain. But the problem runs deeper and the to-the-book > application of logic you propose can’t handle it. > > > > >> (...) > > >> > > >> The general assumption under which the semantic web operates is that > information is not complete. > > >> > > > Yes. > > >> One always has to account for the possibility of additional detail > changing the meaning of what one knows already. > > > No, it is actually the opposite! According to RDF's semantics, the > meaning of a triple *can not* be altered by another triple. > > > > I know that but it captures only part of reality. Your fellow logician > Dörthe asked me in this thread the other day why I asserted that <:RichardB > :marriedTo :ElizabethT> when I already knew that this is not true, or only > during a certain timespan. Adding the start and end date does change the > meaning of what is asserted already, triples do indeed interact, and even > more so when you consider statement annotation or property graph style > modelling. > > > > Or was it sloppy wording on part of the property chosen? But a quick > check shows that very few properties in use on the semantic web reflect on > their temporal validity. Past, present, future, time periods, whathaveyou - > it’s all the same to them. Likewise with spatial, legal or any other > dimension of validity of the statement in question. If you now insist that > this is not valid RDF I could rethorically ask back "then, what is, out > there on the actual semantic web?". Very very little, I assume. And yet it > works, because assumptions are made _everywhere_. Otherwise everything > would be just too tedious to be even remotely useful. > > > > We can go back again to n-ary relations and model the marriage like this: > > > > :RichardB :marriedTo [ > > rdf:value :ElizabethT ; > > :start 1966 > > ] > > > > Now we’re "safe" because the innocent blank node just says 'there exists > something'. No triple changes it’s meaning when we add further triples like > :end date, :happiness measures or what have you. But all that changes the > meaning of what was said. And that is what counts. The formal 'safety' > doesn’t carry far. The reasoner may be safe but the human understands > something different. The most important trick is to know which modelling > patterns are used and adjust our applications (icluding the reasoners) > accordingly. And what can be done with n-ary relations can just as well be > done with annotated statements. > > > > The art of logic-backed knowledge representation is to find a compromise > between > > - it is too cumbersome to model > > - it doesn’t reflect what we mean > > - the reasoner chokes > > and compromises have to be made on all levels, including logic. If you > want to apply a mechanism to reality you have to cope with the complexities > of reality. Saying "RDF was not made for this" whenever a real problem > surfaces doesn’t cut it. Logic is not very flexible but to a certain degree > it is - that is, applications are and the formalism can take that into > account. We do it all the time, also - maybe especially - on the semantic > web. > > > > One formally tight way out of this problem would be blank nodes > everywhere - subject, predicate and object - and then annotate those. > Logically very sound but a usability nightmare nonetheless. Compromises pay > off big time if made at the right places. We can use graphs to separate > "same" triples and then annotate them in different ways to get multisets. > RDF standard reification vocabulary pulls identifiers for occurrences (or > "speech acts") out of thin air. Nobody gets hurt, we just play tricks with > the logic. That sort of creativity is what’s needed. If named graphs hadn’t > been so over-eagerly defined as referentially opaque but had been provided > as a mere grouping mechanism - no more, no less - we would have much less > problems today. But it’s easy to say in hindsight. Maybe not too late, who > knows. > > > > The trick on which the proposed RDF-star semantics is built is that it > talks about mere quotes of triples. And quoted triples are of course > triples beaten to death so they don’t move anymore and can only mean > exactly themselves. That’s a way to avoid real problems, but in consequence > is also largely irrelevant in practice if you don’t allow any wiggle room > left or right because you’re so afraid of little worms. If you prefer to > stay within the safe zone of logic rigorisity - fine with me. But then I’d > prefer that you stop advertising the proposed RDF-star semantics as > providing a solution to every meta modelling problem out there, as you did > for example in the Lotico talk. Because so far it seems to me that you > don’t provide much more to solve those problems than one informal property. > > > > > > I had hoped that you would respond to the actual topic of this thread, > in the first half of the post that started it. If I’m right then the > special treatment that occurrences get in the report should be extended to > all annotations that do not conciously annotate a quote, or - more > practically speaking - that do not represent an artefact in some processing > step of the RDF machinery: a version, a deduction etc. Or, alternatively, > face complications like the need to remodel and duplicate queries, as I > outlined there. I would find that discussion helpful and, in case I’m > right, warranting a reworking of the report. > > > > OTOH, time and again I’ve sworn myself to not take part in this CG any > longer as for my taste it is just not interested enough in finding a good > solution for meta modelling on the semantic web. Tediously did this CG need > to be motivated to tackle real world issues like occurrences, referentially > transparent triples and the like. Whatever this CG really is interested in, > and why, is still not really clear to me, but it seems to be quite > theoretical. So, the temptation to sit this CG out and wait for a real WG > with hopefuly some more practically oriented participants has always been > strong. But I also learned a lot. > > > > Best, > > Thomas > > > > > > > This limits the kind of things that you can express with RDF. Things > like default values ("if that property is not specified, then its value is > considered to be 42") can *not* be captured by the standard semantics. > > > > > > That does not prevent an agent (natural or artificial) to use some > heuristics on top of the standard semantics ("if that property is not > specified, then its value is *probably* 42), but such "conclusions" should > not be treated as equal to those entailed by the standard semantics -- if > only to ensure interoperability with other systems (since other agents may > not apply the same heuristics). > > > > > > Note that from that perspective, I don't see any incompatibility > between Anthony's or Fabio's proposals and the "Hitler was not all bad" > example you gave (quoted below). Their proposal does not change the "raw > semantics" of quoted triples, which still fall on the "unasserted" side of > the base RDF semantics, hence are not endorsed by default. But they add > some vocabulary-specific rule, e.g. "if a quoted statement has start date > before now and end date after now (and no other constraint) then add assert > that statement". > > > > > > (I see another problem with Anthony and Fabio's proposal, and that's > precisely the fact that they seem to need default values for the contextual > properties... but that's another side of the discussion) > > > > > > pa > > > > > >> (...) > > >> > > >> The modelling that you propose makes it harder to realize another > goal, the one that I thought fuels the demand for "unasserted assertions": > it makes it harder to state something that we don’t endorse. For example a > few decades ago it was still not uncommon in Germany to say that "Hitler > wasn’t all bad as he had for example built the Autobahn". How do I model > that in RDF? Under no circumstance do I want to have a statement saying > "Hitler wasn’t all bad" in my triple store. If quoted triples are strictly > unasserted, then this is easy: > > >> > > >> << :Hitler :not :AllBad >> :because :Autobahn . > > >> > > >> I might go even further, like: > > >> > > >> << << :Hitler :not :AllBad >> :because :Autobahn >> > > >> :accordingTo :SomeEternallyYesterday . [0] > > >> > > >> The thing is: I don’t want the central statement - "Hitler not all > bad" - ever to pop up in some unassuming query! How can I do that if, as in > your interpretation, quoted statements are not unasserted but asserted > under the condition of their annotation? > > >> > > >> I think that outside of such extreme examples there is a gradual > shift between asserted and unasserted: assertions may be conditionalized > explicitly through annotations but also unexplicitly through context or > through additional statements or through exchanging one node in the triple > by a blank node with its own annotations. But the general direction of the > semantic web surely is that we offer and ingest data that we believe in, > that we find useful, that we want to operate on. So the default assumption > is: "this is true (hopefully) (check the small print)". I think that this > would also be a useful default assumption for annotated statements. The > statement > > >> > > >> :RichardB :marriedTo :ElizabethT . > > >> > > >> says that there exists a :marriedTo relation between those two > persons - nothing more, nothing less - and that is indeed true. That > relation exists. History is real too. It has some properties, among them > that it isn’t in effect today. That statement would be false if the > relation had never existed, everything else is fair game. Additional detail > > >> > > >> :RichardB :marriedTo :ElizabethT . > > >> <<:RichardB :marriedTo :ElizabethT>> :start 1966 . > > >> > > >> is of course always welcome :-) > > >> > > >> Your style of modelling however says: per default no information can > be trusted, we need to know more. Where does that stop? Why are the > annotations not quoted themselves? Why is > > >> > > >> :dihydrogen-monoxide rdfs:label "ice" > > >> > > >> a non-absolute statement, only conditionally asserted? > > >> > > >> How do you _not_ say something? > > >> > > >> And how is this compatible with all the data out there already? Do > you expect everybody to transform their statements into quoted statements? > > >> > > >> > > >> W.r.t. graphs: Pierre-Antoine modelled graphs as lists of quoted > statements. OTOH: what holds you back to define your own named graph > semantics, annotate your named graphs accordingly and be done with it? > > >> > > >> > > >> Best, > > >> Thomas > > >> > > >> > > >> [0] That’s actually hard to translate. In german we say "ewig > Gestrige". If :eternallyYesterday doesn’t make sense then just replace it > with :idiots. > > >> > > >> > > >> > > >> > > >>> Am 21.12.2021 um 11:12 schrieb Fabio Vitali <fabio.vitali@unibo.it> > > >>> : > > >>> > > >>> Hello, > > >>> > > >>> > > >>>> - Start time (assumption if blank: unbounded) > > >>>> - End time (assumption if blank: unbounded) > > >>>> - Location (assumption if blank: unbounded) > > >>>> - Certainty (assumption if blank: 1.0) > > >>>> > > >>>> > > >>> In my research team we call them contexts, i.e., conditions that > make true a non-absolute statement. We have identified at least seven > contexts: > > >>> > > >>> - Temporal context (a temporal interval within which the statement > is true); > > >>> - Spatial context (or, better, jurisdictional context, which allows > us to distinguish between, say, the Roman Empire, the Church State, the > Italian Kingdom and the current Italian Republic, all of which share at > least in part the same location; > > >>> - Part-whole context (e..g. when recording facts about individual > pages of a ancient manuscript, then creation date, author and ownership > apply to the whole book, and not individual pages); > > >>> - Object-subject context: e.g. when recording facts about a > depiction, i.e. a painting or a photograph, being able to distinguish facts > about the painting vs. about the subject of the painting (pretty tricky > when you have a painting of a painting, or even a photograph of a painting > of a painting, ecc.); > > >>> - Provenance context (when you have competing and reciprocally > incompatible statements from different sources); > > >>> - Confidence context (when you yourself are considering different > and reciprocally incompatible statements with different degrees of > confidence about their truth); > > >>> - Physical context (wee later for an example). > > >>> > > >>> All these contexts are used to create assertions that have the > non-absolute statement as subject, and express conditions for their truth. > Thus for instance: > > >>> > > >>> <<:napoleon :role :emperor>> > > >>> temporal:start "1804-05-18"^^xsd:Date; > > >>> temporal:end "1814-04-06"^^xsd:Date; > > >>> jurisdiction:country :FirstFrenchEmpire; > > >>> confidence:confidence "1.0". > > >>> > > >>> << :dihydrogen-monoxide :form :solid >> > > >>> physical:highTemp :0Centigrade. > > >>> > > >>> << :dihydrogen-monoxide rdfs:label "ice" >> > > >>> physical:highTemp :0Centigrade. > > >>> > > >>> << :dihydrogen-monoxide :form :liquid >> > > >>> physical:lowTemp :0Centigrade; > > >>> physical:highTemp :100Centigrade; > > >>> physical:pressure :1atm. > > >>> > > >>> << :dihydrogen-monoxide rdfs:label "water" >> > > >>> physical:lowTemp :0Centigrade; > > >>> physical:highTemp :100Centigrade; > > >>> physical:pressure :1atm. > > >>> > > >>> << :dihydrogen-monoxide :form :gas >> > > >>> physical:lowTemp :100Centigrade. > > >>> > > >>> << :dihydrogen-monoxide rdfs:label "steam" >> > > >>> physical:lowTemp :100Centigrade. > > >>> > > >>> I find this approach much cleaner and easier to explain to domain > experts than requiring them to create an instance of an n-ary relationship > relying on some abstract concept, or to invent a new OWL class which is a > subclass of some other class, etc. The list can be further and easily > expanded to other contexts, if and when we find out we need them. > > >>> > > >>> Having rdf-star statements available is extremely important because > it allows to clearly separate non-absolute statements (that are only true > within a given context) from absolute statements (that do not need contexts > to be true). And for this purpose, rdf-star is simply perfect: rdf-star > triples are non-absolute statements, and plain RDF triples are absolute > statements. > > >>> > > >>> My only problem, as you can see, is that sometimes we need to > collect multiple individual statements and associate them to the same > context. > > >>> > > >>> For instance, I want to associate both the form :liquid and the > label "water" for the compound :dihydrogen-monoxyde to the conditions > "physical temperature between 0 and 100 Centigrades and pressure 1 > atmosphere". Right now I had to duplicate the conditions to each of the two > non-absolute statements. > > >>> > > >>> I wish there was a construct in RDF that acts sort of like a... like > a container of individual triples! This container could then become the > subject of our contexts. Ideally such container would allow us to > distinguish between non-absolute statements (that are only true within a > given context) from absolute statements (that do not need contexts to be > true). > > >>> > > >>> Oh wait: but one such structure exists in RDF 1.1, it is called > named graph, and it provides everything that I need except the distinction > between non-absolute and absolute statements! > > >>> > > >>> GRAPH :ice { > > >>> :dihydrogen-monoxide :form :solid . > > >>> :dihydrogen-monoxide rdfs:label "ice" . > > >>> } > > >>> > > >>> GRAPH :water { > > >>> :dihydrogen-monoxide :form :liquid. > > >>> :dihydrogen-monoxide rdfs:label "water". > > >>> } > > >>> > > >>> GRAPH :steam { > > >>> :dihydrogen-monoxide :form :gas. > > >>> :dihydrogen-monoxide rdfs:label "steam". > > >>> } > > >>> > > >>> :ice physical:highTemp :0Centigrade. > > >>> :water physical:lowTemp :0Centigrade; > > >>> :water physical:highTemp :100Centigrade; > > >>> :water physical:pressure :1atm. > > >>> :steam physical:lowTemp :100Centigrade. > > >>> > > >>> The problem is that named graphs give me no distinction between > containers of absolute statements and containers of non.absolute ones. How > I wish there was a symmetry between individual triples (rdf-star vs. rdf > triples) and named graphs... > > >>> > > >>> Ciao > > >>> > > >>> Fabio > > >>> > > >>> -- > > >>> > > >>> > > >>>> More generally, basic temporal logic says that the bounds on any > event are the bounds for its subevents and the subevents can be explicitly > bounded further. If statements represent relationships and relationships > are events then the statement is a subevent of the existence event of both > the subject and object, therefore any statement can leave those positions > blank but still have bounds, temporal and spatial. > > >>>> > > >>>> > > >>>> > > >>>>> The positions can be left blank if > > >>>>> current assumptions are maintained so that would probably mean most > > >>>>> statements can be left untouched, and if the assumptions are > different for > > >>>>> the entire graph they could be stated at the graph level. > > >>>>> > > >>>> I don't understand. If they can be left blank and consequently not > asserted, how are they defaults? > > >>>> > > >>>> Any reasoner would assume "unbounded" if no values are provided. > > >>>> > > >>>> > > >>>> > > >>>>> Better to start from a principled approach and then see how hard > it has to > > >>>>> > > >>>>>> be tweaked to arrive at a practical solution, accomodate corner > cases etc. > > >>>>>> > > >>>>>> > > >>>>> Feel like that's what I'm doing, haha. > > >>>>> > > >>>> If you propose to solve a problem that I describe as a very general > one by some examples of seemingly common cases you narrow the scope. That > narrowing has to be well understood. Maybe my perspective clouds my > judgement but my feeling is that your proposal narrows the scope in quite > ad hoc ways that might solve the problem for some special cases (and even > there I have my doubts as mentioned above) but leaves a lot or most of them > (even equally general ones like authorship) unresolved. > > >>>> > > >>>> If I'm understanding you correctly, I agree that a referentially > opaque relation such as "statementOf" is still needed for provenance use > cases etc., is that what you mean when you're talking about authorship? But > the need for a referentially transparent relation, and the subsequent > confusion that ensues, would be greatly reduced if statements could have > start and end time positions. > > >>>> > > >>>> It also addresses the multiset problem because statements with the > same subject, object and relation but different start and end times etc. > are different statements. > > >>>> > > >>>> Regards > > >>>> Anthony > > >>>> > > >>>> > > > <OpenPGP_0x9D1EDAEEEF98D438.asc> > > > >
Received on Wednesday, 22 December 2021 22:18:28 UTC