W3C home > Mailing lists > Public > public-lod@w3.org > March 2020

RE: blank predicates

From: <john.nj.davies@bt.com>
Date: Mon, 30 Mar 2020 08:14:29 +0000
To: <phayes@ihmc.us>, <hugh@glasers.org>
CC: <public-lod@w3.org>, <melvincarvalho@gmail.com>
Message-ID: <CWXP123MB22640786C0966E3A3E15D01CA8CB0@CWXP123MB2264.GBRP123.PROD.OUTLOOK.COM>
Sure - but why would you not instead define a relation called relatedTo of which brotherOf etc are all sub-relations?

-----Original Message-----
From: Patrick J Hayes <phayes@ihmc.us> 
Sent: 29 March 2020 23:24
To: Hugh Glaser <hugh@glasers.org>
Cc: Linked Data community <public-lod@w3.org>; Melvin Carvalho <melvincarvalho@gmail.com>
Subject: Re: blank predicates

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. 

Pat

> On Mar 29, 2020, at 5:10 PM, Hugh Glaser <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> 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-skole

>> mization.  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> wrote:
>>> 
>>> 
>>> 
>>> On Sun, 29 Mar 2020 at 08:43, Patrick J Hayes <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> 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 08:14:52 UTC

This archive was generated by hypermail 2.4.0 : Monday, 30 March 2020 08:14:53 UTC