This is a static archive of the previous Open Grid Forum GridForge content management system saved from host forge.ogf.org file /sf/sfmain/do/go/artf6554?nav=1&selectedTab=comments at Sun, 06 Nov 2022 14:38:49 GMT SourceForge : artf6554: Allowing inverse relations

Project Home

Tracker

Documents

Tasks

Source Code

Discussions

File Releases

Wiki

Project Admin

NML-WG Homepage
Search Tracker
Project: NML-WG     Trackers > Schema Progress > View Artifact
Artifact artf6554 : Allowing inverse relations
Tracker: Schema Progress
Title: Allowing inverse relations
Description:
So far we have identified several different relations. We have defined them all in a single direction (hasTopology, 
hasNode, hasPort, isSource, isSink, etc.).

The question now is whether we want to define the inverse of relations as well.

E.g. the inverse of isSource is hasSource:

<nml:Link id="urn:ogf:network:provider.com:2012:PortA">
  <nml:Relation type="isSource">
    <nml:Port idRef="urn:ogf:network:client.net:2012:LinkA"/>
  </nml:Relation>
</nml:Link>

<nml:Port id="urn:ogf:network:client.net:2012:LinkA"/>
  <nml:Relation type="hasSource">
    <nml:Link idRef="urn:ogf:network:provider.com:2012:PortA">
  </nml:Relation>
</nml:Link>
Submitted By: Freek Dijkstra
Submitted On: 04/02/2012 10:07 AM EDT
Last Modified: 11/30/2012 7:53 AM EST
Closed: 11/30/2012 7:53 AM EST

Status / Comments Change Log Associations Attachments  
Status  
Status:* Rejected
Category:* UML schema
Priority: * 4
Assigned To: * None
Comments
Jeroen van der Ham: 11/30/2012 7:53 AM EST
  Action: Update
Closed set to 11/30/2012
Status changed from Last Call - Reject to Rejected
Jason Zurawski: 08/16/2012 7:36 AM EDT
  Comment:
Agree on the reject - inverse is a bit complicated given we get full functionality with a single 'direction' (e.g. single linked list w/ next is just 
as powerful as a double linked that features 'previous').  

  Action: Update
Freek Dijkstra: 08/08/2012 10:45 AM EDT
  Comment:
I don't see a problem with implementing reverse relations in a data structure for speed or other reasons.

I think that the drawbacks of inverse relations in a protocol (ie. forcing ALL implementations to implement them) outweight the benefits (easier to 
automatically translate the schema into code for those implementations that like inverse relations in their internal datastructures).
  Action: Update
Jeroen van der Ham: 08/08/2012 10:22 AM EDT
  Comment:
Sorry for the late comment.

We're currently using models in the GEYSERS and NOVI project where the information models have been (automatically) translated into Java objects. We 
have noticed there that it is often desirable to do have the inverse relations. It often makes it more natural for programming.
  Action: Update
Freek Dijkstra: 08/08/2012 10:01 AM EDT
  Action: Update
Status changed from Last Call to Last Call - Reject
Freek Dijkstra: 07/30/2012 7:59 AM EDT
  Comment:
I propose we REJECT this proposal for NML version 1.

During discussion on the mailing list, there were concerns over complicating the parser, while the most compelling use case (inability to use idRef in
 a parent XML element) has been covered in artf6553). I have not seen enough interest after that to pursue this at the moment.
  Action: Update
Status changed from Under discussion to Last Call
Freek Dijkstra: 04/02/2012 10:08 AM EDT
  Comment:
I have two questions about this proposal


1. Are A --(R)--> B and B --(R')--> A (with R' the inverse relation of R) exactly equivalent? If they are 
equivalent, can they be used interchangably, or are there some additional rules when they should or should not be used?

For example, the inverse relation of <nml:Relation type="next"> is <nml:Relation type="previous">. This was voted down at OGF 32, but I presume that 
this proposal reverts that decision.

For example, would the following be allowed?

<nml:Link id="urn:ogf:network:example.net:2012:linkZ">
  <nml:Relation type="isSerialCompoundLink">
    <!-- this is a list -->
    <nml:Link nm:id="urn:ogf:network:example.net:2012:linkA"/>
    <nml:Link nm:id="urn:ogf:network:example.net:2012:linkB">
      <nml:Relation type="previous">
        <nml:Link nm:idRef="urn:ogf:network:example.net:2012:linkA"/>
      </nml:Relation>
      <nml:Relation type="next">
        <nml:Link nm:idRef="urn:ogf:network:example.net:2012:linkC"/>
      </nml:Relation>
    </nml:Link>
    <nml:Link nm:id="urn:ogf:network:example.net:2012:linkC">
  </nml:Relation>
</nml:Link>

If this is not allowed, why not, and what are the exact rules why this is not allowed, while e.g. hasSource can be used.


2. Currently some relations are one-to-many, such as isSerialCompoundLink. How should the inverse relation be written in XML?

<nml:Link nm:id="urn:ogf:network:example.net:2012:linkA">
  <nml:Relation type="next">
    <nml:Link nm:idRef="urn:ogf:network:example.net:2012:linkA"/>
  </nml:Relation>
  <nml:Relation type="partofSerialCompoundLink">
    <nml:Link id="urn:ogf:network:example.net:2012:linkZ"/>
  </nml:Relation>
</nml:Link>
<nml:Link nm:id="urn:ogf:network:example.net:2012:linkB">
  <nml:Relation type="next">
    <nml:Link nm:idRef="urn:ogf:network:example.net:2012:linkC"/>
  </nml:Relation>
  <nml:Relation type="partofSerialCompoundLink">
    <nml:Link id="urn:ogf:network:example.net:2012:linkZ"/>
  </nml:Relation>
</nml:Link>
<nml:Link nm:id="urn:ogf:network:example.net:2012:linkC">
  <nml:Relation type="partofSerialCompoundLink">
    <nml:Link id="urn:ogf:network:example.net:2012:linkZ"/>
  </nml:Relation>
</nml:Link>

Or should there be some grouping around the list?
(which is in fact what Jeroen suggested at OGF32, but was voted down at that time)

<nml:List>
  <nml:Link nm:id="urn:ogf:network:example.net:2012:linkA">
    <nml:Relation type="next">
      <nml:Link nm:idRef="urn:ogf:network:example.net:2012:linkA"/>
    </nml:Relation>
  </nml:List>
  <nml:Link nm:id="urn:ogf:network:example.net:2012:linkB">
    <nml:Relation type="next">
      <nml:Link nm:idRef="urn:ogf:network:example.net:2012:linkC"/>
    </nml:Relation>
  </nml:Link>
  <nml:Link nm:id="urn:ogf:network:example.net:2012:linkC">
  <nml:Relation type="isSerialCompoundLink">
    <nml:Link id="urn:ogf:network:example.net:2012:linkZ"/>
  </nml:Relation>
</nml:List>
  Action: Update
Freek Dijkstra: 04/02/2012 10:07 AM EDT
  Action: Create


 
 
 
< Previous
 
 
Next >
 


The Open Grid Forum Contact Webmaster | Report a problem | GridForge Help
This is a static archive of the previous Open Grid Forum GridForge content management system saved from host forge.ogf.org file /sf/sfmain/do/go/artf6554?nav=1&selectedTab=comments at Sun, 06 Nov 2022 14:38:50 GMT