Re: Blank nodes must DIE! [ was Re: Blank nodes semantics - existential variables?]

Anthony, greetings. 

OK, this has started another forest fire, unfortunately. I will try to put it out. Sigh.

> On Jul 8, 2020, at 12:04 AM, Anthony Moretti <anthony.moretti@gmail.com> wrote:
> 
> On Slide 20 <https://image.slidesharecdn.com/iswc2009pathayes-091028162812-phpapp01/95/blogic-iswc-2009-invited-talk-20-728.jpg?cb=1256747359> you say:
> 
> copying a graph onto a new surface always gets you new blank nodes, because a mark can only be on one surface.
>  
> Isn't that just another way of saying there's a value/reference distinction?

No. It has nothing at all to do with that whole topic (value vs reference semantics in programming). Copying in my sense just means exactly that: making a copy of an RDF graph. For example, if you download a web page that has some RDF on it, you create such a copy. Or if you pick up a pen and write the RDF graph out onto a piece of paper, similarly, you make a copy. The ’surface’ notion is intended to cover all such possibilities. You could, I suppose, insist that this is an application of value semantics, but that would be overkill and misleading as there is nothing corresponding to the ‘reference’ case, so no distinction to be made. (If I cut-and-paste a paragraph of text from one Word document into another, is that an application of value semantics? If you would say Yes, then OK, so is copying an RDF graph.)

> Value semantics are sometimes called copy semantics.
> 
> The value of a literal is not fully described by its properties
> 
> I was saying that a value is fully described by its properties if its type is an instance of rdfs:Datatype, so a xsd:DateTime value described without literal syntax for example.

But I can just assert, say:

ex:myBirthday rdf:type xsd:DateTime .
xsd:DateTime rdf:type rdfs:Datatype .

and leave it at that. That is perfectly correct RDF. How do you ever know when you have all the necessary properties? 
> 
> why would that, even if it did make sense, imply that an ID can be ignored? What if the ID is used elsewhere to refer to the value?
> 
> Yeah, fair, I was a bit sloppy here. I mean it in the way that if a Circle value happened to have a URL it's not really relevant to whether you can fully understand the circle or not.

I don’t know what ‘relevant’ means here. 
> 
> What? Why? I completely fail to understand your reasoning here.
> 
> I'm saying that if you are processing a graph that has blank nodes of type schema:Person for example, then it would make sense to assign them randomly generated URLs, such as ones with UUIDs.

To skolemise them. Yes, that is always an option. 

> But if the graph has blank nodes of type Circle for example, and Circle is of type rdfs:Datatype, then you shouldn't assign URLs to those because they're already fully specified, it would be as pointless as assigning URLs to literals.

But skolemization is still a viable option. And in any case,you might want to assign a URI to a literal value. I concede this is implausible (although think of things like MyBirthday), but it shouldn't be illegal, and it makes perfect semantic sense. In fact the RDF spec mentions this, admittedly kind of in passing ( https://www.w3.org/TR/rdf11-mt/#a-note-on-rdfs-literal-informative <https://www.w3.org/TR/rdf11-mt/#a-note-on-rdfs-literal-informative> )

More seriously, you seem to be implying that using a name is somehow related to the value of the name being ’specified’. I wouldn’t agree, even if I knew exactly what it is you meant by this. Remember, these names are not identifiers in a programming language. 

> 
>> If I'm able to do that, then literal syntax only exists as syntactic sugar for blank nodes whose type is an instance of rdfs:Datatype.
> 
>  
> When you say that a blank node has a type, do you mean what is said by a triple like 
> _:thisbnode rdf:type rdfs:Datatype .
> ? Because all that says is that something exists which is a datatype. It does not assign a ‘type' to the bnode itself. And in any case, I cannot see how any of this means that literal syntax must be treated as syntactic sugar. 
> 
> No, I mean blank nodes whose type

Blank nodes don't have types. The things that names refer to can have types (= can be in classes) but bnodes and URIs are just tokens that refer. 

