Re: Updated data model specification document

On 05/28/2016 01:28 PM, Steven Rowat wrote:
> Dave,
> Thank you for the extensive explanation. I read it, slept on it, read it
> again, read some about RDF triples to refresh my memory about triple
> semantics, and tried to read the VC data model page again
> (http://opencreds.org/specs/source/claims-data-model/). I got a little
> further this time before confusion, but not all the way through.
> 
> I'm beginning to understand some parts better, but the core architecture
> is eluding me.
> 
> I'm going to explain below my concerns about how 'properties' are used
> in the VC data model, which is the first major issue I run into that
> blocks me. Perhaps if I can understand it then the rest will follow.
> 
> On 5/27/16 6:41 PM, Dave Longley wrote:
>> The "id" property is a bit special. To understand that I'll try to
>> provide more on my view of the data model.
>>
>> The data model can be understood as a graph. It can be thought of as a
>> collection of nodes that are connected to other nodes via "properties".
>>
>> Each of these relations in the graph can be modeled as a statement with
>> a subject, a property, and an object.
> 
> I think this triple is the core of my problem with the word 'property'
> in the data model. That is: isn't the use of the word 'property'
> misleading: using 'property' for a relation between a subject and an
> object?
> 
> Because a property is commonly meant to be attached to a single 'thing',
> not the relation between two 'things'. The Random House definitions of
> 'property' and 'relation' make this clear:
> 
> Property:
> 4. a basic, essential, or special quality of a thing
> 
> Relation:
> 1. association between or among things; connection; relationship
> 
> Question: are you in fact using 'Property' as the second term in a
> triple? Like in RDF,
> subject->predicate->object.

Yes, that's how it's being used. It is often used interchangeably with
"predicate" -- but "property" or "property name" are more familiar to
Web developers as referring to, for example, "keys" in a JSON object or
"members of a class" in object oriented programming. If I had to guess,
you're probably alluding to the idea that "property" should more
precisely refer to something like the combination of a predicate and an
object for a particular subject. Web developers may use the term
"property" to refer to a key-value pairing in a JSON object -- but may
also colloquially refer to just the keys as properties as well.

When we're talking about properties here, you can think of them as the
second term in a triple or as the keys of a JSON object:

"The predicate is also known as the property of the triple."
https://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-property

"The predicate itself is an IRI and denotes a property, that is, a
resource that can be thought of as a binary relation."
https://www.w3.org/TR/rdf11-concepts/#resources-and-statements

"the member names (or property names) of this object"
http://json-schema.org/example2.html

However, we're also trying to avoid RDF terminology to a certain extent.
We want to describe the data model in simple terms that allow it to be
compatible with the RDF data model, but don't necessarily strongly
bind it to that.

> 
> I may misunderstand the overall VC data model at some other level, but
> in the way I'm attempting to understand it, 'property' seems misleading,
> if being used to denote a relationship between two 'things' or 'nodes'.
> To follow common English usage, the 'property' should belong to either
> the subject node, or the object node, not designate the relation between
> them.

You can still think of it that way, it's not incompatible. For example,
"favoriteColor" and "name" are properties that belong to a particular
entity. Those properties have values associated with them. Together, you
can make two statements:

Entity X has a name Y.
Entity X has a favorite color Z.

That doesn't change the data model to think of it that way. You're both
asserting that entity X has some properties -- and that those properties
can be thought of as relations between entity X and other literals or
entities, Y and Z.

> 
>> The value for "id" may be a URL that globally
>> identifies the subject. Every other property defines a relation between
>> the subject and an object.
> 
> Same concern as above. Of course you could redefine the word
> 'property'--and perhaps you have--to mean 'relationship' in the specific
> context of the VC data model, but it seems counter-intuitive to do this
> (since the wider world doesn't use it this way) unless unless there's a
> special reason (which I'm not understanding yet) as to why this
> redefinition is appropriate.
> 
> If there is such a reason, I'd really really like to know what it is.
> :-) :-)

Well, I'd argue that using the term "property" is well established in
technology circles as referring to members of a particular class, keys
(or key-value pairs) in JSON, and as a synonym for "predicate" in RDF.
So we expect it's usage to be familiar to both Web developers and
people who use data models like RDF. I think we stand to gain support
and general understanding from both groups by using this terminology.

> 
> 
> Steven
> 
> p.s. Sometimes a simple-as-possible block flow-diagram is the best way
> to get the basic architecture across. Is it possible someone could make
> one of those for the VC data model?
> 

A good idea.


-- 
Dave Longley
CTO
Digital Bazaar, Inc.

Received on Sunday, 29 May 2016 02:55:48 UTC