This wiki has been archived and is now read-only.

Example of Endorsement Use Case

From RDF Working Group Wiki
Jump to: navigation, search

Use Case

A system wants to convey to another system in RDF that some person agrees with or disagrees with certain RDF triples.

Concrete Example

Alice wants to say that she agrees that Bob is named Bob.

Bob has stated in a foaf record that he is named Bob. He did so in a Turtle document he hosts on http://example.org/bob/foaf.ttl

	@prefix foaf: <http://xmlns.com/foaf/0.1/> .

	<#me> foaf:name "Bob",
	    foaf:homepage <http://mytotallyfakesite.com> .

Alice Requests the Turtle document. After reading it she decides that she wants to agree with Bob's name, but doesn't with to endorse the totally fake site as Bob's homepage.

In order to use any sort of HMAC or other signing system Alice will need to produce a byte stream for the message. An example byte stream:

	0000000 3c 68 74 74 70 3a 2f 2f 65 78 61 6d 70 6c 65 2e
	0000010 6f 72 67 2f 62 6f 62 2f 66 6f 61 66 2e 74 74 6c
	0000020 23 6d 65 3e 20 3c 68 74 74 70 3a 2f 2f 78 6d 6c
	0000030 6e 73 2e 63 6f 6d 2f 66 6f 61 66 2f 30 2e 31 2f
        0000040 6e 61 6d 65 3e 20 22 42 6f 62 22 2e

Or in ASCII:

	<http://example.org/bob/foaf.ttl#me> <http://xmlns.com/foaf/0.1/name> "Bob".

Once Alice has the byte stream she uses it to compute a hash 64487b3448548b7c8a5cfaeb0147bf54. She also creates a full signature using her private key. She then writes this all down in a new TriG document:

	@prefix foaf: <http://xmlns.com/foaf/0.1/> .
	@prefix foo: <http://example.org/foo/>

	@base <http://example.org/alice> .

	{ <#me> foo:endorces urn:md5:64487b3448548b7c8a5cfaeb0147bf54; 
		    foo:signature "SomeSigningBytes";

	@base <http://example.org/bob/foaf.ttl> .

	urn:md5:64487b3448548b7c8a5cfaeb0147bf54 {
		<#me> foaf:name "Bob" .

Alice then sends the document to Charlie. Charlie is able to take the triples in the graph statement labeled urn:md5:64487b3448548b7c8a5cfaeb0147bf54 produce the same byte stream and verify both the hash and Alice's signature.

Gavin Carothers Opinion

I am unaware of any use case around endorsement or authority that would not require some level of cryptographic signing. Once going down that road it's easy to use the byte stream required by ANY HMAC system to name the set of triples. This sort of use of IRIs containing hashes for identity of arbitrary data is already in wide use today. http://en.wikipedia.org/wiki/Magnet_URI_scheme#URN.2C_containing_hash_.28xt.29

Sandro Hawke Opinion

I am unaware of any feature provided by cryptography, for this use case. See http://lists.w3.org/Archives/Public/public-rdf-wg/2012Jan/0064.html