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

Re: blank predicates

From: David Booth <david@dbooth.org>
Date: Sun, 29 Mar 2020 21:12:28 -0400
To: public-lod@w3.org
Message-ID: <ae6aa6d2-b42c-397d-b0be-b1a352f386d6@dbooth.org>
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> 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-skolemization.  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 01:12:43 UTC

This archive was generated by hypermail 2.4.0 : Monday, 30 March 2020 01:12:44 UTC