[Nml-wg] Conference call Thu June 16nd
Aaron Brown
aaron at internet2.edu
Thu Jun 16 11:09:55 CDT 2011
On Jun 16, 2011, at 9:07 AM, Freek Dijkstra wrote:
> Freek Dijkstra wrote:
>> During today's call we agreed to have another conference call in two
>> weeks time.
>>
>> The next NML call is scheduled on June 16th at
>> UTC 15:00 = 8:00 PDT = EDT 11:00 = 17:00 CEST.
>>
>> Call: +1-734-615-7474 (Please use if you do not pay for Long Distance)
>> or +1-866-411-0013 (toll free US/Canada Only)
>> Enter access code: 0186145
>
> Jeroen and I today have been looking at the NML RNC schema that Roman
> Łapacz wrote some time ago.
Some initial comments:
> --- nmlbase20110421.rnc 2011-06-16 11:02:32.000000000 -0400
> +++ nmlbase20110616.rnc 2011-06-16 10:56:20.000000000 -0400
> @@ -40,17 +42,19 @@
>
> Relation =
> element relation {
> - attribute type { xsd:string }
> - & IdReference*
> - & anyElement*
> + attribute type { xsd:anyURI }
> + & ( BaseNode | BaseLink | BasePort | BaseService | NMLGroup | Container )
> }
>
> +# problem: hasPort, hasport, has_port are not equal. Risk is less with URI's.
> +# risk of proliferation of types. E.g. Port -hostname-> Node instead of Node -hasport-> Port
> +
I think this is going to be a problem no matter what. If it's a URI, folks can still define junk relationships. I'm not opposed to it, per se; though, I'd like to see some specifics of what kinds of URIs you're thinking of.
> Lifetime =
> element lifetime {
> StartTime
> & (EndTime | Duration)?
> }
> -
> +### May a lifetime be segmented? (thus multiple sets of begin/endtime?)
It's probably just an optimization so i'd rather keep things simple, if possible. I think, in general, the same element may appear with different lifetime elements. For example, at time X, a virtual port's capacity is increased (the ports id is Y). Now we have the same element, Y, with a different set of properties (pre-X and post-X). If we change Y, we'll need to update everything pointing at Y with the new id. If we keep Y the same, when users lookup the element, they'll find two with different lifetimes, and it's up to them to figure out the correct one for their situation. I think the latter makes the most sense (if nothing else, it avoids nasty update loops when elements A and B have pointers at each other, and one gets updated. if A gets updated, it becomes A', so B gets updated, and now points at A', but it needs to be changed to B', so A' needs updated to point to B', and becomes A'', etc).
> # #################################################################
> # This sequence allows any element, attribute, or text (regardless
> @@ -78,14 +82,13 @@
> ## ########################
>
> StartTime =
> - anyElement*
> + element start { xsd:dateTime }
>
> EndTime =
> - anyElement*
> + element end { xsd:dateTime }
>
> Duration =
> - anyElement*
> -
> + element duration { xsd:duration }
The ISO duration looks truly ugly IMO, but I'm fine with swapping these to use more standardized formats.
> ## ########################
> ## Generic location
> @@ -106,17 +109,17 @@
> & element shelf { xsd:string }?
> & element latitude { xsd:float }?
> & element longitude { xsd:float }?
> -
> +### NAME?
I'd not mind being able to name locations.
> ## ########################
> ## Generic link
> ## ########################
>
> -BaseLink = element link { BaseLinkContent }
> +BaseLink = element link { BaseLinkContent | NetworkObjectRef }
> BaseLinkContent =
> NetworkObject
> & element type { xsd:string }?
> - & element capacity { xsd:string }?
> + & element capacity { xsd:float }?
> & anyElement*
I like specifying capacity as a float instead of an arbitrary string.
> ## ########################
> ## Generic service
> ## ########################
>
> -BaseService = element service { BaseServiceContent }
> -BaseServiceContent =
> - NetworkObject
> - & anyElement*
> +BaseService =
> + AdaptationService
> + | SwitchingService
> +
> +AdaptationService = anyElement
> +SwitchingService = anyElement
I'm not sure about limiting the services to AdaptationService and SwitchingService in the initial RNC file. At minimum, adding an 'AnyService' that is also anyElement would be good.
> +## ########################
> +## Containers
> +## ########################
> +
> +## A container is a list of items. A list may be unordered (a Bag) or ordered (a Sequence)
> +
> +Container =
> + Bag
> + | Sequence
> +
> +Bag =
> + element bag { UnorderedItem* }
> +
> +UnorderedItem =
> + element * { NetworkObject | NetworkObjectRef }
> +
> +Sequence =
> + element list { attribute first { xsd:anyURI } OrderedItem* }
> +
> +UnorderedItem =
> + element * {
> + attribute next { xsd:anyURI }
> + | attribute last { xsd:empty }
> + anyThing
> + }
> +
I'll need to think about this some more. I'm curious about the UnorderedItem. They've got "next" and "last" elements which implies an ordering of some kind.
Cheers,
Aaron
Summer 2011 ESCC/Internet2 Joint Techs
Hosted by the University of Alaska-Fairbanks
http://events.internet2.edu/2011/jt-uaf
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.ogf.org/pipermail/nml-wg/attachments/20110616/f1390f15/attachment.html
More information about the nml-wg
mailing list