[Nml-wg] Serial compound relations
Jason Zurawski
zurawski at internet2.edu
Mon Dec 13 14:52:34 CST 2010
Hi Freek/All;
On 12/13/10 3:07 PM, Freek Dijkstra wrote:
> Jason Zurawski wrote:
>
>>> A better syntax proposal is indeed (note that nml:segment is replaced by
>>> nml:link, and nm:idRef is replaces by nm:id):
>>>
>>> <nml:link type="link" nm:id="urn:ogf:network:example.net:pathAC">
>>> <nml:relation type="serialcompound" cl:type="partial">
>>> <nml:link nm:id="urn:ogf:network:example.net:segmentAB"/>
>>> </nml:relation>
>>> </nml:link>
>>
>> I still think this is a little off. I would assume that 'segmentAB'
>> belongs to someone already? If this is the case, it's defined already,
>> so you would use an idRef (as a pointer) in the second enclosed link
>> instead of an id. If it is not already defined, than the use of 'id' is
>> appropriate, but brings up another issue of defining links within
>> relations/other links. We have avoided this in the past.
>
> Actually, it is still not quite clear to me why there is a need to
> distinguish between id and idRef. If two objects have with the same
> value for the id attribute, it is clear they refer to the same thing.
>
> (Obviously I can imagine a few reasons to distinguish between id and
> idRef. For example (1) RDF has them both -with different names- for
> syntaxtic reasons; (2) id is used by authoritative sources, while idRef
> is used by non-authoratitive sources; (3) id is used when the object is
> defined the first time in a document, and idRef is used subsequently.
> Neither of these reasons is very convincing to me; perhaps you can
> elaborate a bit more what distinction you see and why this distinction
> is required.)
Typically 'id' is the definition of something, 'idRef' is used as a
pointer to something previously defined. Two quick examples from
NMC/perfSONAR:
1) Every data has an id field, but also a 'metadataIdRef' which points
to the 'parent' metadata for that data item.
2) Every 'metadata' in perfSONAR has an id field. Chaining is performed
by inserting a 'metadataIdRef' inside of an empty subject, this allows
us to perform filtering operations on the metadata that is 'referenced'.
Following these examples, I would claim that if some domain defines/owns
an object, such as a link, they get to assign the 'id' field. If this
is a GLIFesq definition I would assume this gives it a global scope.
For any other use that wishes to reference this original, there needs to
be a clear semantic meaning that we are not trying to define (or
re-define) the original. In the case of an end to end path that is
using several links that belong to others (e.g. the control plane
world), I am suggesting that if you intend to reference the individual
components of the entire path, it is necessary to use idRefs instead of
ids.
Hope this helps.
>> I would make the example as so (again, removing the use of the attribute
>> namespaces since I also feel this is really confusing things):
>>
>> <nml:link id="urn:ogf:network:example.net:pathAC">
>> <nml:relation type="serialcompound">
>> <nml:link idRef="urn:ogf:network:example.net:segmentAB"/>
>> </nml:relation>
>> </nml:link>
>>
>> Lastly the inclusion of the 'type=partial' is still rather foreign to
>> me, so I omitted it. Can you explain why you need to do this?
>
> In the above I was trying to describe the following information:
> "urn:ogf:network:example.net:segmentAB is a segment of the end-to-end
> link urn:ogf:network:example.net:pathAC, but I don't know the names of
> other segments of this path".
>
> This seems typical information that the domain who provisioned
> urn:ogf:network:example.net:segmentAB might say.
>
> The addition of the word "partial" was trying to emphasis that, but I
> agree that it can be conveyed with other means (such as the lack of a
> "count" attribute in the above, meaning that the list may be incomplete.)
Alright. I would vote for Aaron's proposal that I listed out in one of
the first mails (no longer in this tread for some reason) to use pointer
elements instead of count/type elements. I believe that respects the
original hop/path idea a little closer. If the existing tooling can
deal with a concept that 'follows' a path, that's a strong argument to
remain with it even if the syntax changes slightly.
Thanks;
-jason
More information about the nml-wg
mailing list