W3C home > Mailing lists > Public > public-linked-json@w3.org > June 2011

Re: JSON-LD bnode canonical naming algorithm

From: glenn mcdonald <glenn@furia.com>
Date: Sun, 19 Jun 2011 01:42:11 +0000
Message-ID: <BANLkTimiLVb3RmmuazKAa3cq9ciwKUWrGQ@mail.gmail.com>
To: Manu Sporny <msporny@digitalbazaar.com>
Cc: "public-linked-json@w3.org" <public-linked-json@w3.org>
> Let's re-ground the discussion.

> If we are to remove support for bnodes, do you expect every
> implementation of PaySwarm to generate a unique identifier for the
> millions, if not billions, of transfers, digital signatures and payee
> descriptions that will be generated per day?

I'm fine with re-grounding, but this is now a totally different question.
What you generate ids for in your system is entirely your problem. It would
seem pretty strange to me if transfers didn't have ids, but if they don't in
your world, fine. I can more easily see why you might not want to give
descriptions identifiers, but if you don't, then I don't see why you'd want
to make blank nodes for them, either. But I do know that generating ids is
not a new problem in computer science, and I'm pretty sure that a
PaySwarm-specific algorithm for generating them would be a lot easier to
write and implement than a generic blank-node-normalization scheme, and I'm
*really* sure that forcing "every implementation of PaySwarm" to generate
unique identifiers in some PaySwarm-suitable way is a lot less net
development work than forcing every JSON-LD implementation to support a
generic normalization algorithm. (Especially the particular algorithm
proposed at the beginning of this thread, which I took as an entertaining
thought-experiment nobody would seriously consider implementing in practice
for anything but a toy, static dataset.)

But you seem to be stipulating a) PaySwarm is going to use JSON-LD, and b)
JSON-LD is responsible for supporting the constructs you would like to use
in PaySwarm. This amounts to begging the question. I could do the same
begging, myself, by stipulating that Needle is going to use this
as-yet-unresolved JSON-LD and demanding that Needle's particular
inclinations be catered to in the spec, too. And ditto everybody else who
happens to wander into this "community".

But who are "we", and where are we trying to get? I don't think "we" know. I
know about this mailing list from a combination of blog posts and emails
from you. I know some of your stated motivations arising from your
frustration with the way the RDF/JSON working-group turned out. I think the
"JSON" part of "JSON-LD" is pretty clear, but the "LD" part is manifestly
not. What is its audience? What are its goals? How does it relate to RDF?

And while "It's the subset of RDF that PaySwarm liked" is *an* answer,
surely "we" would want to come with one that's less arbitrarily specific.
And in the spirit of trying to get us to simple, coherent, shared answers to
these questions, I'm trying to propose some that aren't based on one
particular system or one particular set of precedents.

Specifically, I'm proposing that we agree to this starting point: "JSON-LD"
is a set of conventions for using JSON to represent directed, labeled

If we could agree to that, or some other statement of equivalent precision,
then we'd have some basis for discussing how blank nodes relate to the goal.

And it's possible that we could come to a consensus on a proposal that you
would end up not using, or not using exactly, in PaySwarm, or that I would
end up not using, or not using exactly, in Needle. In particular, if you
have lots of pieces of data that you don't intend to identify uniquely, and
thus can't link to, maybe you actually aren't doing "Linked Data".

At the end of the day, you are going to have to propose a solution that
> allows us to perform markup like the following:
> http://payswarm.com/vocabs/payswarm#Contract

I don't have to do any such thing. I don't even have to click on your link
to say, with great confidence, that if you want this to be a community
standards effort, you don't get to stipulate that it has to support every
arbitrary requirement and existing implementation of your own. I could just
as easily make the above statement and then link to some esoteric TopicMaps
example loaded with n-ary relationships, or *Leaves of Grass* for that

What's the alternative that you are proposing?


But until "we" agree on a goal, we'll have no easier a time evaluating my
proposal, either.

Glenn, I know you probably didn't mean this to come across in the way
> that I am reading the above paragraph, but phrases like "Why not try to
> win" make my skin crawl.

Yes, I saw a post or tweet from you about your dislike of this kind of
wording a couple days after writing my note. For "win", substitute "get
widespread adoption". So to repeat my sentiment in different terms, I
believe that if "JSON-LD" passes up this opportunity to *really* simplify
the model, somebody else who is willing to discard more RDF baggage will
produce something simpler that will have a better chance for widespread
adoption. You may well find, to your dismay, that the features you want for
PaySwarm are at odds with the adoption spectrum you want from the rest of
the world.

Having bnodes really helps us do that. Removing bnodes makes
> it impossible to address some of the PaySwarm use cases.

I believe the first sentence. I'm skeptical about the "impossible" part of
the second.

1. How can you represent RDFa data using JSON-LD?

I'm not convinced this should be a requirement.

2. How do you efficiently represent N-to-1 graph relationships when the
>   "1" does not have a unique identifier /and/ you care about
>   bandwidth? 50 people know a single person, but all you have is the
>   name of that person and their place of business. You could repeat
>   the person's information 50 times, but that's wasteful.

Make a node, give it an id.

3. How do you represent relationships between semantic objects like
>   Microformats, which do not typically have URLs or any other types of
>   identifiers for things.

I'm not convinced this should be a requirement.

4. How do you efficiently represent N-to-1 graph relationships when the
>   "1" does not have a unique identifier /and/ you need to differentiate
>   between multiple values that /could/ be the "1"? That is, there are
>   four "John Smiths" in a social graph with no unique URL identifiers.

Four nodes, four ids. It's nodes and ids all the way down. Later you might
decide to merge some or all of these four nodes, but that's fine.

5. If everything must be named, how can you have a decentralized
>   Payment system that can name every digital signature object created
>   by that decentralized system without creating name clashes? Yes,
>   you could use a Distributed Hash Table (DHT) technique, but then
>   you're just shifting the problem somewhere else.

As I said above, I contend that this problem is *better* shifted inside
PaySwarm. Not only should this cost not be imposed on everybody because *you
* need it, but your specific solution can be *much* simpler than a
generalized one.

If one wants to get rid of bnodes, they must find a way to solve at
> least those 5 problems.

I agree that those are cases. I do not agree that bnodes are necessary to
"solve" all of them, and I do not accept that all of them have to be
addressed by JSON-LD just because they exist.

But this last is just another way of saying what I said above: If we want to
make progress, and if we want there to be a "we", then we have to start by
agreeing on our goals.

Received on Sunday, 19 June 2011 01:43:08 GMT

This archive was generated by hypermail 2.3.1 : Tuesday, 26 March 2013 16:25:34 GMT