<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
<br>
Hi Mitar, thanks for your enthusiasm ;)<br>
<br>
You can check our data in XML (we call it CNML as for Communities
Network Markup Language) using the "CNML" link provided at the bottom
page on each zone at our network. As en example, for a zone of about
1,400 nodes:<br>
<ul>
<li><a class="moz-txt-link-freetext" href="http://guifi.net/en/planavic">http://guifi.net/en/planavic</a></li>
</ul>
At the bottom, the CNML link drives you to:<br>
<ul>
<li><a class="moz-txt-link-freetext" href="http://guifi.net/en/guifi/cnml/8349">http://guifi.net/en/guifi/cnml/8349</a></li>
</ul>
>From there you can export all the information at several levels of
depth.<br>
<br>
We're now just delivering the XML. By looking into this you'll see very
much which objects are decribed and with which attributes. To help
documenting it, we can use some tools looking at a valid XML code like:<br>
<ul>
<li><a class="moz-txt-link-freetext" href="http://www.hitsw.com/xml_utilities/">http://www.hitsw.com/xml_utilities/</a><br>
</li>
</ul>
With that, you can currently get the XML schema and DTD provided below
at this email.<br>
<br>
By looking into this you will see that there is an object hierarchy
which migh be very much generalistic, basically and as a summary.<br>
<ul>
<li>network</li>
<ul>
<li>zones</li>
<ul>
<li>child zones (up to n)</li>
<ul>
<li>locations</li>
<ul>
<li>devices</li>
<ul>
<li>radios</li>
<ul>
<li>interfaces</li>
<ul>
<li>links</li>
</ul>
</ul>
</ul>
</ul>
</ul>
</ul>
</ul>
</ul>
By looking into the schema you provided, I do see there that you are
very much describing a location, a device and a radio (all at the same
object). To split between objects might be usefull for allowing a much
more flexible description (a location might have several devices, a
device might have several radios, an interface might be from several
types, etc...). <br>
<br>
So you'll realize that the schema you provided, can be easily
transformed to an XML like the one I'm providing, and therefore
exported in a common format, regardless of how you do store it. Maybe
we just have to adapt some tags/formats or add some attributes to be
able to describe all cases.<br>
<br>
Once all of us do export all the data in a common and understandable
format regardless of the technology or application used, will be very
much easier to reuse components and logic.<br>
<br>
Let us know once you have the wiki ;)<br>
<br>
<br>
CNML generated DTD:<br>
--------------------------------------------------------------<br>
<pre><!ELEMENT class EMPTY >
<!ATTLIST class mapping NMTOKEN #REQUIRED >
<!ATTLIST class network_description NMTOKEN #REQUIRED >
<!ELEMENT cnml ( class, network ) >
<!ATTLIST cnml generated CDATA #REQUIRED >
<!ATTLIST cnml server_id NMTOKEN #REQUIRED >
<!ATTLIST cnml server_url CDATA #REQUIRED >
<!ATTLIST cnml version NMTOKEN #REQUIRED >
<!ELEMENT device ( #PCDATA | interface | radio | service )* >
<!ATTLIST device created CDATA #REQUIRED >
<!ATTLIST device firmware CDATA #IMPLIED >
<!ATTLIST device graph_server NMTOKEN #IMPLIED >
<!ATTLIST device id NMTOKEN #REQUIRED >
<!ATTLIST device name CDATA #IMPLIED >
<!ATTLIST device snmp_index ( 2 | 3 | 4 | 5 | 9 | v ) #IMPLIED >
<!ATTLIST device status ( Building | Dropped | Planned | Reserved | Testing | Working ) #REQUIRED >
<!ATTLIST device title ID #REQUIRED >
<!ATTLIST device type ( ADSL | cam | generic | nat | phone | radio | server ) #REQUIRED >
<!ATTLIST device updated CDATA #IMPLIED >
<!ELEMENT interface ( link* ) >
<!ATTLIST interface id NMTOKEN #REQUIRED >
<!ATTLIST interface ipv4 NMTOKEN #IMPLIED >
<!ATTLIST interface mac NMTOKEN #IMPLIED >
<!ATTLIST interface mask ( 255.255.255.0 | 255.255.255.192 | 255.255.255.224 | 255.255.255.240 | 255.255.255.248 | 255.255.255.252 ) #REQUIRED >
<!ATTLIST interface type CDATA #REQUIRED >
<!ELEMENT link EMPTY >
<!ATTLIST link id NMTOKEN #REQUIRED >
<!ATTLIST link link_status ( Building | Planned | Reserved | Testing | Working ) #REQUIRED >
<!ATTLIST link link_type CDATA #REQUIRED >
<!ATTLIST link linked_device_id NMTOKEN #REQUIRED >
<!ATTLIST link linked_interface_id NMTOKEN #REQUIRED >
<!ATTLIST link linked_node_id NMTOKEN #REQUIRED >
<!ELEMENT network ( zone ) >
<!ATTLIST network ap NMTOKEN #REQUIRED >
<!ATTLIST network client NMTOKEN #REQUIRED >
<!ATTLIST network devices NMTOKEN #REQUIRED >
<!ATTLIST network links NMTOKEN #REQUIRED >
<!ATTLIST network nodes NMTOKEN #REQUIRED >
<!ATTLIST network services NMTOKEN #REQUIRED >
<!ELEMENT node ( #PCDATA | device )* >
<!ATTLIST node access_points NMTOKEN #IMPLIED >
<!ATTLIST node antenna_elevation NMTOKEN #IMPLIED >
<!ATTLIST node clients ( 1 | 2 | 3 | 4 ) #IMPLIED >
<!ATTLIST node created CDATA #REQUIRED >
<!ATTLIST node devices ( 1 | 10 | 2 | 3 | 4 | 5 | 6 | 7 | 8 ) #IMPLIED >
<!ATTLIST node graph_server ( 11747 | 15618 | 6558 | 6572 | 6673 | 6833 | 6836 | 8444 ) #IMPLIED >
<!ATTLIST node id NMTOKEN #REQUIRED >
<!ATTLIST node lat NMTOKEN #REQUIRED >
<!ATTLIST node links NMTOKEN #IMPLIED >
<!ATTLIST node lon NMTOKEN #REQUIRED >
<!ATTLIST node services NMTOKEN #IMPLIED >
<!ATTLIST node status ( Building | Planned | Reserved | Testing | Working ) #REQUIRED >
<!ATTLIST node title ID #REQUIRED >
<!ATTLIST node updated CDATA #IMPLIED >
<!ELEMENT radio ( interface* ) >
<!ATTLIST radio antenna_angle ( 120 | 30 | 360 | 6 | 60 | 90 ) #IMPLIED >
<!ATTLIST radio antenna_azimuth NMTOKEN #IMPLIED >
<!ATTLIST radio antenna_gain ( 12 | 14 | 18 | 2 | 21 | 24 | 8 ) #IMPLIED >
<!ATTLIST radio channel NMTOKEN #IMPLIED >
<!ATTLIST radio device_id NMTOKEN #REQUIRED >
<!ATTLIST radio id NMTOKEN #REQUIRED >
<!ATTLIST radio mode ( ap | client ) #REQUIRED >
<!ATTLIST radio protocol ( 802.11a | 802.11b | 802.11g | legacy ) #IMPLIED >
<!ATTLIST radio snmp_index ( 6 ) #IMPLIED >
<!ATTLIST radio snmp_name ( wifi0 | wlan1 | wlan2 | wlan3 | wlan4 | wlan5 | wlan6 | wlan7 | wlan8 ) #IMPLIED >
<!ATTLIST radio ssid NMTOKEN #IMPLIED >
<!ELEMENT service EMPTY >
<!ATTLIST service created CDATA #REQUIRED >
<!ATTLIST service id NMTOKEN #REQUIRED >
<!ATTLIST service status ( Building | Planned | Testing | Working ) #REQUIRED >
<!ATTLIST service title ID #REQUIRED >
<!ATTLIST service type NMTOKEN #REQUIRED >
<!ATTLIST service updated CDATA #IMPLIED >
<!ELEMENT zone ( #PCDATA | node | zone )* >
<!ATTLIST zone access_points NMTOKEN #REQUIRED >
<!ATTLIST zone box CDATA #REQUIRED >
<!ATTLIST zone clients NMTOKEN #REQUIRED >
<!ATTLIST zone created CDATA #REQUIRED >
<!ATTLIST zone devices NMTOKEN #IMPLIED >
<!ATTLIST zone dns_servers CDATA #IMPLIED >
<!ATTLIST zone graph_server NMTOKEN #IMPLIED >
<!ATTLIST zone id NMTOKEN #REQUIRED >
<!ATTLIST zone links NMTOKEN #REQUIRED >
<!ATTLIST zone ntp_servers CDATA #IMPLIED >
<!ATTLIST zone parent_id ( 15231 | 2444 | 8349 ) #REQUIRED >
<!ATTLIST zone services NMTOKEN #IMPLIED >
<!ATTLIST zone time_zone CDATA #FIXED "+01 2 2" >
<!ATTLIST zone title CDATA #REQUIRED >
<!ATTLIST zone updated CDATA #REQUIRED >
<!ATTLIST zone zone_nodes NMTOKEN #REQUIRED >
</pre>
<br>
<br>
CNML generated schema:<br>
--------------------------------------------------------------<br>
<pre><?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs=<a class="moz-txt-link-rfc2396E" href="http://www.w3.org/2001/XMLSchema">"http://www.w3.org/2001/XMLSchema"</a>>
<xs:element name="class">
<xs:complexType>
<xs:attribute name="network_description" type="xs:NMTOKEN" use="required" />
<xs:attribute name="mapping" type="xs:NMTOKEN" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="cnml">
<xs:complexType>
<xs:sequence>
<xs:element ref="class" />
<xs:element ref="network" />
</xs:sequence>
<xs:attribute name="version" type="xs:NMTOKEN" use="required" />
<xs:attribute name="generated" type="xs:string" use="required" />
<xs:attribute name="server_url" type="xs:string" use="required" />
<xs:attribute name="server_id" type="xs:NMTOKEN" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="device">
<xs:complexType mixed="true">
<xs:choice>
<xs:element ref="interface" />
<xs:element ref="radio" />
<xs:element ref="service" />
</xs:choice>
<xs:attribute name="firmware" type="xs:string" use="optional" />
<xs:attribute name="name" type="xs:string" use="optional" />
<xs:attribute name="id" type="xs:NMTOKEN" use="required" />
<xs:attribute name="created" type="xs:string" use="required" />
<xs:attribute name="status" use="required">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="Building" />
<xs:enumeration value="Dropped" />
<xs:enumeration value="Planned" />
<xs:enumeration value="Reserved" />
<xs:enumeration value="Testing" />
<xs:enumeration value="Working" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="updated" type="xs:string" use="optional" />
<xs:attribute name="snmp_index" use="optional">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="2" />
<xs:enumeration value="3" />
<xs:enumeration value="4" />
<xs:enumeration value="5" />
<xs:enumeration value="9" />
<xs:enumeration value="v" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="type" use="required">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="ADSL" />
<xs:enumeration value="cam" />
<xs:enumeration value="generic" />
<xs:enumeration value="nat" />
<xs:enumeration value="phone" />
<xs:enumeration value="radio" />
<xs:enumeration value="server" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="graph_server" type="xs:NMTOKEN" use="optional" />
<xs:attribute name="title" type="xs:ID" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="interface">
<xs:complexType>
<xs:sequence>
<xs:element ref="link" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="mask" use="required">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="255.255.255.0" />
<xs:enumeration value="255.255.255.192" />
<xs:enumeration value="255.255.255.224" />
<xs:enumeration value="255.255.255.240" />
<xs:enumeration value="255.255.255.248" />
<xs:enumeration value="255.255.255.252" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="ipv4" type="xs:NMTOKEN" use="optional" />
<xs:attribute name="type" type="xs:string" use="required" />
<xs:attribute name="mac" type="xs:NMTOKEN" use="optional" />
<xs:attribute name="id" type="xs:NMTOKEN" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="link">
<xs:complexType>
<xs:attribute name="linked_device_id" type="xs:NMTOKEN" use="required" />
<xs:attribute name="link_status" use="required">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="Building" />
<xs:enumeration value="Planned" />
<xs:enumeration value="Reserved" />
<xs:enumeration value="Testing" />
<xs:enumeration value="Working" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="linked_interface_id" type="xs:NMTOKEN" use="required" />
<xs:attribute name="link_type" type="xs:string" use="required" />
<xs:attribute name="linked_node_id" type="xs:NMTOKEN" use="required" />
<xs:attribute name="id" type="xs:NMTOKEN" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="network">
<xs:complexType>
<xs:sequence>
<xs:element ref="zone" />
</xs:sequence>
<xs:attribute name="client" type="xs:NMTOKEN" use="required" />
<xs:attribute name="nodes" type="xs:NMTOKEN" use="required" />
<xs:attribute name="links" type="xs:NMTOKEN" use="required" />
<xs:attribute name="devices" type="xs:NMTOKEN" use="required" />
<xs:attribute name="services" type="xs:NMTOKEN" use="required" />
<xs:attribute name="ap" type="xs:NMTOKEN" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="node">
<xs:complexType mixed="true">
<xs:choice>
<xs:element ref="device" />
</xs:choice>
<xs:attribute name="lon" type="xs:NMTOKEN" use="required" />
<xs:attribute name="id" type="xs:NMTOKEN" use="required" />
<xs:attribute name="antenna_elevation" type="xs:NMTOKEN" use="optional" />
<xs:attribute name="created" type="xs:string" use="required" />
<xs:attribute name="status" use="required">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="Building" />
<xs:enumeration value="Planned" />
<xs:enumeration value="Reserved" />
<xs:enumeration value="Testing" />
<xs:enumeration value="Working" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="updated" type="xs:string" use="optional" />
<xs:attribute name="access_points" type="xs:NMTOKEN" use="optional" />
<xs:attribute name="lat" type="xs:NMTOKEN" use="required" />
<xs:attribute name="graph_server" use="optional">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="11747" />
<xs:enumeration value="15618" />
<xs:enumeration value="6558" />
<xs:enumeration value="6572" />
<xs:enumeration value="6673" />
<xs:enumeration value="6833" />
<xs:enumeration value="6836" />
<xs:enumeration value="8444" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="title" type="xs:ID" use="required" />
<xs:attribute name="services" type="xs:NMTOKEN" use="optional" />
<xs:attribute name="links" type="xs:NMTOKEN" use="optional" />
<xs:attribute name="devices" use="optional">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="1" />
<xs:enumeration value="10" />
<xs:enumeration value="2" />
<xs:enumeration value="3" />
<xs:enumeration value="4" />
<xs:enumeration value="5" />
<xs:enumeration value="6" />
<xs:enumeration value="7" />
<xs:enumeration value="8" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="clients" use="optional">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="1" />
<xs:enumeration value="2" />
<xs:enumeration value="3" />
<xs:enumeration value="4" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="radio">
<xs:complexType>
<xs:sequence>
<xs:element ref="interface" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="antenna_azimuth" type="xs:NMTOKEN" use="optional" />
<xs:attribute name="ssid" type="xs:NMTOKEN" use="optional" />
<xs:attribute name="id" type="xs:NMTOKEN" use="required" />
<xs:attribute name="device_id" type="xs:NMTOKEN" use="required" />
<xs:attribute name="snmp_name" use="optional">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="wifi0" />
<xs:enumeration value="wlan1" />
<xs:enumeration value="wlan2" />
<xs:enumeration value="wlan3" />
<xs:enumeration value="wlan4" />
<xs:enumeration value="wlan5" />
<xs:enumeration value="wlan6" />
<xs:enumeration value="wlan7" />
<xs:enumeration value="wlan8" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="antenna_angle" use="optional">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="120" />
<xs:enumeration value="30" />
<xs:enumeration value="360" />
<xs:enumeration value="6" />
<xs:enumeration value="60" />
<xs:enumeration value="90" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="mode" use="required">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="ap" />
<xs:enumeration value="client" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="snmp_index" use="optional">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="6" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="channel" type="xs:NMTOKEN" use="optional" />
<xs:attribute name="antenna_gain" use="optional">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="12" />
<xs:enumeration value="14" />
<xs:enumeration value="18" />
<xs:enumeration value="2" />
<xs:enumeration value="21" />
<xs:enumeration value="24" />
<xs:enumeration value="8" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="protocol" use="optional">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="802.11a" />
<xs:enumeration value="802.11b" />
<xs:enumeration value="802.11g" />
<xs:enumeration value="legacy" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="service">
<xs:complexType>
<xs:attribute name="updated" type="xs:string" use="optional" />
<xs:attribute name="status" use="required">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="Building" />
<xs:enumeration value="Planned" />
<xs:enumeration value="Testing" />
<xs:enumeration value="Working" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="type" type="xs:NMTOKEN" use="required" />
<xs:attribute name="title" type="xs:ID" use="required" />
<xs:attribute name="id" type="xs:NMTOKEN" use="required" />
<xs:attribute name="created" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="zone">
<xs:complexType mixed="true">
<xs:choice>
<xs:element ref="node" />
<xs:element ref="zone" />
</xs:choice>
<xs:attribute name="id" type="xs:NMTOKEN" use="required" />
<xs:attribute name="zone_nodes" type="xs:NMTOKEN" use="required" />
<xs:attribute name="ntp_servers" type="xs:string" use="optional" />
<xs:attribute name="created" type="xs:string" use="required" />
<xs:attribute name="updated" type="xs:string" use="required" />
<xs:attribute name="box" type="xs:string" use="required" />
<xs:attribute name="access_points" type="xs:NMTOKEN" use="required" />
<xs:attribute name="parent_id" use="required">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="15231" />
<xs:enumeration value="2444" />
<xs:enumeration value="8349" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="dns_servers" type="xs:string" use="optional" />
<xs:attribute name="graph_server" type="xs:NMTOKEN" use="optional" />
<xs:attribute name="title" type="xs:string" use="required" />
<xs:attribute name="services" type="xs:NMTOKEN" use="optional" />
<xs:attribute name="links" type="xs:NMTOKEN" use="required" />
<xs:attribute name="devices" type="xs:NMTOKEN" use="optional" />
<xs:attribute name="time_zone" type="xs:string" use="required" fixed="+01 2 2" />
<xs:attribute name="clients" type="xs:NMTOKEN" use="required" />
</xs:complexType>
</xs:element>
</xs:schema></pre>
<br>
<br>
<br>
<br>
Al 30/11/09 20:46, En/na Mitar ha escrit:
<blockquote cite="mid:4B14212C.60604@tnode.com" type="cite">
<pre wrap="">Hi!
We have prepared documentation for our schema. It is available here:
<a class="moz-txt-link-freetext" href="http://wlan-lj.net/wiki/Podrobnosti/NodeWatcher/Schema">http://wlan-lj.net/wiki/Podrobnosti/NodeWatcher/Schema</a>
I think the important thing is to define globally unique IDs for all
nodes in all systems which would not change during a lifetime of a node.
We are using UUIDs to achieve this.
In this way it is not just possible to interchange code/modules but also
data about nodes. So there could be someday also aggregating system for
all our systems (for example a global map of all nodes).
I could fork our schema documentation and it could start as a schema
draft where everybody would start adding your fields and discuss names
of common fields. We can use our wiki for that if you wish.
I think it would be also useful to invite also other wireless networking
groups to this. Especially overseas ones. What do you think?
Mitar
_______________________________________________
Nodedb-interop mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Nodedb-interop@lists.funkfeuer.at">Nodedb-interop@lists.funkfeuer.at</a>
<a class="moz-txt-link-freetext" href="http://lists.funkfeuer.at/mailman/listinfo/nodedb-interop">http://lists.funkfeuer.at/mailman/listinfo/nodedb-interop</a>
</pre>
</blockquote>
<br>
</body>
</html>