[Nml-wg] Serial compound relations

Freek Dijkstra Freek.Dijkstra at sara.nl
Mon Dec 13 10:53:59 CST 2010


>> I choose some arbitrary names for some attributes; I'm happy to discuss
>> that in another thread.

I guess I should rename this thread to "other" ;)

Jason Zurawski wrote:

>> <nml:link type="link" nm:id="urn:ogf:network:example.net:pathAC">
>>      <nml:relation type="serialcompound" cl:type="partial">
>>          <nml:segment nm:idRef="urn:ogf:network:example.net:segmentAB"/>
>>      </nml:relation>
>> </nml:link>
> 
> Is there a reason you choose to introduce a new element (segment) 
> instead of using link?  I think we are all aware of the 'segment vs 
> link' battles of past OGFs that have spanned many different working 
> groups, and I was under the impression that the outcome was to use 
> 'link' for all connections instead of switching between names.

I meant both to be a "nml:link" instance.

My example is indeed confusing, and comes from my background in using
RDF/XML.

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>




In case you are curious why I created such a convoluted example, read
on. (it's off-topic for the NML-WG though, and you may want to skip it)

  +------------------------------------------------+
  | Link                                           |
  +------------------------------------------------+
  | id = urn:ogf:network:example.net:pathAC        |
  | type = "link"                                  |
  | ...                                            |
  +------------------------------------------------+
           |
           |
           |  +------------------------------+
           |  | Relation                     |
           |  +------------------------------+
           |--| type = "serialcompound"      |
           |  | cl:type = "partial"          |
           |  | ...                          |
           |  +------------------------------+
           |
           |
  +------------------------------------------------+
  | Link                                           |
  +------------------------------------------------+
  | id = urn:ogf:network:example.net:segmentAB     |
  | ...                                            |
  +------------------------------------------------+

In RDF, only objects can have properties. properties can not. So if I
want to describe the above, I need to make both Links and Relations an
object. The relation between two objects is always with a named
attribute, so for RDF, one needs to create for the relation between a
Link and a Relation object, and between a Relation and Link object, as in:

<nml:Link rdf:about="urn:ogf:network:example.net:pathAC">
  <nml:linktype>link</nml:linktype>
  <nml:hasrelation> <!-- attribute -->
    <nml:Relation>
      <nml:relationtype>serialcompound</nml:relationtype>
      <cl:type>partial</cl:type>
      <nml:segment
         rdf:resource="urn:ogf:network:example.net:segmentAB"/>
    </nml:Relation>
  </nml:hasrelation>
</nml:Link>

(observe that rdf:about is the same as nm:id, and rdf:resource is the
same as nm:idRef)

In XML, this can be a lot shorter, so I picked XML for brevity, but
indeed forget to use the object name (nml:Link) instead of the made-up
attributed name (nml:segemnt).

Sorry for the confusion,
Freek


More information about the nml-wg mailing list