> is an instance of rdfs:Datatype, so a Circle value for example, or a xsd:DateTime value described without using literal syntax.
> 
> Basically what I'm saying is if in Swift you can distinguish:
> 
>     class Circle {
>         center: coordinate1,
>         radius: 10, 
>     }
> 
>     struct Circle {
>         center: coordinate1,
>         radius: 10, 
>     }
> 
> In RDF I feel it should be something similar

Swift is a programming language which builds, modifies and performs computations over structures, and this is a structural distinction. RDF is none of these things. It is not a programming language. It does not create or modify anything. It does not describe any computational process. It cannot be run, and has no interpreter. It is just a notation for making assertions about things, for stating simple facts. The value/reference distinction simply does not apply in the RDF world. 

> like:
> 
>     circle1
>     type: Circle (class)
>     center: coordinate1
>     radius: 10
> 
>     _:circle1
>     type: Circle (datatype)
>     center: coordinate1
>     radius: 10

OK, stop there. If this were RDF, what would this distinction (between class and datatype) /mean/? How would it flesh out in how these things would interact with other RDF? Would they give rise to different conclusions (inferences) in some cases? Perhaps in RDFS, or OWL? What, and how?

Pat

> 
> But it's not, what you actually have to do is something like:
> 
>     circle1
>     type: Circle (class)
>     center: coordinate1
>     radius: 10
> 
>     "X0Y0R10"^^Circle
> 
> It seems like something is missing, and that literals are a stand-in for that missing something.
> 
> Anthony
> 
> 
> On Tue, Jul 7, 2020 at 8:59 PM Patrick J Hayes <phayes@ihmc.us <mailto:phayes@ihmc.us>> wrote:
> 
> 
>> On Jul 7, 2020, at 9:40 PM, Anthony Moretti <anthony.moretti@gmail.com <mailto:anthony.moretti@gmail.com>> wrote:
>> 
>> Guess I'm saying two things.
>> 
>> The first:
>> type: rdfs:Datatype should be a way that consumers of a graph can understand that value semantics apply
> 
> The value/reference distinction simply has nothing at all to do with RDF or RDFS, which aren't programming languages. 
> 
>> , that if they like they can ignore any ID if it exists, that the value is fully described by its properties.
> 
> The value of what? The value of a literal is not fully described by its properties, it is given by the specification of the datatype, externally to RDF. The meaning of xsd:number is defined in the XML Schema specification document, for example.
> 
> But in any case, why would that, even if it did make sense, imply that an ID can be ignored? What if the ID is used elsewhere to refer to the value?
> 
>> It should be a way for publishers of a graph to say all that without having to create an accompanying literal syntax.
>> 
>> In Swift for example, I can say either of:
>> 
>>     class Circle {
>>         center: coordinate1,
>>         radius: 10,
>>     }
>> 
>>     struct Circle {
>>         center: coordinate1,
>>         radius: 10,
>>     }
>> 
>> The first implies reference semantics, the second value semantics.
> 
> I am afraid I do not know Swift, but if you are using this terminology in the way I think you are, this simply does not make sense when talking about RDF, which isn’t about datastructures at all.
> 
>> So if I'm able to use rdfs:Datatype in that way, then during processing, blank nodes whose types are instances of rdfs:Class should be given a URI (using UUIDs for example), but blank nodes whose type is an instance (singular) of rdfs:Datatype shouldn’t.
> 
> What? Why? I completely fail to understand your reasoning here. Whatever that way of using rdfs:Datatype is, it has nothing to do with RDFS (that I can understand, anyway.) I mean, this would not follow even in Swift, seems to me.
> 
>> The second:
>> If I'm able to do that, then literal syntax only exists as syntactic sugar for blank nodes whose type is an instance of rdfs:Datatype.
> 
> When you say that a blank node has a type, do you mean what is said by a triple like 
> 
> _:thisbnode rdf:type rdfs:Datatype .
> 
> ? Because all that says is that something exists which is a datatype. It does not assign a ‘type' to the bnode itself. And in any case, I cannot see how any of this means that literal syntax must be treated as syntactic sugar. 
> 
> Pat
> 
> 

Received on Thursday, 9 July 2020 00:30:30 UTC