[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: XDI TC Unofficial Telecon Notes: Tuesday 2017-01-03
Following are the notes of the unofficial telecon of the XDI TC held on:
Date: Tuesday, 03 January 2017 USA
Time: 9:00AM - 10:00AM Pacific Time (17:00-18:30 UTC)
The TC operates under a standing rule approved 17 July 2008 under which the TC does not hold regular official meetings and conducts all business by electronic ballot only. Unofficial weekly meetings are held to enable discussion among members but no business is conducted nor actions taken.
Markus Sabadello
Drummond Reed
Phil Windley
This is the first draft of the Link Contract spec that we went over during the last call:
http://xdi.org/xdi-spec-docbook/xdi/xdi-link-contracts-1.0/xdi-link-contracts-1.0-wd01.xml
We talked about the following topics related to link contracts:
Markus noted that the current working draft contains the following example:
($contract$if/$true){$msg}<$t>/$lesser/...$contract#expiration<$t>
$contract#expiration<$t>/&/"2012-12-12"
We expanded this example as follows, in order to cover a "start date", an "end date", and an "active" flag for the link contract:
(=markus/=drummond)$contract<#start><$t>/&/"2017-01-01"
(=markus/=drummond)$contract<#end><$t>/&/"2017-12-31"
(=markus/=drummond)$contract<#active>/&/true
(=markus/=drummond)($contract$if$and/$true){$msg}<$t>/$greater/(=markus/=drummond)$contract<#start><$t>
(=markus/=drummond)($contract$if$and/$true){$msg}<$t>/$lesser/(=markus/=drummond)$contract<#end><$t>
(=markus/=drummond)($contract$if$and/$true)(=markus/=drummond)$contract<#active>/&/true
The policy enforces that a message's timestamp must be between the "start date" and "end date", and the "active" flag must be set to "true".
We had a good discussion about whether we should use #start and #end, or $start and $end—in other words, what should be the criteria for when we specify a $word (which can only be assigned by the XDI TC) and when we use a #words which represents a generic class that is only defined by consensus (like generic words in a natural language dictionary).
See the list of $words we have maintained on the XDI TC wiki:
https://wiki.oasis-open.org/xdi/XdiDollarDictionary
We came up with the following criteria:
A term should be a $word if it has special semantics that must be supported in XDI processing code. This is the direct analog of keywords in a programming language.
A term should also be a $word even if it is a literal (i.e., not a keyword), but its semantics are universal enough and common enough that it will significantly promote interoperability to define it in the $space.
Example of this kind of universal meaning of a literal: $true
Example of more contextual meaning of a literal: #active
The third general rule, suggested by Phil, was that we should define as little as possible in the $ space because:
It’s less work
It makes everything more flexible
It doesn’t break anything
Drummond agreed with this third rule because the goal has always been to keep the XDI $ space as small as possible. He used the analogy of the $ space being more like a grammar than a full vocabulary.
We also talked about assigning $words for date and time primitives. Currently have only defined $t for timestamps. But we agreed that we need a uniform, universal vocabulary for date and time primitives is an example of rule #1 above.
# ACTION: ALL - Develop a proposal for the full suite of $words needed for date and time primitives.
Markus then suggested that sometimes link contracts should be deleted (e.g. when expired). This could also be modeled as a policy under a new $del$if branch, e.g.:
(=markus/=drummond)($contract$del$if/$true){$msg}<$t>/$greater/(=markus/=drummond)$contract<#end><$t>
Drummond then did an inventory of the different link contract “branches” that will be covered in the link contract spec::
$do$if - the execution branch
$use$if - the usage branch
$del$if - the termination branch
$defer$if - the deferred condition branch
$defer$push$if - the deferred action branch
Markus then wondered if the $del$if idea could be generalized to apply any kind of operation to a link contract (e.g. just deactivate it) if a certain policy is fulfilled. This could be done using a $msg$if branch and a $msg$do branch, e.g.:
To delete a link contract on expiration:
(=markus/=drummond)($contract$msg$if/$true){$msg}<$t>/$greater/(=markus/=drummond)$contract<#end><$t>
(=markus/=drummond)$contract$msg$do/$del/(=markus/=drummond)$contract
To deactivate a link contract on expiration:
(=markus/=drummond)($contract$msg$if/$true){$msg}<$t>/$greater/(=markus/=drummond)$contract<#end><$t>
(=markus/=drummond)($contract$msg$do/$set)(=markus/=drummond)<#active>/&/false
The WD mentions the $for keyword, but this has never been defined in detail. Drummond explained that this branch of the link contract is used to specify the purpose(s) for which the authorizing authority is granting the data access permissions under the link contract. This would contain human-readable (legal) text or references to human-readable text—for example provisions in a trust framework.
We discussed the $use keyword as an alternative to the $for keyword and agreed it made more sense. This branch needs further discussion.
The next call will be next week at the usual time (9AM PT). The link where agenda items can be posted for the next meeting is: https://docs.google.com/document/d/19oDl0lbb56Grehx2a5flZnhrgnua5l8cVvC_dJ8fTXk/edit?usp=sharing
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]