($and/ <==do note remove - switch for preventing MathML interpretation of dollar signs)
Contents
About
This page covers the issue of the core pattern of link contracts in the XdiRdfModel. Examples on this page are shown in X3Format (specifically X3 Simple). They have been validated using the XDI4J Validator.
Link contracts are one of the fundamental XDI constructs. Simply defined, they are portions of the XDI RDF graph that control the sharing of other portions of the XDI RDF graph.
The issue here is simply to confirm the basic link contract control pattern in the XDI RDF graph, since this pattern will be repeated countless times throughout the graph, so it is a key piece of XDI DNA.
One pattern was proposed in version 10 of the XdiRdfModel document. This page proposes a similar but simpler pattern that includes contract signatures.
Change Log
- 2008-07-19 Drummond:
- Broke out contract signature blocks as separate XDI subjects.
- Added example of Bob signing Alice's contract.
- 2008-07-11 Drummond: first draft.
Alice Creates a Contract and Signature Block
Alice creates a contract that governs sharing of some of her graph. This includes creating a blank signature block, i.e., an XDI subject to which she can add permitted signatories to the contract.
Note that by the XDI context addressing pattern described in the XDI RDF Model, the XRI for this context would be:
=!11/$context$xdi//
$ <-- self-descriptor of the context -->
$is$a
$context$xdi
$a$context$xdi
=!11 <-- this context belongs to Alice -->
=!11
$is
=alice
$is$a
=
$has
$contract
+x <-- example predicate -->
"x-value" <-- example literal value -->
+y <-- example predicate -->
=!33 <-- example XDI reference -->
=!11$contract <-- example contract -->
$is$a
$contract
$has
$has <-- link to the contract signature block -->
$get
/
=!11
$add
/
=!11
+y
+z
$mod
/
=!11
+x
+y
+z
$del
/
=!11
+x
+y
+z
=!11$contract$has <-- signature block for the above contract -->
$is$a
$contract$has
Alice Assigns Signature Permission to Bob
Alice gives signature permission to Bob by:
- Adding Bob as an XDI subject.
- Adding a forward link from Bob to the signature block.
- Adding a bacward link from the signature block to Bob.
$
$is$a
$context$xdi
$a$context$xdi
=!11
=!11
$is
=alice
$is$a
=
$has
$contract
+x
"x-value"
+y
=!33
=!22 <-- XDI subject for Bob -->
$is
=bob
$is$a
=
$a$has
=!11$contract$has <-- forward link from Bob to signature block -->
=!11$contract
$is$a
$contract
$has
$has
$get
/
=!11
$add
/
=!11
+y
+z
$mod
/
=!11
+x
+y
+z
$del
/
=!11
+x
+y
+z
=!11$contract$has
$is$a
$contract$has
$has
=!22 <-- permission from Alice for Bob to sign contract -->
Bob Accepts the Contract by Adding his Signature
Bob adds his signature in the "slot" provided by Alice:
$
$is$a
$context$xdi
$a$context$xdi
=!11
=!11
$is
=alice
$is$a
=
$has
$contract
+x
"x-value"
+y
=!33
=!22
$is
=bob
$is$a
=
$a$has
=!11$contract$has
=!11$contract
$is$a
$contract
$has
$has
$get
/
=!11
$add
/
=!11
+y
+z
$mod
/
=!11
+x
+y
+z
$del
/
=!11
+x
+y
+z
=!11$contract$has
$is$a
$contract$has
$has
=!22
=!11$contract$has=!22 <-- Bob's signature "slot" -->
$is$a
$sig
$d
$d!2006-01-12T12:13:14Z <-- sig datestamp -->
$sig$key$rsa$2048 <-- sig key type -->
"{rsa-2048-signature-value}" <-- sig value -->
XDI Wiki