- From: <john.nj.davies@bt.com>
- Date: Mon, 30 Mar 2020 18:25:16 +0000
- To: <phayes@ihmc.us>, <david@dbooth.org>
- CC: <public-lod@w3.org>, <mm@zeroexp.com>
- Message-ID: <CWXP123MB2264EB088ADCB120032473D5A8CB0@CWXP123MB2264.GBRP123.PROD.OUTLOOK.COM>
" So I bow to you (and John Davis)." Why thank you, sir. ...and an "e" in the surname would be also very welcome 😉 -----Original Message----- From: Patrick J Hayes <phayes@ihmc.us> Sent: 30 March 2020 17:46 To: David Booth <david@dbooth.org> Cc: Linked Data community <public-lod@w3.org>; Davies,NJ,John,TUL1 R <john.nj.davies@bt.com>; Margaret Warren <mm@zeroexp.com> Subject: Re: blank predicates Hi David Well yes, that is an option also. I guess this is getting into styles of ontology engineering. I worry about a proliferation of relation names invented to express some degree of ignorance, and having to keep track of all the nuances of meaning that they encode. It is one thing to have what Margaret Warren calls a ‘crap relation’ which is intended to be an explicit marker for total ignorance, a flag which indicates a gap in the KB. But if we have to keep track of :sharesDNAWith, :hasFamilialConnexionTo, :CloseFamilialRelation etc. then downstream difficulties will arise in keeping track of all this. nuance, and documenting it adequately. I guess I am nervous about large relation vocabularies. This was one of the motivations for keeping the LIO image-description ontology as minimal as possible. But I have to concede that having a whole lot of named subclasses of relations, and having a whole lot of named subrelations of a relation, are pretty hard to distinguish on this basis. So OK, yes, the invent-a-superrelation strategy is as good as any other, and it does avoid one more dreaded bnode. So I bow to you (and John Davis). Pat > On Mar 29, 2020, at 8:12 PM, David Booth <david@dbooth.org<mailto:david@dbooth.org>> wrote: > > On 3/29/20 6:23 PM, Patrick J Hayes wrote: >> A simple example. Artificial but it might make the point. Suppose >> data is about familial relationships between people, and about their employment and about their income. There is a class of FamilyRelations which includes things like brotherOf, sisterOf, motherOf, uncleOf, etc.. Suppose it is discovered (perhaps by DNA analysis) that Sue and Bill are related, but we do not know exactly how. We can (in RDF or OWL-Full and I think even in OWL2-DL using punning, but check that before relying on it) write this using two triples :Sue _:rel :Bill . >> _:rel rdf:type :FamilyRelations . >> or, of course, a Skolemization of this. > > But even better would be: > > :Sue :sharesDnaWith :Bill . > > If you later figure out that they are siblings, then you can just add: > > :Sue :siblingOf :Bill . > :siblingOf rdfs:subPropertyOf :sharesDnaWith . > > The point is that if you are asserting a relation between two things, then you *do* already know something about that relation, even if you know know very much, and even if you expect to learn more later. And you can just make a property that expresses whatever it is that you know, if you cannot find one that already suits you. > > David Booth > > >> Pat >>> On Mar 29, 2020, at 5:10 PM, Hugh Glaser <hugh@glasers.org<mailto:hugh@glasers.org>> wrote: >>> >>> Maybe someone can help - I still don't get it. >>> >>> What will break in what you want to do if you just give the predicate a sensible name? >>> >>> What is the knowledge the triple >>> #A R #B >>> represents? >>> If you can really use a blank node (or skolemsied version, which I always much prefer), then I don't see how the triple carries any knowledge. >>> (Unless the skolemised URI is expected to appear somewhere else, >>> which it is implied it will not.) Blank or skolemised sort of says that #A and #B are in the same universe/domain of discourse (universal in RDF?) - but you can't infer that #A and #C don't have the same relation, which they presumably will, in fact? >>> So if I "find" that triple, it can't be telling me anything new at all, it seems. >>> >>> On the other hand, if you actually accept that there is some real knowledge going on, about the closeness of connection in the mind map, or whatever, then the predicate actually does carry knowledge, however little. >>> And so there seems no harm in giving it a meaningful name, which will be useful to use for the same other triples that have the same meaning. >>> In fact, as always with identifiers, that should help. >>> >>> As far as replacement is concerned, that gets even weirder for me. >>> I thought RDF was monotonic - don't you just add triples that have the further knowledge, when you get that knowledge? >>> Yes, if you want, you can remove the old triples from some document, but that should not be a requirement, I would expect. >>> >>> As I said, basically, what will break in what you want to do if you just bite the bullet and give the predicate a sensible name? >>> >>> Sorry if this is silly - I'm no theoretician, but the engineering seems very straightforward to me. >>> >>> Best >>> Hugh >>> >>>> On 29 Mar 2020, at 17:52, Patrick J Hayes <phayes@ihmc.us<mailto:phayes@ihmc.us>> wrote: >>>> >>>> Well, no, even crap URIs don’t change, which is why you gotta be >>>> careful. It depends on what you want to be able to do. If you want >>>> to be able to do (RDFS or OWL-style) reasoning with the ‘blank’ >>>> relations and still add information later about the relation, you >>>> should either find a way to use generalized syntax or, probably >>>> more practical, use a recommended form for skolem identifiers, cf >>>> https://www.w3.org/TR/2014/REC-rdf11-concepts-20140225/#section-sko >>>> lemization. If on the other hand you just want to keep this data >>>> on hold until a real relation comes along, then using a single crap >>>> URI (like the lio:IsRelatedTo that ImageSnippets uses) as a >>>> placeholder should work fine. But you won’t change it, just replace >>>> it with a real one :-) >>>> >>>> Reification does not cut it, by the way, since as pointed out in this thread, it doesn't have the same meaning. >>>> >>>> Good luck >>>> >>>> Pat >>>> >>>> >>>>> On Mar 29, 2020, at 11:07 AM, Melvin Carvalho <melvincarvalho@gmail.com<mailto:melvincarvalho@gmail.com>> wrote: >>>>> >>>>> >>>>> >>>>> On Sun, 29 Mar 2020 at 08:43, Patrick J Hayes <phayes@ihmc.us<mailto:phayes@ihmc.us>> wrote: >>>>> Generalized RDF allows blank nodes in relation position, so does N3 and also ISO Common Logic (all with the same semantics). The various suggestions to use a ’crap’ URI such as lio:relation can be seen as skolemizations of these bnodes in predicate position. There are independent reasons for using generalized RDF syntax in any case, since reasoning is incomplete without it. And it is pretty trivial to implement: it amounts to not performing some syntax checks that RDF requires. >>>>> >>>>> Thanks Pat, so we could perhaps say 'crap URIs DO change' :P >>>>> >>>>> So I like turtle and N3 alot. I'd like to use this feature of N3, >>>>> but am probably going to serialize in turtle in the short term >>>>> >>>>> This is exactly the information I wanted >>>>> >>>>> If I have to use a 'crap' URI in turtle, I would want it to say "this is a place holder for the equivalent N3 construct". Could we make that in the N3 community group perhaps? >>>>> >>>>> I suppose nothing like that exists right now. Would it maybe be a good idea to collect the different suggestions and see which has mind share at the moment? Perhaps a straw poll. >>>>> >>>>> Regarding reification, that's a nice idea. I worry about (perhaps perceived) added compleity in serialization and querying. >>>>> >>>>> Seems a paradoxical problem. There are too many ways to name the >>>>> nameless thing! :) >>>>> >>>>> >>>>> Pat Hayes >>>>> >>>>>> On Mar 28, 2020, at 3:52 AM, Melvin Carvalho <melvincarvalho@gmail.com<mailto:melvincarvalho@gmail.com>> wrote: >>>>>> >>>>>> I am working on a information mapping system (aka mind maps) >>>>>> >>>>>> And I want to have two nodes related to each other >>>>>> >>>>>> #Alice R #Bob >>>>>> >>>>>> In the general sense, the type of relationship (predicate) R is >>>>>> not really known at the time of creation. My software currently >>>>>> does not allow the labeling of edges is the reason (but hopefully >>>>>> in future it will) >>>>>> >>>>>> I need a way to relate Alice to Bob but I dont have a URI for a predicate. >>>>>> >>>>>> Is there something that can operate as a "blank predicate"? >>>>>> >>>>>> Or some existing relations that simply says that two entities or linked / related, without yet knowing how they are related? >>>>> >>>> >>> >>> -- >>> Hugh >>> 023 8061 5652 >>> >
Received on Monday, 30 March 2020 18:25:37 UTC