[Nml-wg] Naming

Aaron Brown aaron at internet2.edu
Fri Mar 28 09:20:15 CDT 2008


Freek Dijkstra wrote:
>> NDL [mandates] that everything be defined in RDF files and that the 
>> identifiers contain pointers to the RDF files where the definitions 
>> occur.
>
> First of all, NDL does not mandate that. Nowadays, some RDF gurus say 
> that RDF does, but that is not in the original design. I could just as 
> easily write in RDF:
>
> <Port id="urn:ogf:network:domain=Internet2:node=packrat:port=eth0">
> <lookup-service>http://topology.internet2.edu:8080/perfSONAR_PS/services/topology</lookup-service> 
>
> </Port>

Fair enough, but that ends up recreating the topology identifier i 
talked about in the email: 
http://topology.internet2.edu:8080/perfSONAR_PS/services/topology#packrat:eth0 
which ties the identifier to that specific instance of the topology service.

>> Basically, this all comes down to (assuming I have this right), do we 
>> tie the identifiers to the location of the element's definition or do 
>> we tie the identifiers to a logical concept so that the identifiers 
>> are independent of the definition's location? And if the answer is both, 
>
> My preferred answer is none (don't tie identifier with anything) -- 
> make it all explicit.
>
> For example, to make everything really explicit, you'll get:
>
> <Port identifier="urn:internet2.edu:UkRGIHN0aWxsIHJ1bGVzIQo">
>    <name>eth0</name>
>
> <lookup-service>http://topology.internet2.edu:8080/perfSONAR_PS/services/topology</lookup-service> 
>
>    <inDevice><ref 
> identifier="urn:internet2.edu:UmVhbGx5IHNvCg"/></inDevice>
>     <inDomain><ref 
> identifier="urn:internet2.edu:a2lkZGluZy4uLgo"/></inDomain>
> </Port>
> <Node identifier="urn:internet2.edu:UmVhbGx5IHNvCg">
>     <name>packrat</name>
> </Node>
> <Domain identifier="urn:internet2.edu:a2lkZGluZy4uLgo">
>     <name>Internet2.edu</name>
> </Domain>
I'm fine with being explicit about which device and domain an element is 
in. In fact, that relation is captured directly in our schema (not just 
with the URNs).
> Indeed, this is verbose. But you don't have to give out all 
> information every time. Typically, a protocol should send the lookup 
> service or domain information to a neighbour when it first mentions a 
> port. With that, the neigbour can create its own local lookup table. 
> So it's distributed and flexible.
I'm thinking beyond simply path finding. What do we do when a user wants 
to get the status of all links along the circuit and check what's going 
on with the routers connecting those links? He's given back a list of 
identifiers for each link in the path of the form URN 
"urn:internet2.edu:UkRGIHN0aWxsIHJ1bGVzIQo". Who does he contact to find 
out where he can get monitoring information about that link let alone 
the routers? If the link happens to be a neighbor, he can consult the 
local lookup table. What if it's not? Do we return the lookup service 
for each element every time?

This whole thing seems to boil down to there being the two pieces of the 
identifiers "namespace" and "identifier-in-namespace". The namespace is 
used to tell a client what to look up to find the location of the 
element definition and the identifier-in-namespace tells the client 
which element specifically to ask for at that location. NDL (or just the 
files I've seen) use the RDF URL as the namespace and the identifier in 
the namespace is the anchor in the RDF file. Our scheme uses the domain 
field of the URN to define the namespace. The rest of the URN defines 
the 'identifier-in-namespace' and can be nearly identical to what you've 
proposed or hierarchical depending on the desires of whoever is 
labelling these elements.

I'm not sure either is specifically better than the other, but we should 
define how these namespaces are created and how they should retain 
global uniqueness, and how to differentiate the namespace from the 
identifier in the namespace. I like the use of domain names since people 
already understand and recognize them. They also recognize URLs, but if 
URLs(either of the webservice or RDF variety) are used, it either does 
tie or implies a tie between the identifier and a specific service 
instance or file.

Cheers,
Aaron


More information about the nml-wg mailing list