[Nmc-wg] [ogf nmc-base svn commit] r38 - / NMWG NMWG/base NMWG/base/examples NMWG/base/schema NMWG/base/schema/topo

www-data www-data at forge.ogf.org
Thu Jun 28 09:50:32 EDT 2012


Author: zurawski
Date: 2012-06-28 09:50:31 -0400 (Thu, 28 Jun 2012)
New Revision: 38

Added:
   NMWG/
   NMWG/base/
   NMWG/base/Makefile
   NMWG/base/chain.dia
   NMWG/base/chain.eps
   NMWG/base/chain2.dia
   NMWG/base/chain2.eps
   NMWG/base/chaining.tex
   NMWG/base/citesort.sty
   NMWG/base/design.tex
   NMWG/base/elements.tex
   NMWG/base/examples.tex
   NMWG/base/examples/
   NMWG/base/examples/ping.xml
   NMWG/base/fancyheadings.sty
   NMWG/base/filter.dia
   NMWG/base/filter.eps
   NMWG/base/introduction.tex
   NMWG/base/namespaces.tex
   NMWG/base/nmbase.bib
   NMWG/base/nmbase.pdf
   NMWG/base/nmbase.tex
   NMWG/base/schema.tex
   NMWG/base/schema/
   NMWG/base/schema/CMP.rnc
   NMWG/base/schema/FlowsaMA.rnc
   NMWG/base/schema/PassiveAnomal.rnc
   NMWG/base/schema/PassiveBand.rnc
   NMWG/base/schema/PassiveLoss.rnc
   NMWG/base/schema/PassiveTracefile.rnc
   NMWG/base/schema/XML_Schema_v03_final.rnc
   NMWG/base/schema/abw.rnc
   NMWG/base/schema/bwctl.rnc
   NMWG/base/schema/errors.rnc
   NMWG/base/schema/event.rnc
   NMWG/base/schema/filter.rnc
   NMWG/base/schema/hades.rnc
   NMWG/base/schema/iperf.rnc
   NMWG/base/schema/netflow.rnc
   NMWG/base/schema/nmachbw.rnc
   NMWG/base/schema/nmbase.rnc
   NMWG/base/schema/nmdelayrtt.rnc
   NMWG/base/schema/nmtime.rnc
   NMWG/base/schema/nmtopo-l2.rnc
   NMWG/base/schema/nmtopo-l3.rnc
   NMWG/base/schema/nmtopo-l4.rnc
   NMWG/base/schema/nmtopo.rnc
   NMWG/base/schema/nmtopo_ver3.rnc
   NMWG/base/schema/owd.rnc
   NMWG/base/schema/owdsummary.rnc
   NMWG/base/schema/ping.rnc
   NMWG/base/schema/pinger-landmarks.rnc
   NMWG/base/schema/pinger.rnc
   NMWG/base/schema/result.rnc
   NMWG/base/schema/service.rnc
   NMWG/base/schema/snmp.rnc
   NMWG/base/schema/sonar.rnc
   NMWG/base/schema/topo/
   NMWG/base/schema/topo/nmtopo_base.rnc
   NMWG/base/schema/topo/nmtopo_ctrlplane.rnc
   NMWG/base/schema/topo/nmtopo_l2.rnc
   NMWG/base/schema/topo/nmtopo_l3.rnc
   NMWG/base/schema/topo/nmtopo_l4.rnc
   NMWG/base/schema/topo/nmtopo_tcp.rnc
   NMWG/base/schema/topo/nmtopo_udt.rnc
   NMWG/base/schema/topo/nmtypes.rnc
   NMWG/base/schema/traceroute.rnc
   NMWG/base/schema/utilization.rnc
   NMWG/base/smooth.dia
   NMWG/base/smooth.eps
   NMWG/base/ven.dia
   NMWG/base/ven.eps
Log:
temp home of NM-WG base document

-jason



Added: NMWG/base/Makefile
===================================================================
--- NMWG/base/Makefile	                        (rev 0)
+++ NMWG/base/Makefile	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,34 @@
+NAME=nmbase
+
+GRAPHS=$(wildcard *.eps)
+FILES=$(wildcard *.tex)
+REFS=$(wildcard *.bib)
+
+all: ${NAME}.pdf
+
+pre:
+	../../util/inline.pl schema.tex > schema_new.tex
+	../../util/inline.pl examples.tex > examples_new.tex
+	
+${NAME}.pdf: ${NAME}.tex ${GRAPHS} ${FILES} ${REFS}
+	make pre
+	latex ${NAME}
+	bibtex ${NAME}
+	latex ${NAME}
+	latex ${NAME}
+	dvips ${NAME}.dvi -o ${NAME}.ps
+	ps2pdf ${NAME}.ps ${NAME}.pdf
+		
+${NAME}.ps:
+	latex ${NAME}.tex
+	bibtex ${NAME}
+	dvips ${NAME}.dvi -o ${NAME}.ps
+#	ps2pdf ${NAME}.ps
+
+.PHONY: ${NAME}.ps
+clean:
+	rm -f ${NAME}.ps ${NAME}.dvi *.bbl *.aux \
+	*.log *.blg *.ascii *.out *.toc
+	rm -f schema_new.tex
+	rm -f examples_new.tex
+


Property changes on: NMWG/base/Makefile
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:keywords
   + "Author Date Id Rev URL"
Added: svn:eol-style
   + native

Added: NMWG/base/chain.dia
===================================================================
(Binary files differ)


Property changes on: NMWG/base/chain.dia
___________________________________________________________________
Added: svn:executable
   + *
Added: svn:mime-type
   + application/octet-stream

Added: NMWG/base/chain.eps
===================================================================
(Binary files differ)


Property changes on: NMWG/base/chain.eps
___________________________________________________________________
Added: svn:mime-type
   + application/postscript

Added: NMWG/base/chain2.dia
===================================================================
(Binary files differ)


Property changes on: NMWG/base/chain2.dia
___________________________________________________________________
Added: svn:executable
   + *
Added: svn:mime-type
   + application/octet-stream

Added: NMWG/base/chain2.eps
===================================================================
(Binary files differ)


Property changes on: NMWG/base/chain2.eps
___________________________________________________________________
Added: svn:mime-type
   + application/postscript

Added: NMWG/base/chaining.tex
===================================================================
--- NMWG/base/chaining.tex	                        (rev 0)
+++ NMWG/base/chaining.tex	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,676 @@
+\section{Information Chaining}
+\label{s:information_chaining}
+
+Since inception, a key goal of the NM data formats have been extension. The authors
+of the original schemata realized that not every situation could easily be
+described though the basic constructs; extending the basic building blocks to
+complex situations is paramount. Uncharted concepts could be represented with
+newly created constructs each time a foreign abstraction came to light; but
+extension and backwards compatibility must be favored over quick and easy
+solutions. Therefore, basic extension mechanisms, known as chaining, are the
+recognized procedure to extend metadata constructs as well as express other
+operations on the underlying data.
+
+This section presents the major uses of ``chaining'', a concept designed to
+allow extension and formatting of metadata descriptions; note that individual
+service implementations may choose to strictly or loosely interpret these
+guidelines for the sake of performance or protection. The data description
+itself offers no specific guidance on these issues in favor of simply describing
+the structural composition of both the input data and the resulting output.
+
+Chaining itself has taken on two major forms: \textit{merge chaining} described
+in Section~\ref{s:merge_metadata} and \textit{operation chaining} described in
+Section~\ref{s:operation_metadata}. These two instances will be described first
+in broad terms that explain the logic and reasoning of why each operation makes
+sense, and in what context they should be employed.
+
+\subsection{Merge Metadata}
+\label{s:merge_metadata}
+
+While a complete Metadata block can be used to unambiguously describe a Data
+block, it is often desirable to combine multiple, partial Metadata blocks
+together. The main reason for this is reuse of information. Using the
+``metadataIdRef'' attribute of a Metadata block allows us to form a ``chain''
+of Metadata blocks.
+
+\subsubsection{Merge Operation}
+\label{s:merge_metadata_merge_operation}
+
+As the name implies, the purpose is to ``merge'' or \textit{combine} metadata
+elements through this structure. There are many things we should consider when
+describing this operation:
+
+\begin{itemize} 
+ \item Which elements are \textit{mergeable}?  
+ \item How much \textit{recursion} is needed for mergeable elements?  
+ \item When should we \textit{duplicate} elements?
+ \item When should we \textit{replace} elements in the course of merging?  
+\end{itemize}
+
+As stated previously, the schemata itself does not offer suggestions as to
+what is a \textit{good merge} vs. a \textit{bad merge}. There are no rules
+regarding which \textit{types} of data should and should not be merged. There is
+no guidance on when we should duplicate or replace elements.  We recommend some
+very simple and succinct guidelines to this operation.  There are always be
+exceptions to rules, therefore the reader is encouraged to think carefully about
+what may be needed when implementing this recommendation.
+
+\subsubsection{Mergeable Elements and Recursion}
+\label{s:merge_metadata_elements}
+
+When performing the merge operation we must first look at the
+\textit{top-level} elements; namely subject, eventType, and parameters. When
+faced with two metadata blocks to be merged, we only wish to combine:
+
+\begin{itemize}
+\item \textit{Like} Elements (e.g. sharing the same localname)
+\item Elements in the same namespace
+\item Elements sharing the same (or ``similar'') eventType
+\end{itemize}
+
+When this first criteria is met, we should recurse downward and keep
+trying to merge until we reach the bottom of the structure.  A question that may
+be raised is: \textit{How far should we venture into the XML structure looking
+for similarities or differences?}  This question does not have a definite
+answer such as \textit{stop at the grandchild of the current element}.  While
+this may be frustrating, domain knowledge will help you make a passable decision
+especially with regards to topology based elements.
+
+\textit{Like} elements that do not share a common namespace or eventType shall
+require special rules that may differ between implementations. Depending on the
+level of protection or speed we wish to attain, these rules may vary. 
+
+\subsubsection{Duplication, Augmentation, and Replacement}
+\label{s:merge_metadata_dupe}
+
+When we are faced with \textit{like} elements that may not share a
+common namespace or eventType, we should not combine. We may
+try to find the \textit{least significant} namespace or eventType and work from
+there.  Additionally we could run into items that are \textit{exactly}
+the same (such as certain \textit{eventTypes}). In some cases we should take
+care to \textit{add} all of these together to make duplicates; other cases may
+dictate total replacement.
+
+As an example of ``extreme'' cases, consider taking a very safe approach to the
+combining of elements (i.e. not merging \textit{like} elements with different
+namespaces). This approach will ensure that we protect the schema differences
+but may result in many more \textit{wrong} answers. The converse is a
+very dangerous approach where we merge items that could be different on the
+inside. This may result in an approach similar to \textit{I know what
+you meant} and could yield a more robust result data set.
+
+\subsubsection{Merge Examples}
+\label{s:merge_metadata_ex}
+
+A simple example of merge chaining is to partially specify a metadata (leaving
+out perhaps one unspecified element) and then constructing new elements from
+this original. This example does not feature any \textit{overwriting} of
+duplicate elements.
+
+Take for example a physical \textit{Layer 3} interface used to measure SNMP
+data. If we wanted to specify the two common \textit{directions} (\textit{in}
+and \textit{out}) we could construct a chain similar to the below example.
+
+\tiny
+\begin{verbatim}
+
+<nmwg:metadata xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/" id="m1">
+  <netutil:subject xmlns:netutil="http://ggf.org/ns/nmwg/characteristic/utilization/2.0/" id="s1">
+    <nmwgt:interface xmlns:nmwgt="http://ggf.org/ns/nmwg/topology/2.0/">
+      <nmwgt:ifAddress type="ipv4">127.0.0.1</nmwgt:ifAddress>
+      <nmwgt:hostName>localhost</nmwgt:hostName>
+      <nmwgt:ifName>eth0</nmwgt:ifName>
+      <nmwgt:ifIndex>2</nmwgt:ifIndex>
+      <nmwgt:capacity>1000000000</nmwgt:capacity>
+    </nmwgt:interface>
+  </netutil:subject>
+  <nmwg:eventType>http://ggf.org/ns/nmwg/tools/snmp/2.0</nmwg:eventType>
+  <nmwg:eventType>http://ggf.org/ns/nmwg/characteristic/utilization/2.0</nmwg:eventType>
+</nmwg:metadata>
+
+<nmwg:metadata xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/" id="m2" metadataIdRef="m1">
+  <netutil:subject xmlns:netutil="http://ggf.org/ns/nmwg/characteristic/utilization/2.0/" id="s2">
+    <nmwgt:interface xmlns:nmwgt="http://ggf.org/ns/nmwg/topology/2.0/">
+      <nmwgt:direction>in</nmwgt:direction>
+    </nmwgt:interface>
+  </netutil:subject>
+</nmwg:metadata>
+
+<nmwg:metadata xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/" id="m3" metadataIdRef="m1">
+  <netutil:subject xmlns:netutil="http://ggf.org/ns/nmwg/characteristic/utilization/2.0/" id="s3">
+    <nmwgt:interface xmlns:nmwgt="http://ggf.org/ns/nmwg/topology/2.0/">
+      <nmwgt:direction>out</nmwgt:direction>
+    </nmwgt:interface>
+  </netutil:subject>
+</nmwg:metadata>
+
+\end{verbatim}
+\normalsize
+
+Note that the chaining is performed via the use of the \textit{metadataIdRef}
+tag in the metadata element. This is a signal for services to keep looking
+deeper in an effort to resolve the chains. The Figure~\ref{fig:chain}
+demonstrates the linking between the metadata elements. The resulting XML
+structure after chaining is also listed below.
+
+\begin{figure}[ht]
+\centering
+\includegraphics[width=1.5in]{chain}
+\caption{ Graphical representation of chaining. }
+\label{fig:chain}
+\end{figure}
+
+\tiny
+\begin{verbatim}
+
+<nmwg:metadata xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/" id="m1">
+  <netutil:subject xmlns:netutil="http://ggf.org/ns/nmwg/characteristic/utilization/2.0/" id="s1">
+    <nmwgt:interface xmlns:nmwgt="http://ggf.org/ns/nmwg/topology/2.0/">
+      <nmwgt:ifAddress type="ipv4">127.0.0.1</nmwgt:ifAddress>
+      <nmwgt:hostName>localhost</nmwgt:hostName>
+      <nmwgt:ifName>eth0</nmwgt:ifName>
+      <nmwgt:ifIndex>2</nmwgt:ifIndex>
+      <nmwgt:capacity>1000000000</nmwgt:capacity>
+    </nmwgt:interface>
+  </netutil:subject>
+  <nmwg:eventType>http://ggf.org/ns/nmwg/tools/snmp/2.0</nmwg:eventType>
+  <nmwg:eventType>http://ggf.org/ns/nmwg/characteristic/utilization/2.0</nmwg:eventType>
+</nmwg:metadata>
+
+<nmwg:metadata xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/" id="m2" metadataIdRef="m1">
+  <netutil:subject xmlns:netutil="http://ggf.org/ns/nmwg/characteristic/utilization/2.0/" id="s1">
+    <nmwgt:interface xmlns:nmwgt="http://ggf.org/ns/nmwg/topology/2.0/">
+      <nmwgt:ifAddress type="ipv4">127.0.0.1</nmwgt:ifAddress>
+      <nmwgt:hostName>localhost</nmwgt:hostName>
+      <nmwgt:ifName>eth0</nmwgt:ifName>
+      <nmwgt:ifIndex>2</nmwgt:ifIndex>
+      <nmwgt:capacity>1000000000</nmwgt:capacity>
+      <nmwgt:direction>in</nmwgt:direction>
+    </nmwgt:interface>
+  </netutil:subject>
+  <nmwg:eventType>http://ggf.org/ns/nmwg/tools/snmp/2.0</nmwg:eventType>
+  <nmwg:eventType>http://ggf.org/ns/nmwg/characteristic/utilization/2.0</nmwg:eventType>
+</nmwg:metadata>
+
+<nmwg:metadata xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/" id="m3" metadataIdRef="m1">
+  <netutil:subject xmlns:netutil="http://ggf.org/ns/nmwg/characteristic/utilization/2.0/" id="s1">
+    <nmwgt:interface xmlns:nmwgt="http://ggf.org/ns/nmwg/topology/2.0/">
+      <nmwgt:ifAddress type="ipv4">127.0.0.1</nmwgt:ifAddress>
+      <nmwgt:hostName>localhost</nmwgt:hostName>
+      <nmwgt:ifName>eth0</nmwgt:ifName>
+      <nmwgt:ifIndex>2</nmwgt:ifIndex>
+      <nmwgt:capacity>1000000000</nmwgt:capacity>
+      <nmwgt:direction>out</nmwgt:direction>
+    </nmwgt:interface>
+  </netutil:subject>
+  <nmwg:eventType>http://ggf.org/ns/nmwg/tools/snmp/2.0</nmwg:eventType>
+  <nmwg:eventType>http://ggf.org/ns/nmwg/characteristic/utilization/2.0</nmwg:eventType>
+</nmwg:metadata>
+
+\end{verbatim}
+\normalsize
+
+For continuity, this example has not attempted to modify the
+\textit{metadataIdRef} attribute. Implementations may choose to do so if they
+feel the need. Because eventTypes may be repeated (such as the
+\textit{eventType} element) we must take special care when merging them. The
+next example features multiple eventType merging. This example also features a
+so called \textit{double chain} where the results of the first chaining
+operation must feed into the process for the second. This is a common
+occurrence, and should be supported in services.
+
+\tiny
+\begin{verbatim}
+
+<nmwg:metadata xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/" id="m1">
+  <nmwg:subject id="s1">
+    <nmwgt:interface xmlns:nmwgt="http://ggf.org/ns/nmwg/topology/2.0/">
+      <nmwgt:ifAddress type="ipv4">127.0.0.1</nmwgt:ifAddress>
+      <nmwgt:hostName>localhost</nmwgt:hostName>
+      <nmwgt:ifName>eth0</nmwgt:ifName>
+      <nmwgt:ifIndex>2</nmwgt:ifIndex>
+      <nmwgt:capacity>1000000000</nmwgt:capacity>
+      <nmwgt:direction>in</nmwgt:direction>
+    </nmwgt:interface>
+  </nmwg:subject>
+  <nmwg:eventType>http://ggf.org/ns/nmwg/tools/snmp/2.0</nmwg:eventType>
+</nmwg:metadata>
+
+<nmwg:metadata xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/" id="m2" metadataIdRef="m1">
+  <nmwg:eventType>http://ggf.org/ns/nmwg/characteristic/utilization/2.0</nmwg:eventType>
+</nmwg:metadata>
+
+<nmwg:metadata xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/" id="m3" metadataIdRef="m2">
+  <nmwg:eventType>http://ggf.org/ns/nmwg/characteristic/errors/2.0</nmwg:eventType>
+</nmwg:metadata>
+
+\end{verbatim}
+\normalsize
+
+The resulting output and diagram are pictured below. We did take two major
+issues into consideration: multiple \textit{eventType} elements that
+conflicted, and the double chaining. Services that do not support multiple
+eventTypes (or simply wish to not implement a naive form of chaining) should not
+worry about special cases such as Figure~\ref{fig:chain2}.
+
+\begin{figure}[ht]
+\centering
+\includegraphics[width=1.5in]{chain2}
+\caption{ Alternate graphical representation of chaining. }
+\label{fig:chain2}
+\end{figure}
+
+\tiny
+\begin{verbatim}
+
+<nmwg:metadata xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/" id="m1">
+  <nmwg:subject id="s1">
+    <nmwgt:interface xmlns:nmwgt="http://ggf.org/ns/nmwg/topology/2.0/">
+      <nmwgt:ifAddress type="ipv4">127.0.0.1</nmwgt:ifAddress>
+      <nmwgt:hostName>localhost</nmwgt:hostName>
+      <nmwgt:ifName>eth0</nmwgt:ifName>
+      <nmwgt:ifIndex>2</nmwgt:ifIndex>
+      <nmwgt:capacity>1000000000</nmwgt:capacity>
+      <nmwgt:direction>in</nmwgt:direction>
+    </nmwgt:interface>
+  </nmwg:subject>
+  <nmwg:eventType>http://ggf.org/ns/nmwg/tools/snmp/2.0</nmwg:eventType>
+</nmwg:metadata>
+
+<nmwg:metadata xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/" id="m2" metadataIdRef="m1">
+  <nmwg:subject id="s1">
+    <nmwgt:interface xmlns:nmwgt="http://ggf.org/ns/nmwg/topology/2.0/">
+      <nmwgt:ifAddress type="ipv4">127.0.0.1</nmwgt:ifAddress>
+      <nmwgt:hostName>localhost</nmwgt:hostName>
+      <nmwgt:ifName>eth0</nmwgt:ifName>
+      <nmwgt:ifIndex>2</nmwgt:ifIndex>
+      <nmwgt:capacity>1000000000</nmwgt:capacity>
+      <nmwgt:direction>in</nmwgt:direction>
+    </nmwgt:interface>
+  </nmwg:subject>
+  <nmwg:eventType>http://ggf.org/ns/nmwg/tools/snmp/2.0</nmwg:eventType>
+  <nmwg:eventType>http://ggf.org/ns/nmwg/characteristic/utilization/2.0</nmwg:eventType>
+</nmwg:metadata>
+
+<nmwg:metadata xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/" id="m3" metadataIdRef="m2">
+  <nmwg:subject id="s1">
+    <nmwgt:interface xmlns:nmwgt="http://ggf.org/ns/nmwg/topology/2.0/">
+      <nmwgt:ifAddress type="ipv4">127.0.0.1</nmwgt:ifAddress>
+      <nmwgt:hostName>localhost</nmwgt:hostName>
+      <nmwgt:ifName>eth0</nmwgt:ifName>
+      <nmwgt:ifIndex>2</nmwgt:ifIndex>
+      <nmwgt:capacity>1000000000</nmwgt:capacity>
+      <nmwgt:direction>in</nmwgt:direction>
+    </nmwgt:interface>
+  </nmwg:subject>
+  <nmwg:eventType>http://ggf.org/ns/nmwg/tools/snmp/2.0</nmwg:eventType>
+  <nmwg:eventType>http://ggf.org/ns/nmwg/characteristic/utilization/2.0</nmwg:eventType>
+  <nmwg:eventType>http://ggf.org/ns/nmwg/characteristic/errors/2.0</nmwg:eventType>
+</nmwg:metadata>
+
+\end{verbatim}
+\normalsize
+
+Implementations may treat particular elements (such as eventTypes) in a special
+way. The implementation is careful not to overwrite or lose any information and
+will only \textit{add} these items together.
+
+A final example comes when we deal with items with the same \textit{localname},
+but perhaps a different \textit{namespace}. There are several approaches that
+can be taken to dealing with this type of situation. The SNMP example follows a
+safe approach of simply adding all of the elements in question and not
+attempting to internally merge at all. This causes \textit{unreadable} metadata
+in many cases, but does not permit \textit{data pollution}.
+
+\tiny
+\begin{verbatim}
+
+<nmwg:metadata xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/" id="m1">
+  <nmwg:subject id="s1">
+    <nmwgt:interface xmlns:nmwgt="http://ggf.org/ns/nmwg/topology/2.0/">
+      <nmwgt:ifAddress type="ipv4">127.0.0.1</nmwgt:ifAddress>
+      <nmwgt:hostName>localhost</nmwgt:hostName>
+      <nmwgt:ifName>eth0</nmwgt:ifName>
+    </nmwgt:interface>
+  </nmwg:subject>
+  <nmwg:eventType>http://ggf.org/ns/nmwg/characteristic/utilization/2.0</nmwg:eventType>
+</nmwg:metadata>
+
+<nmwg:metadata xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/" id="m2" metadataIdRef="1">
+  <netutil:subject xmlns:netutil="http://ggf.org/ns/nmwg/characteristic/utilization/2.0/" id="s2">
+    <nmwgt:interface xmlns:nmwgt="http://ggf.org/ns/nmwg/topology/2.0/">
+      <nmwgt:ifIndex>2</nmwgt:ifIndex>
+      <nmwgt:direction>in</nmwgt:direction>
+      <nmwgt:capacity>1000000000</nmwgt:capacity>
+    </nmwgt:interface>
+  </netutil:subject>
+  <nmwg:eventType>http://ggf.org/ns/nmwg/characteristic/utilization/2.0</nmwg:eventType>
+</nmwg:metadata>
+
+\end{verbatim}
+\normalsize
+
+There are three approaches that I will illustrate here: \textit{safe yet
+stupid}, \textit{dangerous yet intelligent}, and finally \textit{slow and
+steady}. The last approach is sometimes used in practice; finding the proper
+balance will require some thought (depending on how sensing or accurate an
+implementation wishes to become. Approach one yields output similar to the
+below example.
+
+\tiny
+\begin{verbatim}
+
+<nmwg:metadata xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/" id="m1">
+  <nmwg:subject id="s1">
+    <nmwgt:interface xmlns:nmwgt="http://ggf.org/ns/nmwg/topology/2.0/">
+      <nmwgt:ifAddress type="ipv4">127.0.0.1</nmwgt:ifAddress>
+      <nmwgt:hostName>localhost</nmwgt:hostName>
+      <nmwgt:ifName>eth0</nmwgt:ifName>
+    </nmwgt:interface>
+  </nmwg:subject>
+  <nmwg:eventType>http://ggf.org/ns/nmwg/characteristic/utilization/2.0</nmwg:eventType>
+</nmwg:metadata>
+
+<nmwg:metadata xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/" id="m2" metadataIdRef="1">
+  <netutil:subject xmlns:netutil="http://ggf.org/ns/nmwg/characteristic/utilization/2.0/" id="s2">
+    <nmwgt:interface xmlns:nmwgt="http://ggf.org/ns/nmwg/topology/2.0/">
+      <nmwgt:ifIndex>2</nmwgt:ifIndex>
+      <nmwgt:direction>in</nmwgt:direction>
+      <nmwgt:capacity>1000000000</nmwgt:capacity>
+    </nmwgt:interface>
+  </netutil:subject>
+  <nmwg:subject id="s1">
+    <nmwgt:interface xmlns:nmwgt="http://ggf.org/ns/nmwg/topology/2.0/">
+      <nmwgt:ifAddress type="ipv4">127.0.0.1</nmwgt:ifAddress>
+      <nmwgt:hostName>localhost</nmwgt:hostName>
+      <nmwgt:ifName>eth0</nmwgt:ifName>
+    </nmwgt:interface>
+  </nmwg:subject>
+  <nmwg:eventType>http://ggf.org/ns/nmwg/characteristic/utilization/2.0</nmwg:eventType>
+</nmwg:metadata>
+
+\end{verbatim}
+\normalsize
+
+Note that this is not schema valid, and presumably would not return results
+from the backend storage. This is rather ironic given that we are trying to
+preserve validity on the schema side, yet still generate a clearly invalid
+result. The other end of the spectrum gives a result such as the example below.
+
+\tiny
+\begin{verbatim}
+
+<nmwg:metadata xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/" id="m1">
+  <nmwg:subject id="s1">
+    <nmwgt:interface xmlns:nmwgt="http://ggf.org/ns/nmwg/topology/2.0/">
+      <nmwgt:ifAddress type="ipv4">127.0.0.1</nmwgt:ifAddress>
+      <nmwgt:hostName>localhost</nmwgt:hostName>
+      <nmwgt:ifName>eth0</nmwgt:ifName>
+    </nmwgt:interface>
+  </nmwg:subject>
+  <nmwg:eventType>http://ggf.org/ns/nmwg/characteristic/utilization/2.0</nmwg:eventType>
+</nmwg:metadata>
+
+<nmwg:metadata xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/" id="m2" metadataIdRef="1">
+  <netutil:subject xmlns:netutil="http://ggf.org/ns/nmwg/characteristic/utilization/2.0/" id="s2">
+    <nmwgt:interface xmlns:nmwgt="http://ggf.org/ns/nmwg/topology/2.0/">
+      <nmwgt:ifIndex>2</nmwgt:ifIndex>
+      <nmwgt:direction>in</nmwgt:direction>
+      <nmwgt:capacity>1000000000</nmwgt:capacity>
+      <nmwgt:ifAddress type="ipv4">127.0.0.1</nmwgt:ifAddress>
+      <nmwgt:hostName>localhost</nmwgt:hostName>
+      <nmwgt:ifName>eth0</nmwgt:ifName>
+    </nmwgt:interface>
+  </netutil:subject>
+  <nmwg:eventType>http://ggf.org/ns/nmwg/characteristic/utilization/2.0</nmwg:eventType>
+</nmwg:metadata>
+
+\end{verbatim}
+\normalsize
+
+The \textit{stupid} part of this comes from not caring about
+\textit{namespaces}, and only merging based on \textit{localname}. Because the
+source metadata featured the \textit{netutil} namespace it remains and all other
+items are added to it.
+
+The approach taken by some services is to have a little \textit{domain}
+knowledge before making a quick judgement. Knowing full well that \textit{nmwg}
+is a more general namespace than \textit{netutil}, the service tries to guess
+the intent and goes with the most general namespace in order to support a richer
+query set. Internally anything that utilizes the \textit{nmwg} namespace
+receives a wild card when performing searches.  When we are faced with a choice
+between specific and general, the service errs on the side of general. An
+example of this merge is below.
+
+\tiny
+\begin{verbatim}
+
+<nmwg:metadata xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/" id="m1">
+  <nmwg:subject id="s1">
+    <nmwgt:interface xmlns:nmwgt="http://ggf.org/ns/nmwg/topology/2.0/">
+      <nmwgt:ifAddress type="ipv4">127.0.0.1</nmwgt:ifAddress>
+      <nmwgt:hostName>localhost</nmwgt:hostName>
+      <nmwgt:ifName>eth0</nmwgt:ifName>
+    </nmwgt:interface>
+  </nmwg:subject>
+  <nmwg:eventType>http://ggf.org/ns/nmwg/characteristic/utilization/2.0</nmwg:eventType>
+</nmwg:metadata>
+
+<nmwg:metadata xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/" id="m2" metadataIdRef="1">
+  <nmwg:subject id="s1">
+    <nmwgt:interface xmlns:nmwgt="http://ggf.org/ns/nmwg/topology/2.0/">
+      <nmwgt:ifAddress type="ipv4">127.0.0.1</nmwgt:ifAddress>
+      <nmwgt:hostName>localhost</nmwgt:hostName>
+      <nmwgt:ifName>eth0</nmwgt:ifName>
+      <nmwgt:ifIndex>2</nmwgt:ifIndex>
+      <nmwgt:direction>in</nmwgt:direction>
+      <nmwgt:capacity>1000000000</nmwgt:capacity>
+    </nmwgt:interface>
+  </nmwg:subject>
+  <nmwg:eventType>http://ggf.org/ns/nmwg/characteristic/utilization/2.0</nmwg:eventType>
+</nmwg:metadata>
+
+\end{verbatim}
+\normalsize
+
+A final question remains: what happens if you are dealing with two very
+specific namespaces such as this example.
+
+\tiny
+\begin{verbatim}
+
+<nmwg:metadata xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/" id="m1">
+  <neterr:subject xmlns:neterr="http://ggf.org/ns/nmwg/characteristic/errors/2.0/" id="s1">
+    <nmwgt:interface xmlns:nmwgt="http://ggf.org/ns/nmwg/topology/2.0/">
+      <nmwgt:ifAddress type="ipv4">127.0.0.1</nmwgt:ifAddress>
+    </nmwgt:interface>
+  </neterr:subject>
+  <nmwg:eventType>http://ggf.org/ns/nmwg/characteristic/errors/2.0</nmwg:eventType>
+</nmwg:metadata>
+
+<nmwg:metadata xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/" id="m2" metadataIdRef="1">
+  <netutil:subject xmlns:netutil="http://ggf.org/ns/nmwg/characteristic/utilization/2.0/" id="s2">
+    <nmwgt:interface xmlns:nmwgt="http://ggf.org/ns/nmwg/topology/2.0/">
+      <nmwgt:hostName>localhost</nmwgt:hostName>
+    </nmwgt:interface>
+  </netutil:subject>
+  <nmwg:eventType>http://ggf.org/ns/nmwg/characteristic/utilization/2.0</nmwg:eventType>
+</nmwg:metadata>
+
+\end{verbatim}
+\normalsize
+
+Some implementations will still guess ``general'' and convert to the
+\textit{nmwg} namespace. The resulting data set will take on an interesting
+look:
+
+\tiny
+\begin{verbatim}
+
+<nmwg:metadata xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/" id="m1">
+  <neterr:subject xmlns:neterr="http://ggf.org/ns/nmwg/characteristic/errors/2.0/" id="s1">
+    <nmwgt:interface xmlns:nmwgt="http://ggf.org/ns/nmwg/topology/2.0/">
+      <nmwgt:ifAddress type="ipv4">127.0.0.1</nmwgt:ifAddress>
+    </nmwgt:interface>
+  </neterr:subject>
+  <nmwg:eventType>http://ggf.org/ns/nmwg/characteristic/errors/2.0</nmwg:eventType>
+</nmwg:metadata>
+
+<nmwg:metadata xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/" id="m2" metadataIdRef="1">
+  <nmwg:subject id="s2">
+    <nmwgt:interface xmlns:nmwgt="http://ggf.org/ns/nmwg/topology/2.0/">
+      <nmwgt:ifAddress type="ipv4">127.0.0.1</nmwgt:ifAddress>
+      <nmwgt:hostName>localhost</nmwgt:hostName>
+    </nmwgt:interface>
+  </nmwg:subject>
+  <nmwg:eventType>http://ggf.org/ns/nmwg/characteristic/utilization/2.0</nmwg:eventType>
+  <nmwg:eventType>http://ggf.org/ns/nmwg/characteristic/errors/2.0</nmwg:eventType>
+</nmwg:metadata>
+
+\end{verbatim}
+\normalsize
+
+Clearly the two eventTypes (for utilization and errors) may not appear
+in the same metadata description, but again the implementation can try to help
+out a bit. eventType descriptions are interpreted as \textit{or} operations
+when performing a query. Therefore even if our chain was constructed poorly,
+our final results will be rather robust (perhaps a bit more robust than
+needed). The implementation designers will no doubt settle on an approach that
+fits well for the data they are exposing.
+
+\subsection{Operation Metadata}
+\label{s:operation_metadata}
+
+In addition to describing sets of raw data, Metadata blocks can also be used to
+describe \textit{transformation operations} performed, or requested, on a set of
+data. Thus, a list of Metadata blocks, including origin and transformations, can
+be used to unambiguously describe the \textit{provenance} of any performance
+data. This can also be used in cases where the transformation is
+\textit{internal} and the original data is not available. This can be thought of
+as describing set operations on the original set as it passes through a list of
+operators.  This operation has been termed ``Operation'' chaining.
+
+Figure~\ref{fig:ven} illustrates the distinction between the various operators of
+a operation chain. The circles themselves represent the actual metadata
+description of a dataset (taken from the universe of all data). The intersection
+of these two metadata descriptions becomes the data set that we are interested
+in.
+
+\begin{figure}[ht]
+\centering
+\includegraphics[width=1.5in]{ven}
+\caption{ Diagram showing the intersection of information sets. }
+\label{fig:ven}
+\end{figure}
+
+This section presents the major uses of this operation; note that individual
+implementations may choose to strictly or loosely interpret these
+guidelines for the sake of performance or protection. The protocol itself
+offers no specific guidance on these issues in favor of simply describing the
+structural composition of both the input data and the resulting output.
+
+\subsubsection{Operation Chaining}
+\label{s:operation_metadata_chaining}
+
+Operation chaining involves the application of a \textit{operator} (or function)
+to the underlying dataset that a particular metadata describes. We can think of
+this much like a database operation, where the first metadata is used to select
+a set of data, and subsequent metadata elements that are chained in this manner
+are used to select from that data set based on some other criteria.  Consider
+Figure~\ref{fig:operation} as an example of the internal process using an
+operation chain.
+
+\begin{figure}[ht]
+\centering
+\includegraphics[width=3in]{filter}
+\caption{ Graphical results of a operation step on a dataset. }
+\label{fig:operation}
+\end{figure}
+
+An alternate use case is using the \textit{operator} to perform a functional
+translation on \textit{all} of the data contained in the first set when
+creating the second set.  Figure~\ref{fig:smooth} illustrates this ``filter''
+operation by showing the contents of a data set before and after the operation.
+The first metadata is used to get the ``base'' dataset.  After applying the
+second metadata are are left with the final data set: a subset of the first.  
+
+\begin{figure}[h!]
+\centering
+\includegraphics[width=3in]{smooth.eps}
+\caption{ Graphical results of an operation step on a dataset. }
+\label{fig:smooth}
+\end{figure}
+
+It is important to note that even though we are manipulating the data through
+this form of chaining, we should not be harming it, or the related metadata
+elements. Chaining in general is a non-destructive operation, although it is
+very possible that when implemented poorly response data corruption may occur.
+
+These operations themselves can vary from time range selection to aggregations
+such as performing a cumulative distribution function (CDF). Describing all
+possible operators is well beyond the scope of this work. Current experience
+has named most statistical and database operations as candidates for operation
+chaining, although new uses being devised.
+
+\paragraph{Operator Chaining Examples}
+\label{s:operation_metadata_chaining_examples}
+
+Operation chaining is an easier concept to manage than merge chaining, partially
+because there are fewer rules and nuances. As stated above, it is easy to think
+of the dataset for the source metadata to be \textit{input} to a function that
+is named by the metadata utilizing the operation chain.
+
+The syntax of operation chaining is similar to that of merge chaining (by using
+\textit{metadataIdRef} attributes) but the placement is a bit different.
+Consider this example.
+
+\tiny
+\begin{verbatim}
+
+<nmwg:metadata xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/" id="m1">
+  <netutil:subject xmlns:netutil="http://ggf.org/ns/nmwg/characteristic/utilization/2.0/" id="s1">
+    <nmwgt:interface xmlns:nmwgt="http://ggf.org/ns/nmwg/topology/2.0/">
+      <nmwgt:ifAddress type="ipv4">127.0.0.1</nmwgt:ifAddress>
+      <nmwgt:hostName>localhost</nmwgt:hostName>
+      <nmwgt:ifName>eth0</nmwgt:ifName>
+      <nmwgt:ifIndex>2</nmwgt:ifIndex>
+      <nmwgt:direction>in</nmwgt:direction>
+      <nmwgt:capacity>1000000000</nmwgt:capacity>
+    </nmwgt:interface>
+  </netutil:subject>
+  <nmwg:eventType>http://ggf.org/ns/nmwg/tools/snmp/2.0</nmwg:eventType>
+  <nmwg:eventType>http://ggf.org/ns/nmwg/characteristic/utilization/2.0</nmwg:eventType>
+</nmwg:metadata>
+
+<nmwg:metadata xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/" id="m2">
+  <select:subject id="s2" metadataIdRef="m1" xmlns:select="http://ggf.org/ns/nmwg/ops/select/2.0/"/> 
+  <select:parameters id="param2c" xmlns:select="http://ggf.org/ns/nmwg/ops/select/2.0/">      
+    <nmwg:parameter name="startTime">1121472000</nmwg:parameter>
+    <nmwg:parameter name="endTime">1121904000</nmwg:parameter>
+    <nmwg:parameter name="consolidationFunction">AVERAGE</nmwg:parameter>
+    <nmwg:parameter name="resolution">60</nmwg:parameter>
+  </select:parameters>
+  <nmwg:eventType>http://ggf.org/ns/nmwg/ops/select/2.0</nmwg:eventType> 
+</nmwg:metadata>
+
+\end{verbatim}
+
+\normalsize
+
+The reference is placed in the \textit{subject} element in this case, as in
+merge chaining this is a signal to the implementation that operation chaining is
+desired. This indicates that the \textit{input} is the data pointed to by the
+first metadata and the \textit{output} will be a subset of this. For the sake of
+these examples we are dealing with the \textit{select} namespace as our operator
+of choice due to an abundance of examples and the common use case of selection
+based on time. Other operation examples should work in the same manner.
+
+Because the operations of a operation chain are essentially \textit{internal} we
+do not present what resultant XML should look like. Currently implementations
+ignore many of the steps that may go into reforming the XML for response
+messages in favor of simply returning the \textit{backend} representation of
+metadata. While quick and easy, this does lead to information loss (specifically
+when dealing with the various ways to implement merge chaining). Client
+applications may have no reason to see the original operation information, and
+therefore are built not to need it.
+

Added: NMWG/base/citesort.sty
===================================================================
--- NMWG/base/citesort.sty	                        (rev 0)
+++ NMWG/base/citesort.sty	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,56 @@
+%NAME: citesort.sty
+% A replacement for \@citex which sorts citation numbers as well as
+% compressing and allowing breaks.  Based on cite.sty by Donald
+% Arseneau.
+%
+% for use in LaTeX say, \documentstyle[...,citesort,...]{...}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%     Allow, but strongly discourage, line breaks within a long
+%     series of citations.  Compress lists of successive numbers
+%     to one number range, e.g., 5,6,7,8,9 --> 5--9.  Compatible
+%     with versions of \@cite that use exponents.
+%              -- Donald Arseneau  1989
+%
+% Modified to sort the numbers so they come out in increasing order,
+% regardless of the way they appear in the source. O(N^2) sort!
+% Ian Green, CUED, 10-Dec-1991.  Improvements to img at eng.cam.ac.uk
+% please. Version 1
+
+\newcount\@minsofar
+\newcount\@min
+\newcount\@cite at temp
+\def\@citex[#1]#2{%
+\if at filesw \immediate \write \@auxout {\string \citation {#2}}\fi
+\@tempcntb\m at ne \let\@h at ld\relax \def\@citea{}%
+\@min\m at ne%
+\@cite{%
+  \@for \@citeb:=#2\do {\@ifundefined {b@\@citeb}%
+    {\@h at ld\@citea\@tempcntb\m at ne{\bf ?}%
+    \@warning {Citation `\@citeb ' on page \thepage \space undefined}}%
+{\@minsofar\z@ \@for \@scan at cites:=#2\do {%
+  \@ifundefined{b@\@scan at cites}%
+    {\@cite at temp\m at ne}
+    {\@cite at temp\number\csname b@\@scan at cites \endcsname \relax}%
+\ifnum\@cite at temp > \@min% select the next one to list
+    \ifnum\@minsofar = \z@
+      \@minsofar\number\@cite at temp
+      \edef\@scan at copy{\@scan at cites}\else
+    \ifnum\@cite at temp < \@minsofar
+      \@minsofar\number\@cite at temp
+      \edef\@scan at copy{\@scan at cites}\fi\fi\fi}\@tempcnta\@min
+  \ifnum\@minsofar > \z@ % some more
+    \advance\@tempcnta\@ne
+    \@min\@minsofar
+    \ifnum\@tempcnta=\@minsofar %   Number follows previous--hold on to it
+      \ifx\@h at ld\relax
+        \edef \@h at ld{\@citea\csname b@\@scan at copy\endcsname}%
+      \else \edef\@h at ld{\ifmmode{-}\else--\fi\csname b@\@scan at copy\endcsname}%
+      \fi
+    \else \@h at ld\@citea\csname b@\@scan at copy\endcsname
+          \let\@h at ld\relax
+  \fi % no more
+\fi}%
+\def\@citea{,\penalty\@highpenalty\,}}\@h at ld}{#1}}
+
+% end of citesort.sty

Added: NMWG/base/design.tex
===================================================================
--- NMWG/base/design.tex	                        (rev 0)
+++ NMWG/base/design.tex	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,17 @@
+\section{Design Philosophy}
+\label{s:design}
+
+One of the high-level design goals of this representation is to
+\textit{normalize} the data representation by removing as much redundancy as
+reasonable. The basic schema design is based on the observation that network
+measurement data can be divided into two major classes. The first class is the
+\textbf{Metadata}, which describes the \textit{type} of measurement data, the
+\textit{entity} or \textit{entities} being measured, and the particular
+\textit{parameters} of the measurement. The second class is the \textbf{Data}
+itself, which is, at its simplest, a \textit{timestamp} and a \textit{value},
+or \textit{vector of values}. This division of Metadata and Data is present
+throughout the system. This structure is present both in the \textit{Messages}
+sent between various data elements as well as in data
+\textit{Stores} -- persistent storage of XML documents representing system
+state.
+

Added: NMWG/base/elements.tex
===================================================================
--- NMWG/base/elements.tex	                        (rev 0)
+++ NMWG/base/elements.tex	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,114 @@
+\section{Basic Elements} \label{s:elements}
+
+This schema defines the basic elements that can be used to represent
+performance data. The first distinction is between the \textit{Metadata}, the
+relatively static information regarding the data, and \textit{Data} itself,
+which generally changes over time. The key idea is that, for repeated
+measurements, which is a common case for performance data in networks and
+Grids, the Metadata \textit{need not} be repeated with each measurement, saving
+space and effort.
+
+Each top-level element in this schema has an Identifier attribute called
+\textbf{Id}. There are many cases in which one element needs to
+\textit{reference} another. For these cases an \textit{Id Reference}
+(\textbf{idRef}) is used. Note that we have not used the \textbf{XML Schema}
+\textit{Id} and \textit{IdRef} types.  The reason is that with an IdRef, the
+corresponding ID must appear in the same document. We envision remote
+Id references (with e.g., a generic URL or a WS-Addressing EPR) and thus find
+this limitation overly restrictive. (Note that another possibility is the use
+of a simple element to resolve the local ID and point to remote Metadata.)
+
+\subsection{Metadata} \label{s:elements_metadata}
+
+The Metadata must describe the Data \textit{unambiguously}. To
+accomplish this, the Metadata must include key elements:
+
+\begin{itemize} \item \textbf{Subject} --- The \textit{Subject} identifies the
+entity being measured. This could include the network path between a pair of
+hosts, an interface on a router, or a specific location on the network from
+which flow or packet data is captured.  \item \textbf{EventType} --- The
+\textit{EventType} identifies exactly what sort of measurement Event occurred.
+\item \textbf{Parameters} --- The \textit{Parameters} describe the details of
+the measurement.  \item \textbf{Key} --- The \textit{Key} identifies a complete
+\textit{Metadata} triplet (\textit{Subject}, \textit{EventType} and/or
+\textit{Parameters}) that was previously retrieved.  \end{itemize}
+
+\subsubsection{Subject} \label{s:elements_subject}
+
+The \textit{Subject} identifies the measured entity. For networks, this
+may represent a path between two hosts or an interface on a network
+device.  In most cases we rely on topological elements to fill in the subject
+of a measurement.  Minimal topological elements have been defined as part of
+this base schema. However, more extensive definitions are currently being
+explored by other working groups including the Network Markup Language Working
+Group (\textbf{NML-WG})\cite{nmlwg}.
+
+\subsubsection{EventType} \label{s:elements_eventtypes}
+
+The \textit{EventType} is the canonical name of the aspect of the subject being
+measured, or the actual event (i.e. \textit{characteristic}) being reported.
+The expected value of this element is a \textit{URI string}, similar to a
+namespace (see Section~\ref{s:namespaces} for information on namespaces).  
+
+Using a structured value, such a \textit{URI}, allows greater control in
+defining the eventType.  This format allows for behavior of an implementation
+to be more directly controlled (e.g. a specific \textit{version} in the URI may
+indicate a change in operations for a data type; alternatively we may choose to
+reject data that is too ``new'' or too ``old'' based on the encoding).  
+
+\subsubsection{Parameters} \label{s:elements_parameters}
+
+The \textit{Parameters} describe the exact way in which a particular
+measurement was gathered. These can include parameters to active measurement
+tools. Essentially, anything needed to determine which measurements are
+\textit{fungible} should be included here. Parameters take the form of name,
+value pairs stored in \textit{Parameter} elements. The value of a parameter can
+itself be a complex XML element.
+
+\subsubsection{Parameter} \label{s:elements_parameter}
+
+The \textit{Parameter} is a name and value pair used to describe a single
+aspect of the entire \textit{Parameters} set of a measurement.
+
+\subsubsection{Key} \label{s:elements_Key}
+
+The \textit{Key} element holds the results of a previous query for a
+\textit{Subject}, \textit{EventType} and/or \textit{Parameters} triplet.  The
+key can be used to \textit{replay} this query to have faster access to the
+underlying data set.  
+
+\subsection{Data} \label{s:elements_data}
+
+The \textit{Data} element has an identifier (\textbf{id}) and an identifier
+reference (\textbf{metadataIdRef}) that refers to the \textit{Metadata} that
+describes it. It contains some number of \textit{Datum} or \textit{Key}
+elements.
+
+\subsubsection{Datum} \label{s:elements_datum}
+
+The \textit{Datum} elements hold the \textit{timestamp} and \textit{value} of
+the measurement or event. For many network measurement data sources, this can
+be a time-series of timestamp, value pairs. For other measurement types, the
+result value may be a vector.
+
+\subsection{Container Elements}
+
+The above-named elements are currently contained in two types of outer
+elements, \textit{Message} and \textit{Store}. They have exactly the same
+structure, i.e. containing \textit{Metadata} and \textit{Data} elements. Each
+may have an attribute called \textit{type} to indicate its type. Each
+may also contain one \textit{Parameters} element to indicate Message-
+or Store-level parameters and options.
+
+\subsubsection{Message} \label{s:elements_message}
+
+The \textit{Message} element is meant to serve as a transient container for the
+transport of performance information.  This element contains \textit{Metadata}
+and \textit{Data} pairs and could also contain a \textit{Parameters} element.  
+
+\subsubsection{Store} \label{s:elements_store}
+
+The \textit{Store} element is a stationary container for the long term storage
+of performance information.  This element contains \textit{Metadata} and
+\textit{Data} pairs and could also contain a \textit{Parameters} element.  
+

Added: NMWG/base/examples/ping.xml
===================================================================
--- NMWG/base/examples/ping.xml	                        (rev 0)
+++ NMWG/base/examples/ping.xml	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,235 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<nmwg:message type="store" 
+              xmlns="http://ggf.org/ns/nmwg/base/2.0/"
+              xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/" 
+              xmlns:ping="http://ggf.org/ns/nmwg/tools/ping/2.0/" 
+              xmlns:nmwgt="http://ggf.org/ns/nmwg/topology/2.0/" 
+              xmlns:nmtm="http://ggf.org/ns/nmwg/time/2.0/"
+              xmlns:nmtl4="http://ggf.org/ns/nmwg/topology/l4/3.0/"
+              xmlns:nmtl3="http://ggf.org/ns/nmwg/topology/l3/3.0/"
+              xmlns:select="http://ggf.org/ns/nmwg/ops/select/2.0/"
+              xmlns:average="http://ggf.org/ns/nmwg/ops/average/2.0/"
+              xmlns:nmwgr="http://ggf.org/ns/nmwg/result/2.0/">
+              
+  <!-- Metadata using original topology schema -->
+        
+  <nmwg:metadata id="pingmeta1">
+    <ping:subject id="pingsub1">
+      <nmwgt:endPointPair>
+        <nmwgt:src type="hostname" value="dreadnought.cis.udel.edu" port="4543"/>
+        <nmwgt:dst type="hostname" value="alderaan.cse.psu.edu" port="34343"/>
+      </nmwgt:endPointPair>
+    </ping:subject>
+    <ping:parameters id="pingparam1">
+      <nmwg:parameter name="count">2</nmwg:parameter>
+      <nmwg:parameter name="interval">3</nmwg:parameter>
+      <nmwg:parameter name="deadline">10</nmwg:parameter>         
+    </ping:parameters>   
+  </nmwg:metadata>
+
+
+  <!-- Metadata(s) using new topology schema -->
+        
+  <nmwg:metadata id="pingmeta2">
+    <ping:subject id="pingsub2">
+      <nmtl4:endPointPair>
+        <nmtl4:endPoint role="src" port="4543" protocol="icpm">
+          <nmtl4:address value="dreadnought.cis.udel.edu" type="hostname"/>
+        </nmtl4:endPoint>
+        <nmtl4:endPoint role="dst" port="34343" protocol="icpm">
+          <nmtl4:address value="alderaan.cse.psu.edu" type="hostname"/>
+        </nmtl4:endPoint>
+      </nmtl4:endPointPair>
+    </ping:subject>
+    <ping:parameters id="pingparam2">
+      <nmwg:parameter name="count">2</nmwg:parameter>
+      <nmwg:parameter name="interval">3</nmwg:parameter>
+      <nmwg:parameter name="deadline">10</nmwg:parameter>         
+    </ping:parameters>   
+  </nmwg:metadata>
+
+  <nmwg:metadata id="pingmeta3">
+    <ping:subject id="pingsub3">
+      <nmtl4:endPointPair>
+        <nmtl4:endPoint role="src" port="4543" protocol="icpm">
+          <nmtl3:interface id="d1">
+            <nmtl3:ipAddress value="128.4.133.200" type="ipv4"/>
+            <nmtl3:netmask>255.255.255.0</nmtl3:netmask>
+            <nmtl3:ifName>eth0</nmtl3:ifName>
+            <nmtl3:ifDescription>External Connection</nmtl3:ifDescription>
+            <nmtl3:ifAddress value="128.4.133.200" type="ipv4"/>
+            <nmtl3:ifHostName>dreadnought.cis.udel.edu</nmtl3:ifHostName>
+            <nmtl3:ifIndex>0</nmtl3:ifIndex>                                                  
+            <nmtl3:type>1000BaseT Ethernet</nmtl3:type>
+            <nmtl3:capacity>1000000000</nmtl3:capacity>                    
+          </nmtl3:interface>
+        </nmtl4:endPoint>
+        <nmtl4:endPoint role="dst" port="34343" protocol="icpm">
+          <nmtl3:interface id="a1">
+            <nmtl3:ipAddress value="130.203.16.20" type="ipv4"/>
+            <nmtl3:netmask>255.255.255.0</nmtl3:netmask>
+            <nmtl3:ifName>eth0</nmtl3:ifName>
+            <nmtl3:ifDescription>External Connection</nmtl3:ifDescription>
+            <nmtl3:ifAddress value="130.203.16.20" type="ipv4"/>
+            <nmtl3:ifHostName>alderaan.cse.psu.edu</nmtl3:ifHostName>
+            <nmtl3:ifIndex>0</nmtl3:ifIndex>                                                  
+            <nmtl3:type>1000BaseT Ethernet</nmtl3:type>
+            <nmtl3:capacity>1000000000</nmtl3:capacity>                    
+          </nmtl3:interface>
+        </nmtl4:endPoint>
+      </nmtl4:endPointPair>
+    </ping:subject>
+    <ping:parameters id="pingparam3">
+      <nmwg:parameter name="count">2</nmwg:parameter>
+      <nmwg:parameter name="interval">3</nmwg:parameter>
+      <nmwg:parameter name="deadline">10</nmwg:parameter>         
+    </ping:parameters>   
+  </nmwg:metadata>    
+
+  <!-- metadata(s) with operation metadata -->
+
+  <nmwg:metadata id="pingmeta4">
+    <ping:subject id="pingsub4">
+      <nmwgt:endPointPair>
+        <nmwgt:src type="hostname" value="dreadnought.cis.udel.edu" port="4543"/>
+        <nmwgt:dst type="hostname" value="alderaan.cse.psu.edu" port="34343"/>
+      </nmwgt:endPointPair>
+    </ping:subject>
+    <ping:parameters id="pingparam4">
+      <nmwg:parameter name="count">2</nmwg:parameter>
+      <nmwg:parameter name="interval">3</nmwg:parameter>
+      <nmwg:parameter name="deadline">10</nmwg:parameter>         
+    </ping:parameters>   
+  </nmwg:metadata>
+
+  <nmwg:metadata id="pingmeta5">     
+    <select:subject id="pingsub5" metadataIdRef="pingmeta4" />  
+    <select:parameters id="pingparam5">
+      <nmwg:parameter name="timeValue">
+        <nmwg:parameter name="greaterThan">1107492199</nmwg:parameter>      
+      </nmwg:parameter>
+    </select:parameters>
+  </nmwg:metadata>
+
+  <nmwg:metadata id="pingmeta6">     
+    <select:subject id="pingsub6" metadataIdRef="pingmeta5" />  
+    <select:parameters id="pingparam6">
+      <nmwg:parameter name="timeValue">
+        <nmwg:parameter name="lessThan">1107492207</nmwg:parameter>      
+      </nmwg:parameter>    
+    </select:parameters>
+  </nmwg:metadata>
+
+  <nmwg:metadata id="pingmeta7">     
+    <average:subject id="pingsub7" metadataIdRef="pingmeta6" />  
+    <average:parameters id="pingparam7">
+      <nmwg:parameter name="value" />
+    </average:parameters>
+  </nmwg:metadata>  
+  
+
+  <!-- Data block, with a time block, with multiple datum blocks -->
+  <nmwg:data id="data1" metadataIdRef="pingmeta1">
+    <nmwg:commonTime type="unix" value="1107492095">
+      <ping:datum seqNum="0" value="19.1" valueUnits="ms" ttl="241" numBytes="64" numBytesUnits="bytes" /> 
+      <ping:datum seqNum="1" value="19.2" valueUnits="ms" ttl="241" numBytes="64" numBytesUnits="bytes" />
+    </nmwg:commonTime>
+  </nmwg:data> 
+
+  <!-- Data block, with a time block, with multiple datum blocks (other way to show time) -->
+  <nmwg:data id="data2" metadataIdRef="pingmeta1">  
+    <nmwg:commonTime type="unix">
+      <nmtm:value>1107492096</nmtm:value>
+      <ping:datum seqNum="0" value="19.3" valueUnits="ms" ttl="241" numBytes="64" numBytesUnits="bytes" /> 
+      <ping:datum seqNum="1" value="19.4" valueUnits="ms" ttl="241" numBytes="64" numBytesUnits="bytes" />
+    </nmwg:commonTime>
+  </nmwg:data>  
+
+  <!-- Data block, with a time block (range), with multiple datum blocks -->
+  <nmwg:data id="data3" metadataIdRef="pingmeta1">  
+    <nmwg:commonTime type="range">
+      <nmtm:start type="unix" value="1107492097"/>
+      <nmtm:end type="unix" value="1107492395"/>
+      <ping:datum seqNum="0" value="19.2" valueUnits="ms" ttl="241" numBytes="64" numBytesUnits="bytes" /> 
+      <ping:datum seqNum="1" value="17.3" valueUnits="ms" ttl="241" numBytes="64" numBytesUnits="bytes" />
+      <ping:datum seqNum="3" value="45.4" valueUnits="ms" ttl="241" numBytes="64" numBytesUnits="bytes" />
+      <ping:datum seqNum="88" value="21.9" valueUnits="ms" ttl="241" numBytes="64" numBytesUnits="bytes" />      
+    </nmwg:commonTime>
+  </nmwg:data>  
+
+  <!-- Data block, with a time block (durration), with multiple datum blocks -->
+  <nmwg:data id="data4" metadataIdRef="pingmeta1">  
+    <nmwg:commonTime type="durration" duration="300">
+      <nmtm:start type="unix" value="1107492097"/>
+      <ping:datum seqNum="0" value="19.2" valueUnits="ms" ttl="241" numBytes="64" numBytesUnits="bytes" /> 
+      <ping:datum seqNum="1" value="17.3" valueUnits="ms" ttl="241" numBytes="64" numBytesUnits="bytes" />
+      <ping:datum seqNum="3" value="45.4" valueUnits="ms" ttl="241" numBytes="64" numBytesUnits="bytes" />
+      <ping:datum seqNum="88" value="21.9" valueUnits="ms" ttl="241" numBytes="64" numBytesUnits="bytes" />
+    </nmwg:commonTime>
+  </nmwg:data> 
+
+  <!-- data with datum blocks, time is inline (two ways to represent time) -->
+  <nmwg:data id="data5" metadataIdRef="pingmeta1">  
+    <ping:datum seqNum="0" value="14.3" valueUnits="ms" ttl="241" numBytes="64" numBytesUnits="bytes" timeType="unix" timeValue="1107492199" /> 
+    <ping:datum seqNum="1" value="17.4" valueUnits="ms" ttl="241" numBytes="64" numBytesUnits="bytes" timeType="unix" timeValue="1107492201" />
+  </nmwg:data> 
+
+  <!-- data with datum blocks, time is a sub element -->
+  <nmwg:data id="data6" metadataIdRef="pingmeta1">   
+    <ping:datum seqNum="0" value="19.6" valueUnits="ms" ttl="241" numBytes="64" numBytesUnits="bytes">
+      <nmtm:time type="unix" value="1107493095" />
+    </ping:datum> 
+    <ping:datum seqNum="0" value="18.5" valueUnits="ms" ttl="241" numBytes="64" numBytesUnits="bytes">
+      <nmtm:time type="unix" value="1107493095" />
+    </ping:datum> 
+  </nmwg:data> 
+      
+  <!-- data with datum blocks, time is a sub element -->
+  <nmwg:data id="data7" metadataIdRef="pingmeta1"> 
+    <ping:datum seqNum="0" value="19.6" valueUnits="ms" ttl="241" numBytes="64" numBytesUnits="bytes">
+      <nmtm:time type="unix">
+        <nmtm:value>1107493095</nmtm:value>
+      </nmtm:time>
+    </ping:datum> 
+    <ping:datum seqNum="0" value="18.5" valueUnits="ms" ttl="241" numBytes="64" numBytesUnits="bytes">
+      <nmtm:time type="unix">
+        <nmtm:value>1107493095</nmtm:value>
+      </nmtm:time>
+    </ping:datum> 
+  </nmwg:data> 
+
+  <!-- data with datum blocks, time is a sub element (other way to show time) -->
+  <nmwg:data id="data8" metadataIdRef="pingmeta1">
+    <ping:datum seqNum="0" value="19.6" valueUnits="ms" ttl="241" numBytes="64" numBytesUnits="bytes">
+      <nmtm:time type="range">
+        <nmtm:start type="unix" value="1107492095"/>
+        <nmtm:end type="unix" value="1107492395"/>
+      </nmtm:time>
+    </ping:datum> 
+    <ping:datum seqNum="0" value="18.5" valueUnits="ms" ttl="241" numBytes="64" numBytesUnits="bytes">
+      <nmtm:time type="range">
+        <nmtm:start type="unix" value="1107492095"/>
+        <nmtm:end type="unix" value="1107492395"/>
+      </nmtm:time>
+    </ping:datum> 
+  </nmwg:data> 
+
+  <nmwg:data id="data9" metadataIdRef="pingmeta1">
+    <ping:datum seqNum="0" value="19.6" valueUnits="ms" ttl="241" numBytes="64" numBytesUnits="bytes">
+      <nmtm:time type="durration" duration="300">
+        <nmtm:start type="unix" value="1107492095"/>
+      </nmtm:time>
+    </ping:datum> 
+    <ping:datum seqNum="0" value="18.5" valueUnits="ms" ttl="241" numBytes="64" numBytesUnits="bytes">
+      <nmtm:time type="durration" duration="300">
+        <nmtm:start type="unix" value="1107492095"/>
+      </nmtm:time>
+    </ping:datum> 
+  </nmwg:data> 
+  
+  <!-- result datum elements -->
+  <nmwg:data id="data10" metadataIdRef="pingmeta1">  
+    <nmwgr:datum type="error.ping.mp">From lager (192.168.0.200) icmp_seq=1 Destination Host Unreachable</nmwgr:datum>
+  </nmwg:data> 
+    
+</nmwg:message>


Property changes on: NMWG/base/examples/ping.xml
___________________________________________________________________
Added: svn:mime-type
   + text/xml
Added: svn:keywords
   + "Author Date Id Rev URL"
Added: svn:eol-style
   + native

Added: NMWG/base/examples.tex
===================================================================
--- NMWG/base/examples.tex	                        (rev 0)
+++ NMWG/base/examples.tex	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,29 @@
+\section{Example Use}
+\label{s:examples}
+
+This section includes an example of network measurements rendered in the NM-WG
+schemata.  This example is not intended to be normative, although at this time
+of this writing represents a use case that has been implemented.  
+
+\subsection{Schema for Ping}
+\label{s:examples_schema}
+
+\tiny
+\begin{verbatim}
+
+% INLINESCHEMA="schema/ping.rnc"
+
+\end{verbatim}
+\normalsize
+
+\subsection{Instance Document for Ping}
+\label{s:examples_instance}
+
+\tiny
+\begin{verbatim}
+
+% INLINEXML="examples/ping.xml"
+
+\end{verbatim}
+\normalsize
+

Added: NMWG/base/fancyheadings.sty
===================================================================
--- NMWG/base/fancyheadings.sty	                        (rev 0)
+++ NMWG/base/fancyheadings.sty	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,205 @@
+% fancyheadings.sty version 1.98
+% Fancy headers and footers.
+% Piet van Oostrum, Dept of Computer Science, University of Utrecht
+% Padualaan 14, P.O. Box 80.089, 3508 TB Utrecht, The Netherlands
+% Telephone: +31 30 2531806. Email: piet at cs.ruu.nl
+% Sep 16, 1994
+% version 1.4: Correction for use with \reversemargin
+% Sep 29, 1994:
+% version 1.5: Added the \iftopfloat, \ifbotfloat and \iffloatpage commands
+% Oct 4, 1994:
+% version 1.6: Reset single spacing in headers/footers for use with
+% setspace.sty or doublespace.sty
+% Oct 4, 1994:
+% version 1.7: changed \let\@mkboth\markboth to
+% \def\@mkboth{\protect\markboth} to make it more robust
+% Dec 5, 1994:
+% version 1.8: corrections for amsbook/amsart: define \@chapapp and (more
+% importantly) use the \chapter/sectionmark definitions from ps at headings if
+% they exist (which should be true for all standard classes).
+% May 31, 1995:
+% version 1.9: The proposed \renewcommand{\headrulewidth}{\iffloatpage...
+% construction in the doc did not work properly with the fancyplain style. 
+% June 1, 1995:
+% version 1.91: The definition of \@mkboth wasn't restored on subsequent
+% \pagestyle{fancy}'s.
+% June 1, 1995:
+% version 1.92: The sequence \pagestyle{fancyplain} \pagestyle{plain}
+% \pagestyle{fancy} would erroneously select the plain version.
+% June 1, 1995:
+% version 1.93: \fancypagestyle command added.
+% Dec 11, 1995:
+% version 1.94: suggested by Conrad Hughes <chughes at maths.tcd.ie>
+% CJCH, Dec 11, 1995: added \footruleskip to allow control over footrule
+% position (old hardcoded value of .3\normalbaselineskip is far too high
+% when used with very small footer fonts).
+% Jan 31, 1996:
+% version 1.95: call \@normalsize in the reset code if that is defined,
+% otherwise \normalsize.
+% this is to solve a problem with ucthesis.cls, as this doesn't
+% define \@currsize. Unfortunately for latex209 calling \normalsize doesn't
+% work as this is optimized to do very little, so there \@normalsize should
+% be called. Hopefully this code works for all versions of LaTeX known to
+% mankind.  
+% April 25, 1996:
+% version 1.96: initialize \headwidth to a magic (negative) value to catch
+% most common cases that people change it before calling \pagestyle{fancy}.
+% Note it can't be initialized when reading in this file, because
+% \textwidth could be changed afterwards. This is quite probable.
+% We also switch to \MakeUppercase rather than \uppercase and introduce a
+% \nouppercase command for use in headers. and footers.
+% May 3, 1996:
+% version 1.97: Two changes:
+% 1. Undo the change in version 1.8 (using the pagestyle{headings} defaults
+% for the chapter and section marks. The current version of amsbook and
+% amsart classes don't seem to need them anymore. Moreover the standard
+% latex classes don't use \markboth if twoside isn't selected, and this is
+% confusing as \leftmark doesn't work as expected.
+% 2. include a call to \ps at empty in ps@@fancy. This is to solve a problem
+% in the amsbook and amsart classes, that make global changes to \topskip,
+% which are reset in \ps at empty. Hopefully this doesn't break other things.
+% May 7, 1996:
+% version 1.98:
+% Added % after the line  \def\nouppercase
+% BY THE WAY, THIS IS THE LAST RELEASE OF VERSION 1.
+
+\let\fancy at def\gdef
+\def\lhead{\@ifnextchar[{\@xlhead}{\@ylhead}}
+\def\@xlhead[#1]#2{\fancy at def\@elhead{#1}\fancy at def\@olhead{#2}}
+\def\@ylhead#1{\fancy at def\@elhead{#1}\fancy at def\@olhead{#1}}
+
+\def\chead{\@ifnextchar[{\@xchead}{\@ychead}}
+\def\@xchead[#1]#2{\fancy at def\@echead{#1}\fancy at def\@ochead{#2}}
+\def\@ychead#1{\fancy at def\@echead{#1}\fancy at def\@ochead{#1}}
+
+\def\rhead{\@ifnextchar[{\@xrhead}{\@yrhead}}
+\def\@xrhead[#1]#2{\fancy at def\@erhead{#1}\fancy at def\@orhead{#2}}
+\def\@yrhead#1{\fancy at def\@erhead{#1}\fancy at def\@orhead{#1}}
+
+\def\lfoot{\@ifnextchar[{\@xlfoot}{\@ylfoot}}
+\def\@xlfoot[#1]#2{\fancy at def\@elfoot{#1}\fancy at def\@olfoot{#2}}
+\def\@ylfoot#1{\fancy at def\@elfoot{#1}\fancy at def\@olfoot{#1}}
+
+\def\cfoot{\@ifnextchar[{\@xcfoot}{\@ycfoot}}
+\def\@xcfoot[#1]#2{\fancy at def\@ecfoot{#1}\fancy at def\@ocfoot{#2}}
+\def\@ycfoot#1{\fancy at def\@ecfoot{#1}\fancy at def\@ocfoot{#1}}
+
+\def\rfoot{\@ifnextchar[{\@xrfoot}{\@yrfoot}}
+\def\@xrfoot[#1]#2{\fancy at def\@erfoot{#1}\fancy at def\@orfoot{#2}}
+\def\@yrfoot#1{\fancy at def\@erfoot{#1}\fancy at def\@orfoot{#1}}
+
+\newdimen\headrulewidth
+\newdimen\footrulewidth
+\newdimen\plainheadrulewidth
+\newdimen\plainfootrulewidth
+\newdimen\headwidth
+\newdimen\footruleskip
+\newif\if at fancyplain \@fancyplainfalse
+\def\fancyplain#1#2{\if at fancyplain#1\else#2\fi}
+\headwidth=-123456789sp %magic constant
+
+% Command to reset various things in the headers:
+% a.o.  single spacing (taken from setspace.sty)
+% and the catcode of ^^M (so that epsf files in the header work if a
+% verbatim crosses a page boundary)
+% It also defines a \nouppercase command that disables \uppercase and
+% \Makeuppercase. It can only be used in the headers and footers.
+\def\fancy at reset{\restorecr
+ \def\baselinestretch{1}%
+ \def\nouppercase##1{{\let\uppercase\relax\let\MakeUppercase\relax##1}}%
+ \ifx\undefined\@newbaseline% NFSS not present; 2.09 or 2e
+   \ifx\@normalsize\undefined \normalsize % for ucthesis.cls
+   \else \@normalsize \fi
+ \else% NFSS (2.09) present
+  \@newbaseline%
+ \fi}
+
+% Initialization of the head and foot text.
+
+\headrulewidth 0.4pt
+\footrulewidth\z@
+\plainheadrulewidth\z@
+\plainfootrulewidth\z@
+\footruleskip .3\normalbaselineskip
+
+\lhead[\fancyplain{}{\sl\rightmark}]{\fancyplain{}{\sl\leftmark}}
+%  i.e. empty on ``plain'' pages, \rightmark on even, \leftmark on odd pages
+\chead{}
+\rhead[\fancyplain{}{\sl\leftmark}]{\fancyplain{}{\sl\rightmark}}
+%  i.e. empty on ``plain'' pages, \leftmark on even, \rightmark on odd pages
+\lfoot{}
+\cfoot{\rm\thepage} % page number
+\rfoot{}
+
+% Put together a header or footer given the left, center and
+% right text, fillers at left and right and a rule.
+% The \lap commands put the text into an hbox of zero size,
+% so overlapping text does not generate an errormessage.
+
+\def\@fancyhead#1#2#3#4#5{#1\hbox to\headwidth{\fancy at reset\vbox{\hbox
+{\rlap{\parbox[b]{\headwidth}{\raggedright#2\strut}}\hfill
+\parbox[b]{\headwidth}{\centering#3\strut}\hfill
+\llap{\parbox[b]{\headwidth}{\raggedleft#4\strut}}}\headrule}}#5}
+
+\def\@fancyfoot#1#2#3#4#5{#1\hbox to\headwidth{\fancy at reset\vbox{\footrule
+\hbox{\rlap{\parbox[t]{\headwidth}{\raggedright#2\strut}}\hfill
+\parbox[t]{\headwidth}{\centering#3\strut}\hfill
+\llap{\parbox[t]{\headwidth}{\raggedleft#4\strut}}}}}#5}
+
+\def\headrule{{\if at fancyplain\let\headrulewidth\plainheadrulewidth\fi
+\hrule\@height\headrulewidth\@width\headwidth \vskip-\headrulewidth}}
+
+\def\footrule{{\if at fancyplain\let\footrulewidth\plainfootrulewidth\fi
+\vskip-\footruleskip\vskip-\footrulewidth
+\hrule\@width\headwidth\@height\footrulewidth\vskip\footruleskip}}
+
+\def\ps at fancy{%
+\@ifundefined{@chapapp}{\let\@chapapp\chaptername}{}%for amsbook
+% Define \MakeUppercase for old LaTeXen.
+% Note: we used \def rather than \let, so that \let\uppercase\relax (from
+% the original documentation) will still work.
+\@ifundefined{MakeUppercase}{\def\MakeUppercase{\uppercase}}{}
+\@ifundefined{chapter}{\def\sectionmark##1{\markboth
+{\MakeUppercase{\ifnum \c at secnumdepth>\z@
+ \thesection\hskip 1em\relax \fi ##1}}{}}%
+\def\subsectionmark##1{\markright {\ifnum \c at secnumdepth >\@ne
+ \thesubsection\hskip 1em\relax \fi ##1}}}%
+{\def\chaptermark##1{\markboth {\MakeUppercase{\ifnum \c at secnumdepth>\m at ne
+ \@chapapp\ \thechapter. \ \fi ##1}}{}}
+\def\sectionmark##1{\markright{\MakeUppercase{\ifnum \c at secnumdepth >\z@
+ \thesection. \ \fi ##1}}}}%
+%\csname ps at headings\endcsname % use \ps at headings defaults if they exist
+\ps@@fancy
+\gdef\ps at fancy{\@fancyplainfalse\ps@@fancy}%
+% Initialize \headwidth if the user didn't
+\ifdim\headwidth<0sp
+% This catches the case that \headwidth hasn't been initialized and the
+% case that the user added something to \headwidth in the expectation that
+% it was initialized to \textwidth. We compensate this now. This loses if
+% the user intended to multiply it by a factor. But that case is more
+% likely done by saying something like \headwidth=1.2\textwidth The doc
+% says you have to change \headwidth after the first call to,
+% \pagestyle{fancy}. This code is just to catch the most common cases were
+% that requirement is violated.
+    \advance\headwidth123456789sp\advance\headwidth\textwidth\fi}
+\def\ps at fancyplain{\ps at fancy \let\ps at plain\ps at plain@fancy}
+\def\ps at plain@fancy{\@fancyplaintrue\ps@@fancy}
+\def\ps@@fancy{%
+\ps at empty % This is for amsbook/amsart, which do strange things with \topskip
+\def\@mkboth{\protect\markboth}%
+\def\@oddhead{\@fancyhead\@lodd\@olhead\@ochead\@orhead\@rodd}%
+\def\@oddfoot{\@fancyfoot\@lodd\@olfoot\@ocfoot\@orfoot\@rodd}%
+\def\@evenhead{\@fancyhead\@rodd\@elhead\@echead\@erhead\@lodd}%
+\def\@evenfoot{\@fancyfoot\@rodd\@elfoot\@ecfoot\@erfoot\@lodd}%
+}
+\def\@lodd{\if at reversemargin\hss\else\relax\fi}
+\def\@rodd{\if at reversemargin\relax\else\hss\fi}
+
+\let\latex at makecol\@makecol
+\def\@makecol{\let\topfloat\@toplist\let\botfloat\@botlist\latex at makecol}
+\def\iftopfloat#1#2{\ifx\topfloat\empty #2\else #1\fi}
+\def\ifbotfloat#1#2{\ifx\botfloat\empty #2\else #1\fi}
+\def\iffloatpage#1#2{\if at fcolmade #1\else #2\fi}
+
+\newcommand{\fancypagestyle}[2]{%
+  \@namedef{ps@#1}{\let\fancy at def\def#2\relax\ps at fancy}}

Added: NMWG/base/filter.dia
===================================================================
(Binary files differ)


Property changes on: NMWG/base/filter.dia
___________________________________________________________________
Added: svn:executable
   + *
Added: svn:mime-type
   + application/octet-stream

Added: NMWG/base/filter.eps
===================================================================
(Binary files differ)


Property changes on: NMWG/base/filter.eps
___________________________________________________________________
Added: svn:mime-type
   + application/postscript

Added: NMWG/base/introduction.tex
===================================================================
--- NMWG/base/introduction.tex	                        (rev 0)
+++ NMWG/base/introduction.tex	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,32 @@
+\section{Introduction}
+\label{s:introduction}
+
+This document presents an \textit{extensible encoding standard} for 
+\textbf{network measurement} and \textbf{performance data}. Uniform encoding of
+this class of information is a key problem for federated network management,
+and multi-domain dynamic provisioning of network circuits, as well as in
+advanced distributed computing environments such as the Grid.
+
+This work is born of the need for a common mechanism for the \textit{exchange}
+and \textit{storage} of network measurement, management and performance data.
+In the case of research-oriented networks, parties often want to exchange
+network performance data with neighbors for debugging purposes. In general,
+however, there is no single monitoring system that is in use. In the Grid
+community, the need to exchange network metrics of various sorts is often
+highlighted. In short, it is highly desirable to have an extensible schema for
+network performance information that gives a common, general framework for
+representation and exchange.
+
+This document builds on previous versions of the network measurement schemata.
+This document describes ``Version 2'' of the Grid Forum's Network Measurement
+Working Group (\textbf{NM-WG}) schema.  While unpublished, the initial
+measurement schema (known as ``Version 1'') serves as a basis for this work.
+Design considerations presented in this recommendation are build upon the
+successes and failures of all previous working group activity.  
+
+The goal of this document is to define a \textit{neutral} representation for network
+measurements that can be easily extended to support new types of data. This
+representation should identify \textit{forms} of network performance
+data as well as to create standardized \textit{mechanism} to both
+\textit{describe} and \textit{publish} these metrics.
+

Added: NMWG/base/namespaces.tex
===================================================================
--- NMWG/base/namespaces.tex	                        (rev 0)
+++ NMWG/base/namespaces.tex	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,197 @@
+\section{XML Namespaces} \label{s:namespaces}
+
+A key facet in this schema is the observation that any of the ``core'' elements
+can be used to describe any network measurement, but the exact content of the
+each should vary with the measurement type. We have adopted XML
+\textit{namespaces} to allow reuse of these same elements, but to facilitate
+variation in the contents for each different type of data.  In this way, some
+superficial examination of the structure of a message or information store can
+take place without looking at the details of the contents. Most processing
+functionality should be able to consume new data types with no
+modification.
+
+All namespace extensions must contain the elements defined in the
+\textit{base} namespace.  Each namespace could \textit{redefine} the
+meaning of elements or \textit{add} new elements but elements should not be
+removed that were previously defined.  When released, each version of a
+namespace must specify the versions of their \textit{parent}
+namespaces. If a new version of a parent namespace is released, the version of
+the child namespace must be changed to add any new elements or
+properties added in the parent.  Example Namespaces:
+
+\begin{itemize} \item \textbf{Base}: \textit{http://ggf.org/ns/nmwg/base/2.0/}
+\item \textbf{Achievable Bandwidth - Base Extension}:
+\textit{http://ggf.org/ns/nmwg/characteristics/bandwidth/acheiveable/2.0/}
+\item \textbf{Iperf - Base Extension}:
+\textit{http://ggf.org/ns/nmwg/tools/iperf/2.0/} \end{itemize}
+
+We envision there being two major classes of namespace URIs. The first is a
+canonical name based on the \textit{Hierarchy of Network Measurements} from
+this working group \cite{chardoc} . The second is based on an organization's
+domain name and allows for autonomous extension in much the same way as the
+Enterprise branch of the OID space \cite{zurawski06scalable} allows. Finally,
+as this specification does not address the embedding of this schema into other
+systems, we note that the relevant parts of the namespace can be appended to
+another namespace if one is already in use.
+
+\subsection{Namespace Versioning} \label{s:versioning}
+
+The developers of the schemata realized early in the design process that new
+ideas will quickly depose older practices, particularly when reference
+implementations implement recommended practices.  This dual
+development track (e.g. implementations vs the creation of scalable standards)
+has forced a key change in the creation and use of XML namespaces.  First
+recognized by members of the OGF community at large, a system to define
+identifying names uniquely and in a uniformly is paramount \cite{gfd.84}.  This
+namespace versioning scheme is a benefit for implementers as they can easily
+plan for backward and forward compatibility of community recommendations; the
+scheme also allows standards writers the freedom to introduce new and
+experimental ideas without pollution of the schema space.  
+
+This working group has adopted several components from the OGF community
+practice, but differ on some structural considerations.  An example of the
+namespace format that the \textbf{NM-WG} has adopted for the \textit{base}
+namespace is ``http://ggf.org/ns/nmwg/base/2.0/''
+
+Breaking down each portion of the namespace, we are able to decompose into the
+following components:
+
+\begin{itemize} \item \textbf{Scheme/Domain} - http://ggf.org \item
+\textbf{Customs} - /ns \item \textbf{Project} - /nmwg \item
+\textbf{Part/Extension} - /base \item \textbf{Version} - /2.0 \end{itemize}
+
+The first key difference between the \textbf{NM-WG} approach and the community
+document is a choice to subdivide the domain \textit{later} in the namespace
+versus as the first item (e.g. instead of ``http://schema.ogf.org'' we are
+using ``http://ggf.org/ns'').  This choice was initially arbitrary, and
+should not change the overall intention of the approaches.  As early
+work was based before the \textit{GGF} to \textit{OGF} name change we have kept
+the legacy domain for historic reasons.  We fully anticipate that new versions
+of the schema will adopt the proper domain name.  
+
+A second difference is the choice to place the version as the \textit{last}
+entity of the namespace instead of immediately after a group designation.  This
+choice is related to implementation details of software consuming these
+recommendations.  To better support the \textit{object oriented} design of the
+schema the full ``name'' of each element (including the namespace) needed to be
+present, sans version information.  The easiest way to accomplish this is to
+place the version as the last piece of identifying information.  This
+shall not change the meaning of the original community recommendation. 
+
+The final difference is the reliance on incremental version numbers (e.g.
+\textit{2.0}) versus using the \textit{date} (e.g. \textit{20070707}).  We feel
+this difference is superficial and should the community decide that
+using the date is more appropriate the switch is easily managed.    
+
+\subsection{Namespace Expansion} \label{s:extension}
+
+The namespace-based approach alluded to in Section~\ref{s:namespaces} provides
+extensibility by re-defining the ``core'' elements in a tool- or
+characteristic-specific namespace.  To motivate the example presented in
+Section~\ref{s:examples}, we will briefly describe the procedure used to define
+a measurement in an expansion namespace.  Note that a new namespace
+should be generated when encoding a form of measurement that cannot be
+adequately represented with the ``base'' namespace or any existing extensions.  
+
+\subsubsection{Defining the Namespace} \label{s:extension_define}
+
+The namespace should be similar to the ``base'' namespace but feature
+a different \textbf{Part/Extension} and potentially a different
+\textbf{Version}.  Alternatively the \textbf{Domain} and \textbf{Customs}
+may change if a group that is not affiliated with the \textit{OGF}
+becomes involved in the definition process.   The values for the
+\textbf{Part/Extension} will vary depending on if a new \textit{characteristic}
+is being defined, or if data specific to a \textit{tool} is being encoded.
+Below we define the \textit{Ping} tool, which also has the characteristic of
+being a \textit{Round Trip Delay} measurement.  The following represent the
+proposed namespaces:
+
+\begin{itemize} \item \textbf{Round Trip Delay - Base Extension}:
+\textit{http://ggf.org/ns/nmwg/characteristic/delay/roundTrip/2.0/} \item
+\textbf{Ping - Base Extension}: \textit{http://ggf.org/ns/nmwg/tools/ping/2.0/}
+\end{itemize}
+
+For consistency we have kept the \textbf{Version} the same, this can be altered
+when desired.  With the namespace carved out, we can move on to the next task
+of laying out the model of a \textit{ping} measurement.
+
+\subsubsection{Modeling Information} \label{s:extension_model}
+
+It is paramount that the ``core'' elements be reused in schema extension.  This
+implies that we may define new namespaces for select elements in the
+base schema, but may choose to keep several within the base; for some
+of the enclosing elements (e.g. \textit{metadata}, \textit{data}) this is
+required.  In general any element may be redefined but to
+allow for implementation flexibility it often makes sense to leave as many as
+possible within the base to avoid complexity in the XML parsing libraries.  The
+following is a list of elements from ``base'' that will remain in the original
+namespace:
+
+\begin{itemize} \item \textbf{Message} \item \textbf{Store} \item
+\textbf{Metadata} \item \textbf{EventType} \item \textbf{Parameter} \item
+\textbf{Key} \item \textbf{Data} \end{itemize}
+
+These items should be re-purposed for the new measurement type into
+the new namespace:
+
+\begin{itemize} \item \textbf{Subject} \item \textbf{Parameters} \item
+\textbf{Datum} \end{itemize}
+
+The following sections will suggest modifications necessary to enable the
+\textit{ping} datatype in the \textbf{tools} namespace.
+
+\subsubsection{Ping Subject} \label{s:extension_model_subject}
+
+The \textit{ping subject} should be specific to the ``subject'' of a
+\textit{Ping} measurement.  We learn through observing the tool that it
+involves two entities: a \textit{source} and \textit{destination} host.  These
+hosts can be described as being ``Layer 4'' beings in the \textit{OSI protocol
+model} \cite{osi-layer}.  
+
+A subject for this measurement should consist of a description of both
+of these hosts, preferably in an accepted format such as the topology
+descriptions being produced by the \textbf{NML-WG}.  We should ensure
+that some basic information about each host is captured:
+
+\begin{itemize} \item Host IP Address \item Address Type (e.g. \textbf{IPv4},
+\textbf{IPv6}) \item Hostname \item TCP Ports used \end{itemize}
+
+\paragraph{Ping Parameters} \label{s:extension_model_parameters}
+
+The \textit{ping parameters} can loosely be translated as the parameters that
+were used in the running of the measurement tool.  For example if there are
+options to vary the \textit{number of packets sen}t or the \textit{size of each
+packet}, this information should be encoded in the parameters
+definition.  The following represents some good choices for parameters in the
+ping tool, this list is not exhaustive:
+
+\begin{itemize} \item Number of packets to send \item Interval between packets
+\item Size of each packet \item Time to live (\textit{TTL}) of each packet
+\end{itemize}
+
+\paragraph{Ping Datum} \label{s:extension_model_datum}
+
+The final behavior to model is the \textit{ping datum}: the results of the
+measurement.  The \textit{Ping} tool reports the results of sending packet
+``probes'' from the source to the destination in a sequence.  The results in
+this case are a measurement of how long the operation tool as well as reporting
+the \textit{sequence number} of a given probe and the individual \textit{TTL}
+values of each.  While not explicitly reported, we also desire the
+\textit{time} that each measurement has either started or ended.  The following
+represents the measurement data we wish to capture form the ping tool, this
+list is not exhaustive any may vary depending on specific instances of
+\textit{Ping} in use:
+
+\begin{itemize} \item Measurement Time (round trip delay) \item Measurement
+units (e.g. \textit{seconds}) \item ``Wall clock'' - when the measurement
+started or ended \item Packet TTL \item Ping probe sequence number (in relation
+to the ping measurement as whole).  \end{itemize}
+
+\subsubsection{Create Schema and Examples} \label{s:extension_create}
+
+Using the information presented in Section~\ref{s:extension_model} we have
+produced a simple ping extension consisting of both a schema and example
+instance.  These examples appear at the end of this document in
+Section~\ref{s:examples}.
+
+

Added: NMWG/base/nmbase.bib
===================================================================
--- NMWG/base/nmbase.bib	                        (rev 0)
+++ NMWG/base/nmbase.bib	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,74 @@
+ at Misc{rfc2119,
+  author =       {S. Bradner},
+  title =        {{K}ey {W}ords for {U}se in {RFC}s to {I}ndicate {R}equirement {L}evels},
+  howpublished = {RFC 2119},
+  month =        {March},
+  year =         1997,
+  url = "http://www.ietf.org/rfc/rfc2119.txt",
+}
+
+ at inproceedings{zurawski06scalable,
+  author    = {J. Zurawski and M. Swany and D. Gunter},
+  title     = {A Scalable Framework for Representation and Exchange of Network Measurements},
+  booktitle = {IEEE/Create-Net Conference on Testbeds and Research Infrastructures for the Development of Networks and Communities},
+  address   = {Barcelona, Spain},
+  month     = "March",
+  year      = {2006}
+}
+
+ at TechReport{chardoc,
+  Title = "{A Hierarchy of Network Performance Characteristics for Grid Applications and Services}",
+  Author = "B. Lowekamp and B. Tierney and L. Cottrell and R. Hughes-Jones and T. Kielmann and M. Swany",
+  institution =  "Global Grid Forum",
+  year =         "2003",
+  howpublished = {GWD-C},
+  type =         "Community Practice",
+  month =        "June",
+  note =         "http://nmwg.internet2.edu"
+}
+
+ at TechReport{gfd.84,
+   Title = "{Standardised Namespaces for XML infosets in OGF}",
+   Author = "M. Drescher, A. Anjomshoaa",
+   institution =  "Open Grid Forum",
+   year =         "2006",
+   howpublished = {http://www.ogf.org/documents/GFD.84.pdf},
+   type =         "Open Grid Forum Community Document",
+   month =        "October"
+}
+
+ at misc{nmlwg,
+                title = "{N}etwork {M}arkup {L}anguage {W}orking {G}roup ({N}{M}{L}-{W}{G})",
+                key = "nmlwg",
+                howpublished = "\url{https://forge.gridforum.org/projects/nml-wg}"
+}
+
+ at misc{osi-layer,
+                title = "{OSI} {P}rotocol {M}odel",
+                key = "osi-layer",
+                howpublished = "\url{http://en.wikipedia.org/wiki/OSI_model}"
+}
+
+ at misc{relaxng,
+                title = "{RELAX}-{NG} {S}chema {L}anguage",
+                key = "relaxng",
+                howpublished = "\url{http://relaxng.org/}"
+}
+
+ at misc{trang,
+                title = "{M}ulti-format schema converter based on {RELAX} {NG}",
+                key = "trang",
+                howpublished = "\url{http://www.thaiopensource.com/relaxng/trang.html}"
+}
+
+ at misc{msv,
+                title = "{S}un {M}ulti-{S}chema {XML} {V}alidator ({MSV})",
+                key = "msv",
+                howpublished = "\url{https://msv.dev.java.net/}"
+}
+
+ at misc{xsd,
+                title = "{XML} {S}chema",
+                key = "xsd",
+                howpublished = "\url{http://www.w3.org/XML/Schema}"
+}

Added: NMWG/base/nmbase.pdf
===================================================================
(Binary files differ)


Property changes on: NMWG/base/nmbase.pdf
___________________________________________________________________
Added: svn:mime-type
   + application/pdf

Added: NMWG/base/nmbase.tex
===================================================================
--- NMWG/base/nmbase.tex	                        (rev 0)
+++ NMWG/base/nmbase.tex	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,161 @@
+\documentclass[11pt]{article}
+\usepackage{times}
+\usepackage{fullpage}
+\usepackage{citesort}
+\usepackage{fancyheadings}
+\usepackage{epsfig}
+\usepackage{graphicx}
+\usepackage{color}
+\usepackage{url}
+\usepackage{caption}
+\usepackage[outermarks]{titlesec}
+
+\titleformat{\section}
+  {\normalfont\Large\bfseries}{\thesection}{1em}{}
+\titleformat{\subsection}
+  {\normalfont\large\bfseries}{\thesubsection}{1em}{}
+\titleformat{\subsubsection}
+  {\normalfont\normalsize\bfseries}{\thesubsubsection}{1em}{}
+\titleformat{\paragraph}
+  {\normalfont\normalsize\bfseries}{\theparagraph}{1em}{}
+\titleformat{\subparagraph}
+  {\normalfont\normalsize\bfseries}{\thesubparagraph}{1em}{}
+
+\titlespacing*{\section}         {0pt}{3.5ex plus 1ex minus .2ex} {2.3ex plus .2ex}
+\titlespacing*{\subsection}      {0pt}{3.25ex plus 1ex minus .2ex}{1.5ex plus .2ex}
+\titlespacing*{\subsubsection}   {0pt}{3.25ex plus 1ex minus .2ex}{1.5ex plus .2ex}
+\titlespacing*{\paragraph}       {0pt}{3.25ex plus 1ex minus .2ex}{1.5ex plus .2ex}
+\titlespacing*{\subparagraph}    {0pt}{3.25ex plus 1ex minus .2ex}{1.5ex plus .2ex}
+
+\setcounter{secnumdepth}{6}
+\setcounter{tocdepth}{6} 
+
+\widowpenalty10000%
+\clubpenalty10000%
+
+\tolerance=1000
+
+\addtolength{\headheight}{30pt}
+
+\setlength{\captionmargin}{0.5in}
+\renewcommand{\captionlabelfont}{\bfseries}
+\setlength{\textfloatsep}{30pt plus 4pt minus 30pt}
+
+\setlength{\parindent}{0in}
+\setlength{\parskip}{1ex plus 0.5ex minus 0.2ex}
+
+\lhead{\fancyplain{}{GWD-R}}
+\chead{}
+\rhead{\fancyplain{}{\today}}
+\lfoot{\fancyplain{nm-wg at ogf.org}{nm-wg at ogf.org}}
+\cfoot{}
+\rfoot{\fancyplain{\thepage}{\thepage}}
+\setlength{\headrulewidth}{0pt}
+
+\pagestyle{fancyplain}
+\thispagestyle{plain}
+
+\begin{document}
+%\maketitle
+\bibliographystyle{plain}
+
+{
+\noindent
+\begin{minipage}[t]{3.5in}
+GWD-R\\
+Network Measurements Working Group\\
+https://forge.gridforum.org/projects/nm-wg\\
+\end{minipage}
+\hfill
+\raggedleft
+\begin{minipage}[t]{2.5in}
+\raggedleft
+Martin Swany, Indiana University\\
+Jason Zurawski, Internet2\\
+\today
+\end{minipage}
+}
+\begin{center}
+\Large\bf An Extensible Schema for Network Measurement and Performance Data\\
+\end{center}
+
+{\noindent\bf Status of This Document} \\
+
+{\noindent This document provides information to the Grid community regarding the design formats used in the storage and exchange of network measurements.  Distribution is unlimited.} \\
+
+{\noindent\bf Copyright Notice} \\
+
+{\noindent Copyright \copyright \ Open Grid Forum (2007-2011).  All Rights Reserved.} \\
+
+\tableofcontents
+
+\newpage
+
+\input{introduction}
+
+\input{design}
+
+\input{elements}
+
+\input{namespaces}
+
+\input{chaining}
+
+\input{schema_new}
+
+\input{examples_new}
+
+\section{Notational Conventions}++The key words ``MUST'' ``MUST NOT'', ``REQUIRED'', ``SHALL'', ``SHALL NOT'', ``SHOULD'', ``SHOULD NOT'', ``RECOMMENDED'', ``MAY'',  and ``OPTIONAL'' are to be interpreted as described in RFC 2119 \cite{rfc2119}
++\section{Security Considerations}++There are important security concerns associated with the generation and distribution of network measurement information. For example, ISPs frequently consider network configuration and performance information to be proprietary. Furthermore, observing traffic, and, in particular, collecting packet headers, is frequently considered a violation of the presumption of privacy on the network. Systems that collect the measurements described here are sometimes regarded as invasive, and, indeed, poorly designed or configured monitoring tools can consume a disproportionate amount of network bandwidth. Port blocking, protocol blocking, and traffic shaping can impact many measurement tools. Tools, such as traceroute, that send UDP probes to increasing port numbers can appear to be port scans and raise security alerts.
+
+We do not address those concerns in this document, but implementers are encouraged to consider the security implications of generating and distributing measurement information. While distribution of end-to-end application-level measurements is generally accepted, measurements that identify individual users or consume noticeable amounts of resources should be taken carefully, and the distribution of information to other sites that cannot be obtained readily by other users at those sites should be considered carefully.
++\section{Contributors}
+
+\textbf{D. Martin Swany}\\
+Indiana University School of Informatics and Computing \\
+150 S. Woodlawn Avenue \\
+Bloomington, Indiana 47405 \\
+
+\textbf{Jason Zurawski}\\
+Internet2 \\
+1150 18th Street, NW\\
+Suite 900\\
+Washington, DC 20036\\
+
+\section{Acknowledgements}
++{\noindent We gratefully acknowledge the contributions of: Aaron Brown, Jeff Boote, Eric Boyd, Mark Leese, Dan Gunter, Richard Hughes-Jones, and the other members of the Network Measurements Working Group. }
+
+% JZ 9/19/2011
+%+%\section{Glossary}+%+%{\noindent ...}++\section{Intellectual Property Statement}++{\noindent The OGF takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights.  Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the OGF Secretariat.} \\++{\noindent The OGF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may
  be required to practice this recommendation.  Please address the information to the OGF Executive Director.}++\section{Disclaimer}
++{\noindent This document and the information contained herein is provided on an ``As Is'' basis and the OGF disclaims all warranties, express or implied, including but not limited to any warranty that the use of the information herein will not infringe any rights or any implied warranties of merchantability or fitness for a particular purpose. }++\section{Full Copyright Notice}++Copyright \copyright \ Open Grid Forum (2007-2011). All Rights Reserved. \\++{\noindent This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to th
 e OGF or other organizations, except as needed for the purpose of developing Grid Recommendations in which case the procedures for copyrights defined in the OGF Document process must be followed, or as required to translate it into languages other than English.} \\++{\noindent The limited permissions granted above are perpetual and will not be revoked by the OGF or its successors or assignees.}
+
+\bibliography{nmbase}
+
+\end{document}

Added: NMWG/base/schema/CMP.rnc
===================================================================
--- NMWG/base/schema/CMP.rnc	                        (rev 0)
+++ NMWG/base/schema/CMP.rnc	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,165 @@
+# ##############################################################
+# 
+# File: 	command.rnc - Specialized schema for the command 
+#                          tool
+# Version: 	$Id: CMP.rnc 341 2008-04-24 21:52:11Z boote $
+# Purpose: 	Describes specific elements to be used in the
+#               representation and handling of command
+#               measurements.
+# Reference:	http://books.xmlschemata.org/relaxng/page2.html
+# 			
+# ##############################################################
+
+
+# ##############################################################
+# Namespace definitions
+# ##############################################################
+namespace nmwg = "http://ggf.org/ns/nmwg/base/2.0/"
+namespace command = "http://ggf.org/ns/nmwg/tools/command/2.0/"
+
+
+# ##############################################################
+# Include additional functionality from other files
+# ##############################################################
+include "nmtopo.rnc"
+include "nmbase.rnc" {
+	Metadata |= CommandMetadata
+} 
+
+
+
+# ##############################################################
+# Metadata is the 'data' that describes physical measurements. 
+# Metadata can be something such as a physical address, or 
+# a geographical location; any form of static, re-usable 
+# designation.  It is important to note that the subject
+# namespace and parameters namespace MUST match (or the parameters
+# can be a generic NMWG) or bad things will occur.
+#
+# Example: 
+# 
+# <nmwg:metadata id="REQUIRED_ID" 
+#                metadataIdRef="OPTIONAL_REFERENCE_ID"
+#                xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <!-- TBD OPTIONAL SUBJECT -->
+# 
+#   <!-- TBD OPTIONAL PARAMETERS -->
+#
+#   <!-- TBD OPTIONAL EVENTTYPE -->
+# 
+#   <!-- TBD OPTIONAL KEY -->
+#  
+#   <!-- ANY OPTIONAL (MULTIPLE) ELEMENT IN ANY NAMESPACE --> 
+#
+# </nmwg:metadata>
+# 
+# ##############################################################
+	
+CommandMetadata = 
+	element nmwg:metadata {
+		Identifier &
+		MetadataIdentifierRef? &
+		CommandMetadataContent
+   	}
+  	
+CommandMetadataBlock = 
+	CommandSubject? &
+	(
+		Parameters |
+		CommandParameters
+	)?	
+	
+CommandMetadataContent = 
+	(
+		CommandMetadataBlock |
+		FilterMetadataBlock		
+	) &	
+	EventType? &
+	Key?	
+
+CommandParameters =
+        element command:parameters {
+                Identifier &        
+                CommandParameter+
+        }
+        
+CommandParameter = 
+        element nmwg:parameter { 
+                attribute name { "command" | "argument" } &
+                (
+                        attribute value { text } |
+                        text
+                )
+        }
+
+
+# ##############################################################
+# Redefined command subject allows only an endPointPair or
+# interface, and the two id attributes.    
+#
+# Example: 
+# 
+# <command:subject id="REQUIRED_ID" 
+#               metadataIdRef="OPTIONAL_REFERENCE_ID"
+#               xmlns:nmwg="http://ggf.org/ns/nmwg/tools/command/2.0/">
+# 
+#   <nmwgtopo:endPointPair xmlns:nmwgtopo="http://ggf.org/ns/nmwg/topology/2.0/">
+# 
+#     <nmwgtopo:src type="REQUIRED_TYPE" value="REQUIRED_VALUE" 
+#                   port="OPTIONAL_PORT"/>
+# 
+#     <nmwgtopo:dst type="REQUIRED_TYPE" value="REQUIRED_VALUE" 
+#                   port="OPTIONAL_PORT"/>
+#  
+#   </nmwgtopo:endPointPair>
+#  
+# </command:subject>
+#
+# Example 2: 
+#
+# <command:subject id="REQUIRED_ID" 
+#               metadataIdRef="OPTIONAL_REFERENCE_ID"
+#               xmlns:nmwg="http://ggf.org/ns/nmwg/tools/command/2.0/">
+#
+#   <nmwgtopo:interface xmlns:nmwgtopo="http://ggf.org/ns/nmwg/topology/2.0/">
+#
+#     <nmwgtopo:ipAddress type='REQUIRED_TYPE'> TEXT </nmwgtopo:ipAddress>
+#
+#     <nmwgtopo:hostName> TEXT </nmwgtopo:hostName>
+#
+#     <nmwgtopo:ifName> TEXT </nmwgtopo:ifName>
+#
+#     <nmwgtopo:ifDescription> TEXT </nmwgtopo:ifDescription>
+#
+#     <nmwgtopo:ifAddress type='REQUIRED_TYPE'> TEXT </nmwgtopo:ifAddress>
+#
+#     <nmwgtopo:ifHostName> TEXT </nmwgtopo:ifHostName>
+#
+#     <nmwgtopo:ifIndex> TEXT </nmwgtopo:ifIndex>
+#
+#     <nmwgtopo:type> TEXT </nmwgtopo:type>
+#
+#     <nmwgtopo:direction> TEXT </nmwgtopo:direction>
+#
+#     <nmwgtopo:authRealm> TEXT </nmwgtopo:authRealm>
+#
+#     <nmwgtopo:classOfService> TEXT </nmwgtopo:classOfService>
+#
+#     <nmwgtopo:capacity> TEXT </nmwgtopo:capacity>
+#
+#   </nmwgtopo:interface>
+#  
+# </command:subject>
+#
+# ##############################################################
+
+CommandSubject =
+	element command:subject {
+		Identifier &
+		MetadataIdentifierRef? &			
+		(
+			EndpointPair |
+			Interface
+		)
+	}

Added: NMWG/base/schema/FlowsaMA.rnc
===================================================================
--- NMWG/base/schema/FlowsaMA.rnc	                        (rev 0)
+++ NMWG/base/schema/FlowsaMA.rnc	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,420 @@
+# ###################################################################
+# 
+# File:         Flowsa.rnc - Specialized schema for the Flow Selection
+#               and Aggregation MA.
+# Author:       Hans Trompert, SURFnet
+# Version:      18
+# Date:         June 10, 2008
+# Purpose:      Describes specific elements to be used in the
+#               FlowsaMA messages.
+# Reference:    http://books.xmlschemata.org/relaxng/page2.html
+#
+# Note:         v18 is a simplification of the v17 schema in order
+#               for the test team to use soapui for validation,
+#               due to this some of the semantics is lost, the
+#               parts that were changed are marked "# v17 #"
+#
+# ###################################################################
+
+
+# ###################################################################
+# Namespace definitions
+# ###################################################################
+
+namespace nmwg      = "http://ggf.org/ns/nmwg/base/2.0/"
+namespace flow      = "http://ggf.org/ns/nmwg/tools/flow/2.0/"
+namespace stat      = "http://ggf.org/ns/nmwg/tools/flow/stat/2.0/"
+namespace top       = "http://ggf.org/ns/nmwg/tools/flow/top/2.0/"
+namespace raw       = "http://ggf.org/ns/nmwg/tools/flow/raw/2.0/"
+namespace nmwgtopo3 = "http://ggf.org/ns/nmwg/topology/base/3.0/"
+
+# ###################################################################
+# Include additional functionality from other files
+# ###################################################################
+
+include "nmtopo.rnc"
+include "nmtopo_ver3.rnc"
+include "result.rnc"
+include "nmbase.rnc" {
+        Metadata |= FlowsaMetadata
+        Data |= FlowsaData
+}
+
+# ###################################################################
+# Flowsa metadata
+# ###################################################################
+
+FlowsaMetadata =
+        element nmwg:metadata {
+                Identifier &
+                MetadataIdentifierRef? &
+                FlowsaMetadataContent
+        }
+
+# v17 #FlowsaMetadataContent =
+# v17 #        (
+# v17 #                FlowsaSubject? |
+# v17 #                FlowsaParameterMetadataBlock? |
+# v17 #                FilterMetadataBlock?
+# v17 #        ) &
+# v17 #        FlowsaEventType? &
+# v17 #        Key?
+# v17 #
+
+FlowsaMetadataContent =
+        (
+                FlowsaMetadataBlock? |
+                FilterMetadataBlock?
+        ) &
+        FlowsaEventType? &
+        Key?
+
+# v17 #FlowsaParameterMetadataBlock =
+# v17 #        element flow:subject {
+# v17 #                Identifier &
+# v17 #                MetadataIdentifierRef?
+# v17 #        } &
+# v17 #        (
+# v17 #                FlowsaStatParameters? |
+# v17 #                FlowsaRawParameters? |
+# v17 #                FlowsaTopParameters?
+# v17 #        )
+
+FlowsaMetadataBlock =
+        FlowsaSubject? &
+        (
+                FlowsaParameters |
+                Parameters
+        )?
+
+# ###################################################################
+#
+# The subject of the message is a group of routers, for this we just
+# use the BaseNetwork element from the nmwg version 3 topology
+# namespace.
+#
+# ###################################################################
+
+FlowsaSubject =
+        element flow:subject {
+                Identifier &
+                MetadataIdentifierRef? &
+                RouterGroup?
+        }
+
+RouterGroup = BaseNetwork
+
+# ###################################################################
+#
+# The eventType is used to specify the kind of flow query:
+# - statistical information
+# - raw flow information, optionally filtered and/or aggregated
+# - top N statistics
+#
+# ###################################################################
+
+FlowsaEventType =
+        element nmwg:eventType {
+                "http://ggf.org/ns/nmwg/tools/flow/stat/2.0/" |
+                "http://ggf.org/ns/nmwg/tools/flow/raw/2.0/" |
+                "http://ggf.org/ns/nmwg/tools/flow/top/2.0/"
+        }
+
+# ###################################################################
+#
+# Flowsa parameters
+#
+# ###################################################################
+
+# v17 #TopStatistics =
+# v17 #        element nmwg:parameter {
+# v17 #                attribute name { "topStatistic" } &
+# v17 #               (
+# v17 #                        "record" | "srcip" | "dstip" | "ip" |
+# v17 #                        "addresses" | "srcport" | "dstport" |
+# v17 #                        "port" | "ports" | "srcas" | "dstas" |
+# v17 #                        "as" | "numbers" | "inif" | "outif" |
+# v17 #                        "if" | "interface" | "proto"
+# v17 #                )
+# v17 #        }
+# v17 #
+# v17 #OrderBy =
+# v17 #        element nmwg:parameter {
+# v17 #                attribute name { "orderBy" } &
+# v17 #                (
+# v17 #                        "flows" | "packets" | "bytes" | "pps" |
+# v17 #                        "bps" | "bpp"
+# v17 #                )
+# v17 #        }
+# v17 #
+# v17 #SplitProtocol =
+# v17 #        element nmwg:parameter {
+# v17 #                attribute name { "splitProtocol" } &
+# v17 #                (
+# v17 #                        "yes" | "no"
+# v17 #                )
+# v17 #        }
+# v17 #
+# v17 #TopN =
+# v17 #        element nmwg:parameter {
+# v17 #                attribute name { "topN" } &
+# v17 #                xsd:int
+# v17 #        }
+# v17 #
+# v17 #AggregationRule =
+# v17 #        element nmwg:parameter {
+# v17 #                attribute name { "aggregationRule" } &
+# v17 #                xsd:string
+# v17 #        }
+# v17 #
+# v17 #FilterRule =
+# v17 #        element nmwg:parameter {
+# v17 #                attribute name { "filterRule" } &
+# v17 #                xsd:string
+# v17 #        }
+# v17 #
+# v17 #FlowVersion = 
+# v17 #        element nmwg:parameter {
+# v17 #                attribute name { "flowVersion" } &
+# v17 #                (
+# v17 #                    "netflow_v9" | "netflow_v5" | "sflow"
+# v17 #                )
+# v17 #        }
+# v17 #
+# v17 #FlowSampleRate =
+# v17 #        element nmwg:parameter {
+# v17 #                attribute name { "sampleRate" } &
+# v17 #                xsd:int
+# v17 #        }        
+# v17 #
+# v17 #ShowFieldParameter =
+# v17 #        element nmwg:parameter {
+# v17 #                attribute name {
+# v17 #                        "showFieldAddressFamily" |
+# v17 #                        "showFieldTimeFirstSeen" |
+# v17 #                        "showFieldMsecFirstSeen" |
+# v17 #                        "showFieldTimeLastSeen" |
+# v17 #                        "showFieldMsecLastSeen" |
+# v17 #                        "showFieldProtocol" |
+# v17 #                        "showFieldSrcAddress" |
+# v17 #                        "showFieldSrcPort" |
+# v17 #                        "showFieldDstAddress" |
+# v17 #                        "showFieldDstPort" |
+# v17 #                        "showFieldSrcAS" |
+# v17 #                        "showFieldDstAS" |
+# v17 #                        "showFieldInputIF" |
+# v17 #                        "showFieldOutputIF" |
+# v17 #                        "showFieldTos" |
+# v17 #                        "showFieldPackets" |
+# v17 #                        "showFieldBytes" |
+# v17 #                        "showFieldTcpFlags"
+# v17 #                }
+# v17 #        }
+# v17 #
+# v17 #FlowsaStatParameters =
+# v17 #        element flow:parameters {
+# v17 #                Identifier &
+# v17 #                (
+# v17 #                        FlowVersion? | 
+# v17 #                        FlowSampleRate?
+# v17 #                )+
+# v17 #        }
+# v17 #
+# v17 #FlowsaTopParameters =
+# v17 #        element flow:parameters {
+# v17 #                Identifier &
+# v17 #                (
+# v17 #                        FlowVersion? |
+# v17 #                        FlowSampleRate? |
+# v17 #                        AggregationRule? |
+# v17 #                        FilterRule? |
+# v17 #                        TopStatistics? |
+# v17 #                        OrderBy? |
+# v17 #                        SplitProtocol? |
+# v17 #                        TopN?
+# v17 #                )+
+# v17 #        }
+# v17 #
+# v17 #FlowsaRawParameters =
+# v17 #        element flow:parameters {
+# v17 #                Identifier &
+# v17 #                (
+# v17 #                        FlowVersion? | 
+# v17 #                        FlowSampleRate? |
+# v17 #                        AggregationRule? |
+# v17 #                        FilterRule? |
+# v17 #                        ShowFieldParameter?
+# v17 #                )+
+# v17 #        }
+# v17 #
+
+FlowsaParameters =
+        element flow:parameters {
+                Identifier &
+                FlowsaParameter*
+        }
+
+FlowsaParameter =
+        element nmwg:parameter {
+                attribute name { "aggregationRule" | "filterRule" | "sampleRate" |
+                                 "flowVersion" | "orderBy" | "showFieldParameter" |
+                                 "splitProtocol" | "topN" | "topStatistic" |
+                                 "showFieldAddressFamily" | "showFieldTimeFirstSeen" |
+                                 "showFieldMsecFirstSeen" | "showFieldTimeLastSeen" |
+                                 "showFieldMsecLastSeen" | "showFieldProtocol" |
+                                 "showFieldSrcAddress" | "showFieldSrcPort" |
+                                 "showFieldDstAddress" | "showFieldDstPort" |
+                                 "showFieldSrcAS" | "showFieldDstAS" |
+                                 "showFieldInputIF" | "showFieldOutputIF" |
+                                 "showFieldTos" | "showFieldPackets" |
+                                 "showFieldBytes" | "showFieldTcpFlags" } &
+                (
+                        attribute value { text } |
+                        text
+                )
+        }
+
+# ###################################################################
+#
+# Flowsa data
+#
+# ###################################################################
+
+# v17 #FlowsaData =
+# v17 #        element nmwg:data {
+# v17 #                Identifier &
+# v17 #                MetadataIdentifierRef? &
+# v17 #                (
+# v17 #                        FlowsaStatDatum* |
+# v17 #                        FlowsaTopDatum* |
+# v17 #                        FlowsaRawDatum* 
+# v17 #                )
+# v17 #        }
+
+FlowsaData =
+        element nmwg:data {
+                Identifier &
+                MetadataIdentifierRef? &
+                FlowsaDatum* 
+        }
+
+# v17 #FlowsaStatDatum =
+# v17 #        element flow:datum {
+# v17 #                attribute flows { xsd:string } &
+# v17 #                attribute flowsTcp { xsd:string } &
+# v17 #                attribute flowsUdp { xsd:string } &
+# v17 #                attribute flowsIcmp { xsd:string } &
+# v17 #                attribute flowsOther { xsd:string } &
+# v17 #                attribute packets { xsd:string } &
+# v17 #                attribute packetsTcp { xsd:string } &
+# v17 #                attribute packetsUdp { xsd:string } &
+# v17 #                attribute packetsIcmp { xsd:string } &
+# v17 #                attribute packetsOther { xsd:string } &
+# v17 #                attribute bytes { xsd:string } &
+# v17 #                attribute bytesTcp { xsd:string } &
+# v17 #                attribute bytesUdp { xsd:string } &
+# v17 #                attribute bytesIcmp { xsd:string } &
+# v17 #                attribute bytesOther { xsd:string } &
+# v17 #                attribute first { xsd:string } &
+# v17 #                attribute last { xsd:string } &
+# v17 #                attribute msecFirst { xsd:string } &
+# v17 #                attribute msecLast { xsd:string } &
+# v17 #                attribute sequenceFailures { xsd:string } &
+# v17 #                Time
+# v17 #        }
+# v17 #
+# v17 #FlowsaTopDatum =
+# v17 #        element flow:datum {
+# v17 #                attribute dateFirstSeen { xsd:string } &
+# v17 #                attribute duration { xsd:string } &
+# v17 #                attribute proto { xsd:string } &
+# v17 #                attribute topStatistic { xsd:string } &
+# v17 #                attribute flows { xsd:string } &
+# v17 #                attribute packets { xsd:string } &
+# v17 #                attribute bytes { xsd:string } &
+# v17 #                attribute pps { xsd:string } &
+# v17 #                attribute bps { xsd:string } &
+# v17 #                attribute bpp { xsd:string }
+# v17 #        }
+# v17 #
+# v17 #FlowsaRawDatum =
+# v17 #        element flow:datum {
+# v17 #                attribute addressFamily { xsd:string }? &
+# v17 #                attribute timeFirstSeen { xsd:string }? &
+# v17 #                attribute msecFirstSeen { xsd:string }? &
+# v17 #                attribute timeLastSeen { xsd:string }? &
+# v17 #                attribute msecLastSeen { xsd:string }? &
+# v17 #                attribute protocol { xsd:string }? &
+# v17 #                attribute srcAddress { xsd:string }? &
+# v17 #                attribute srcPort { xsd:string }? &
+# v17 #                attribute dstAddress { xsd:string }? &
+# v17 #                attribute dstPort { xsd:string }? &
+# v17 #                attribute srcAS { xsd:string }? &
+# v17 #                attribute dstAS { xsd:string }? &
+# v17 #                attribute inputIF { xsd:string }? &
+# v17 #                attribute outputIF { xsd:string }? &
+# v17 #                attribute tcpFlags { xsd:string }? &
+# v17 #                attribute tos { xsd:string }? &
+# v17 #                attribute packets { xsd:string }? &
+# v17 #                attribute bytes { xsd:string }? 
+# v17 #        }
+
+FlowsaDatum =
+        element flow:datum {
+                (
+                        attribute flows { xsd:string } &
+                        attribute flowsTcp { xsd:string } &
+                        attribute flowsUdp { xsd:string } &
+                        attribute flowsIcmp { xsd:string } &
+                        attribute flowsOther { xsd:string } &
+                        attribute packets { xsd:string } &
+                        attribute packetsTcp { xsd:string } &
+                        attribute packetsUdp { xsd:string } &
+                        attribute packetsIcmp { xsd:string } &
+                        attribute packetsOther { xsd:string } &
+                        attribute bytes { xsd:string } &
+                        attribute bytesTcp { xsd:string } &
+                        attribute bytesUdp { xsd:string } &
+                        attribute bytesIcmp { xsd:string } &
+                        attribute bytesOther { xsd:string } &
+                        attribute first { xsd:string } &
+                        attribute last { xsd:string } &
+                        attribute msecFirst { xsd:string } &
+                        attribute msecLast { xsd:string } &
+                        attribute sequenceFailures { xsd:string } &
+                        Time
+                ) |
+                (
+                        attribute dateFirstSeen { xsd:string } &
+                        attribute duration { xsd:string } &
+                        attribute proto { xsd:string } &
+                        attribute topStatistic { xsd:string } &
+                        attribute flows { xsd:string } &
+                        attribute packets { xsd:string } &
+                        attribute bytes { xsd:string } &
+                        attribute pps { xsd:string } &
+                        attribute bps { xsd:string } &
+                        attribute bpp { xsd:string }
+                ) |
+                (
+                        attribute addressFamily { xsd:string }? &
+                        attribute timeFirstSeen { xsd:string }? &
+                        attribute msecFirstSeen { xsd:string }? &
+                        attribute timeLastSeen { xsd:string }? &
+                        attribute msecLastSeen { xsd:string }? &
+                        attribute protocol { xsd:string }? &
+                        attribute srcAddress { xsd:string }? &
+                        attribute srcPort { xsd:string }? &
+                        attribute dstAddress { xsd:string }? &
+                        attribute dstPort { xsd:string }? &
+                        attribute srcAS { xsd:string }? &
+                        attribute dstAS { xsd:string }? &
+                        attribute inputIF { xsd:string }? &
+                        attribute outputIF { xsd:string }? &
+                        attribute tcpFlags { xsd:string }? &
+                        attribute tos { xsd:string }? &
+                        attribute packets { xsd:string }? &
+                        attribute bytes { xsd:string }? 
+                )
+        }
+

Added: NMWG/base/schema/PassiveAnomal.rnc
===================================================================
--- NMWG/base/schema/PassiveAnomal.rnc	                        (rev 0)
+++ NMWG/base/schema/PassiveAnomal.rnc	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,347 @@
+# ##############################################################
+# 
+# File:         PassiveAnomal.rnc - TBD
+# Version:      $Id: PassiveAnomal.rnc 341 2008-04-24 21:52:11Z boote $
+# Purpose:      TBD
+# Reference:    http://books.xmlschemata.org/relaxng/page2.html
+#                         
+# ##############################################################
+
+
+# ##############################################################
+# Namespace definitions
+# ##############################################################
+namespace nmwg = "http://ggf.org/ns/nmwg/base/2.0/"
+namespace passiveanomal = "http://ggf.org/ns/nmwg/tools/passiveanomal/2.0/"
+namespace nmtm = "http://ggf.org/ns/nmwg/time/2.0/"
+namespace nmwgr = "http://ggf.org/ns/nmwg/result/2.0/"
+
+
+# ##############################################################
+# Include additional functionality from other files
+# ##############################################################
+include "nmtopo.rnc"
+include "nmtopo_ver3.rnc"
+include "result.rnc"
+include "nmbase.rnc" {
+        Metadata |= PassiveAnomalMetadata
+        Data |= PassiveAnomalData        
+} 
+
+
+# ##############################################################
+# Metadata is the 'data' that describes physical measurements. 
+# Metadata can be something such as a physical address, or 
+# a geographical location; any form of static, re-usable 
+# designation.  It is important to note that the subject
+# namespace and parameters namespace MUST match (or the parameters
+# can be a generic NMWG) or bad things will occur.
+#
+# Example: 
+# 
+# <nmwg:metadata id="REQUIRED_ID" 
+#                metadataIdRef="OPTIONAL_REFERENCE_ID"
+#                xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <!-- TBD OPTIONAL SUBJECT -->
+# 
+#   <!-- TBD OPTIONAL PARAMETERS -->
+#
+#   <!-- TBD OPTIONAL EVENTTYPE -->
+# 
+#   <!-- TBD OPTIONAL KEY -->
+#  
+#   <!-- ANY OPTIONAL (MULTIPLE) ELEMENT IN ANY NAMESPACE --> 
+#
+# </nmwg:metadata>
+# 
+# ##############################################################
+        
+PassiveAnomalMetadata = 
+        element nmwg:metadata {
+                Identifier &
+                MetadataIdentifierRef? &
+                PassiveAnomalMetadataContent
+        }
+          
+PassiveAnomalMetadataBlock = 
+        PassiveAnomalSubject? &
+        (
+                PassiveAnomalParameters |
+                Parameters
+        )?        
+        
+PassiveAnomalMetadataContent = 
+        (
+                PassiveAnomalMetadataBlock |
+                FilterMetadataBlock                
+        ) &        
+        EventType? &
+        Key?        
+
+
+# ##############################################################
+# TBD   
+#
+# Example: 
+# 
+# <passiveanomal:subject id="REQUIRED_ID" 
+#               metadataIdRef="OPTIONAL_REFERENCE_ID"
+#               xmlns:passiveanomal="http://ggf.org/ns/nmwg/tools/passiveanomal/2.0/">
+# 
+#   <nmwgtopo:endPointPair xmlns:nmwgtopo="http://ggf.org/ns/nmwg/topology/2.0/">
+# 
+#     <nmwgtopo:src type="REQUIRED_TYPE" value="REQUIRED_VALUE" 
+#                   port="OPTIONAL_PORT"/>
+# 
+#     <nmwgtopo:dst type="REQUIRED_TYPE" value="REQUIRED_VALUE" 
+#                   port="OPTIONAL_PORT"/>
+#  
+#   </nmwgtopo:endPointPair>
+#
+#           <!-- OR -->
+#
+#   <nmwgtopo:interface xmlns:nmwgtopo="http://ggf.org/ns/nmwg/topology/2.0/">
+# 
+#     <nmwgtopo:ipAddress type='REQUIRED_TYPE'> TEXT </nmwgtopo:ipAddress>
+# 
+#     <nmwgtopo:hostName> TEXT </nmwgtopo:hostName>
+# 
+#     <nmwgtopo:ifName> TEXT </nmwgtopo:ifName>
+# 
+#     <nmwgtopo:ifDescription> TEXT </nmwgtopo:ifDescription>
+# 
+#     <nmwgtopo:ifAddress type='REQUIRED_TYPE'> TEXT </nmwgtopo:ifAddress>
+# 
+#     <nmwgtopo:ifHostName> TEXT </nmwgtopo:ifHostName>
+# 
+#     <nmwgtopo:ifIndex> TEXT </nmwgtopo:ifIndex>
+# 
+#     <nmwgtopo:type> TEXT </nmwgtopo:type>
+# 
+#     <nmwgtopo:direction> TEXT </nmwgtopo:direction>
+# 
+#     <nmwgtopo:authRealm> TEXT </nmwgtopo:authRealm>
+# 
+#     <nmwgtopo:classOfService> TEXT </nmwgtopo:classOfService>
+# 
+#     <nmwgtopo:capacity> TEXT </nmwgtopo:capacity>
+#  
+#   </nmwgtopo:interface>
+#  
+# </passiveanomal:subject>
+#
+# ##############################################################
+
+PassiveAnomalSubject =
+        element passiveanomal:subject {
+                Identifier &
+                MetadataIdentifierRef? &  
+                (  
+                        (                   
+                                EndpointPair |
+                                L4EndpointPair
+                        ) |
+                        (
+                                Interface |
+                                BaseInterface |
+                                L2Interface |
+                                L3Interface
+                        )
+                )?
+        }
+
+
+# ##############################################################
+# TBD
+#
+# Example: 
+# 
+# <passiveanomal:parameters id="REQUIRED_ID" 
+#                   xmlns:passiveanomal="http://ggf.org/ns/nmwg/tools/passiveanomal/2.0/">
+# 
+#   <nmwg:parameter name="REQUIRED_ENUM_NAME" value="OPTIONAL_VALUE"
+#                   xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#     <!-- ANY TEXT, (IF YOU DID NOT USE THE VALUE ATTRIBUTE) -->
+# 
+#   </nmwg:parameter>
+#  
+#   <!-- MORE PARAMETERS -->
+#   
+# </passiveanomal:parameters>
+# 
+# ##############################################################
+
+PassiveAnomalParameters =
+        element passiveanomal:parameters {
+                Identifier &        
+                (
+                        PassiveAnomalParameter |
+                        PassiveAnomalParameterST |
+                        PassiveAnomalParameterET                        
+                )+
+        }
+        
+PassiveAnomalParameter = 
+        element nmwg:parameter { 
+                attribute name { "flow_h_filter" | "flow_s_type" | "flow_s_thre" | 
+                                 "flow_p_filter" | "characteristics" | "granularity" } &
+                (
+                        attribute value { text } |                        
+                        text
+                )
+        }
+        
+PassiveAnomalParameterST = 
+        element nmwg:parameter { 
+                attribute name { "start_time" } &
+                StartTime
+        }        
+        
+PassiveAnomalParameterET = 
+        element nmwg:parameter { 
+                attribute name { "end_time" } &
+                EndTime
+        }        
+
+
+# ##############################################################
+# The data block is complex, and has the potential to contain
+# many things.  The data block can be used to return a metadata
+# block from a request, commonTime or datum elements, keys, 
+# or something that we have perhaps not defined as of yet.  
+#
+# Example: 
+# 
+# <nmwg:data id="REQUIRED_ID" 
+#            metadataIdRef="OPTIONAL_REFERENCE_ID" 
+#            xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <!-- OPTIONAL (MULTIPLE) METADATA -->
+# 
+#           <!-- OR -->
+#
+#   <!-- TBD OPTIONAL (MULTIPLE) COMMON TIME ELEMENTS AND 
+#        OPTIONAL (MULTIPLE) DATUM ELEMENTS-->
+# 
+#           <!-- OR -->
+#  
+#   <!-- TBD OPTIONAL (MULTIPLE) DATUM ELEMENTS -->
+# 
+#           <!-- OR -->
+#  
+#   <!-- OPTIONAL (MULTIPLE) KEY ELEMENTS -->
+# 
+#           <!-- OR -->
+# 
+#   <!-- ANY OPTIONAL (MULTIPLE) ELEMENT IN ANY NAMESPACE -->
+#   
+# </nmwg:data>
+# 
+# ##############################################################
+   
+PassiveAnomalData =
+        element nmwg:data {
+                Identifier &
+                MetadataIdentifierRef? &
+                (
+                        (
+                                Metadata* |
+                                PassiveAnomalMetadata*
+                        ) |
+                        (
+                                PassiveAnomalCommonTime+ & 
+                                (
+                                        PassiveAnomalDatum* |
+                                        ResultDatum*
+                                )
+                        ) |
+                        (
+                                PassiveAnomalDatum* |
+                                ResultDatum*
+                        ) |
+                        Key*
+                )
+        }
+
+
+# ##############################################################
+# CommonTime is used a a shortcut able to 'factor out' a frequently
+# occurring time range that a bunch of datum (or other) elements
+# might share, thus reducing complexity of XML representation.  
+# CommonTime is similar to the other NMWG time stamps (from 
+# nmtime.rnc) in its potential time representations.
+#
+# Example: 
+# 
+# <nmwg:commonTime type="REQUIRED_TYPE" value="OPTIONAL_VALUE"
+#                  duration="OPTIONAL_DURATION" 
+#                  inclusive="OPTIONAL_INCLUSIVE_FLAG"
+#                  xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <!-- TBD OPTIONAL START TIME ELEMENT (USE END TIME OR DURATION) -->
+#  
+#   <!-- TBD OPTIONAL END TIME ELEMENT (ONLY WITH START TIME) -->
+#  
+#   <!-- TBD OPTIONAL TIME VALUE ELEMENT (USE IF NO VALUE ATTRIBUTE) -->
+#  
+#   <!-- TBD OPTIONAL (MULTIPLE) DATUM ELEMENTS -->
+# 
+#   <!-- ANY OPTIONAL (MULTIPLE) ELEMENT IN ANY NAMESPACE -->
+# </nmwg:commonTime>
+# 
+# ##############################################################
+
+PassiveAnomalCommonTime = 
+        element nmwg:commonTime {
+                Type &
+                (
+                        TimeStamp |
+                        (
+                                StartTime & 
+                                (
+                                        EndTime | 
+                                        Duration 
+                                )
+                        )
+                ) &
+                (
+                        PassiveAnomalDatum* |
+                        ResultDatum*
+                )
+        } 
+
+
+# ##############################################################
+# TBD
+#
+# Example: 
+# 
+# <passiveanomal:datum event_type="OPTIONAL_EVENT_TYPE"
+#              event_specification="OPTIONAL_EVENT_SPECIFICATION"
+#              event_number="OPTIONAL_EVENT_NUMBER"
+#              timeType="OPTIONAL_TIME_TYPE"
+#              timeValue="OPTIONAL_TIME_VALUE"
+#              xmlns:nmwg="http://ggf.org/ns/nmwg/tools/passiveanomal/2.0/">
+# 
+#   <!-- TIME ELEMENT (IF ATTRIBUTES NOT USED) -->
+#  
+# </passiveanomal:datum>
+# 
+# ##############################################################
+
+PassiveAnomalDatum =
+        element passiveanomal:datum {
+                attribute event_type { xsd:string }? &  
+                attribute event_specification { xsd:string }? &              
+                attribute event_number { xsd:string }? &
+                (
+                        (
+                                attribute timeType { xsd:string } & 
+                                attribute timeValue { xsd:string }
+                        ) |
+                        Time
+                )?                   
+        }
+

Added: NMWG/base/schema/PassiveBand.rnc
===================================================================
--- NMWG/base/schema/PassiveBand.rnc	                        (rev 0)
+++ NMWG/base/schema/PassiveBand.rnc	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,349 @@
+# ##############################################################
+# 
+# File:         PassiveBand.rnc - TBD
+# Version:      $Id: PassiveBand.rnc 341 2008-04-24 21:52:11Z boote $
+# Purpose:      TBD
+# Reference:    http://books.xmlschemata.org/relaxng/page2.html
+#                         
+# ##############################################################
+
+
+# ##############################################################
+# Namespace definitions
+# ##############################################################
+namespace nmwg = "http://ggf.org/ns/nmwg/base/2.0/"
+namespace passiveband = "http://ggf.org/ns/nmwg/tools/passiveband/2.0/"
+namespace nmwgr = "http://ggf.org/ns/nmwg/result/2.0/"
+
+
+# ##############################################################
+# Include additional functionality from other files
+# ##############################################################
+include "nmtopo.rnc"
+include "nmtopo_ver3.rnc"
+include "result.rnc"
+include "nmbase.rnc" {
+        Metadata |= PassiveBandMetadata
+        Data |= PassiveBandData        
+} 
+
+
+# ##############################################################
+# Metadata is the 'data' that describes physical measurements. 
+# Metadata can be something such as a physical address, or 
+# a geographical location; any form of static, re-usable 
+# designation.  It is important to note that the subject
+# namespace and parameters namespace MUST match (or the parameters
+# can be a generic NMWG) or bad things will occur.
+#
+# Example: 
+# 
+# <nmwg:metadata id="REQUIRED_ID" 
+#                metadataIdRef="OPTIONAL_REFERENCE_ID"
+#                xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <!-- TBD OPTIONAL SUBJECT -->
+# 
+#   <!-- TBD OPTIONAL PARAMETERS -->
+#
+#   <!-- TBD OPTIONAL EVENTTYPE -->
+# 
+#   <!-- TBD OPTIONAL KEY -->
+#  
+#   <!-- ANY OPTIONAL (MULTIPLE) ELEMENT IN ANY NAMESPACE --> 
+#
+# </nmwg:metadata>
+# 
+# ##############################################################
+        
+PassiveBandMetadata = 
+        element nmwg:metadata {
+                Identifier &
+                MetadataIdentifierRef? &
+                PassiveBandMetadataContent
+        }
+          
+PassiveBandMetadataBlock = 
+        PassiveBandSubject? &
+        (
+                PassiveBandParameters |
+                Parameters
+        )?
+        
+PassiveBandMetadataContent = 
+        (
+                PassiveBandMetadataBlock |
+                FilterMetadataBlock                
+        ) &        
+        EventType? &
+        Key?        
+
+
+# ##############################################################
+# TBD   
+#
+# Example: 
+# 
+# <passiveband:subject id="REQUIRED_ID" 
+#               metadataIdRef="OPTIONAL_REFERENCE_ID"
+#               xmlns:passiveband="http://ggf.org/ns/nmwg/tools/passiveband/2.0/">
+# 
+#   <nmwgtopo:endPointPair xmlns:nmwgtopo="http://ggf.org/ns/nmwg/topology/2.0/">
+# 
+#     <nmwgtopo:src type="REQUIRED_TYPE" value="REQUIRED_VALUE" 
+#                   port="OPTIONAL_PORT"/>
+# 
+#     <nmwgtopo:dst type="REQUIRED_TYPE" value="REQUIRED_VALUE" 
+#                   port="OPTIONAL_PORT"/>
+#  
+#   </nmwgtopo:endPointPair>
+#
+#           <!-- OR -->
+#
+#   <nmwgtopo:interface xmlns:nmwgtopo="http://ggf.org/ns/nmwg/topology/2.0/">
+# 
+#     <nmwgtopo:ipAddress type='REQUIRED_TYPE'> TEXT </nmwgtopo:ipAddress>
+# 
+#     <nmwgtopo:hostName> TEXT </nmwgtopo:hostName>
+# 
+#     <nmwgtopo:ifName> TEXT </nmwgtopo:ifName>
+# 
+#     <nmwgtopo:ifDescription> TEXT </nmwgtopo:ifDescription>
+# 
+#     <nmwgtopo:ifAddress type='REQUIRED_TYPE'> TEXT </nmwgtopo:ifAddress>
+# 
+#     <nmwgtopo:ifHostName> TEXT </nmwgtopo:ifHostName>
+# 
+#     <nmwgtopo:ifIndex> TEXT </nmwgtopo:ifIndex>
+# 
+#     <nmwgtopo:type> TEXT </nmwgtopo:type>
+# 
+#     <nmwgtopo:direction> TEXT </nmwgtopo:direction>
+# 
+#     <nmwgtopo:authRealm> TEXT </nmwgtopo:authRealm>
+# 
+#     <nmwgtopo:classOfService> TEXT </nmwgtopo:classOfService>
+# 
+#     <nmwgtopo:capacity> TEXT </nmwgtopo:capacity>
+#  
+#   </nmwgtopo:interface>
+#  
+# </passiveband:subject>
+#
+# ##############################################################
+
+PassiveBandSubject =
+        element passiveband:subject {
+                Identifier &
+                MetadataIdentifierRef? &  
+                (  
+                        (                   
+                                EndpointPair |
+                                L4EndpointPair
+                        ) |
+                        (
+                                Interface |
+                                BaseInterface |
+                                L2Interface |
+                                L3Interface
+                        )
+                )?
+        }
+
+
+# ##############################################################
+# TBD
+#
+# Example: 
+# 
+# <passiveband:parameters id="REQUIRED_ID" 
+#                   xmlns:passiveband="http://ggf.org/ns/nmwg/tools/passiveband/2.0/">
+# 
+#   <nmwg:parameter name="REQUIRED_ENUM_NAME" value="OPTIONAL_VALUE"
+#                   xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#     <!-- ANY TEXT, (IF YOU DID NOT USE THE VALUE ATTRIBUTE) -->
+# 
+#   </nmwg:parameter>
+#  
+#   <!-- MORE PARAMETERS -->
+#   
+# </passiveband:parameters>
+# 
+# ##############################################################
+
+PassiveBandParameters =
+        element passiveband:parameters {
+                Identifier &        
+                (
+                        PassiveBandParameter |
+                        PassiveBandParameterST |
+                        PassiveBandParameterET                        
+                )*
+        }
+        
+PassiveBandParameter = 
+        element nmwg:parameter { 
+                attribute name { "flow_h_filter" | "flow_s_type" | 
+                                 "flow_s_thre" | "flow_p_filter" | 
+                                 "characteristics" | "protocols" |
+                                 "statistics" | "interval_sec" |
+                                 "interval_usec" } &
+                (
+                        attribute value { text } |
+                        text
+                )
+        }
+        
+PassiveBandParameterST = 
+        element nmwg:parameter { 
+                attribute name { "start_time" } &
+                StartTime
+        }        
+        
+PassiveBandParameterET = 
+        element nmwg:parameter { 
+                attribute name { "end_time" } &
+                EndTime
+        }        
+
+
+# ##############################################################
+# The data block is complex, and has the potential to contain
+# many things.  The data block can be used to return a metadata
+# block from a request, commonTime or datum elements, keys, 
+# or something that we have perhaps not defined as of yet.  
+#
+# Example: 
+# 
+# <nmwg:data id="REQUIRED_ID" 
+#            metadataIdRef="OPTIONAL_REFERENCE_ID" 
+#            xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <!-- OPTIONAL (MULTIPLE) METADATA -->
+# 
+#           <!-- OR -->
+#
+#   <!-- TBD OPTIONAL (MULTIPLE) COMMON TIME ELEMENTS AND 
+#        OPTIONAL (MULTIPLE) DATUM ELEMENTS-->
+# 
+#           <!-- OR -->
+#  
+#   <!-- TBD OPTIONAL (MULTIPLE) DATUM ELEMENTS -->
+# 
+#           <!-- OR -->
+#  
+#   <!-- OPTIONAL (MULTIPLE) KEY ELEMENTS -->
+# 
+#           <!-- OR -->
+# 
+#   <!-- ANY OPTIONAL (MULTIPLE) ELEMENT IN ANY NAMESPACE -->
+#   
+# </nmwg:data>
+# 
+# ##############################################################
+   
+PassiveBandData =
+        element nmwg:data {
+                Identifier &
+                MetadataIdentifierRef? &
+                (
+                        (
+                                Metadata* |
+                                PassiveBandMetadata*
+                        ) |
+                        (
+                                PassiveBandCommonTime+ & 
+                                (
+                                        PassiveBandDatum* |
+                                        ResultDatum*
+                                )
+                        ) |
+                        (
+                                PassiveBandDatum* |
+                                ResultDatum*
+                        ) |
+                        Key*
+                )
+        }
+
+
+# ##############################################################
+# CommonTime is used a a shortcut able to 'factor out' a frequently
+# occurring time range that a bunch of datum (or other) elements
+# might share, thus reducing complexity of XML representation.  
+# CommonTime is similar to the other NMWG time stamps (from 
+# nmtime.rnc) in its potential time representations.
+#
+# Example: 
+# 
+# <nmwg:commonTime type="REQUIRED_TYPE" value="OPTIONAL_VALUE"
+#                  duration="OPTIONAL_DURATION" 
+#                  inclusive="OPTIONAL_INCLUSIVE_FLAG"
+#                  xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <!-- TBD OPTIONAL START TIME ELEMENT (USE END TIME OR DURATION) -->
+#  
+#   <!-- TBD OPTIONAL END TIME ELEMENT (ONLY WITH START TIME) -->
+#  
+#   <!-- TBD OPTIONAL TIME VALUE ELEMENT (USE IF NO VALUE ATTRIBUTE) -->
+#  
+#   <!-- TBD OPTIONAL (MULTIPLE) DATUM ELEMENTS -->
+# 
+#   <!-- ANY OPTIONAL (MULTIPLE) ELEMENT IN ANY NAMESPACE -->
+# </nmwg:commonTime>
+# 
+# ##############################################################
+
+PassiveBandCommonTime = 
+        element nmwg:commonTime {
+                Type &
+                (
+                        TimeStamp |
+                        (
+                                StartTime & 
+                                (
+                                        EndTime | 
+                                        Duration 
+                                )
+                        )
+                ) &
+                (
+                        PassiveBandDatum* |
+                        ResultDatum*
+                )
+        } 
+
+
+# ##############################################################
+# TBD
+#
+# Example: 
+# 
+# <passiveband:datum band_used="OPTIONAL_USED_BANDWIDTH"
+#              band_avai="OPTIONAL_AVAILABLE_BANDWIDTH"
+#              band_achie="OPTIONAL_ACHEIVABLE_BANDWIDTH"
+#              timeType="OPTIONAL_TIME_TYPE"
+#              timeValue="OPTIONAL_TIME_VALUE"
+#              xmlns:nmwg="http://ggf.org/ns/nmwg/tools/passiveband/2.0/">
+# 
+#   <!-- TIME ELEMENT (IF ATTRIBUTES NOT USED) -->
+#  
+# </passiveband:datum>
+# 
+# ##############################################################
+
+PassiveBandDatum =
+        element passiveband:datum {
+                attribute bytes { xsd:string }? &  
+                attribute packets { xsd:string }? &
+                attribute mbps { xsd:string }? &
+                (
+                        (
+                                attribute timeType { xsd:string } & 
+                                attribute timeValue { xsd:string }
+                        ) |
+                        Time
+                )?                   
+        }
+

Added: NMWG/base/schema/PassiveLoss.rnc
===================================================================
--- NMWG/base/schema/PassiveLoss.rnc	                        (rev 0)
+++ NMWG/base/schema/PassiveLoss.rnc	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,309 @@
+# ##############################################################
+# 
+# File:         PassiveLoss.rnc - TBD
+# Version:      $Id: PassiveLoss.rnc 341 2008-04-24 21:52:11Z boote $
+# Purpose:      TBD
+# Reference:    http://books.xmlschemata.org/relaxng/page2.html
+#                         
+# ##############################################################
+
+
+# ##############################################################
+# Namespace definitions
+# ##############################################################
+namespace nmwg = "http://ggf.org/ns/nmwg/base/2.0/"
+namespace passiveloss = "http://ggf.org/ns/nmwg/tools/passiveloss/2.0/"
+namespace nmwgr = "http://ggf.org/ns/nmwg/result/2.0/"
+
+
+# ##############################################################
+# Include additional functionality from other files
+# ##############################################################
+include "nmtopo.rnc"
+include "nmtopo_ver3.rnc"
+include "result.rnc"
+include "nmbase.rnc" {
+        Metadata |= PassiveLossMetadata
+        Data |= PassiveLossData        
+} 
+
+
+# ##############################################################
+# Metadata is the 'data' that describes physical measurements. 
+# Metadata can be something such as a physical address, or 
+# a geographical location; any form of static, re-usable 
+# designation.  It is important to note that the subject
+# namespace and parameters namespace MUST match (or the parameters
+# can be a generic NMWG) or bad things will occur.
+#
+# Example: 
+# 
+# <nmwg:metadata id="REQUIRED_ID" 
+#                metadataIdRef="OPTIONAL_REFERENCE_ID"
+#                xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <!-- TBD OPTIONAL SUBJECT -->
+# 
+#   <!-- TBD OPTIONAL PARAMETERS -->
+#
+#   <!-- TBD OPTIONAL EVENTTYPE -->
+# 
+#   <!-- TBD OPTIONAL KEY -->
+#  
+#   <!-- ANY OPTIONAL (MULTIPLE) ELEMENT IN ANY NAMESPACE --> 
+#
+# </nmwg:metadata>
+# 
+# ##############################################################
+        
+PassiveLossMetadata = 
+        element nmwg:metadata {
+                Identifier &
+                MetadataIdentifierRef? &
+                PassiveLossMetadataContent
+        }
+          
+PassiveLossMetadataBlock = 
+        PassiveLossSubject? &
+        (
+                PassiveLossParameters |
+                Parameters
+        )?        
+        
+PassiveLossMetadataContent = 
+        (
+                PassiveLossMetadataBlock |
+                FilterMetadataBlock                
+        ) &        
+        EventType? &
+        Key?        
+
+
+# ##############################################################
+# TBD   
+#
+# Example: 
+# 
+# <passiveloss:subject id="REQUIRED_ID" 
+#               metadataIdRef="OPTIONAL_REFERENCE_ID"
+#               xmlns:passiveloss="http://ggf.org/ns/nmwg/tools/passiveloss/2.0/">
+# 
+#   <nmwgtopo:endPointPair xmlns:nmwgtopo="http://ggf.org/ns/nmwg/topology/2.0/">
+# 
+#     <nmwgtopo:src type="REQUIRED_TYPE" value="REQUIRED_VALUE" 
+#                   port="OPTIONAL_PORT"/>
+# 
+#     <nmwgtopo:dst type="REQUIRED_TYPE" value="REQUIRED_VALUE" 
+#                   port="OPTIONAL_PORT"/>
+#  
+#   </nmwgtopo:endPointPair>
+#  
+# </passiveloss:subject>
+#
+# ##############################################################
+
+PassiveLossSubject =
+        element passiveloss:subject {
+                Identifier &
+                MetadataIdentifierRef? &    
+                (                   
+                        EndpointPair |
+                        L4EndpointPair
+                )? &
+                element passiveloss:direction { xsd:string }?  
+        }
+
+
+# ##############################################################
+# TBD
+#
+# Example: 
+# 
+# <passiveloss:parameters id="REQUIRED_ID" 
+#                   xmlns:passiveloss="http://ggf.org/ns/nmwg/tools/passiveloss/2.0/">
+# 
+#   <nmwg:parameter name="REQUIRED_ENUM_NAME" value="OPTIONAL_VALUE"
+#                   xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#     <!-- ANY TEXT, (IF YOU DID NOT USE THE VALUE ATTRIBUTE) -->
+# 
+#   </nmwg:parameter>
+#  
+#   <!-- MORE PARAMETERS -->
+#   
+# </passiveloss:parameters>
+# 
+# ##############################################################
+
+PassiveLossParameters =
+        element passiveloss:parameters {
+                Identifier &        
+                (
+                        PassiveLossParameter |
+                        PassiveLossParameterST |
+                        PassiveLossParameterET                        
+                )+
+        }
+        
+PassiveLossParameter = 
+        element nmwg:parameter { 
+                attribute name { "flow_h_filter" | "flow_s_type" | "flow_s_thre" | 
+                                 "flow_p_filter" | "characteristics" | "granularity" } &
+                (
+                        attribute value { text } |
+                        text
+                )
+        }
+        
+PassiveLossParameterST = 
+        element nmwg:parameter { 
+                attribute name { "start_time" } &
+                StartTime
+        }        
+        
+PassiveLossParameterET = 
+        element nmwg:parameter { 
+                attribute name { "end_time" } &
+                EndTime
+        }        
+
+
+# ##############################################################
+# The data block is complex, and has the potential to contain
+# many things.  The data block can be used to return a metadata
+# block from a request, commonTime or datum elements, keys, 
+# or something that we have perhaps not defined as of yet.  
+#
+# Example: 
+# 
+# <nmwg:data id="REQUIRED_ID" 
+#            metadataIdRef="OPTIONAL_REFERENCE_ID" 
+#            xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <!-- OPTIONAL (MULTIPLE) METADATA -->
+# 
+#           <!-- OR -->
+#
+#   <!-- TBD OPTIONAL (MULTIPLE) COMMON TIME ELEMENTS AND 
+#        OPTIONAL (MULTIPLE) DATUM ELEMENTS-->
+# 
+#           <!-- OR -->
+#  
+#   <!-- TBD OPTIONAL (MULTIPLE) DATUM ELEMENTS -->
+# 
+#           <!-- OR -->
+#  
+#   <!-- OPTIONAL (MULTIPLE) KEY ELEMENTS -->
+# 
+#           <!-- OR -->
+# 
+#   <!-- ANY OPTIONAL (MULTIPLE) ELEMENT IN ANY NAMESPACE -->
+#   
+# </nmwg:data>
+# 
+# ##############################################################
+   
+PassiveLossData =
+        element nmwg:data {
+                Identifier &
+                MetadataIdentifierRef? &
+                (
+                        (
+                                Metadata* |
+                                PassiveLossMetadata*
+                        ) |
+                        (
+                                PassiveLossCommonTime+ & 
+                                (
+                                        PassiveLossDatum* |
+                                        ResultDatum*
+                                )
+                        ) |
+                        (
+                                PassiveLossDatum* |
+                                ResultDatum*
+                        ) |
+                        Key*
+                )
+        }
+
+
+# ##############################################################
+# CommonTime is used a a shortcut able to 'factor out' a frequently
+# occurring time range that a bunch of datum (or other) elements
+# might share, thus reducing complexity of XML representation.  
+# CommonTime is similar to the other NMWG time stamps (from 
+# nmtime.rnc) in its potential time representations.
+#
+# Example: 
+# 
+# <nmwg:commonTime type="REQUIRED_TYPE" value="OPTIONAL_VALUE"
+#                  duration="OPTIONAL_DURATION" 
+#                  inclusive="OPTIONAL_INCLUSIVE_FLAG"
+#                  xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <!-- TBD OPTIONAL START TIME ELEMENT (USE END TIME OR DURATION) -->
+#  
+#   <!-- TBD OPTIONAL END TIME ELEMENT (ONLY WITH START TIME) -->
+#  
+#   <!-- TBD OPTIONAL TIME VALUE ELEMENT (USE IF NO VALUE ATTRIBUTE) -->
+#  
+#   <!-- TBD OPTIONAL (MULTIPLE) DATUM ELEMENTS -->
+# 
+#   <!-- ANY OPTIONAL (MULTIPLE) ELEMENT IN ANY NAMESPACE -->
+# </nmwg:commonTime>
+# 
+# ##############################################################
+
+PassiveLossCommonTime = 
+        element nmwg:commonTime {
+                Type &
+                (
+                        TimeStamp |
+                        (
+                                StartTime & 
+                                (
+                                        EndTime | 
+                                        Duration 
+                                )
+                        )
+                ) &
+                (
+                        PassiveLossDatum* |
+                        ResultDatum*
+                )
+        } 
+
+
+# ##############################################################
+# TBD
+#
+# Example: 
+# 
+# <passiveloss:datum no_capt="OPTIONAL_NUMBER_CAPTURED"
+#              no_lost="OPTIONAL_NUMBER_LOST"
+#              loss_rate="OPTIONAL_LOSS_RATE"
+#              timeType="OPTIONAL_TIME_TYPE"
+#              timeValue="OPTIONAL_TIME_VALUE"
+#              xmlns:nmwg="http://ggf.org/ns/nmwg/tools/passiveloss/2.0/">
+# 
+#   <!-- TIME ELEMENT (IF ATTRIBUTES NOT USED) -->
+#  
+# </passiveloss:datum>
+# 
+# ##############################################################
+
+PassiveLossDatum =
+        element passiveloss:datum {
+                attribute no_capt { xsd:string }? &  
+                attribute no_lost { xsd:string }? &
+                attribute loss_rate { xsd:string }? &
+                (
+                        (
+                                attribute timeType { xsd:string } & 
+                                attribute timeValue { xsd:string }
+                        ) |
+                        Time
+                )?                   
+        }
+

Added: NMWG/base/schema/PassiveTracefile.rnc
===================================================================
--- NMWG/base/schema/PassiveTracefile.rnc	                        (rev 0)
+++ NMWG/base/schema/PassiveTracefile.rnc	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,351 @@
+# ##############################################################
+# 
+# File:         PassiveTracefile.rnc - TBD
+# Version:      $Id: PassiveTracefile.rnc 341 2008-04-24 21:52:11Z boote $
+# Purpose:      TBD
+# Reference:    http://books.xmlschemata.org/relaxng/page2.html
+#                         
+# ##############################################################
+
+
+# ##############################################################
+# Namespace definitions
+# ##############################################################
+namespace nmwg = "http://ggf.org/ns/nmwg/base/2.0/"
+namespace passivetracefile = "http://ggf.org/ns/nmwg/tools/passivetracefile/2.0/"
+namespace nmwgr = "http://ggf.org/ns/nmwg/result/2.0/"
+
+
+# ##############################################################
+# Include additional functionality from other files
+# ##############################################################
+include "nmtopo.rnc"
+include "nmtopo_ver3.rnc"
+include "result.rnc"
+include "nmbase.rnc" {
+        Metadata |= PassiveTracefileMetadata
+        Data |= PassiveTracefileData        
+} 
+
+
+# ##############################################################
+# Metadata is the 'data' that describes physical measurements. 
+# Metadata can be something such as a physical address, or 
+# a geographical location; any form of static, re-usable 
+# designation.  It is important to note that the subject
+# namespace and parameters namespace MUST match (or the parameters
+# can be a generic NMWG) or bad things will occur.
+#
+# Example: 
+# 
+# <nmwg:metadata id="REQUIRED_ID" 
+#                metadataIdRef="OPTIONAL_REFERENCE_ID"
+#                xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <!-- TBD OPTIONAL SUBJECT -->
+# 
+#   <!-- TBD OPTIONAL PARAMETERS -->
+#
+#   <!-- TBD OPTIONAL EVENTTYPE -->
+# 
+#   <!-- TBD OPTIONAL KEY -->
+#  
+#   <!-- ANY OPTIONAL (MULTIPLE) ELEMENT IN ANY NAMESPACE --> 
+#
+# </nmwg:metadata>
+# 
+# ##############################################################
+        
+PassiveTracefileMetadata = 
+        element nmwg:metadata {
+                Identifier &
+                MetadataIdentifierRef? &
+                PassiveTracefileMetadataContent
+        }
+          
+PassiveTracefileMetadataBlock = 
+        PassiveTracefileSubject? &
+        (
+                PassiveTracefileParameters |
+                Parameters
+        )?        
+        
+PassiveTracefileMetadataContent = 
+        (
+                PassiveTracefileMetadataBlock |
+                FilterMetadataBlock                
+        ) &        
+        EventType? &
+        Key?        
+
+
+# ##############################################################
+# TBD   
+#
+# Example: 
+# 
+# <passivetracefile:subject id="REQUIRED_ID" 
+#               metadataIdRef="OPTIONAL_REFERENCE_ID"
+#               xmlns:passivetracefile="http://ggf.org/ns/nmwg/tools/passivetracefile/2.0/">
+# 
+#   <nmwgtopo:endPoint type="REQUIRED_TYPE" value="REQUIRED_VALUE" 
+#                 port="OPTIONAL_PORT"/>
+#
+#           <!-- OR -->
+#
+#   <nmwgtopo:endPointPair xmlns:nmwgtopo="http://ggf.org/ns/nmwg/topology/2.0/">
+# 
+#     <nmwgtopo:src type="REQUIRED_TYPE" value="REQUIRED_VALUE" 
+#                   port="OPTIONAL_PORT"/>
+# 
+#     <nmwgtopo:dst type="REQUIRED_TYPE" value="REQUIRED_VALUE" 
+#                   port="OPTIONAL_PORT"/>
+#  
+#   </nmwgtopo:endPointPair>
+#
+#           <!-- OR -->
+#
+#   <nmwgtopo:interface xmlns:nmwgtopo="http://ggf.org/ns/nmwg/topology/2.0/">
+# 
+#     <nmwgtopo:ipAddress type='REQUIRED_TYPE'> TEXT </nmwgtopo:ipAddress>
+# 
+#     <nmwgtopo:hostName> TEXT </nmwgtopo:hostName>
+# 
+#     <nmwgtopo:ifName> TEXT </nmwgtopo:ifName>
+# 
+#     <nmwgtopo:ifDescription> TEXT </nmwgtopo:ifDescription>
+# 
+#     <nmwgtopo:ifAddress type='REQUIRED_TYPE'> TEXT </nmwgtopo:ifAddress>
+# 
+#     <nmwgtopo:ifHostName> TEXT </nmwgtopo:ifHostName>
+# 
+#     <nmwgtopo:ifIndex> TEXT </nmwgtopo:ifIndex>
+# 
+#     <nmwgtopo:type> TEXT </nmwgtopo:type>
+# 
+#     <nmwgtopo:direction> TEXT </nmwgtopo:direction>
+# 
+#     <nmwgtopo:authRealm> TEXT </nmwgtopo:authRealm>
+# 
+#     <nmwgtopo:classOfService> TEXT </nmwgtopo:classOfService>
+# 
+#     <nmwgtopo:capacity> TEXT </nmwgtopo:capacity>
+#  
+#   </nmwgtopo:interface>
+#  
+# </passivetracefile:subject>
+#
+# ##############################################################
+
+PassiveTracefileSubject =
+        element passivetracefile:subject {
+                Identifier &
+                MetadataIdentifierRef? &    
+                (  
+                        (                   
+                                Endpoint |
+                                L4Endpoint
+                        ) |
+                        (                   
+                                EndpointPair |
+                                L4EndpointPair
+                        ) |
+                        (
+                                Interface |
+                                BaseInterface |
+                                L2Interface |
+                                L3Interface
+                        )
+                )?
+        }
+
+
+# ##############################################################
+# TBD
+#
+# Example: 
+# 
+# <passivetracefile:parameters id="REQUIRED_ID" 
+#                   xmlns:passivetracefile="http://ggf.org/ns/nmwg/tools/passivetracefile/2.0/">
+# 
+#   <nmwg:parameter name="REQUIRED_ENUM_NAME" value="OPTIONAL_VALUE"
+#                   xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#     <!-- ANY TEXT, (IF YOU DID NOT USE THE VALUE ATTRIBUTE) -->
+# 
+#   </nmwg:parameter>
+#  
+#   <!-- MORE PARAMETERS -->
+#   
+# </passivetracefile:parameters>
+# 
+# ##############################################################
+
+PassiveTracefileParameters =
+        element passivetracefile:parameters {
+                Identifier &        
+                (
+                        PassiveTracefileParameter |
+                        PassiveTracefileParameterST |
+                        PassiveTracefileParameterET                        
+                )+
+        }
+        
+PassiveTracefileParameter = 
+        element nmwg:parameter { 
+                attribute name { "flow_h_filter" | "flow_s_type" | "flow_s_thre" | 
+                                 "flow_p_filter" | "characteristics" | "granularity" } &
+                (
+                        attribute value { text } |
+                        text
+                )
+        }
+        
+PassiveTracefileParameterST = 
+        element nmwg:parameter { 
+                attribute name { "start_time" } &
+                StartTime
+        }        
+        
+PassiveTracefileParameterET = 
+        element nmwg:parameter { 
+                attribute name { "end_time" } &
+                EndTime
+        }        
+
+
+# ##############################################################
+# The data block is complex, and has the potential to contain
+# many things.  The data block can be used to return a metadata
+# block from a request, commonTime or datum elements, keys, 
+# or something that we have perhaps not defined as of yet.  
+#
+# Example: 
+# 
+# <nmwg:data id="REQUIRED_ID" 
+#            metadataIdRef="OPTIONAL_REFERENCE_ID" 
+#            xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <!-- OPTIONAL (MULTIPLE) METADATA -->
+# 
+#           <!-- OR -->
+#
+#   <!-- TBD OPTIONAL (MULTIPLE) COMMON TIME ELEMENTS AND 
+#        OPTIONAL (MULTIPLE) DATUM ELEMENTS-->
+# 
+#           <!-- OR -->
+#  
+#   <!-- TBD OPTIONAL (MULTIPLE) DATUM ELEMENTS -->
+# 
+#           <!-- OR -->
+#  
+#   <!-- OPTIONAL (MULTIPLE) KEY ELEMENTS -->
+# 
+#           <!-- OR -->
+# 
+#   <!-- ANY OPTIONAL (MULTIPLE) ELEMENT IN ANY NAMESPACE -->
+#   
+# </nmwg:data>
+# 
+# ##############################################################
+   
+PassiveTracefileData =
+        element nmwg:data {
+                Identifier &
+                MetadataIdentifierRef? &
+                (
+                        (
+                                Metadata* |
+                                PassiveTracefileMetadata*
+                        ) |
+                        (
+                                PassiveTracefileCommonTime+ & 
+                                (
+                                        PassiveTracefileDatum* |
+                                        ResultDatum*
+                                )
+                        ) |
+                        (
+                                PassiveTracefileDatum* |
+                                ResultDatum*
+                        ) |
+                        Key*
+                )
+        }
+
+
+# ##############################################################
+# CommonTime is used a a shortcut able to 'factor out' a frequently
+# occurring time range that a bunch of datum (or other) elements
+# might share, thus reducing complexity of XML representation.  
+# CommonTime is similar to the other NMWG time stamps (from 
+# nmtime.rnc) in its potential time representations.
+#
+# Example: 
+# 
+# <nmwg:commonTime type="REQUIRED_TYPE" value="OPTIONAL_VALUE"
+#                  duration="OPTIONAL_DURATION" 
+#                  inclusive="OPTIONAL_INCLUSIVE_FLAG"
+#                  xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <!-- TBD OPTIONAL START TIME ELEMENT (USE END TIME OR DURATION) -->
+#  
+#   <!-- TBD OPTIONAL END TIME ELEMENT (ONLY WITH START TIME) -->
+#  
+#   <!-- TBD OPTIONAL TIME VALUE ELEMENT (USE IF NO VALUE ATTRIBUTE) -->
+#  
+#   <!-- TBD OPTIONAL (MULTIPLE) DATUM ELEMENTS -->
+# 
+#   <!-- ANY OPTIONAL (MULTIPLE) ELEMENT IN ANY NAMESPACE -->
+# </nmwg:commonTime>
+# 
+# ##############################################################
+
+PassiveTracefileCommonTime = 
+        element nmwg:commonTime {
+                Type &
+                (
+                        TimeStamp |
+                        (
+                                StartTime & 
+                                (
+                                        EndTime | 
+                                        Duration 
+                                )
+                        )
+                ) &
+                (
+                        PassiveTracefileDatum* |
+                        ResultDatum*
+                )
+        } 
+
+
+# ##############################################################
+# TBD
+#
+# Example: 
+# 
+# <passivetracefile:datum filename="OPTIONAL_FILENAME"
+#              timeType="OPTIONAL_TIME_TYPE"
+#              timeValue="OPTIONAL_TIME_VALUE"
+#              xmlns:nmwg="http://ggf.org/ns/nmwg/tools/passivetracefile/2.0/">
+# 
+#   <!-- TIME ELEMENT (IF ATTRIBUTES NOT USED) -->
+#  
+# </passivetracefile:datum>
+# 
+# ##############################################################
+
+PassiveTracefileDatum =
+        element passivetracefile:datum {
+                attribute filename { xsd:string }? &  
+                (
+                        (
+                                attribute timeType { xsd:string } & 
+                                attribute timeValue { xsd:string }
+                        ) |
+                        Time
+                 )?                      
+        }
+

Added: NMWG/base/schema/XML_Schema_v03_final.rnc
===================================================================
--- NMWG/base/schema/XML_Schema_v03_final.rnc	                        (rev 0)
+++ NMWG/base/schema/XML_Schema_v03_final.rnc	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,186 @@
+# ##############################################################
+# 
+# File:		XML_Schema_v03_final.rnc - Schema to describe 
+# 			topological features for DFN.
+# Version:	$Id: XML_Schema_v03_final.rnc 341 2008-04-24 21:52:11Z boote $
+# Purpose:	This file lays out the requirements for the DFN
+#			schema.
+# Reference:	http://books.xmlschemata.org/relaxng/page2.html
+#             
+# ##############################################################
+
+default namespace nmwg = "http://ggf.org/ns/nmwg/base/2.0/"
+namespace nmtm = "http://ggf.org/ns/nmwg/time/2.0/"
+namespace nmwgtopo3 = "http://ggf.org/ns/nmwg/topology/base/3.0/"
+namespace nmtl2 = "http://ggf.org/ns/nmwg/topology/l2/3.0/"
+namespace nmtl3 = "http://ggf.org/ns/nmwg/topology/l3/3.0/"    
+namespace nmtl4 = "http://ggf.org/ns/nmwg/topology/l4/3.0/"  
+namespace ifevt = "http://ggf.org/ns/nmwg/event/status/base/2.0/" 
+
+# ####################################
+#
+# The nmwg:store is the first element
+#
+# ####################################
+
+start = element nmwg:store { 
+  StoreContent 
+}
+
+# ####################################
+#
+# Inside of the store, we have a set type
+# a single set of parameters, and then 
+# multiple metadata and data blocks.
+#
+# ####################################
+
+StoreContent = 
+  Identifier? &
+  attribute type { "E2E_Link_status_information" } &
+  StoreParameters &
+  StoreMetadata* &
+  StoreData*
+
+# ####################################
+#
+# The parameters are well known.
+#
+# ####################################
+    
+StoreParameters = 
+  element nmwg:parameters {
+    attribute id { "storeId" } &
+    element nmwg:parameter {
+      attribute name { "DomainName" } &
+      xsd:string 
+    }
+  }
+
+# ####################################
+#
+# The metadata consists of a single subject
+# that contains either a node, or a link
+# structure.
+#
+# ####################################
+
+StoreMetadata = 
+  element nmwg:metadata {
+    Identifier &
+  MetadataIdentifierRef? &
+    element nmwg:subject {
+      Identifier &
+      MetadataIdentifierRef? &
+      (
+        StoreNode |
+        StoreLink
+      )
+    }
+  }
+
+# ####################################
+#
+# The node is a lesser version of the 
+# nmwg version 3 topology node.
+#
+# ####################################
+
+StoreNode = 
+  element nmwgtopo3:node { 
+    Identifier? &
+    NodeIdRef? &
+    StoreRole? &
+    element nmwgtopo3:name {
+      attribute type { "logical" } &
+      xsd:string 
+    } &    
+    element nmwgtopo3:type { xsd:string } &
+    element nmwgtopo3:country { xsd:string } &
+    element nmwgtopo3:city { xsd:string } &
+    element nmwgtopo3:institution { xsd:string } &    
+    element nmwgtopo3:latitude { xsd:string } &
+    element nmwgtopo3:longitude { xsd:string }
+  }
+
+# ####################################
+#
+# The link is a lesser version of the 
+# nmwg version 3, layer 2 link.
+#
+# ####################################
+
+StoreLink = 
+  element nmtl2:link {
+    Identifier? &
+    LinkIdRef? &    
+    element nmtl2:type { "NREN_Link" | "ID_Link" | "ID_LinkPartialInfo" } &    
+      element nmtl2:name { 
+      attribute type { "logical" }? &
+      xsd:string
+    } &
+      element nmtl2:globalName { 
+      attribute type { "logical" }? &
+      xsd:string
+    } &
+    (
+      element nmwgtopo3:node {    
+        NodeIdRef &        
+        (
+          attribute role { "EndPoint" | "DemarcPoint" } |                
+          element nmwgtopo3:role { "EndPoint" | "DemarcPoint" }
+        )
+      },
+      element nmwgtopo3:node {
+        NodeIdRef &        
+        (
+          attribute role { "EndPoint" | "DemarcPoint" } |                
+          element nmwgtopo3:role { "EndPoint" | "DemarcPoint" }
+        )
+      }
+    )
+  }
+
+# ####################################
+#
+# The data consists of information wrapped
+# in result namespace datums.
+#
+# ####################################
+
+StoreData =     
+  element nmwg:data {
+    Identifier &
+    MetadataIdentifierRef? &
+    element ifevt:datum {
+      attribute timeType { "ISO" } &
+      attribute timeValue { xsd:string } &
+      element ifevt:stateOper { "Up" | "Degraded" | "Down" | "Unknown" } &
+      element ifevt:stateAdmin { "NormalOperation" | "Maintenance" | 
+                           "TroubleShooting" | "UnderRepair" | "Unknown" }
+    }?
+  }    
+    
+# ####################################
+#
+# Misc. elements
+#
+# ####################################    
+    
+Identifier =
+  attribute id { xsd:string }    
+
+MetadataIdentifierRef =
+  attribute metadataIdRef { xsd:string }
+
+LinkIdRef =
+  attribute linkIdRef { xsd:string }
+
+NodeIdRef =
+  attribute nodeIdRef { xsd:string }
+
+StoreRole = 
+  (
+    attribute role { xsd:string } |
+    element nmwgtopo3:role { xsd:string }
+  )

Added: NMWG/base/schema/abw.rnc
===================================================================
--- NMWG/base/schema/abw.rnc	                        (rev 0)
+++ NMWG/base/schema/abw.rnc	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,348 @@
+# ##############################################################
+# 
+# File:         abw.rnc - TBD
+# Version:      $Id: abw.rnc 341 2008-04-24 21:52:11Z boote $
+# Purpose:      TBD
+# Reference:    http://books.xmlschemata.org/relaxng/page2.html
+#                         
+# ##############################################################
+
+
+# ##############################################################
+# Namespace definitions
+# ##############################################################
+namespace nmwg = "http://ggf.org/ns/nmwg/base/2.0/"
+namespace abw = "http://ggf.org/ns/nmwg/tools/abw/2.0/"
+namespace nmwgr = "http://ggf.org/ns/nmwg/result/2.0/"
+
+
+# ##############################################################
+# Include additional functionality from other files
+# ##############################################################
+include "nmtopo.rnc"
+include "nmtopo_ver3.rnc"
+include "result.rnc"
+include "nmbase.rnc" {
+        Metadata |= AbwMetadata
+        Data |= AbwData        
+} 
+
+
+# ##############################################################
+# Metadata is the 'data' that describes physical measurements. 
+# Metadata can be something such as a physical address, or 
+# a geographical location; any form of static, re-usable 
+# designation.  It is important to note that the subject
+# namespace and parameters namespace MUST match (or the parameters
+# can be a generic NMWG) or bad things will occur.
+#
+# Example: 
+# 
+# <nmwg:metadata id="REQUIRED_ID" 
+#                metadataIdRef="OPTIONAL_REFERENCE_ID"
+#                xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <!-- TBD OPTIONAL SUBJECT -->
+# 
+#   <!-- TBD OPTIONAL PARAMETERS -->
+#
+#   <!-- TBD OPTIONAL EVENTTYPE -->
+# 
+#   <!-- TBD OPTIONAL KEY -->
+#  
+#   <!-- ANY OPTIONAL (MULTIPLE) ELEMENT IN ANY NAMESPACE --> 
+#
+# </nmwg:metadata>
+# 
+# ##############################################################
+        
+AbwMetadata = 
+        element nmwg:metadata {
+                Identifier &
+                MetadataIdentifierRef? &
+                AbwMetadataContent
+        }
+          
+AbwMetadataBlock = 
+        AbwSubject? &
+        (
+                AbwParameters |
+                Parameters
+        )?
+        
+AbwMetadataContent = 
+        (
+                AbwMetadataBlock |
+                FilterMetadataBlock                
+        ) &        
+        EventType? &
+        Key?        
+
+
+# ##############################################################
+# TBD   
+#
+# Example: 
+# 
+# <abw:subject id="REQUIRED_ID" 
+#               metadataIdRef="OPTIONAL_REFERENCE_ID"
+#               xmlns:abw="http://ggf.org/ns/nmwg/tools/abw/2.0/">
+# 
+#   <nmwgtopo:endPointPair xmlns:nmwgtopo="http://ggf.org/ns/nmwg/topology/2.0/">
+# 
+#     <nmwgtopo:src type="REQUIRED_TYPE" value="REQUIRED_VALUE" 
+#                   port="OPTIONAL_PORT"/>
+# 
+#     <nmwgtopo:dst type="REQUIRED_TYPE" value="REQUIRED_VALUE" 
+#                   port="OPTIONAL_PORT"/>
+#  
+#   </nmwgtopo:endPointPair>
+#
+#           <!-- OR -->
+#
+#   <nmwgtopo:interface xmlns:nmwgtopo="http://ggf.org/ns/nmwg/topology/2.0/">
+# 
+#     <nmwgtopo:ipAddress type='REQUIRED_TYPE'> TEXT </nmwgtopo:ipAddress>
+# 
+#     <nmwgtopo:hostName> TEXT </nmwgtopo:hostName>
+# 
+#     <nmwgtopo:ifName> TEXT </nmwgtopo:ifName>
+# 
+#     <nmwgtopo:ifDescription> TEXT </nmwgtopo:ifDescription>
+# 
+#     <nmwgtopo:ifAddress type='REQUIRED_TYPE'> TEXT </nmwgtopo:ifAddress>
+# 
+#     <nmwgtopo:ifHostName> TEXT </nmwgtopo:ifHostName>
+# 
+#     <nmwgtopo:ifIndex> TEXT </nmwgtopo:ifIndex>
+# 
+#     <nmwgtopo:type> TEXT </nmwgtopo:type>
+# 
+#     <nmwgtopo:direction> TEXT </nmwgtopo:direction>
+# 
+#     <nmwgtopo:authRealm> TEXT </nmwgtopo:authRealm>
+# 
+#     <nmwgtopo:classOfService> TEXT </nmwgtopo:classOfService>
+# 
+#     <nmwgtopo:capacity> TEXT </nmwgtopo:capacity>
+#  
+#   </nmwgtopo:interface>
+#  
+# </abw:subject>
+#
+# ##############################################################
+
+AbwSubject =
+        element abw:subject {
+                Identifier &
+                MetadataIdentifierRef? &  
+                (  
+                        (                   
+                                EndpointPair |
+                                L4EndpointPair
+                        ) |
+                        (
+                                Interface |
+                                BaseInterface |
+                                L2Interface |
+                                L3Interface
+                        )
+                )?
+        }
+
+
+# ##############################################################
+# TBD
+#
+# Example: 
+# 
+# <abw:parameters id="REQUIRED_ID" 
+#                   xmlns:abw="http://ggf.org/ns/nmwg/tools/abw/2.0/">
+# 
+#   <nmwg:parameter name="REQUIRED_ENUM_NAME" value="OPTIONAL_VALUE"
+#                   xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#     <!-- ANY TEXT, (IF YOU DID NOT USE THE VALUE ATTRIBUTE) -->
+# 
+#   </nmwg:parameter>
+#  
+#   <!-- MORE PARAMETERS -->
+#   
+# </abw:parameters>
+# 
+# ##############################################################
+
+AbwParameters =
+        element abw:parameters {
+                Identifier &        
+                (
+                        AbwParameter |
+                        AbwParameterST |
+                        AbwParameterET                        
+                )+
+        }
+        
+AbwParameter = 
+        element nmwg:parameter { 
+                attribute name { "flow_h_filter" | "flow_s_type" | "flow_s_thre" | 
+                                 "flow_p_filter" | "characteristics" | 
+                                 "protocols" | "statistics" | "interval_sec" |
+                                 "interval_usec" } &
+                (
+                        attribute value { text } |
+                        text
+                )
+        }
+        
+AbwParameterST = 
+        element nmwg:parameter { 
+                attribute name { "start_time" } &
+                StartTime
+        }        
+        
+AbwParameterET = 
+        element nmwg:parameter { 
+                attribute name { "end_time" } &
+                EndTime
+        }        
+
+
+# ##############################################################
+# The data block is complex, and has the potential to contain
+# many things.  The data block can be used to return a metadata
+# block from a request, commonTime or datum elements, keys, 
+# or something that we have perhaps not defined as of yet.  
+#
+# Example: 
+# 
+# <nmwg:data id="REQUIRED_ID" 
+#            metadataIdRef="OPTIONAL_REFERENCE_ID" 
+#            xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <!-- OPTIONAL (MULTIPLE) METADATA -->
+# 
+#           <!-- OR -->
+#
+#   <!-- TBD OPTIONAL (MULTIPLE) COMMON TIME ELEMENTS AND 
+#        OPTIONAL (MULTIPLE) DATUM ELEMENTS-->
+# 
+#           <!-- OR -->
+#  
+#   <!-- TBD OPTIONAL (MULTIPLE) DATUM ELEMENTS -->
+# 
+#           <!-- OR -->
+#  
+#   <!-- OPTIONAL (MULTIPLE) KEY ELEMENTS -->
+# 
+#           <!-- OR -->
+# 
+#   <!-- ANY OPTIONAL (MULTIPLE) ELEMENT IN ANY NAMESPACE -->
+#   
+# </nmwg:data>
+# 
+# ##############################################################
+   
+AbwData =
+        element nmwg:data {
+                Identifier &
+                MetadataIdentifierRef? &
+                (
+                        (
+                                Metadata* |
+                                AbwMetadata*
+                        ) |
+                        (
+                                AbwCommonTime+ & 
+                                (
+                                        AbwDatum* |
+                                        ResultDatum*
+                                )
+                        ) |
+                        (
+                                AbwDatum* |
+                                ResultDatum*
+                        ) |
+                        Key*
+                )
+        }
+
+
+# ##############################################################
+# CommonTime is used a a shortcut able to 'factor out' a frequently
+# occurring time range that a bunch of datum (or other) elements
+# might share, thus reducing complexity of XML representation.  
+# CommonTime is similar to the other NMWG time stamps (from 
+# nmtime.rnc) in its potential time representations.
+#
+# Example: 
+# 
+# <nmwg:commonTime type="REQUIRED_TYPE" value="OPTIONAL_VALUE"
+#                  duration="OPTIONAL_DURATION" 
+#                  inclusive="OPTIONAL_INCLUSIVE_FLAG"
+#                  xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <!-- TBD OPTIONAL START TIME ELEMENT (USE END TIME OR DURATION) -->
+#  
+#   <!-- TBD OPTIONAL END TIME ELEMENT (ONLY WITH START TIME) -->
+#  
+#   <!-- TBD OPTIONAL TIME VALUE ELEMENT (USE IF NO VALUE ATTRIBUTE) -->
+#  
+#   <!-- TBD OPTIONAL (MULTIPLE) DATUM ELEMENTS -->
+# 
+#   <!-- ANY OPTIONAL (MULTIPLE) ELEMENT IN ANY NAMESPACE -->
+# </nmwg:commonTime>
+# 
+# ##############################################################
+
+AbwCommonTime = 
+        element nmwg:commonTime {
+                Type &
+                (
+                        TimeStamp |
+                        (
+                                StartTime & 
+                                (
+                                        EndTime | 
+                                        Duration 
+                                )
+                        )
+                ) &
+                (
+                        AbwDatum* |
+                        ResultDatum*
+                )
+        } 
+
+
+# ##############################################################
+# TBD
+#
+# Example: 
+# 
+# <abw:datum bytes="OPTIONAL_NUMBER_OF_BYTES"
+#            packets="OPTIONAL_NUMBER_OF_PACKETS"
+#            mbps="OPTIONAL_MBPS"
+#            timeType="OPTIONAL_TIME_TYPE"
+#            timeValue="OPTIONAL_TIME_VALUE"
+#            xmlns:nmwg="http://ggf.org/ns/nmwg/tools/abw/2.0/">
+# 
+#   <!-- TIME ELEMENT (IF ATTRIBUTES NOT USED) -->
+#  
+# </abw:datum>
+# 
+# ##############################################################
+
+AbwDatum =
+        element abw:datum {
+                attribute bytes { xsd:string }? &  
+                attribute packets { xsd:string }? &
+                attribute mbps { xsd:string }? &
+                (
+                        (
+                                attribute timeType { xsd:string } & 
+                                attribute timeValue { xsd:string }
+                        ) |
+                        Time
+                )?                   
+        }
+

Added: NMWG/base/schema/bwctl.rnc
===================================================================
--- NMWG/base/schema/bwctl.rnc	                        (rev 0)
+++ NMWG/base/schema/bwctl.rnc	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,297 @@
+# ##############################################################
+# 
+# File:         bwctl.rnc - 
+# Version:      $Id: bwctl.rnc 341 2008-04-24 21:52:11Z boote $
+# Purpose:      
+# Reference:    http://books.xmlschemata.org/relaxng/page2.html
+# 
+# ##############################################################
+
+                
+# ##############################################################
+# Namespace definitions
+# ##############################################################
+namespace nmwg = "http://ggf.org/ns/nmwg/base/2.0/"
+namespace bwctl = "http://ggf.org/ns/nmwg/tools/bwctl/2.0/"
+namespace nmwgtopo3 = "http://ggf.org/ns/nmwg/topology/base/3.0/"
+namespace nmwgt = "http://ggf.org/ns/nmwg/topology/2.0/"
+
+
+# ##############################################################
+# Include additional functionality from other files
+# ##############################################################
+include "nmtopo.rnc"
+include "nmtopo_ver3.rnc"
+include "result.rnc"
+include "nmbase.rnc" {
+        Metadata |= BwctlMetadata
+        Data |= BwctlData
+}
+
+
+# ##############################################################
+# Metadata is the 'data' that describes physical measurements. 
+# Metadata can be something such as a physical address, or 
+# a geographical location; any form of static, re-usable 
+# designation.  It is important to note that the subject
+# namespace and parameters namespace MUST match (or the parameters
+# can be a generic NMWG) or bad things will occur.
+#
+# Example: 
+# 
+# <nmwg:metadata id="REQUIRED_ID" 
+#                metadataIdRef="OPTIONAL_REFERENCE_ID"
+#                xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <!-- TBD OPTIONAL SUBJECT -->
+# 
+#   <!-- TBD OPTIONAL PARAMETERS -->
+#
+#   <!-- TBD OPTIONAL EVENTTYPE -->
+# 
+#   <!-- TBD OPTIONAL KEY -->
+#  
+#   <!-- ANY OPTIONAL (MULTIPLE) ELEMENT IN ANY NAMESPACE --> 
+#
+# </nmwg:metadata>
+# 
+# ##############################################################
+BwctlMetadata =
+        element nmwg:metadata {
+                Identifier &
+                MetadataIdentifierRef? &
+                (
+                        BwctlMetadataContent |
+                        anyElement*
+                )
+        }
+
+BwctlMetadataBlock =
+        BwctlSubject? &
+        (
+                BwctlParameters |
+                Parameters
+        )?
+
+BwctlMetadataContent =
+        (
+                BwctlMetadataBlock
+        ) &
+        EventType? &
+        Key?
+
+
+# ##############################################################
+# Redefined bwctl subject allows only an endPoint or endPointPair, 
+# and the two id attributes.    
+#
+# Example: 
+# 
+# <bwctl:subject id="REQUIRED_ID" 
+#               metadataIdRef="OPTIONAL_REFERENCE_ID"
+#               xmlns:nmwg="http://ggf.org/ns/nmwg/tools/bwctl/2.0/">
+# 
+#   <nmwgtopo:endPointPair xmlns:nmwgtopo="http://ggf.org/ns/nmwg/topology/2.0/">
+# 
+#     <nmwgtopo:src type="REQUIRED_TYPE" value="REQUIRED_VALUE" 
+#                   port="OPTIONAL_PORT"/>
+# 
+#     <nmwgtopo:dst type="REQUIRED_TYPE" value="REQUIRED_VALUE" 
+#                   port="OPTIONAL_PORT"/>
+#  
+#   </nmwgtopo:endPointPair>
+#  
+#  
+#   <!-- OR -->
+#  
+#  
+#   <nmtl4:endPointPair xmlns:nmtl4="http://ggf.org/ns/nmwg/topology/l4/3.0/">
+#  
+#     <nmtl4:endPoint role="OPTIONAL_ROLE" port="OPTIONAL_PORT" 
+#                     protocol="OPTIONAL_PROTOCOL">
+#  
+#       <nmtl4:address value="REQUIRED_VALUE" type="REQUIRED_TYPE"/>
+#  
+#     </nmtl4:endPoint>
+#  
+#     <nmtl4:endPoint role="OPTIONAL_ROLE" port="OPTIONAL_PORT" 
+#                     protocol="OPTIONAL_PROTOCOL">
+#  
+#       <nmtl4:address value="REQUIRED_VALUE" type="REQUIRED_TYPE"/>
+#  
+#     </nmtl4:endPoint>
+#  
+#   </nmtl4:endPointPair>
+#  
+#
+#   <!-- OR -->  
+# 
+# 
+#   <nmwgtopo:endPoint port="OPTIONAL_PORT" 
+#                      value="REQUIRED_VALUE" 
+#                      type="REQUIRED_TYPE"
+#                      xmlns:nmwgtopo="http://ggf.org/ns/nmwg/topology/2.0/"/>
+#
+#
+#   <!-- OR -->
+#  
+#  
+#   <nmtl4:endPoint role="OPTIONAL_ROLE" port="OPTIONAL_PORT" 
+#                   protocol="OPTIONAL_PROTOCOL" 
+#                   xmlns:nmtl4="http://ggf.org/ns/nmwg/topology/l4/3.0/">
+#  
+#     <nmtl4:address value="REQUIRED_VALUE" type="REQUIRED_TYPE"/>
+#  
+#   </nmtl4:endPoint>
+#  
+# </ping:subject>
+#
+# ##############################################################
+BwctlSubject =
+        element bwctl:subject {
+                Identifier &
+                MetadataIdentifierRef? &
+                (
+                        (
+                                EndpointPair |
+                                L4EndpointPair
+                        ) |
+                        (
+                                Endpoint |
+                                L4Endpoint
+                        )                        
+                )
+        }
+
+
+# ##############################################################
+# This is simply the regular method of doing parameters with an
+# enumeration to limit what 'names' are accepted and an outer
+# bwctl: namespace for the parameters.
+#
+# Example: 
+# 
+# <ping:parameters id="REQUIRED_ID" 
+#                   xmlns:nmwg="http://ggf.org/ns/nmwg/tools/bwctl/2.0/">
+# 
+#   <nmwg:parameter name="REQUIRED_ENUM_NAME" value="OPTIONAL_VALUE"
+#                   xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#     <!-- ANY TEXT, (IF YOU DID NOT USE THE VALUE ATTRIBUTE) -->
+# 
+#   </nmwg:parameter>
+#  
+#   <!-- MORE PARAMETERS -->
+#   
+# </ping:parameters>
+# 
+# ##############################################################
+BwctlParameters =
+        element bwctl:parameters {
+                Identifier &
+                BwctlParameter+
+        }
+
+BwctlParameter =
+        element nmwg:parameter {
+                attribute name { "duration" | "advisoryWindowsize" |
+                                 "scheduleInterval" | "latest" |
+                                 "numberOfTests" | "alpha" 
+                } &
+                (
+                        attribute value { xsd:int } |
+                        xsd:int
+                )
+        }
+
+
+
+# ##############################################################
+# The data block is complex, and has the potential to contain
+# many things.  The data block can be used to return a metadata
+# block from a request, commonTime or datum elements, keys, 
+# or something that we have perhaps not defined as of yet.  
+#
+# Example: 
+# 
+# <nmwg:data id="REQUIRED_ID" 
+#            metadataIdRef="OPTIONAL_REFERENCE_ID" 
+#            xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <!-- OPTIONAL (MULTIPLE) METADATA -->
+# 
+#           <!-- OR -->
+#
+#   <!-- TBD OPTIONAL (MULTIPLE) COMMON TIME ELEMENTS AND 
+#        OPTIONAL (MULTIPLE) RESULT DATUM ELEMENTS-->
+# 
+#           <!-- OR -->
+#  
+#   <!-- TBD OPTIONAL (MULTIPLE) RESULT DATUM ELEMENTS -->
+# 
+#           <!-- OR -->
+#  
+#   <!-- OPTIONAL (MULTIPLE) KEY ELEMENTS -->
+#   
+# </nmwg:data>
+# 
+# ##############################################################
+BwctlData =
+        element nmwg:data {
+                Identifier &
+                MetadataIdentifierRef? &
+                (
+                        (
+                                Metadata* |
+                                BwctlMetadata*
+                        ) |
+                        (
+                                BwctlCommonTime+ &
+                                ResultDatum*
+                        ) |
+                        ResultDatum* |
+                        Key*
+                )
+        }
+
+
+# ##############################################################
+# CommonTime is used a a shortcut able to 'factor out' a frequently
+# occurring time range that a bunch of datum (or other) elements
+# might share, thus reducing complexity of XML representation.  
+# CommonTime is similar to the other NMWG time stamps (from 
+# nmtime.rnc) in its potential time representations.
+#
+# Example: 
+# 
+# <nmwg:commonTime type="REQUIRED_TYPE" value="OPTIONAL_VALUE"
+#                  duration="OPTIONAL_DURATION" 
+#                  inclusive="OPTIONAL_INCLUSIVE_FLAG"
+#                  xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <!-- TBD OPTIONAL START TIME ELEMENT (USE END TIME OR DURATION) -->
+#  
+#   <!-- TBD OPTIONAL END TIME ELEMENT (ONLY WITH START TIME) -->
+#  
+#   <!-- TBD OPTIONAL TIME VALUE ELEMENT (USE IF NO VALUE ATTRIBUTE) -->
+#  
+#   <!-- TBD OPTIONAL (MULTIPLE) RESULT DATUM ELEMENTS -->
+#
+# </nmwg:commonTime>
+# 
+# ##############################################################
+BwctlCommonTime =
+        element nmwg:commonTime {
+                Type &
+                (
+                        TimeStamp |
+                        (
+                                StartTime &
+                                (
+                                        EndTime |
+                                        Duration
+                                )
+                        )
+                ) &
+                ResultDatum*
+        }

Added: NMWG/base/schema/errors.rnc
===================================================================
--- NMWG/base/schema/errors.rnc	                        (rev 0)
+++ NMWG/base/schema/errors.rnc	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,315 @@
+# ##############################################################
+# 
+# File:         errors.rnc - Specialized schema for the 
+#                                 measure of interface errors
+# Version:      $Id: errors.rnc 341 2008-04-24 21:52:11Z boote $
+# Purpose:      Describes specific elements to be used in the
+#               representation and handling of interface 
+#               errors
+# Reference:    http://books.xmlschemata.org/relaxng/page2.html
+#                         
+# ##############################################################
+        
+
+# ##############################################################
+# Namespace definitions
+# ##############################################################
+namespace nmwg = "http://ggf.org/ns/nmwg/base/2.0/"
+namespace errors = "http://ggf.org/ns/nmwg/characteristic/errors/2.0/"
+namespace nmwgr = "http://ggf.org/ns/nmwg/result/2.0/"
+
+
+# ##############################################################
+# Include additional functionality from other files
+# ##############################################################
+include "nmtopo.rnc"
+include "nmtopo_ver3.rnc"
+include "result.rnc"
+include "nmbase.rnc" {
+        Metadata |= ErrorsMetadata
+        Data |= ErrorsData        
+} 
+
+
+# ##############################################################
+# Metadata is the 'data' that describes physical measurements. 
+# Metadata can be something such as a physical address, or 
+# a geographical location; any form of static, re-usable 
+# designation.  It is important to note that the subject
+# namespace and parameters namespace MUST match (or the parameters
+# can be a generic NMWG) or bad things will occur.
+#
+# Example: 
+# 
+# <nmwg:metadata id="REQUIRED_ID" 
+#                metadataIdRef="OPTIONAL_REFERENCE_ID"
+#                xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <!-- TBD OPTIONAL SUBJECT -->
+# 
+#   <!-- TBD OPTIONAL PARAMETERS -->
+#
+#   <!-- TBD OPTIONAL EVENTTYPE -->
+# 
+#   <!-- TBD OPTIONAL KEY -->
+#  
+#   <!-- ANY OPTIONAL (MULTIPLE) ELEMENT IN ANY NAMESPACE --> 
+#
+# </nmwg:metadata>
+# 
+# ##############################################################
+        
+ErrorsMetadata = 
+        element nmwg:metadata {
+                Identifier &
+                MetadataIdentifierRef? &
+                ErrorsMetadataContent
+        }
+          
+ErrorsMetadataBlock = 
+        ErrorsSubject? &
+        (
+                ErrorsParameters |
+                Parameters
+        )?
+        
+ErrorsMetadataContent = 
+        (
+                ErrorsMetadataBlock |
+                FilterMetadataBlock                
+        ) &        
+        EventType? &
+        Key?        
+
+
+# ##############################################################
+# Redefined errors subject allows only an interface, and
+# the two id attributes.    
+#
+# Example: 
+# 
+# <errors:subject id="REQUIRED_ID" 
+#               metadataIdRef="OPTIONAL_REFERENCE_ID"
+#               xmlns:nmwg="http://ggf.org/ns/nmwg/tools/errors/2.0/">
+# 
+#   <nmwgtopo:interface xmlns:nmwgtopo="http://ggf.org/ns/nmwg/topology/2.0/">
+# 
+#     <nmwgtopo:ipAddress type='REQUIRED_TYPE'> TEXT </nmwgtopo:ipAddress>
+# 
+#     <nmwgtopo:hostName> TEXT </nmwgtopo:hostName>
+# 
+#     <nmwgtopo:ifName> TEXT </nmwgtopo:ifName>
+# 
+#     <nmwgtopo:ifDescription> TEXT </nmwgtopo:ifDescription>
+# 
+#     <nmwgtopo:ifAddress type='REQUIRED_TYPE'> TEXT </nmwgtopo:ifAddress>
+# 
+#     <nmwgtopo:ifHostName> TEXT </nmwgtopo:ifHostName>
+# 
+#     <nmwgtopo:ifIndex> TEXT </nmwgtopo:ifIndex>
+# 
+#     <nmwgtopo:type> TEXT </nmwgtopo:type>
+# 
+#     <nmwgtopo:direction> TEXT </nmwgtopo:direction>
+# 
+#     <nmwgtopo:authRealm> TEXT </nmwgtopo:authRealm>
+# 
+#     <nmwgtopo:classOfService> TEXT </nmwgtopo:classOfService>
+# 
+#     <nmwgtopo:capacity> TEXT </nmwgtopo:capacity>
+#  
+#   </nmwgtopo:interface>
+#  
+# </errors:subject>
+#
+# ##############################################################
+
+ErrorsSubject =
+        element errors:subject {
+                Identifier &
+                MetadataIdentifierRef? &                
+                (
+                        Interface |
+                        BaseInterface |
+                        L2Interface |
+                        L3Interface
+                )
+        }
+
+
+# ##############################################################
+# This is simply the regular method of doing parameters with an
+# enumeration to limit what 'names' are accepted and an outer
+# errors: namespace for the parameters.
+#
+# Example: 
+# 
+# <errors:parameters id="REQUIRED_ID" 
+#                   xmlns:nmwg="http://ggf.org/ns/nmwg/tools/errors/2.0/">
+# 
+#   <nmwg:parameter name="REQUIRED_ENUM_NAME" value="OPTIONAL_VALUE"
+#                   xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#     <!-- ANY TEXT, (IF YOU DID NOT USE THE VALUE ATTRIBUTE) -->
+# 
+#   </nmwg:parameter>
+#  
+#   <!-- MORE PARAMETERS -->
+#   
+# </errors:parameters>
+# 
+# ##############################################################
+
+ErrorsParameters =
+        element errors:parameters {
+                Identifier &        
+                ErrorsParameter+
+        }
+        
+ErrorsParameter = 
+        element nmwg:parameter { 
+                attribute name { "interval" | "valueUnits" } &
+                (
+                        attribute value { text } |
+                        text
+                )
+        }
+
+
+# ##############################################################
+# The data block is complex, and has the potential to contain
+# many things.  The data block can be used to return a metadata
+# block from a request, commonTime or datum elements, keys, 
+# or something that we have perhaps not defined as of yet.  
+#
+# Example: 
+# 
+# <nmwg:data id="REQUIRED_ID" 
+#            metadataIdRef="OPTIONAL_REFERENCE_ID" 
+#            xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <!-- OPTIONAL (MULTIPLE) METADATA -->
+# 
+#           <!-- OR -->
+#
+#   <!-- TBD OPTIONAL (MULTIPLE) COMMON TIME ELEMENTS AND 
+#        OPTIONAL (MULTIPLE) DATUM ELEMENTS-->
+# 
+#           <!-- OR -->
+#  
+#   <!-- TBD OPTIONAL (MULTIPLE) DATUM ELEMENTS -->
+# 
+#           <!-- OR -->
+#  
+#   <!-- OPTIONAL (MULTIPLE) KEY ELEMENTS -->
+# 
+#           <!-- OR -->
+# 
+#   <!-- ANY OPTIONAL (MULTIPLE) ELEMENT IN ANY NAMESPACE -->
+#   
+# </nmwg:data>
+# 
+# ##############################################################
+   
+ErrorsData =
+        element nmwg:data {
+                Identifier &
+                MetadataIdentifierRef? &
+                (
+                        (
+                                Metadata* |
+                                ErrorsMetadata*
+                        ) |
+                        (
+                                ErrorsCommonTime+ & 
+                                (
+                                        ErrorsDatum* |
+                                        ResultDatum*
+                                )
+                        ) |
+                        (
+                                ErrorsDatum* |
+                                ResultDatum*
+                        ) |
+                        Key*
+                )
+        }
+
+
+# ##############################################################
+# CommonTime is used a a shortcut able to 'factor out' a frequently
+# occurring time range that a bunch of datum (or other) elements
+# might share, thus reducing complexity of XML representation.  
+# CommonTime is similar to the other NMWG time stamps (from 
+# nmtime.rnc) in its potential time representations.
+#
+# Example: 
+# 
+# <nmwg:commonTime type="REQUIRED_TYPE" value="OPTIONAL_VALUE"
+#                  duration="OPTIONAL_DURATION" 
+#                  inclusive="OPTIONAL_INCLUSIVE_FLAG"
+#                  xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <!-- TBD OPTIONAL START TIME ELEMENT (USE END TIME OR DURATION) -->
+#  
+#   <!-- TBD OPTIONAL END TIME ELEMENT (ONLY WITH START TIME) -->
+#  
+#   <!-- TBD OPTIONAL TIME VALUE ELEMENT (USE IF NO VALUE ATTRIBUTE) -->
+#  
+#   <!-- TBD OPTIONAL (MULTIPLE) DATUM ELEMENTS -->
+# 
+#   <!-- ANY OPTIONAL (MULTIPLE) ELEMENT IN ANY NAMESPACE -->
+# </nmwg:commonTime>
+# 
+# ##############################################################
+
+ErrorsCommonTime = 
+        element nmwg:commonTime {
+                Type &
+                (
+                        TimeStamp |
+                        (
+                                StartTime & 
+                                (
+                                        EndTime | 
+                                        Duration 
+                                )
+                        )
+                ) &
+                (
+                        ErrorsDatum* |
+                        ResultDatum*
+                )
+        } 
+
+
+# ##############################################################
+# These are the basic elements we would expect to see in the 
+# specific iperf datum.
+#
+# Example: 
+# 
+# <errors:datum value="REQUIRED_VALUE"
+#                    valueUnits="OPTIONAL_VALUE_UNITS"
+#                    timeType="OPTIONAL_TIME_TYPE"
+#                    timeValue="OPTIONAL_TIME_VALUE"
+#                    xmlns:nmwg="http://ggf.org/ns/nmwg/tools/errors/2.0/">
+# 
+#   <!-- TIME ELEMENT (IF ATTRIBUTES NOT USED) -->
+#  
+# </errors:datum>
+# 
+# ##############################################################
+
+ErrorsDatum =
+        element errors:datum {
+                attribute value { xsd:float } &
+                attribute valueUnits { xsd:string }? &        
+                (
+                        (
+                                attribute timeType { xsd:string } & 
+                                attribute timeValue { xsd:string }
+                        ) |
+                        Time
+                )?                         
+        }

Added: NMWG/base/schema/event.rnc
===================================================================
--- NMWG/base/schema/event.rnc	                        (rev 0)
+++ NMWG/base/schema/event.rnc	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,39 @@
+# ##############################################################
+# 
+# File:         event.rnc - Specialized schema for the event 
+#                          status datum
+# Version:      $Id: event.rnc 341 2008-04-24 21:52:11Z boote $
+# Purpose:      -
+# Reference:    http://books.xmlschemata.org/relaxng/page2.html
+#                         
+# ##############################################################
+
+
+# ##############################################################
+# Namespace definitions
+# ##############################################################
+namespace ifevt = "http://ggf.org/ns/nmwg/event/status/base/2.0/"
+
+
+EventDatum = 
+        element ifevt:datum {
+                (
+                        (
+                                attribute timeType { xsd:string } & 
+                                attribute timeValue { xsd:string }
+                        ) |
+                        Time
+                )? &
+                EventStateAdmin? &
+                EventStateOper?
+        }
+
+EventStateAdmin = 
+        element ifevt:stateAdmin {
+                xsd:string
+        }
+	
+EventStateOper = 
+        element ifevt:stateOper {
+                xsd:string
+        }

Added: NMWG/base/schema/filter.rnc
===================================================================
--- NMWG/base/schema/filter.rnc	                        (rev 0)
+++ NMWG/base/schema/filter.rnc	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,162 @@
+# ##############################################################
+# 
+# File:         filter.rnc - Extensions to support different
+#                            namespaced parameters.
+# Version:      $Id: filter.rnc 341 2008-04-24 21:52:11Z boote $
+# Purpose:      This extension to the basic parameters could be
+#               used to help make any implementation code decide
+#               on unmarshalling how to handle special cases.
+#               Our particular purpose with these constructs is
+#               to apply database or statistical operations to 
+#               datasets.
+# Reference:    http://books.xmlschemata.org/relaxng/page2.html
+#                         
+# ##############################################################
+
+
+# ##############################################################
+# Namespace definitions
+# ##############################################################
+namespace select = "http://ggf.org/ns/nmwg/ops/select/2.0/"
+namespace average = "http://ggf.org/ns/nmwg/ops/average/2.0/"
+namespace mean = "http://ggf.org/ns/nmwg/ops/mean/2.0/"
+namespace median = "http://ggf.org/ns/nmwg/ops/median/2.0/"
+namespace max = "http://ggf.org/ns/nmwg/ops/max/2.0/"
+namespace min = "http://ggf.org/ns/nmwg/ops/min/2.0/"
+namespace cdf = "http://ggf.org/ns/nmwg/ops/cdf/2.0/"
+namespace histogram = "http://ggf.org/ns/nmwg/ops/histogram/2.0/"
+
+
+# ##############################################################
+# TBD
+#
+# Example (using select): 
+# 
+# 
+# ##############################################################
+
+FilterMetadataBlock = 
+        (
+                SelectSubject? &
+                (
+                        SelectParameters |
+                        Parameters
+                )?
+        ) |
+        (
+                AverageSubject? &
+                (
+                        AverageParameters |
+                        Parameters
+                )?
+        ) |
+        (
+                MeanSubject? &
+                (
+                        MeanParameters |
+                        Parameters
+                )?
+        ) |
+        (
+                MedianSubject? &
+                (
+                        MedianParameters |
+                        Parameters
+                )?
+        ) |
+        (
+                MaxSubject? &
+                (
+                        MaxParameters |
+                        Parameters
+                )?
+        ) |
+        (
+                MinSubject? &
+                (
+                        MinParameters |
+                        Parameters
+                )?
+        ) |                                        
+        (
+                CDFSubject? &
+                (
+                        CDFParameters |
+                        Parameters
+                )?
+        ) |        
+        (
+                HistogramSubject? &
+                (
+                        HistogramParameters |
+                        Parameters
+                )?
+        )
+
+FilterParameters =
+        (
+                SelectParameters |
+                AverageParameters |
+                MeanParameters |
+                MedianParameters |
+                MaxParameters |
+                MinParameters |
+                CDFParameters |
+                HistogramParameters
+        )
+
+
+SelectSubject = 
+        element select:subject { SubjectContent }
+
+SelectParameters = 
+        element select:parameters { ParametersContent }
+
+
+AverageSubject = 
+        element average:subject { SubjectContent }
+        
+AverageParameters = 
+        element average:parameters { ParametersContent }
+
+
+MeanSubject = 
+        element mean:subject { SubjectContent }
+
+MeanParameters = 
+        element mean:parameters { ParametersContent }
+
+        
+MedianSubject = 
+        element median:subject { SubjectContent }
+        
+MedianParameters = 
+        element median:parameters { ParametersContent }
+
+        
+MaxSubject = 
+        element max:subject { SubjectContent }
+                
+MaxParameters = 
+        element max:parameters { ParametersContent }
+
+        
+MinSubject = 
+        element min:subject { SubjectContent }
+                
+MinParameters = 
+        element min:parameters { ParametersContent }
+
+        
+CDFSubject = 
+        element cdf:subject { SubjectContent }
+                
+CDFParameters = 
+        element cdf:parameters { ParametersContent }
+
+        
+HistogramSubject = 
+        element histogram:subject { SubjectContent }
+                
+HistogramParameters = 
+        element histogram:parameters { ParametersContent }                                

Added: NMWG/base/schema/hades.rnc
===================================================================
--- NMWG/base/schema/hades.rnc	                        (rev 0)
+++ NMWG/base/schema/hades.rnc	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,96 @@
+# ##############################################################
+# 
+# File:     hades.rnc
+#
+# Version:  $Id: hades.rnc 341 2008-04-24 21:52:11Z boote $ 
+#
+# Purpose:  schema for hades tool.
+#                         
+# ##############################################################
+
+
+namespace nmwg = "http://ggf.org/ns/nmwg/base/2.0/"
+namespace nmwgr = "http://ggf.org/ns/nmwg/result/2.0/"
+namespace summary = "http://ggf.org/ns/nmwg/characteristic/delay/summary/20070921/"
+namespace hades = "http://ggf.org/ns/nmwg/tools/hades/"
+
+
+include "summary.rnc" {
+        Metadata |= HadesMetadata
+        Data |= HadesData        
+} 
+
+
+HadesMetadata = 
+        element nmwg:metadata {
+                Identifier &
+                MetadataIdentifierRef? &
+                (
+                        OWDMetadataContent |
+                        SummaryMetadataContent |
+                        HadesMetadataContent
+                )
+        }
+
+HadesMetadataBlock =
+        HadesSubject? &
+        (
+                HadesParameters |
+                Parameters
+        )?
+
+HadesMetadataContent =
+        (
+                HadesMetadataBlock |
+                FilterMetadataBlock
+        ) &
+        EventType? &
+        Key?
+
+HadesSubject =
+        element hades:subject {
+                Identifier &
+                MetadataIdentifierRef? &
+                (
+                        EndpointPair |
+                        L4EndpointPair
+                )
+        }
+
+HadesParameters =
+        element hades:parameters {
+                Identifier &
+                HadesParameter+
+        }
+
+
+HadesParameter =
+        element nmwg:parameter {
+                attribute name { "packetsize" | "groupsize" |
+                                 "interval" | "precedence" 
+                } &
+                (
+                        attribute value { xsd:string } |
+                        xsd:string
+                )
+        }
+
+HadesData = 
+        element nmwg:data {
+                Identifier &
+                MetadataIdentifierRef? &
+                (
+                        (
+                                Metadata* |
+                                HadesMetadata*
+                        ) |
+                        (
+                                HadesDatum* |
+                                ResultDatum*
+                        ) |
+                        Key*
+                )
+         }
+
+HadesDatum = SummaryDatum
+

Added: NMWG/base/schema/iperf.rnc
===================================================================
--- NMWG/base/schema/iperf.rnc	                        (rev 0)
+++ NMWG/base/schema/iperf.rnc	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,309 @@
+# ##############################################################
+# 
+# File:         iperf.rnc - Specialized schema for the iperf 
+#                           tool
+# Version:      $Id: iperf.rnc 380 2009-02-09 12:33:35Z zurawski $
+# Purpose:      Describes specific elements to be used in the
+#               representation and handling of iperf 
+#               measurements.
+# Reference:    http://books.xmlschemata.org/relaxng/page2.html
+#                         
+# ##############################################################
+
+
+# ##############################################################
+# Namespace definitions
+# ##############################################################
+namespace nmwg = "http://ggf.org/ns/nmwg/base/2.0/"
+namespace iperf = "http://ggf.org/ns/nmwg/tools/iperf/2.0/"
+namespace nmwgr = "http://ggf.org/ns/nmwg/result/2.0/"
+
+
+# ##############################################################
+# Include additional functionality from other files
+# ##############################################################
+include "nmtopo.rnc"
+include "nmtopo_ver3.rnc"
+include "result.rnc"
+include "nmbase.rnc" {
+        Metadata |= IperfMetadata
+        Data |= IperfData        
+} 
+
+
+# ##############################################################
+# Metadata is the 'data' that describes physical measurements. 
+# Metadata can be something such as a physical address, or 
+# a geographical location; any form of static, re-usable 
+# designation.  It is important to note that the subject
+# namespace and parameters namespace MUST match (or the parameters
+# can be a generic NMWG) or bad things will occur.
+#
+# Example: 
+# 
+# <nmwg:metadata id="REQUIRED_ID" 
+#                metadataIdRef="OPTIONAL_REFERENCE_ID"
+#                xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <!-- TBD OPTIONAL SUBJECT -->
+# 
+#   <!-- TBD OPTIONAL PARAMETERS -->
+#
+#   <!-- TBD OPTIONAL EVENTTYPE -->
+# 
+#   <!-- TBD OPTIONAL KEY -->
+#  
+#   <!-- ANY OPTIONAL (MULTIPLE) ELEMENT IN ANY NAMESPACE --> 
+#
+# </nmwg:metadata>
+# 
+# ##############################################################
+        
+IperfMetadata = 
+        element nmwg:metadata {
+                Identifier &
+                MetadataIdentifierRef? &
+                IperfMetadataContent
+        }
+          
+IperfMetadataBlock = 
+        IperfSubject? &
+        (
+                IperfParameters |
+                Parameters
+        )?        
+        
+IperfMetadataContent = 
+        (
+                IperfMetadataBlock |
+                FilterMetadataBlock                
+        ) &        
+        EventType? &
+        Key?        
+
+
+# ##############################################################
+# Redefined iperf subject allows only an endPointPair, and the
+# two id attributes.    
+#
+# Example: 
+# 
+# <iperf:subject id="REQUIRED_ID" 
+#               metadataIdRef="OPTIONAL_REFERENCE_ID"
+#               xmlns:nmwg="http://ggf.org/ns/nmwg/tools/iperf/2.0/">
+# 
+#   <nmwgtopo:endPointPair xmlns:nmwgtopo="http://ggf.org/ns/nmwg/topology/2.0/">
+# 
+#     <nmwgtopo:src type="REQUIRED_TYPE" value="REQUIRED_VALUE" 
+#                   port="OPTIONAL_PORT"/>
+# 
+#     <nmwgtopo:dst type="REQUIRED_TYPE" value="REQUIRED_VALUE" 
+#                   port="OPTIONAL_PORT"/>
+#  
+#   </nmwgtopo:endPointPair>
+#  
+# </iperf:subject>
+#
+# ##############################################################
+
+IperfSubject =
+        element iperf:subject {
+                Identifier &
+                MetadataIdentifierRef? &        
+                (                   
+                        EndpointPair |
+                        L4EndpointPair
+                )
+        }
+
+
+# ##############################################################
+# This is simply the regular method of doing parameters with an
+# enumeration to limit what 'names' are accepted and an outer
+# iperf: namespace for the parameters.
+#
+# Example: 
+# 
+# <iperf:parameters id="REQUIRED_ID" 
+#                   xmlns:nmwg="http://ggf.org/ns/nmwg/tools/iperf/2.0/">
+# 
+#   <nmwg:parameter name="REQUIRED_ENUM_NAME" value="OPTIONAL_VALUE"
+#                   xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#     <!-- ANY TEXT, (IF YOU DID NOT USE THE VALUE ATTRIBUTE) -->
+# 
+#   </nmwg:parameter>
+#  
+#   <!-- MORE PARAMETERS -->
+#   
+# </iperf:parameters>
+# 
+# ##############################################################
+
+IperfParameters =
+        element iperf:parameters {
+                Identifier &        
+                IperfParameter+
+        }
+        
+IperfParameter = 
+        element nmwg:parameter { 
+                attribute name { "format" | "interval" | "protocol" | 
+                                 "bufferLength" | "windowSize" | 
+                                 "windowSizeRequest" | "timeDuration" | 
+                                 "arguments" | "valueUnits" | "numBytes" | 
+                                 "numBytesUnits" } &
+                (
+                        attribute value { text } |
+                        text
+                )
+        }
+
+
+# ##############################################################
+# The data block is complex, and has the potential to contain
+# many things.  The data block can be used to return a metadata
+# block from a request, commonTime or datum elements, keys, 
+# or something that we have perhaps not defined as of yet.  
+#
+# Example: 
+# 
+# <nmwg:data id="REQUIRED_ID" 
+#            metadataIdRef="OPTIONAL_REFERENCE_ID" 
+#            xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <!-- OPTIONAL (MULTIPLE) METADATA -->
+# 
+#           <!-- OR -->
+#
+#   <!-- TBD OPTIONAL (MULTIPLE) COMMON TIME ELEMENTS AND 
+#        OPTIONAL (MULTIPLE) DATUM ELEMENTS-->
+# 
+#           <!-- OR -->
+#  
+#   <!-- TBD OPTIONAL (MULTIPLE) DATUM ELEMENTS -->
+# 
+#           <!-- OR -->
+#  
+#   <!-- OPTIONAL (MULTIPLE) KEY ELEMENTS -->
+# 
+#           <!-- OR -->
+# 
+#   <!-- ANY OPTIONAL (MULTIPLE) ELEMENT IN ANY NAMESPACE -->
+#   
+# </nmwg:data>
+# 
+# ##############################################################
+   
+IperfData =
+        element nmwg:data {
+                Identifier &
+                MetadataIdentifierRef? &
+                (
+                        (
+                                Metadata* |
+                                IperfMetadata*
+                        ) |
+                        (
+                                IperfCommonTime+ & 
+                                (
+                                        IperfDatum* |
+                                        ResultDatum*
+                                )
+                        ) |
+                        (
+                                IperfDatum* |
+                                ResultDatum*
+                        ) |
+                        Key*
+                )
+        }
+
+
+# ##############################################################
+# CommonTime is used a a shortcut able to 'factor out' a frequently
+# occurring time range that a bunch of datum (or other) elements
+# might share, thus reducing complexity of XML representation.  
+# CommonTime is similar to the other NMWG time stamps (from 
+# nmtime.rnc) in its potential time representations.
+#
+# Example: 
+# 
+# <nmwg:commonTime type="REQUIRED_TYPE" value="OPTIONAL_VALUE"
+#                  duration="OPTIONAL_DURATION" 
+#                  inclusive="OPTIONAL_INCLUSIVE_FLAG"
+#                  xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <!-- TBD OPTIONAL START TIME ELEMENT (USE END TIME OR DURATION) -->
+#  
+#   <!-- TBD OPTIONAL END TIME ELEMENT (ONLY WITH START TIME) -->
+#  
+#   <!-- TBD OPTIONAL TIME VALUE ELEMENT (USE IF NO VALUE ATTRIBUTE) -->
+#  
+#   <!-- TBD OPTIONAL (MULTIPLE) DATUM ELEMENTS -->
+# 
+#   <!-- ANY OPTIONAL (MULTIPLE) ELEMENT IN ANY NAMESPACE -->
+# </nmwg:commonTime>
+# 
+# ##############################################################
+
+IperfCommonTime = 
+        element nmwg:commonTime {
+                Type &
+                (
+                        TimeStamp |
+                        (
+                                StartTime & 
+                                (
+                                        EndTime | 
+                                        Duration 
+                                )
+                        )
+                ) &
+                (
+                        IperfDatum* |
+                        ResultDatum*
+                )
+        } 
+
+
+# ##############################################################
+# These are the basic elements we would expect to see in the 
+# specific iperf datum.
+#
+# Example: 
+# 
+# <iperf:datum value="REQUIRED_VALUE"
+#              valueUnits="OPTIONAL_VALUE_UNITS"
+#              numBytes="OPTIONAL_NUM_BYTES"
+#              numBytesUnits="OPTIONAL_NUM_BYTES_UNITS"
+#              interval="OPTIONAL_INTERVAL"
+#              timeType="OPTIONAL_TIME_TYPE"
+#              timeValue="OPTIONAL_TIME_VALUE"
+#              xmlns:nmwg="http://ggf.org/ns/nmwg/tools/iperf/2.0/">
+# 
+#   <!-- TIME ELEMENT (IF ATTRIBUTES NOT USED) -->
+#  
+# </iperf:datum>
+# 
+# ##############################################################
+
+IperfDatum =
+        element iperf:datum {
+                attribute value { xsd:float } &
+                attribute valueUnits { xsd:string }? &        
+                attribute throughput { xsd:string }? & 
+                attribute jitter { xsd:string }? & 
+                attribute loss { xsd:string }? & 
+                attribute numBytes { xsd:int }? &
+                attribute numBytesUnits { xsd:string }? &
+                attribute interval { xsd:string }? &                 
+                (
+                        (
+                                attribute timeType { xsd:string } & 
+                                attribute timeValue { xsd:string }
+                        ) |
+                        Time
+                )?                       
+        }
+

Added: NMWG/base/schema/netflow.rnc
===================================================================
--- NMWG/base/schema/netflow.rnc	                        (rev 0)
+++ NMWG/base/schema/netflow.rnc	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,117 @@
+# ##############################################################
+# 
+# File:         netflow.rnc - Specialized schema for the netflow
+#                             MP.
+# Version:      $Id: netflow.rnc 362 2008-06-19 09:28:49Z hans.trompert $
+# Purpose:      Describes specific elements to be used in the
+#               representation and handling of netflow formated 
+#               messages.
+# Reference:    http://books.xmlschemata.org/relaxng/page2.html
+#                         
+# History:      v1 - author(s) unknown - 2006/2007
+#               Initial version.
+#
+#               v2 - Hans Trompert - June 19, 2008
+#               Removed transportFormats en flowFormats, this is
+#               information that needs to be communicated to the
+#               LS and does not belong in a SetupDataRequest/
+#               Response.
+#
+# ##############################################################
+
+
+# ##############################################################
+# Namespace definitions
+# ##############################################################
+namespace nmwg = "http://ggf.org/ns/nmwg/base/2.0/"
+namespace netflow = "http://ggf.org/ns/nmwg/tools/netflow/2.0/"
+namespace perfsonar = "http://ggf.org/ns/nmwg/tools/org/perfsonar/1.0/"
+namespace psservice = "http://ggf.org/ns/nmwg/tools/org/perfsonar/service/1.0/"
+
+
+# ##############################################################
+# Include additional functionality from other files
+# ##############################################################
+include "nmtopo_ver3.rnc"
+include "nmtopo.rnc"
+include "service.rnc"
+include "result.rnc"
+include "nmbase.rnc" {
+        Metadata |= NetflowMetadata
+} 
+
+
+
+NetflowMetadata = 
+        element nmwg:metadata {
+                Identifier &
+                MetadataIdentifierRef? &
+                NetflowMetadataContent
+        }
+          
+NetflowMetadataContent = 
+        NetflowMetadataBlock &
+        EventType? &
+        Key?        
+
+NetflowMetadataBlock = 
+        (
+                NetflowSubject |
+                SonarSubject
+        )? &
+        (
+                NetflowParameters |
+                Parameters
+        )?        
+
+SonarSubject = 
+        element perfsonar:subject {
+                Identifier &
+                Service?
+        }
+
+NetflowSubject =
+        element netflow:subject {
+                Identifier &
+                MetadataIdentifierRef? &
+                (                        
+                        L4Endpoint |
+                        NetflowRouter
+                )
+        }
+
+NetflowParameters =
+        element netflow:parameters {
+                Identifier &        
+                NetflowParameter*
+        }
+
+NetflowParameter = 
+        element nmwg:parameter { 
+                attribute name { "sampleRate" | "anonymizationLevel" |
+                                 "filter" | "netflowVersion" |
+                                 "transportProtocol" } &
+                (
+                        attribute value { text } |
+                        text
+                )
+        }
+
+NetflowRouter = 
+        element netflow:router {
+                Identifier &
+                NetflowName? &
+                NetflowDescription? &
+                (
+                        BaseInterface |
+                        L2Interface |
+                        L3Interface
+                )*        
+        }
+        
+NetflowName = 
+        element netflow:name { xsd:string }
+
+NetflowDescription = 
+        element netflow:description { xsd:string }
+

Added: NMWG/base/schema/nmachbw.rnc
===================================================================
--- NMWG/base/schema/nmachbw.rnc	                        (rev 0)
+++ NMWG/base/schema/nmachbw.rnc	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,300 @@
+# ##############################################################
+# 
+# File:         nmachbw.rnc - Specialized schema for the achievable 
+#                             bandwidth characteristic
+# Version:      $Id: nmachbw.rnc 341 2008-04-24 21:52:11Z boote $
+# Purpose:      Describes specific elements to be used in the
+#               representation and handling of generic achievable 
+#               bandwidth measurements.
+# Reference:    http://books.xmlschemata.org/relaxng/page2.html
+#                         
+# ##############################################################
+
+
+# ##############################################################
+# Namespace definitions
+# ##############################################################
+namespace nmwg = "http://ggf.org/ns/nmwg/base/2.0/"
+namespace bandwidth = "http://ggf.org/ns/nmwg/characteristics/bandwidth/acheiveable/2.0/"
+namespace nmwgr = "http://ggf.org/ns/nmwg/result/2.0/"
+
+
+# ##############################################################
+# Include additional functionality from other files
+# ##############################################################
+include "nmtopo.rnc"
+include "nmtopo_ver3.rnc"
+include "result.rnc"
+include "nmbase.rnc" {
+        Metadata |= BandwidthMetadata
+        Data |= BandwidthData        
+} 
+
+
+# ##############################################################
+# Metadata is the 'data' that describes physical measurements. 
+# Metadata can be something such as a physical address, or 
+# a geographical location; any form of static, re-usable 
+# designation.  It is important to note that the subject
+# namespace and parameters namespace MUST match (or the parameters
+# can be a generic NMWG) or bad things will occur.
+#
+# Example: 
+# 
+# <nmwg:metadata id="REQUIRED_ID" 
+#                metadataIdRef="OPTIONAL_REFERENCE_ID"
+#                xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <!-- TBD OPTIONAL SUBJECT -->
+# 
+#   <!-- TBD OPTIONAL PARAMETERS -->
+#
+#   <!-- TBD OPTIONAL EVENTTYPE -->
+# 
+#   <!-- TBD OPTIONAL KEY -->
+#  
+#   <!-- ANY OPTIONAL (MULTIPLE) ELEMENT IN ANY NAMESPACE --> 
+#
+# </nmwg:metadata>
+# 
+# ##############################################################
+        
+BandwidthMetadata = 
+        element nmwg:metadata {
+                Identifier &
+                MetadataIdentifierRef? &
+                BandwidthMetadataContent
+        }
+          
+BandwidthMetadataBlock = 
+        BandwidthSubject? &
+        (
+                BandwidthParameters |
+                Parameters
+        )?        
+        
+BandwidthMetadataContent = 
+        (
+                BandwidthMetadataBlock |
+                FilterMetadataBlock                
+        ) &        
+        EventType? &
+        Key?        
+
+
+# ##############################################################
+# Redefined bandwidth subject allows only an endPointPair, and
+# the two id attributes.    
+#
+# Example: 
+# 
+# <bandwidth:subject id="REQUIRED_ID" 
+#               metadataIdRef="OPTIONAL_REFERENCE_ID"
+#               xmlns:nmwg="http://ggf.org/ns/nmwg/characteristics/bandwidth/acheiveable/2.0/">
+# 
+#   <nmwgtopo:endPointPair xmlns:nmwgtopo="http://ggf.org/ns/nmwg/topology/2.0/">
+# 
+#     <nmwgtopo:src type="REQUIRED_TYPE" value="REQUIRED_VALUE" 
+#                   port="OPTIONAL_PORT"/>
+# 
+#     <nmwgtopo:dst type="REQUIRED_TYPE" value="REQUIRED_VALUE" 
+#                   port="OPTIONAL_PORT"/>
+#  
+#   </nmwgtopo:endPointPair>
+#  
+# </bandwidth:subject>
+#
+# ##############################################################
+
+BandwidthSubject =
+        element bandwidth:subject {
+                Identifier &
+                MetadataIdentifierRef? &                        
+                (                   
+                        EndpointPair |
+                        L4EndpointPair
+                )
+        }
+
+
+# ##############################################################
+# This is simply the regular method of doing parameters with an
+# enumeration to limit what 'names' are accepted and an outer
+# bandwidth: namespace for the parameters.
+#
+# Example: 
+# 
+# <bandwidth:parameters id="REQUIRED_ID" 
+#                   xmlns:nmwg="http://ggf.org/ns/nmwg/characteristics/bandwidth/acheiveable/2.0/">
+# 
+#   <nmwg:parameter name="REQUIRED_ENUM_NAME" value="OPTIONAL_VALUE"
+#                   xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#     <!-- ANY TEXT, (IF YOU DID NOT USE THE VALUE ATTRIBUTE) -->
+# 
+#   </nmwg:parameter>
+#  
+#   <!-- MORE PARAMETERS -->
+#   
+# </bandwidth:parameters>
+# 
+# ##############################################################
+
+BandwidthParameters =
+        element bandwidth:parameters {
+                Identifier &        
+                BandwidthParameter+
+        }
+        
+BandwidthParameter = 
+        element nmwg:parameter { 
+                attribute name { "valueUnits" | "numBytes" | "numBytesUnits" } &
+                (
+                        attribute value { text } |
+                        text
+                )
+        }
+
+
+# ##############################################################
+# The data block is complex, and has the potential to contain
+# many things.  The data block can be used to return a metadata
+# block from a request, commonTime or datum elements, keys, 
+# or something that we have perhaps not defined as of yet.  
+#
+# Example: 
+# 
+# <nmwg:data id="REQUIRED_ID" 
+#            metadataIdRef="OPTIONAL_REFERENCE_ID" 
+#            xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <!-- OPTIONAL (MULTIPLE) METADATA -->
+# 
+#           <!-- OR -->
+#
+#   <!-- TBD OPTIONAL (MULTIPLE) COMMON TIME ELEMENTS AND 
+#        OPTIONAL (MULTIPLE) DATUM ELEMENTS-->
+# 
+#           <!-- OR -->
+#  
+#   <!-- TBD OPTIONAL (MULTIPLE) DATUM ELEMENTS -->
+# 
+#           <!-- OR -->
+#  
+#   <!-- OPTIONAL (MULTIPLE) KEY ELEMENTS -->
+# 
+#           <!-- OR -->
+# 
+#   <!-- ANY OPTIONAL (MULTIPLE) ELEMENT IN ANY NAMESPACE -->
+#   
+# </nmwg:data>
+# 
+# ##############################################################
+   
+BandwidthData =
+        element nmwg:data {
+                Identifier &
+                MetadataIdentifierRef? &
+                (
+                        (
+                                Metadata* |
+                                BandwidthMetadata*
+                        ) |
+                        (
+                                BandwidthCommonTime+ & 
+                                (
+                                        BandwidthDatum* |
+                                        ResultDatum*
+                                )
+                        ) |
+                        (
+                                BandwidthDatum* |
+                                ResultDatum*
+                        ) |
+                        Key*
+                )
+        }
+
+
+# ##############################################################
+# CommonTime is used a a shortcut able to 'factor out' a frequently
+# occurring time range that a bunch of datum (or other) elements
+# might share, thus reducing complexity of XML representation.  
+# CommonTime is similar to the other NMWG time stamps (from 
+# nmtime.rnc) in its potential time representations.
+#
+# Example: 
+# 
+# <nmwg:commonTime type="REQUIRED_TYPE" value="OPTIONAL_VALUE"
+#                  duration="OPTIONAL_DURATION" 
+#                  inclusive="OPTIONAL_INCLUSIVE_FLAG"
+#                  xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <!-- TBD OPTIONAL START TIME ELEMENT (USE END TIME OR DURATION) -->
+#  
+#   <!-- TBD OPTIONAL END TIME ELEMENT (ONLY WITH START TIME) -->
+#  
+#   <!-- TBD OPTIONAL TIME VALUE ELEMENT (USE IF NO VALUE ATTRIBUTE) -->
+#  
+#   <!-- TBD OPTIONAL (MULTIPLE) DATUM ELEMENTS -->
+# 
+#   <!-- ANY OPTIONAL (MULTIPLE) ELEMENT IN ANY NAMESPACE -->
+# </nmwg:commonTime>
+# 
+# ##############################################################
+
+BandwidthCommonTime = 
+        element nmwg:commonTime {
+                Type &
+                (
+                        TimeStamp |
+                        (
+                                StartTime & 
+                                (
+                                        EndTime | 
+                                        Duration 
+                                )
+                        )
+                ) &
+                (
+                        BandwidthDatum* |
+                        ResultDatum*
+                )
+        } 
+
+
+# ##############################################################
+# These are the basic elements we would expect to see in the 
+# specific bandwidth datum.
+#
+# Example: 
+# 
+# <bandwidth:datum value="REQUIRED_VALUE"
+#              valueUnits="OPTIONAL_VALUE_UNITS"
+#              numBytes="OPTIONAL_NUM_BYTES"
+#              numBytesUnits="OPTIONAL_NUM_BYTES_UNITS"
+#              timeType="OPTIONAL_TIME_TYPE"
+#              timeValue="OPTIONAL_TIME_VALUE"
+#              xmlns:nmwg="http://ggf.org/ns/nmwg/characteristics/bandwidth/acheiveable/2.0/">
+# 
+#   <!-- TIME ELEMENT (IF ATTRIBUTES NOT USED) -->
+#  
+# </bandwidth:datum>
+# 
+# ##############################################################
+
+BandwidthDatum =
+        element bandwidth:datum {
+                attribute value { xsd:float } &
+                attribute valueUnits { xsd:string }? &        
+                attribute numBytes { xsd:int }? &
+                attribute numBytesUnits { xsd:string }? &
+                (
+                        (
+                                attribute timeType { xsd:string } & 
+                                attribute timeValue { xsd:string }
+                        ) |
+                        Time
+                )?                       
+        }
+

Added: NMWG/base/schema/nmbase.rnc
===================================================================
--- NMWG/base/schema/nmbase.rnc	                        (rev 0)
+++ NMWG/base/schema/nmbase.rnc	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,441 @@
+# ##############################################################
+# 
+# File:      nmbase.rnc - Main schema definition
+# Version:   $Id: nmbase.rnc 341 2008-04-24 21:52:11Z boote $
+# Purpose:   This is the main schema file, it defines the
+#             general structure of an NMWG message or store
+# 
+# ##############################################################
+
+
+# ##############################################################
+# Namespace definitions
+# ##############################################################
+namespace nmwg = "http://ggf.org/ns/nmwg/base/2.0/"
+
+
+# ##############################################################
+# Include additional functionality from other files
+# ##############################################################
+include "nmtime.rnc"
+include "filter.rnc"
+
+# ##############################################################
+# Every NMWG document should begin with either a 'store' or 
+# 'message' element
+# Patterns are defined for the content of each element.
+# 
+# Example (using message):
+# 
+# <nmwg:message id="OPTIONAL_ID" 
+#               messageIdRef="OPTIONAL_REFERENCE_ID"
+#               type="REQUIRED_TYPE"
+#               xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <!-- OPTIONAL PARAMETERS -->
+#
+#   <!-- OPTIONAL (MULTIPLE) METADATA -->
+# 
+#   <!-- OPTIONAL (MULTIPLE) DATA -->
+#  
+# </nmwg:message>
+# 
+# ##############################################################
+
+start =
+        (
+                element nmwg:message {
+                        MessageContent
+                } |
+                element nmwg:store {
+                        StoreContent
+                }
+        )
+
+MessageContent =
+        Identifier? & 
+        MessageIdentifierRef? &
+        Type &
+        Parameters? &                        
+        (
+                Metadata |  
+                Data
+        )+
+        
+        
+StoreContent = 
+        Identifier? & 
+        MessageIdentifierRef? &
+        Type &
+        Parameters? &                        
+        (
+                Metadata |  
+                Data
+        )+        
+
+
+# ##############################################################
+# Metadata is the information that describes data.  This
+# information doesn't change over time
+#
+#
+# Example: 
+# 
+# <nmwg:metadata id="REQUIRED_ID" 
+#                metadataIdRef="OPTIONAL_REFERENCE_ID"
+#                xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <!-- TBD OPTIONAL SUBJECT -->
+# 
+#   <!-- TBD OPTIONAL PARAMETERS -->
+#
+#   <!-- TBD OPTIONAL EVENTTYPE -->
+# 
+#   <!-- TBD OPTIONAL KEY -->
+#  
+#   <!-- ANY OPTIONAL (MULTIPLE) ELEMENT IN ANY NAMESPACE --> 
+#
+# </nmwg:metadata>
+# 
+# ##############################################################
+        
+Metadata = 
+        element nmwg:metadata {
+                (
+                        Identifier &
+                        MetadataIdentifierRef? &
+                        MetadataContent
+                ),
+                anyElement*
+        }
+
+MetadataBlock =
+        Subject? &
+        Parameters?
+        
+MetadataContent = 
+        (
+                MetadataBlock |
+                FilterMetadataBlock                
+        ) &        
+        EventType? &
+        Key?        
+
+
+# ##############################################################
+# Subject identifies an endPoint (or points), perhaps the name of
+# a service or some other form of physical location. For the
+# purpose of the general case, we make no assumptions on potential
+# elements and allow all elements, in any namespace. Verification
+# can be handled in subsequent schema files.  
+#
+# Example: 
+# 
+# <nmwg:subject id="REQUIRED_ID" 
+#               metadataIdRef="OPTIONAL_REFERENCE_ID"
+#               xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <!-- ANY ELEMENT IN ANY NAMESPACE -->
+#  
+# </nmwg:subject>
+# 
+# ##############################################################
+
+Subject = 
+        element nmwg:subject {
+                SubjectContent
+        }
+
+SubjectContent = 
+        (
+                Identifier &
+                MetadataIdentifierRef?        
+        ),
+        anyElement*
+        
+
+# ##############################################################
+# Parameters and Parameter elements can be used in a number of
+# ways in: 1) the message to signify items such as time stamp
+# or authorization or 2) metadata or data to specify filters or
+# special cases for the information. A 'parameters' block
+# has an id and encloses one to many 'parameter' elements.
+# These elements have a required 'name', and may contain
+# an attribute, element, or text value (only one please;
+# software using this should consider complex elements, then
+# text, and finally the value attribute; exceptions should
+# be thrown on duplicates).
+#
+# Example: 
+# 
+# <nmwg:parameters id="REQUIRED_ID" 
+#                  xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <nmwg:parameter name="REQUIRED_NAME" value="OPTIONAL_VALUE"
+#                   xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#     <!-- ANY TEXT, OR ANY ELEMENT ANY NAMESPACE (IF YOU DID NOT 
+#          USE THE VALUE ATTRIBUTE) -->
+# 
+#   </nmwg:parameter>
+#  
+#   <!-- MORE PARAMETERS -->
+#   
+# </nmwg:parameters>
+# 
+# The namespaces can of course be different.
+# 
+# ##############################################################
+
+Parameters = 
+        element nmwg:parameters {
+                ParametersContent
+        }
+   
+ParametersContent =    
+        Identifier &
+        Parameter+
+   
+Parameter = 
+        element nmwg:parameter { 
+                attribute name { xsd:string } &
+                (
+                        attribute value { xsd:string } |
+                        (
+                                anyElement |
+                                text
+                        )
+                )
+        }   
+
+
+# ##############################################################
+# Event type is a simple text element used to describe the
+# characteristic or event of the data.
+#
+# Example: 
+# 
+# <nmwg:eventType xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <!-- TEXT -->
+#  
+# </nmwg:eventType>
+# 
+# ##############################################################        
+
+EventType =
+        element nmwg:eventType { xsd:string }      
+
+   
+# ##############################################################
+# The key is used to return a 'pointer' or otherwise special piece
+# of identifying information in response to a request. For now, 
+# this information is enclosed only within a parameters block.
+# The optional ID can be used to track past searches.
+#
+# Example: 
+# 
+# <nmwg:key id="OPTIONAL_ID" 
+#           xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <!-- OPTIONAL PARAMETERS -->
+#  
+# </nmwg:key>
+# 
+# ##############################################################
+   
+Key = 
+        element nmwg:key {
+                Identifier? &
+                (
+                        Parameters |
+                        FilterParameters                                
+                )
+        }        
+        
+           
+# ##############################################################
+# The data block is complex and has the potential to contain
+# many things. The data block can be used to return a metadata
+# block from a request, commonTime or datum elements, keys,
+# or something that we have perhaps not defined as of yet. 
+#
+# Example: 
+# 
+# <nmwg:data id="REQUIRED_ID" 
+#            metadataIdRef="OPTIONAL_REFERENCE_ID" 
+#            xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <!-- OPTIONAL (MULTIPLE) METADATA -->
+# 
+#           <!-- OR -->
+#
+#   <!-- TBD OPTIONAL (MULTIPLE) COMMON TIME ELEMENTS AND 
+#        OPTIONAL (MULTIPLE) DATUM ELEMENTS-->
+# 
+#           <!-- OR -->
+#  
+#   <!-- TBD OPTIONAL (MULTIPLE) DATUM ELEMENTS -->
+# 
+#           <!-- OR -->
+#  
+#   <!-- OPTIONAL (MULTIPLE) KEY ELEMENTS -->
+# 
+#           <!-- OR -->
+# 
+#   <!-- ANY OPTIONAL (MULTIPLE) ELEMENT IN ANY NAMESPACE -->
+#   
+# </nmwg:data>
+# 
+# ##############################################################
+   
+Data =
+        element nmwg:data {
+                (
+                        Identifier &
+                        MetadataIdentifierRef? &
+                        (
+                                Metadata* |
+                                (
+                                        commonTime+ & 
+                                        Datum*
+                                ) |
+                                Datum* |
+                                Key*
+                        )
+                ),
+                anyElement*
+        }
+
+# ##############################################################
+# CommonTime is used as a shortcut that is able to 'factor out' 
+# a frequently occurring time range that a group of datum (or 
+# other) elements might share, thus reducing the verbosity of the 
+# XML representation. CommonTime is similar to the other NMWG time 
+# stamps (from nmtime.rnc) in its potential time representations.
+#
+# It is unfortunate that it needs to be in this file and not
+# nmtime.rnc, but as it occurs outside the datum, it is here.
+#
+# Example: 
+# 
+# <nmwg:commonTime type="REQUIRED_TYPE" value="OPTIONAL_VALUE"
+#                  duration="OPTIONAL_DURATION" 
+#                  inclusive="OPTIONAL_INCLUSIVE_FLAG"
+#                  xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <!-- TBD OPTIONAL START TIME ELEMENT (USE END TIME OR
+#         DURATION) -->
+#  
+#   <!-- TBD OPTIONAL END TIME ELEMENT (ONLY WITH START TIME) -->
+#  
+#   <!-- TBD OPTIONAL TIME VALUE ELEMENT (USE IF NO VALUE
+#         ATTRIBUTE) -->
+#  
+#   <!-- TBD OPTIONAL (MULTIPLE) DATUM ELEMENTS -->
+# 
+#   <!-- ANY OPTIONAL (MULTIPLE) ELEMENT IN ANY NAMESPACE -->
+# </nmwg:commonTime>
+# 
+# ##############################################################
+
+commonTime = 
+        element nmwg:commonTime {
+                (
+                        Type &
+                        (
+                                TimeStamp |
+                                (
+                                        StartTime & 
+                                        (
+                                                EndTime | 
+                                                Duration 
+                                        )
+                                )
+                        ) &
+                        Datum*
+                ),
+                anyElement*
+        }
+
+
+# ##############################################################
+# The datum is meant to be generic in this case because specific
+# namespace declarations should be used to better define what
+# format that datum should have.
+#
+# Example: 
+# 
+# <nmwg:datum ANY_ATTRIBUTE
+#             xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <!-- ANY ELEMENT IN ANY NAMESPACE OR ANY TEXT -->
+#  
+# </nmwg:datum>
+# 
+# ##############################################################
+
+Datum =
+        element nmwg:datum {
+                anyThing  
+        }
+        
+         
+# ##############################################################
+# Common elements are defined as named patterns as they are re- 
+# used several times.
+# ##############################################################
+                
+Identifier =
+        attribute id { xsd:string }
+
+MetadataIdentifierRef =
+        attribute metadataIdRef { xsd:string }
+
+MessageIdentifierRef =
+        attribute messageIdRef { xsd:string }
+    
+Type = 
+        attribute type { xsd:string }    
+
+
+# ##############################################################
+# This sequence allows any element, attribute, or text (regardless 
+# of name or namespace) into the document when invoked.
+# ##############################################################
+
+anyElement = 
+        element * { 
+                anyThing 
+        }
+
+anyAttribute = 
+        attribute * { text }
+
+anyThing = 
+        ( 
+                anyElement | 
+                anyAttribute | 
+                text 
+        )*
+        
+        
+# ##############################################################
+# This sequence allows any element, attribute, or text (only in the 
+# NMWG namespace) into the document when invoked.
+# ##############################################################
+        
+anyNMWGElement = 
+        element nmwg:* { 
+                anyNMWGThing 
+        }
+
+anyNMWGAttribute = 
+        attribute * { text }
+
+anyNMWGThing = 
+        ( 
+                anyNMWGElement | 
+                anyNMWGAttribute | 
+                text 
+        )*        

Added: NMWG/base/schema/nmdelayrtt.rnc
===================================================================
--- NMWG/base/schema/nmdelayrtt.rnc	                        (rev 0)
+++ NMWG/base/schema/nmdelayrtt.rnc	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,304 @@
+# ##############################################################
+# 
+# File:         nmdelay.rnc - Specialized schema for delay 
+#                             measurements
+# Version:      $Id: nmdelayrtt.rnc 341 2008-04-24 21:52:11Z boote $
+# Purpose:      Describes specific elements to be used in the
+#               representation and handling of delay oriented 
+#               measurements.
+# Reference:    http://books.xmlschemata.org/relaxng/page2.html
+#                         
+# ##############################################################
+
+
+# ##############################################################
+# Namespace definitions
+# ##############################################################
+namespace nmwg = "http://ggf.org/ns/nmwg/base/2.0/"
+namespace nmdrt = "http://ggf.org/ns/nmwg/characteristic/delay/roundTrip/2.0/"
+namespace nmwgr = "http://ggf.org/ns/nmwg/result/2.0/"
+
+
+# ##############################################################
+# Include additional functionality from other files
+# ##############################################################
+include "nmtopo.rnc"
+include "nmtopo_ver3.rnc"
+include "result.rnc"
+include "nmbase.rnc" {
+        Metadata |= DelayMetadata
+        Data |= DelayData        
+} 
+
+
+# ##############################################################
+# Metadata is the 'data' that describes physical measurements. 
+# Metadata can be something such as a physical address, or 
+# a geographical location; any form of static, re-usable 
+# designation.  It is important to note that the subject
+# namespace and parameters namespace MUST match (or the parameters
+# can be a generic NMWG) or bad things will occur.
+#
+# Example: 
+# 
+# <nmwg:metadata id="REQUIRED_ID" 
+#                metadataIdRef="OPTIONAL_REFERENCE_ID"
+#                xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <!-- TBD OPTIONAL SUBJECT -->
+# 
+#   <!-- TBD OPTIONAL PARAMETERS -->
+#
+#   <!-- TBD OPTIONAL EVENTTYPE -->
+# 
+#   <!-- TBD OPTIONAL KEY -->
+#  
+#   <!-- ANY OPTIONAL (MULTIPLE) ELEMENT IN ANY NAMESPACE --> 
+#
+# </nmwg:metadata>
+# 
+# ##############################################################
+        
+DelayMetadata = 
+        element nmwg:metadata {
+                Identifier &
+                MetadataIdentifierRef? &
+                DelayMetadataContent
+        }
+          
+DelayMetadataBlock = 
+        DelaySubject? &
+        (
+                DelayParameters |
+                Parameters
+        )?        
+        
+DelayMetadataContent = 
+        (
+                DelayMetadataBlock |
+                FilterMetadataBlock
+        ) &
+        EventType? &
+        Key?        
+
+
+# ##############################################################
+# Redefined delay subject allows only an endPointPair, and the
+# two id attributes.    
+#
+# Example: 
+# 
+# <nmdrt:subject id="REQUIRED_ID" 
+#               metadataIdRef="OPTIONAL_REFERENCE_ID"
+#               xmlns:nmwg="http://ggf.org/ns/nmwg/characteristic/delay/roundTrip/2.0/">
+# 
+#   <nmwgtopo:endPointPair xmlns:nmwgtopo="http://ggf.org/ns/nmwg/topology/2.0/">
+# 
+#     <nmwgtopo:src type="REQUIRED_TYPE" value="REQUIRED_VALUE" 
+#                   port="OPTIONAL_PORT"/>
+# 
+#     <nmwgtopo:dst type="REQUIRED_TYPE" value="REQUIRED_VALUE" 
+#                   port="OPTIONAL_PORT"/>
+#  
+#   </nmwgtopo:endPointPair>
+#  
+# </nmdrt:subject>
+#
+# ##############################################################
+
+DelaySubject =
+        element nmdrt:subject {
+                Identifier &
+                MetadataIdentifierRef? &                        
+                (                   
+                        EndpointPair |
+                        L4EndpointPair
+                )
+        }
+
+
+# ##############################################################
+# This is simply the regular method of doing parameters with an
+# enumeration to limit what 'names' are accepted and an outer
+# nmdrt: namespace for the parameters.
+#
+# Example: 
+# 
+# <nmdrt:parameters id="REQUIRED_ID" 
+#                   xmlns:nmwg="http://ggf.org/ns/nmwg/characteristic/delay/roundTrip/2.0/">
+# 
+#   <nmwg:parameter name="REQUIRED_ENUM_NAME" value="OPTIONAL_VALUE"
+#                   xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#     <!-- ANY TEXT, (IF YOU DID NOT USE THE VALUE ATTRIBUTE) -->
+# 
+#   </nmwg:parameter>
+#  
+#   <!-- MORE PARAMETERS -->
+#   
+# </nmdrt:parameters>
+# 
+# ##############################################################
+
+DelayParameters =
+        element nmdrt:parameters {
+                Identifier &        
+                DelayParameter+
+        }
+        
+DelayParameter = 
+        element nmwg:parameter { 
+                attribute name { "packetType" | "packetSize" | "numPackets" | 
+                                 "packetSpacing" | "packetGap" | "protocolID" | 
+                                 "typeOfService" | "differentiatedServicesCodePoint" | 
+                                 "flowLabel" | "lossThreshold" | "valueUnits" | 
+                                 "numBytes" | "numBytesUnits"  } &
+                (
+                        attribute value { text } |
+                        text
+                )
+        }
+
+
+# ##############################################################
+# The data block is complex, and has the potential to contain
+# many things.  The data block can be used to return a metadata
+# block from a request, commonTime or datum elements, keys, 
+# or something that we have perhaps not defined as of yet.  
+#
+# Example: 
+# 
+# <nmwg:data id="REQUIRED_ID" 
+#            metadataIdRef="OPTIONAL_REFERENCE_ID" 
+#            xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <!-- OPTIONAL (MULTIPLE) METADATA -->
+# 
+#           <!-- OR -->
+#
+#   <!-- TBD OPTIONAL (MULTIPLE) COMMON TIME ELEMENTS AND 
+#        OPTIONAL (MULTIPLE) DATUM ELEMENTS-->
+# 
+#           <!-- OR -->
+#  
+#   <!-- TBD OPTIONAL (MULTIPLE) DATUM ELEMENTS -->
+# 
+#           <!-- OR -->
+#  
+#   <!-- OPTIONAL (MULTIPLE) KEY ELEMENTS -->
+# 
+#           <!-- OR -->
+# 
+#   <!-- ANY OPTIONAL (MULTIPLE) ELEMENT IN ANY NAMESPACE -->
+#   
+# </nmwg:data>
+# 
+# ##############################################################
+   
+DelayData =
+        element nmwg:data {
+                Identifier &
+                MetadataIdentifierRef? &
+                (
+                        (
+                                Metadata* |
+                                DelayMetadata*
+                        ) |
+                        (
+                                DelayCommonTime+ & 
+                                (
+                                        DelayDatum* |
+                                        ResultDatum*
+                                )
+                        ) |
+                        (
+                                DelayDatum* |
+                                ResultDatum*
+                        ) |
+                        Key*
+                )
+        }
+
+
+# ##############################################################
+# CommonTime is used a a shortcut able to 'factor out' a frequently
+# occurring time range that a bunch of datum (or other) elements
+# might share, thus reducing complexity of XML representation.  
+# CommonTime is similar to the other NMWG time stamps (from 
+# nmtime.rnc) in its potential time representations.
+#
+# Example: 
+# 
+# <nmwg:commonTime type="REQUIRED_TYPE" value="OPTIONAL_VALUE"
+#                  duration="OPTIONAL_DURATION" 
+#                  inclusive="OPTIONAL_INCLUSIVE_FLAG"
+#                  xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <!-- TBD OPTIONAL START TIME ELEMENT (USE END TIME OR DURATION) -->
+#  
+#   <!-- TBD OPTIONAL END TIME ELEMENT (ONLY WITH START TIME) -->
+#  
+#   <!-- TBD OPTIONAL TIME VALUE ELEMENT (USE IF NO VALUE ATTRIBUTE) -->
+#  
+#   <!-- TBD OPTIONAL (MULTIPLE) DATUM ELEMENTS -->
+# 
+#   <!-- ANY OPTIONAL (MULTIPLE) ELEMENT IN ANY NAMESPACE -->
+# </nmwg:commonTime>
+# 
+# ##############################################################
+
+DelayCommonTime = 
+        element nmwg:commonTime {
+                Type &
+                (
+                        TimeStamp |
+                        (
+                                StartTime & 
+                                (
+                                        EndTime | 
+                                        Duration 
+                                )
+                        )
+                ) &
+                (
+                        DelayDatum* |
+                        ResultDatum*
+                )
+        } 
+
+
+# ##############################################################
+# These are the basic elements we would expect to see in the 
+# specific delay datum.
+#
+# Example: 
+# 
+# <nmdrt:datum value="REQUIRED_VALUE"
+#              valueUnits="OPTIONAL_VALUE_UNITS"
+#              numBytes="OPTIONAL_NUM_BYTES"
+#              numBytesUnits="OPTIONAL_NUM_BYTES_UNITS"
+#              timeType="OPTIONAL_TIME_TYPE"
+#              timeValue="OPTIONAL_TIME_VALUE"
+#              xmlns:nmwg="http://ggf.org/ns/nmwg/characteristic/delay/roundTrip/2.0/">
+# 
+#   <!-- TIME ELEMENT (IF ATTRIBUTES NOT USED) -->
+#  
+# </nmdrt:datum>
+# 
+# ##############################################################
+
+DelayDatum =
+        element nmdrt:datum {
+                attribute value { xsd:float } &
+                attribute valueUnits { xsd:string }? &        
+                attribute numBytes { xsd:int }? &
+                attribute numBytesUnits { xsd:string }? &
+                (
+                        (
+                                attribute timeType { xsd:string } & 
+                                attribute timeValue { xsd:string }
+                        ) |
+                        Time
+                )?                       
+        }
+

Added: NMWG/base/schema/nmtime.rnc
===================================================================
--- NMWG/base/schema/nmtime.rnc	                        (rev 0)
+++ NMWG/base/schema/nmtime.rnc	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,154 @@
+# ##############################################################
+# 
+# File:      nmtime.rnc - NMWG Time definitions
+# Version:   $Id: nmtime.rnc 358 2008-06-05 15:14:11Z swany $
+# Purpose:   This describes a set of time formats for 
+#             representing measurements.  
+#                         
+# ##############################################################
+
+
+# ##############################################################
+# Namespace definitions
+# ##############################################################
+namespace nmtm = "http://ggf.org/ns/nmwg/time/20070914/"
+
+
+# ##############################################################
+# Regular time is attached to a specific datum instance; it is
+# essentially the same as before, but cannot have anything
+# 'inside' of it. The type can be simple, like UNIX, or it
+# could be something like timeRange or timeInterval. If this is
+# the case, we would then see the two extra time designators for
+# the start and end (or duration)
+# 
+# Example:
+# 
+# <nmtm:time type="REQUIRED_TYPE" value="OPTIONAL_VALUE"
+#            duration="OPTIONAL_DURATION" 
+#            inclusive="OPTIONAL_INCLUSIVE_FLAG"
+#            xmlns:nmtm="http://ggf.org/ns/nmwg/time/2.0/">
+# 
+#   <!-- TBD OPTIONAL START TIME ELEMENT (USE END TIME OR 
+#        DURATION) -->
+#  
+#   <!-- TBD OPTIONAL END TIME ELEMENT (ONLY WITH START TIME) -->
+#  
+#   <!-- TBD OPTIONAL TIME VALUE ELEMENT (USE IF NO VALUE 
+#        ATTRIBUTE) -->
+#  
+# </nmtm:time>
+# 
+#
+# Time types are enumerated as follows:
+#
+# * unix: integral seconds since Jan 1, 1970 (UTC)
+#
+# * iso9601/rfc3339:
+#
+#       full date/time representation. Examples from RFC-339:
+#
+#        Here are some examples of Internet date/time format.
+#     
+#           1985-04-12T23:20:50.52Z
+#     
+#        This represents 20 minutes and 50.52 seconds after the 23rd hour of
+#        April 12th, 1985 in UTC.
+#     
+#           1996-12-19T16:39:57-08:00
+#     
+#        This represents 39 minutes and 57 seconds after the 16th hour of
+#        December 19th, 1996 with an offset of -08:00 from UTC (Pacific
+#        Standard Time).  Note that this is equivalent to 1996-12-20T00:39:57Z
+#        in UTC.
+#     
+#           1990-12-31T23:59:60Z
+#     
+#        This represents the leap second inserted at the end of 1990.
+#     
+#           1990-12-31T15:59:60-08:00
+#     
+#        This represents the same leap second in Pacific Standard Time, 8
+#        hours behind UTC.
+#     
+#           1937-01-01T12:00:27.87+00:20
+#     
+#        This represents the same instant of time as noon, January 1, 1937,
+#        Netherlands time.  Standard time in the Netherlands was exactly 19
+#        minutes and 32.13 seconds ahead of UTC by law from 1909-05-01 through
+#        1937-06-30.  This time zone cannot be represented exactly using the
+#        HH:MM format, and this timestamp uses the closest representable UTC
+#        offset.
+#
+# ##############################################################
+
+Time = 
+        element nmtm:time {
+                attribute type { xsd:string } &
+                (
+                         TimeStamp |
+                         (
+                                StartTime & 
+                                ( 
+                                        EndTime | 
+                                        Duration
+                                )
+                         )
+                )
+        } 
+
+# precisionUnits must be one of the recognized SI units
+# The most complete list I could currently find is at:
+# http://en.wikipedia.org/wiki/Orders_of_magnitude_%28time%29
+#
+# synchronized SHOULD be set true if the party generating the timestamp
+# has a clock that is synchronized to UTC using an external source
+# (e.g., the attribute should be set true if GPS hardware is used and it
+# indicates that it has acquired current position and time or if NTP is
+# used and it indicates that it has synchronized to an external source,
+# which includes stratum 0 source, etc.).  If there is no notion of
+# external synchronization for the time source, the attribute SHOULD be set
+# to false. If the attribute is not set at all, the synchronization
+# status of the timestamp can not be determined except through external
+# knowledge.
+Precision =
+        (
+            (
+                attribute precision { xsd:unsignedInt } &
+                attribute precisionUnits { xsd:string } &
+                attribute synchronized { xsd:boolean }?
+            ) |
+            element nmtm:precision {
+                attribute precisionUnits { xsd:string } &
+                attribute synchronized { xsd:boolean }? &
+                xsd:unsignedInt
+            }
+        )
+        
+
+TimeStamp =   
+        (
+                ( 
+                        attribute value { xsd:string } |
+                        element nmtm:value { xsd:string }
+                ) &
+                Precision?
+        )
+
+Duration =
+        attribute duration { xsd:string }
+
+TimeContent = 
+        attribute type { text } &
+        attribute inclusive { text }? &
+        TimeStamp        
+
+StartTime = 
+        element nmtm:start {
+                TimeContent
+        }
+   
+EndTime = 
+        element nmtm:end {
+                TimeContent
+        }

Added: NMWG/base/schema/nmtopo-l2.rnc
===================================================================
--- NMWG/base/schema/nmtopo-l2.rnc	                        (rev 0)
+++ NMWG/base/schema/nmtopo-l2.rnc	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,141 @@
+# ##############################################################
+# 
+# File:         nmtopo_l2.rnc - Schema to describe topological 
+#                               features to be used in subject 
+#                               elements.
+# Version:      $Id: nmtopo-l2.rnc 189 2007-01-31 20:46:21Z boote $
+# Purpose:      This file lays out some major network topologies
+#               used in measurement.  
+# Reference:    http://books.xmlschemata.org/relaxng/page2.html
+#                         
+# ##############################################################
+
+
+# ##############################################################
+# Namespace definitions
+# ##############################################################
+namespace nmtl2 = "http://ggf.org/ns/nmwg/topology/l2/3.0/"
+namespace nmwgtopo3 = "http://ggf.org/ns/nmwg/topology/base/3.0/"
+
+
+## ########################
+## l2 interface
+## ########################
+
+L2Interface = 
+        element nmtl2:interface {
+                L2InterfaceContent
+        }
+
+L2InterfaceContent = 
+        Identifier? &
+        L2InterfaceIdRef? &
+        L2Role? &
+        element nmtl2:type { xsd:string }? &
+        element nmtl2:address {
+                L2Address
+        }? &
+        element nmtl2:name { 
+                attribute type { xsd:string }? &
+                xsd:string
+        }? &
+        element nmtl2:description { xsd:string }? &
+        element nmtl2:ifHostName { xsd:string }? &
+        element nmtl2:ifIndex { xsd:string }? &
+        element nmtl2:capacity { xsd:string }?
+
+L2Address = 
+        (
+                attribute value { xsd:string } |
+                text
+        ) &
+        attribute type { xsd:string }
+
+
+## ########################
+## l2 link
+## ########################
+
+L2Link = 
+        element nmtl2:link {
+                L2LinkContent
+        }
+
+L2LinkContent =
+        Identifier? &
+        L2LinkIdRef? &
+        element nmtl2:index { xsd:string }? &                
+        element nmtl2:type { xsd:string }? &        
+        element nmtl2:name { 
+                attribute type { xsd:string }? &
+                xsd:string
+        }? &
+        element nmtl2:globalName { 
+                attribute type { xsd:string }? &
+                xsd:string
+        }? &        
+        L2Interface* &
+        L2Link* &        
+        Node*
+        
+
+## ########################
+## l2 network
+## ########################        
+        
+L2Network =
+        element nmtl2:network {
+                L2NetworkContent
+        }
+
+L2NetworkContent =
+        Identifier? &
+        L2NetworkIdRef? &
+        element nmtl2:name { 
+                attribute type { xsd:string }? &
+                xsd:string
+        }? &
+        element nmtl2:type { xsd:string }? &                        
+        element nmtl2:vlan { xsd:string }? &
+        L2Interface* &
+        L2Link* &
+        Node*
+
+
+## ########################
+## l2 path
+## ########################
+
+L2Path = 
+        element nmtl2:path {
+                L2PathContent
+        }
+
+L2PathContent = 
+        Identifier &
+        L2PathIdRef? &        
+        L2Link*
+
+
+## ########################
+## l2 misc
+## ########################
+
+L2Role = 
+        (
+                attribute role { xsd:string } |
+                element nmtl2:role { xsd:string }
+        )
+
+L2InterfaceIdRef =
+            attribute interfaceIdRef { xsd:string }        
+
+L2LinkIdRef =
+            attribute linkIdRef { xsd:string }
+
+L2NetworkIdRef =
+            attribute networkIdRef { xsd:string }
+
+L2PathIdRef =
+            attribute pathIdRef { xsd:string }
+

Added: NMWG/base/schema/nmtopo-l3.rnc
===================================================================
--- NMWG/base/schema/nmtopo-l3.rnc	                        (rev 0)
+++ NMWG/base/schema/nmtopo-l3.rnc	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,157 @@
+# ##############################################################
+# 
+# File:         nmtopo_l3.rnc - Schema for Layer 3 entities 
+# Version:      $Id: nmtopo-l3.rnc 189 2007-01-31 20:46:21Z boote $
+# Purpose:      This schema represents entities at Layer 3, or the 
+#               Network Layer.
+# Reference:    http://books.xmlschemata.org/relaxng/page2.html
+#                         
+# ##############################################################
+
+
+# ##############################################################
+# Namespace definitions
+# ##############################################################
+namespace nmtl3 = "http://ggf.org/ns/nmwg/topology/l3/3.0/"
+namespace nmtl2 = "http://ggf.org/ns/nmwg/topology/l2/3.0/"
+namespace nmwgtopo3 = "http://ggf.org/ns/nmwg/topology/base/3.0/"
+
+
+## ########################
+## l3 interface
+## ########################
+
+L3Interface = 
+        element nmtl3:interface {
+                L3InterfaceContent
+        }
+
+L3InterfaceContent = 
+        Identifier? &
+        L3InterfaceIdRef? &
+        element nmtl3:ipAddress {
+                L3Address
+        }? &
+        element nmtl3:netmask { xsd:string }? &
+        element nmtl3:ifName { xsd:string }? &
+        element nmtl3:ifDescription { xsd:string }? &
+        element nmtl3:ifAddress {
+                L3Address
+        }? &
+        element nmtl3:ifHostName { xsd:string }? &
+        element nmtl3:ifIndex { xsd:string }? &
+        element nmtl3:type { xsd:string }? &
+        element nmtl3:capacity { xsd:string }?
+
+L3Address = 
+        (
+                attribute value { xsd:string } |
+                text
+        ) &
+        attribute type { xsd:string }
+
+
+## ########################
+## l3 link
+## ########################
+
+L3Link = 
+        element nmtl3:link {
+                L3LinkContent
+        }
+
+L3LinkContent =
+        Identifier? &
+        L3LinkIdRef? &
+        element nmtl3:index { xsd:string }? &        
+        element nmtl3:type { xsd:string }? &                
+        element nmtl3:name { 
+                attribute type { xsd:string }? &
+                xsd:string
+        }? &
+        element nmtl3:globalName { 
+                attribute type { xsd:string }? &
+                xsd:string
+        }? &        
+        (
+                L3Interface |
+                L2Interface
+        )* &
+        (
+                L3Link |
+                L2Link
+        )* &
+        Node*
+        
+
+## ########################
+## l3 network
+## ########################
+
+L3Network =
+        element nmtl3:network{
+                L3NetworkContent
+        }
+
+L3NetworkContent =
+        Identifier? &
+        L3NetworkIdRef? &
+        element nmtl3:name { 
+                attribute type { xsd:string }? &
+                xsd:string
+        }? &
+        element nmtl3:type { xsd:string }? &        
+        element nmtl3:subnet { xsd:string }? &        
+        element nmtl3:netmask { xsd:string }? &        
+        element nmtl3:asn { xsd:string }? &
+        (
+                L3Interface |
+                L2Interface
+        )* &
+        (
+                L3Link |
+                L2Link
+        )* &
+        Node*
+                
+
+## ########################
+## l3 path
+## ########################
+
+L3Path = 
+        element nmtl3:path {
+                L3PathContent
+        }
+
+L3PathContent = 
+        Identifier &
+        L3PathIdRef? &        
+        (
+                L2Link |
+                L3Link
+        )*
+
+
+## ########################
+## l3 misc
+## ########################
+
+L3Role = 
+        (
+                attribute role { xsd:string } |
+                element nmtl3:role { xsd:string }
+        )
+
+L3InterfaceIdRef =
+            attribute interfaceIdRef { xsd:string }        
+
+L3LinkIdRef =
+            attribute linkIdRef { xsd:string }
+
+L3NetworkIdRef =
+            attribute networkIdRef { xsd:string }
+
+L3PathIdRef =
+            attribute pathIdRef { xsd:string }
+

Added: NMWG/base/schema/nmtopo-l4.rnc
===================================================================
--- NMWG/base/schema/nmtopo-l4.rnc	                        (rev 0)
+++ NMWG/base/schema/nmtopo-l4.rnc	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,118 @@
+# ##############################################################
+# 
+# File:         nmtopo_l4.rnc - Layer 4 Network entities
+#                           
+# Version:      $Id: nmtopo-l4.rnc 209 2007-02-15 17:20:25Z zurawski $
+# Purpose:      The schema represents entities at the Layer 4 or
+#               Transport layer
+#           
+# Reference:    http://books.xmlschemata.org/relaxng/page2.html
+#                         
+# ##############################################################
+
+
+# ##############################################################
+# Namespace definitions
+# ##############################################################
+namespace nmtl4 = "http://ggf.org/ns/nmwg/topology/l4/3.0/"
+namespace nmtl3 = "http://ggf.org/ns/nmwg/topology/l3/3.0/"
+namespace nmwgtopo3 = "http://ggf.org/ns/nmwg/topology/base/3.0/"
+
+
+## ########################
+## endPoint pair stuff
+## ########################
+
+L4EndpointPair = 
+        element nmtl4:endPointPair {
+                L4EndpointPairContent
+        }
+
+L4EndpointPairContent =
+        (
+                element nmtl4:endPoint {
+                        attribute port { xsd:string }? &
+                        attribute protocol { xsd:string }? &
+                        (
+                                attribute role { "src" } |
+                                element nmwgtopo3:role { "src" }
+                        )? &
+                        (
+                                element nmtl4:address { L4Address } |
+                                element nmtl3:interface { anyThing }
+                        )?                
+                },
+                element nmtl4:endPoint {
+                        attribute port { xsd:string }? &
+                        attribute protocol { xsd:string }? &
+                        (
+                                attribute role { "dst" } |
+                                element nmwgtopo3:role { "dst" }
+                        )? &
+                        (
+                                element nmtl4:address { L4Address } |
+                                element nmtl3:interface { anyThing }
+                        )                
+                } 
+        )
+
+
+## ########################
+## endPoint stuff
+## ########################
+
+L4Endpoint = 
+        element nmtl4:endPoint {
+                L4EndpointContent
+        }
+
+L4EndpointContent = 
+        attribute port { xsd:string }? &
+        attribute protocol { xsd:string }? &
+        attribute index { xsd:string }? &
+        L4Role? &
+        (
+                element nmtl4:address {
+                        L4Address
+                } |
+                element nmtl3:interface {
+                        anyThing
+                }
+        )
+
+
+## ########################
+## generic path
+## ########################
+
+Path = 
+        element nmtl4:path {
+                PathContent
+        }
+
+PathContent = 
+        Identifier &
+        PathIdRef? &        
+        L4Endpoint*
+
+
+## ########################
+## misc stuff
+## ########################
+
+L4Address = 
+        (
+                attribute value { xsd:string } |
+                text
+        ) &
+        attribute type { xsd:string }
+
+L4Role = 
+        (
+                attribute role { xsd:string } |
+                element nmwgtopo3:role { xsd:string }
+        )
+
+PathIdRef = 
+        attribute pathIdRef { xsd:string }
+

Added: NMWG/base/schema/nmtopo.rnc
===================================================================
--- NMWG/base/schema/nmtopo.rnc	                        (rev 0)
+++ NMWG/base/schema/nmtopo.rnc	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,140 @@
+# ##############################################################
+# 
+# File:      nmtopo.rnc - Schema to describe topological
+#                            elements.
+# Version:   $Id: nmtopo.rnc 341 2008-04-24 21:52:11Z boote $
+#                         
+# ##############################################################
+
+
+# ##############################################################
+# Namespace definitions
+# ##############################################################
+namespace nmwgtopo = "http://ggf.org/ns/nmwg/topology/2.0/"
+
+
+# ##############################################################
+# Covers the basic point to point measurement situation.  The two 
+# points are a source and destination; may contain information 
+# such as hostname or ip address, and port number when applicable.
+# 
+# Example:
+# 
+# <nmwgtopo:endPointPair 
+#  xmlns:nmwgtopo="http://ggf.org/ns/nmwg/topology/2.0/">
+# 
+#   <nmwgtopo:src type="REQUIRED_TYPE" value="REQUIRED_VALUE" 
+#                 port="OPTIONAL_PORT"/>
+# 
+#   <nmwgtopo:dst type="REQUIRED_TYPE" value="REQUIRED_VALUE" 
+#                 port="OPTIONAL_PORT"/>
+#  
+# </nmwgtopo:endPointPair>
+# 
+# ##############################################################
+
+EndpointPair = 
+        element nmwgtopo:endPointPair {
+                EndpointPairContent
+        }
+
+EndpointPairContent =
+        element nmwgtopo:src {
+                EndpointContent
+        } &
+        element nmwgtopo:dst {
+                EndpointContent
+        }  
+
+
+# ##############################################################
+# Similar to above, from one point only.
+# 
+# Example:
+# 
+# <nmwgtopo:endPoint type="REQUIRED_TYPE" value="REQUIRED_VALUE" 
+#               port="OPTIONAL_PORT"/>
+# 
+# ##############################################################
+
+Endpoint = 
+        element nmwgtopo:endPoint {
+                EndpointContent
+        }
+
+EndpointContent = 
+        (
+                attribute value { xsd:string } |
+                text
+        ) &
+        attribute type { xsd:string } &
+        attribute port { xsd:string }?
+
+
+# ##############################################################
+# When looking at network utilization numbers (from a router or 
+# related software) there is a different set of applicable 
+# information
+# 
+# Example:
+# 
+# <nmwgtopo:interface xmlns:nmwgtopo="http://ggf.org/ns/nmwg/topology/2.0/">
+# 
+#   <nmwgtopo:ipAddress type='REQUIRED_TYPE'> TEXT </nmwgtopo:ipAddress>
+# 
+#   <nmwgtopo:hostName> TEXT </nmwgtopo:hostName>
+# 
+#   <nmwgtopo:ifName> TEXT </nmwgtopo:ifName>
+# 
+#   <nmwgtopo:ifDescription> TEXT </nmwgtopo:ifDescription>
+# 
+#   <nmwgtopo:ifAddress type='REQUIRED_TYPE'> TEXT </nmwgtopo:ifAddress>
+# 
+#   <nmwgtopo:ifHostName> TEXT </nmwgtopo:ifHostName>
+# 
+#   <nmwgtopo:ifIndex> TEXT </nmwgtopo:ifIndex>
+# 
+#   <nmwgtopo:type> TEXT </nmwgtopo:type>
+# 
+#   <nmwgtopo:direction> TEXT </nmwgtopo:direction>
+# 
+#   <nmwgtopo:authRealm> TEXT </nmwgtopo:authRealm>
+# 
+#   <nmwgtopo:classOfService> TEXT </nmwgtopo:classOfService>
+# 
+#   <nmwgtopo:capacity> TEXT </nmwgtopo:capacity>
+#  
+# </nmwgtopo:interface>
+# 
+# ##############################################################
+
+Interface = 
+        element nmwgtopo:interface {
+                InterfaceContent
+        }
+
+InterfaceContent = 
+        element nmwgtopo:ipAddress {
+                Address
+        }? &
+        element nmwgtopo:hostName { xsd:string }? &  
+        element nmwgtopo:ifName { xsd:string }? &
+        element nmwgtopo:ifDescription { xsd:string }? &
+        element nmwgtopo:ifAddress {
+                Address
+        }? &
+        element nmwgtopo:ifHostName { xsd:string }? &
+        element nmwgtopo:ifIndex { xsd:string }? &
+        element nmwgtopo:type { xsd:string }? &
+        element nmwgtopo:direction { xsd:string }? &
+        element nmwgtopo:authRealm { xsd:string }? &
+        element nmwgtopo:classOfService { xsd:string }? &
+        element nmwgtopo:capacity { xsd:string }?
+
+Address = 
+        (
+                attribute value { xsd:string } |
+                text
+        ) &
+        attribute type { xsd:string }
+

Added: NMWG/base/schema/nmtopo_ver3.rnc
===================================================================
--- NMWG/base/schema/nmtopo_ver3.rnc	                        (rev 0)
+++ NMWG/base/schema/nmtopo_ver3.rnc	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,214 @@
+# ##############################################################
+# 
+# File:         nmtopo_ver3.rnc - Schema to describe network elements
+# Version:      $Id: nmtopo_ver3.rnc 189 2007-01-31 20:46:21Z boote $
+# Purpose:      This file lays out some major network topologies
+#               used in measurement.  
+# Reference:    http://books.xmlschemata.org/relaxng/page2.html
+#                         
+# ##############################################################
+
+
+# ##############################################################
+# Namespace definitions
+# ##############################################################
+namespace nmwgtopo3 = "http://ggf.org/ns/nmwg/topology/base/3.0/"
+namespace nmtl4 = "http://ggf.org/ns/nmwg/topology/l4/3.0/"
+namespace nmtl3 = "http://ggf.org/ns/nmwg/topology/l3/3.0/"
+namespace nmtl2 = "http://ggf.org/ns/nmwg/topology/l2/3.0/"
+
+
+# ##############################################################
+# Include additional functionality from other files
+# ##############################################################
+include "nmtopo-l4.rnc"
+include "nmtopo-l3.rnc"
+include "nmtopo-l2.rnc"
+
+
+## ########################
+## generic interface
+## ########################
+
+BaseInterface = 
+        element nmwgtopo3:interface {
+                BaseInterfaceContent
+        }
+
+BaseInterfaceContent = 
+        Identifier? &
+        BaseInterfaceIdRef? &
+        BaseNodeIdRef? &
+        BaseName? &        
+        element nmwgtopo3:type { xsd:string }? &        
+        element nmwgtopo3:hostName { xsd:string }? &  
+        element nmwgtopo3:ifName { xsd:string }? &
+        element nmwgtopo3:ifDescription { xsd:string }? &
+        element nmwgtopo3:ifIndex { xsd:string }? &
+        element nmwgtopo3:capacity { xsd:string }?      
+        
+        
+## ########################
+## generic link
+## ########################
+        
+BaseLink = 
+        element nmwgtopo3:link {
+                BaseLinkContent
+        }
+        
+BaseLinkContent =
+        Identifier? &
+        BaseLinkIdRef? &
+        BaseName? &        
+        element nmwgtopo3:index { xsd:string }? &        
+        element nmwgtopo3:type { xsd:string }? &        
+        element nmwgtopo3:globalName { 
+                attribute type { xsd:string }? &
+                xsd:string
+        }? &
+        (
+                BaseInterface |
+                L2Interface |
+                L3Interface
+        )* &
+        (
+                BaseLink |
+                L2Link |
+                L3Link
+        )* &
+        Node*        
+
+        
+## ########################
+## generic network
+## ########################        
+
+BaseNetwork =
+        element nmwgtopo3:network{
+                BaseNetworkContent
+        }
+
+BaseNetworkContent =
+        Identifier? &
+        BaseNetworkIdRef? &
+        BaseName? &
+        element nmwgtopo3:type { xsd:string }? &        
+        (
+                BaseInterface |
+                L2Interface |
+                L3Interface
+        )* &
+        (
+                BaseLink |
+                L2Link |
+                L3Link
+        )* &
+        Node*        
+        
+
+## ########################
+## generic node
+## ########################        
+                
+Node = 
+        element nmwgtopo3:node {
+                NodeContent
+        }
+
+NodeContent =
+        Identifier? &
+        BaseNodeIdRef? &
+        BaseRole? &
+        BaseName? &        
+        element nmwgtopo3:type { xsd:string }? &
+        element nmwgtopo3:hostName { xsd:string }? &
+        element nmwgtopo3:description { xsd:string }? &
+        element nmwgtopo3:cpu { xsd:string }? &
+        element nmwgtopo3:operSys { xsd:string }? &
+        element nmwgtopo3:location {
+                LocationContent
+        }? &
+        element nmwgtopo3:institution { xsd:string }? &        
+        element nmwgtopo3:country { xsd:string }? &
+        element nmwgtopo3:city { xsd:string }? &                
+        element nmwgtopo3:latitude { xsd:float }? &
+        element nmwgtopo3:longitude { xsd:float }? &                
+        (
+                BaseInterface |
+                L2Interface |
+                L3Interface
+        )*
+
+LocationContent = 
+        element nmwgtopo3:institution { xsd:string }? &        
+        element nmwgtopo3:country { xsd:string }? &
+        element nmwgtopo3:zipcode { xsd:integer }? &
+        element nmwgtopo3:state { xsd:string }? &
+        element nmwgtopo3:city { xsd:string }? &
+        element nmwgtopo3:streetAddress { xsd:string }? &
+        element nmwgtopo3:floor { xsd:string }? &
+        element nmwgtopo3:room { xsd:string }? &
+        element nmwgtopo3:cage { xsd:string }? &
+        element nmwgtopo3:rack { xsd:string }? &        
+        element nmwgtopo3:shelf { xsd:string }? &                        
+        element nmwgtopo3:latitude { xsd:float }? &
+        element nmwgtopo3:longitude { xsd:float }?
+
+
+## ########################
+## generic path
+## ########################
+
+BasePath = 
+        element nmwgtopo3:path {
+                BasePathContent
+        }
+
+BasePathContent = 
+        Identifier &
+        BasePathIdRef? &        
+        (
+                BaseLink |
+                L2Link |
+                L3Link
+        )*
+
+
+## ########################
+## misc
+## ########################
+
+BaseAddress = 
+        (
+                attribute value { xsd:string } |
+                text
+        ) &
+        attribute type { xsd:string }
+
+BaseRole = 
+        (
+                attribute role { xsd:string } |
+                element nmwgtopo3:role { xsd:string }
+        )
+
+BaseName = 
+        element nmwgtopo3:name {
+                attribute type { xsd:string }? &
+                xsd:string 
+        }
+                                    
+BaseNodeIdRef =
+        attribute nodeIdRef { xsd:string }                
+                
+BaseInterfaceIdRef =
+        attribute interfaceIdRef { xsd:string }        
+
+BaseLinkIdRef =
+        attribute linkIdRef { xsd:string }                
+
+BasePathIdRef =
+        attribute pathIdRef { xsd:string }
+        
+BaseNetworkIdRef =
+        attribute networkIdRef { xsd:string }        

Added: NMWG/base/schema/owd.rnc
===================================================================
--- NMWG/base/schema/owd.rnc	                        (rev 0)
+++ NMWG/base/schema/owd.rnc	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,155 @@
+# ##############################################################
+# 
+# File:     owd.rnc
+#
+# Version:  $Id: owd.rnc 359 2008-06-05 15:45:30Z boote $ 
+#
+# Purpose:  Describes building-blocks used by several of the
+#           one-way latency schemas.
+#                         
+# ##############################################################
+
+
+namespace nmwg = "http://ggf.org/ns/nmwg/base/2.0/"
+namespace owd = "http://ggf.org/ns/nmwg/characteristic/delay/one-way/20070914/"
+namespace nmwgr = "http://ggf.org/ns/nmwg/result/2.0/"
+
+
+include "topo/nmtopo_l4.rnc"
+include "nmtime.rnc"
+include "result.rnc"
+include "nmbase.rnc" {
+        Metadata |= OWDMetadata
+        Data |= OWDData        
+} 
+
+
+OWDMetadata = 
+        element nmwg:metadata {
+                Identifier &
+                MetadataIdentifierRef? &
+                OWDMetadataContent
+        }
+          
+OWDMetadataBlock = 
+        OWDSubject? &
+        (
+                OWDParameters |
+                Parameters
+        )?        
+        
+OWDMetadataContent = 
+        (
+                OWDMetadataBlock |
+                FilterMetadataBlock                
+        ) &        
+        EventType? &
+        Key?        
+
+
+OWDSubject =
+        element owd:subject {
+                Identifier &
+                MetadataIdentifierRef? &        
+                (                   
+                        EndpointPair |
+                        L4EndpointPair
+                )
+        }
+
+
+OWDParameters =
+        element owd:parameters {
+                Identifier &        
+                OWDParameter+
+        }
+        
+#
+# appropriate parameters (most taken directly from RFC 4656) are:
+# count (number of packets requested to be sent)
+# DSCP (RFC 2474 style way to specify TOS bits)
+# schedule (can be an array of delays - fixed/exponential the schedule
+#       should be repeated until all packets are sent)
+# timeout (time to wait before declaring a packet lost seconds, or units?)
+# size (packet size - bytes or do we have to mess with units?
+#   
+OWDParameter = 
+    (
+        element nmwg:parameter { 
+                attribute name { "count" } &
+                (
+                        attribute value { xsd:unsignedInt } |
+                        xsd:unsignedInt
+                )
+        } &
+        element nmwg:parameter { 
+                attribute name { "DSCP" } &
+                (
+                        attribute value { xsd:unsignedInt } |
+                        xsd:unsignedInt
+                )
+        } &
+        element nmwg:parameter { 
+                attribute name { "schedule" } &
+                element owd:delayGap {
+                    attribute type { "fixed" | "exponential" }
+                } +
+        } &
+        element nmwg:parameter { 
+                attribute name { "timeout" } &
+                (
+                        attribute value { xsd:unsignedInt } |
+                        xsd:unsignedInt
+                )
+        } &
+        element nmwg:parameter { 
+                attribute name { "size" } &
+                (
+                        attribute value { xsd:unsignedInt } |
+                        xsd:unsignedInt
+                )
+        }
+    )
+
+
+OWDData =
+        element nmwg:data {
+                Identifier &
+                MetadataIdentifierRef? &
+                (
+                        (
+                                Metadata* |
+                                OWDMetadata*
+                        ) |
+                        (
+                                OWDDatum* |
+                                ResultDatum*
+                        ) |
+                        Key*
+                )
+        }
+
+
+#
+# OWDDatum reuses components from nmtime. It specifically uses nmtm:start
+# to mean 'sending time' and nmtm:end to mean 'receiving time'.
+# packetTTL is the TTL of the packet when it is recieved. This assumes
+# that the TTL is initialized to 255 when sent, so the number of hops
+# can be determined. (RFC 4645) If the TTL is unavailable, it can
+# either be reported as 255, or simply not specified since this has
+# been indicated as an optional parameter.
+#
+OWDDatum =
+        element owd:datum {
+                (
+                    attribute sequenceNumber { xsd:unsignedInt } |
+                    element owd:sequenceNumber { xsd:unsignedInt }
+                ) &
+                StartTime &
+                EndTime &
+                (
+                    attribute packetTTL { xsd:unsignedInt } |
+                    element owd:packetTTL { xsd:unsignedInt }
+                )?
+        }
+

Added: NMWG/base/schema/owdsummary.rnc
===================================================================
--- NMWG/base/schema/owdsummary.rnc	                        (rev 0)
+++ NMWG/base/schema/owdsummary.rnc	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,195 @@
+# ##############################################################
+# 
+# File:     summary.rnc
+#
+# Version:  $Id: owdsummary.rnc 341 2008-04-24 21:52:11Z boote $ 
+#
+# Purpose:  Describes summary for one-way latency.
+#                         
+# ##############################################################
+
+
+namespace nmwg = "http://ggf.org/ns/nmwg/base/2.0/"
+namespace owd = "http://ggf.org/ns/nmwg/characteristic/delay/one-way/20070914/"
+namespace nmwgr = "http://ggf.org/ns/nmwg/result/2.0/"
+namespace summary = "http://ggf.org/ns/nmwg/characteristic/delay/summary/20070921/"
+
+
+include "owd.rnc" {
+        Metadata |= SummaryMetadata
+        Data |= SummaryData        
+} 
+
+
+SummaryMetadata = 
+        element nmwg:metadata {
+                Identifier &
+                MetadataIdentifierRef? &
+                (
+                        OWDMetadataContent |
+                        SummaryMetadataContent
+                ) 
+        }
+          
+SummaryMetadataBlock = 
+        SummarySubject? &
+        (
+                SummaryParameters |
+                Parameters
+        )?        
+        
+SummaryMetadataContent = 
+        (
+                SummaryMetadataBlock |
+                FilterMetadataBlock                
+        ) &        
+        EventType? &
+        Key?        
+
+
+#
+# EndpointPair has a 'role' attribute/element. It should be set
+# to 'sender' in one endpoint and 'receiver' in the other endpoint.
+SummarySubject =
+        element summary:subject {
+                Identifier &
+                MetadataIdentifierRef? &        
+                (                   
+                        EndpointPair |
+                        L4EndpointPair
+                )
+        }
+
+
+SummaryParameters =
+        element summary:parameters {
+                Identifier &        
+                SummaryParameter+
+        }
+        
+# XXX: Add 'schedule' parameter
+SummaryParameter = 
+        element nmwg:parameter { 
+                attribute name { "bucket_width" } &
+                (
+                        attribute value { xsd:float } |
+                        xsd:float
+                )
+        } &
+        element nmwg:parameter {
+                attribute name { "schedule" } &
+                (
+                	element interval {
+                                attribute type {"fixed" | "exp"} &
+                                xsd:string
+                        } +
+                )
+        }
+
+
+SummaryData =
+        element nmwg:data {
+                Identifier &
+                MetadataIdentifierRef? &
+                (
+                        (
+                                Metadata* |
+                                SummaryMetadata*
+                        ) |
+                        (
+                                SummaryDatum* |
+                                ResultDatum*
+                        ) |
+                        Key*
+                )
+        }
+
+SummaryDatum =
+        element summary:datum {
+# The synchronization attribute in the precision part of StartTime
+# SHOULD be set to True only if the entire session consists of packet
+# measurements made with synchronized clocks.
+# If is is known that any of the packet measurements were made with
+# unsynchrnonized clocks, then the synchronization attribute of the
+# StartTime SHOULD be set to False.
+                StartTime &
+                EndTime &
+                (
+                    attribute sent { xsd:unsignedInt } |
+                    element summary:sent { xsd:unsignedInt }
+                ) &
+                (
+                    attribute sync { xsd:boolean } |
+                    element summary:sync { xsd:boolean }
+                ) &
+# Units is seconds
+                (
+                    attribute maxError { xsd:float } |
+                    element summary:maxError { xsd:float }
+                ) &
+                (
+                    attribute duplicates { xsd:unsignedInt } |
+                    element summary:duplicates { xsd:unisgnedInt }
+                ) &
+                (
+                    attribute loss { xsd:unsignedInt } |
+                    element summary:loss { xsd:unsignedInt }
+                ) &
+# Units is seconds
+                (
+                    attribute min_delay { xsd:float } |
+                    element summary:min_delay { xsd:float }
+                )? &
+# Units is seconds
+                (
+                    attribute med_delay { xsd:float } |
+                    element summary:med_delay { xsd:float }
+                )? &
+# Units is seconds
+# This is the Max delay for any 'received' packets.
+                (
+                    attribute max_delay { xsd:float } |
+                    element summary:max_delay { xsd:float }
+                )? &
+# Units is seconds
+# *_ipdv_jitter definitions from RFC 3393 (Section 4.5)
+# Basically, consecutive packets are selected for computing ipdv.
+                (
+                    attribute min_ipdv_jitter { xsd:float } |
+                    element summary:min_ipdv_jitter { xsd:float }
+                )? &
+                (
+                    attribute med_ipdv_jitter { xsd:float } |
+                    element summary:med_ipdv_jitter { xsd:float }
+                )? &
+                (
+                    attribute max_ipdv_jitter { xsd:float } |
+                    element summary:max_ipdv_jitter { xsd:float }
+                )? &
+# value_buckets is a histogram of all packet delays in
+# the sample.
+# bucket_width (from metadata) is used as the divisor when bucketing the
+# real delays to compute the 'value'. 'count' indicates
+# the number of packet delays that fell in this range.
+                element summary:value_buckets {
+                    element summary:value_bucket {
+                        attribute value { xsd:int } &
+                        attribute count { xsd:unsignedInt}
+                    } +
+                }? &
+                element summary:TTL_buckets {
+                    element summary:TTL_bucket {
+                        attribute ttl { xsd:unsignedInt } &
+                        attribute count { xsd:unsignedInt }
+                    } +
+                }? &
+                element summary:reordering_buckets {
+                    element summary:reordering_bucket {
+                        attribute order { xsd:unsignedInt } &
+                        attribute count { xsd:unsignedInt }
+                    } +
+                }?
+
+
+ 
+        }

Added: NMWG/base/schema/ping.rnc
===================================================================
--- NMWG/base/schema/ping.rnc	                        (rev 0)
+++ NMWG/base/schema/ping.rnc	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,257 @@
+# ##############################################################
+# 
+# File:         ping.rnc - Specialized schema for the ping 
+#                          tool
+# Version:      $Id: ping.rnc 341 2008-04-24 21:52:11Z boote $
+# Purpose:      Defines elements to be used in the representation 
+#               of ping measurements.
+#                         
+# ##############################################################
+
+
+# ##############################################################
+# Namespace definitions
+# ##############################################################
+namespace nmwg = "http://ggf.org/ns/nmwg/base/2.0/"
+namespace ping = "http://ggf.org/ns/nmwg/tools/ping/2.0/"
+namespace nmwgr = "http://ggf.org/ns/nmwg/result/2.0/"
+
+
+# ##############################################################
+# Include additional functionality from other files
+# ##############################################################
+include "nmtopo.rnc"
+include "nmtopo_ver3.rnc"
+include "result.rnc"
+include "nmbase.rnc" {
+        Metadata |= PingMetadata
+        Data |= PingData        
+} 
+
+
+# ##############################################################
+# Metadata 
+# ##############################################################
+        
+PingMetadata = 
+        element nmwg:metadata {
+                Identifier &
+                MetadataIdentifierRef? &
+                PingMetadataContent
+        }
+          
+PingMetadataBlock = 
+        PingSubject? &
+        (
+                PingParameters |
+                Parameters
+        )?        
+        
+PingMetadataContent = 
+        (
+                PingMetadataBlock |
+                FilterMetadataBlock                
+        ) &        
+        EventType? &
+        Key?        
+
+
+# ##############################################################
+# Redefined ping subject allows only an endPointPair, and the
+# two id attributes.    
+#
+# Example: 
+# 
+# <ping:subject id="REQUIRED_ID" 
+#               metadataIdRef="OPTIONAL_REFERENCE_ID"
+#               xmlns:nmwg="http://ggf.org/ns/nmwg/tools/ping/2.0/">
+# 
+#   <nmwgtopo:endPointPair xmlns:nmwgtopo="http://ggf.org/ns/nmwg/topology/2.0/">
+# 
+#     <nmwgtopo:src type="REQUIRED_TYPE" value="REQUIRED_VALUE" 
+#                   port="OPTIONAL_PORT"/>
+# 
+#     <nmwgtopo:dst type="REQUIRED_TYPE" value="REQUIRED_VALUE" 
+#                   port="OPTIONAL_PORT"/>
+#  
+#   </nmwgtopo:endPointPair>
+#  
+# </ping:subject>
+#
+# ##############################################################
+
+PingSubject =
+        element ping:subject {
+                Identifier &
+                MetadataIdentifierRef? &     
+                (                   
+                        EndpointPair |
+                        L4EndpointPair
+                )
+        }
+
+
+# ##############################################################
+# This is simply the regular method of doing parameters with an
+# enumeration to limit what 'names' are accepted and an outer
+# ping: namespace for the parameters.
+#
+# Example: 
+# 
+# <ping:parameters id="REQUIRED_ID" 
+#                   xmlns:nmwg="http://ggf.org/ns/nmwg/tools/ping/2.0/">
+# 
+#   <nmwg:parameter name="REQUIRED_ENUM_NAME" value="OPTIONAL_VALUE"
+#                   xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#     <!-- ANY TEXT, (IF YOU DID NOT USE THE VALUE ATTRIBUTE) -->
+# 
+#   </nmwg:parameter>
+#  
+#   <!-- MORE PARAMETERS -->
+#   
+# </ping:parameters>
+# 
+# ##############################################################
+
+PingParameters =
+        element ping:parameters {
+                Identifier &        
+                PingParameter+
+        }
+        
+PingParameter = 
+        element nmwg:parameter { 
+                attribute name { "count" | "interval" | "deadline" | 
+                                 "packetSize" | "ttl" | "arguments" |   
+                                 "valueUnits" | "numBytes" | 
+                                 "numBytesUnits" } &
+                (
+                        attribute value { text } |
+                        text
+                )
+        }
+
+
+# ##############################################################
+# The data block is complex, and has the potential to contain
+# many things.  The data block can be used to return a metadata
+# block from a request, commonTime or datum elements, keys, 
+# or something that we have perhaps not defined as of yet.  
+#
+# Example: 
+# 
+# <nmwg:data id="REQUIRED_ID" 
+#            metadataIdRef="OPTIONAL_REFERENCE_ID" 
+#            xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <!-- OPTIONAL (MULTIPLE) METADATA -->
+# 
+#           <!-- OR -->
+#
+#   <!-- TBD OPTIONAL (MULTIPLE) COMMON TIME ELEMENTS AND 
+#        OPTIONAL (MULTIPLE) DATUM ELEMENTS-->
+# 
+#           <!-- OR -->
+#  
+#   <!-- TBD OPTIONAL (MULTIPLE) DATUM ELEMENTS -->
+# 
+#           <!-- OR -->
+#  
+#   <!-- OPTIONAL (MULTIPLE) KEY ELEMENTS -->
+# 
+#           <!-- OR -->
+# 
+#   <!-- ANY OPTIONAL (MULTIPLE) ELEMENT IN ANY NAMESPACE -->
+#   
+# </nmwg:data>
+# 
+# ##############################################################
+   
+PingData =
+        element nmwg:data {
+                Identifier &
+                MetadataIdentifierRef? &
+                (
+                        (
+                                Metadata* |
+                                PingMetadata*
+                        ) |
+                        (
+                                PingCommonTime+ & 
+                                (
+                                        PingDatum* |
+                                        ResultDatum*
+                                )
+                        ) |
+                        (
+                                PingDatum* |
+                                ResultDatum*
+                        ) |
+                        Key*
+                )
+        }
+
+
+# ##############################################################
+# CommonTime 
+# ##############################################################
+        
+PingCommonTime = 
+        element nmwg:commonTime {
+                Type &
+                (
+                        TimeStamp |
+                        (
+                                StartTime & 
+                                (
+                                        EndTime | 
+                                        Duration 
+                                )
+                         )
+                ) &
+                (
+                        PingDatum* |
+                        ResultDatum*
+                )
+        } 
+
+
+# ##############################################################
+# These are the basic elements we would expect to see in the 
+# specific ping datum.
+#
+# Example: 
+# 
+# <ping:datum value="REQUIRED_VALUE"
+#              valueUnits="OPTIONAL_VALUE_UNITS"
+#              numBytes="OPTIONAL_NUM_BYTES"
+#              numBytesUnits="OPTIONAL_NUM_BYTES_UNITS"
+#              seqNum="OPTIONAL_SEQ_NUM"
+#              ttl="OPTIONAL_TTL"
+#              timeType="OPTIONAL_TIME_TYPE"
+#              timeValue="OPTIONAL_TIME_VALUE"
+#              xmlns:nmwg="http://ggf.org/ns/nmwg/tools/ping/2.0/">
+# 
+#   <!-- TIME ELEMENT (IF ATTRIBUTES NOT USED) -->
+#  
+# </ping:datum>
+# 
+# ##############################################################
+
+PingDatum =
+        element ping:datum {
+                attribute value { xsd:float } &
+                attribute valueUnits { xsd:string }? &        
+                attribute numBytes { xsd:int }? &
+                attribute numBytesUnits { xsd:string }? &
+                attribute seqNum { xsd:int }? &
+                attribute ttl { xsd:int }? &
+                (
+                        (
+                                attribute timeType { xsd:string } & 
+                                attribute timeValue { xsd:string }
+                        ) |
+                        Time
+                )?                       
+        }

Added: NMWG/base/schema/pinger-landmarks.rnc
===================================================================
--- NMWG/base/schema/pinger-landmarks.rnc	                        (rev 0)
+++ NMWG/base/schema/pinger-landmarks.rnc	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,145 @@
+# ##############################################################
+# 
+# File:    pinger-landmarks.rnc - Schema to describe pinger 
+#          network elements
+# Version: $Id: nmtopo_base.rnc 277 2007-09-28 20:47:38Z aaron $
+#                         
+# ##############################################################
+
+# ##############################################################
+# Namespace definitions
+# ##############################################################
+namespace pingertopo =
+  "http://ogf.org/ns/nmwg/tools/pinger/landmarks/1.0/"
+
+# external schema files
+include "topo/nmtypes.rnc"
+include "topo/nmtopo_base.rnc"
+include "topo/nmtopo_l3.rnc"
+
+# generate PingER Topology can be a root elements
+start |= Topology
+
+Topology = element pingertopo:topology {
+  Domain+
+}
+
+Domain = element pingertopo:domain {
+  Identifier?
+  & element nmtb:comments { xsd:string }?
+  & Node+
+}
+
+# ########################
+# generic node
+#
+# Example:
+# <pingertopo:node xmlns:nmwg="http://ogf.org/ns/nmwg/tools/pinger/landmarks/1.0/">
+#   <nmtb:name>TEXT</nmtb:name>
+#   <nmtb:hostName>DNS NAME OF NODE</nmtb:hostName>
+#   <nmtb:location/>
+#   <nmtb:contact/>
+#   <nmtb:comments/>
+#   <nmtb:parameters/>
+# </pingertopo:node>
+#
+# ########################
+Node = element pingertopo:node { BaseNodeContent }
+BaseNodeContent =
+  Identifier?
+  & BaseName?
+  & element nmtb:hostName { xsd:string }+
+  & element nmtb:description { xsd:string }?
+  & element nmtb:location { LocationContent }?
+  & element nmtb:contact { ContactInformationContent }?
+  & element nmtb:comments { xsd:string }?
+  & PingERParameters+
+  & Port*
+
+# ########################
+# Parameters
+#
+# This element block defines the measurement to be conducted
+#
+# packetSize			specifies the packet size to use for pings
+# count						specifies the number of packets to send
+# packetInterval	specifies the interpacket time in sec between singleton pings
+# ttl							specifies the time to live to use for pings
+# measurementPeriod	specifies the period of time in seconds between measurments
+# measurementOffset	specifies the offset of time in seconds between measurments
+#
+# Therefore, a test with the parameters are run every 
+#     measurementPeriod +/- rand( measurementOffset )
+# seconds.
+# 
+# Example
+# 
+# <nmwg:parameters xmlns:nmwg="http://ggf.org/ns/nmwg/tools/base/2.0/">
+#   <nmwg:parameter name="packetSize">1000</nmwg:parameter>
+#   <nmwg:parameter name="count">10</nmwg:parameter>
+#   <nmwg:parameter name="packetInterval">1000</nmwg:parameter>
+#   <nmwg:parameter name="ttl">255</nmwg:parameter>
+#   <nmwg:parameter name="measurementPeriod">300</nmwg:parameter>
+#   <nmwg:parameter name="measurementOffset">30</nmwg:parameter>
+# </nmwg:parameters>
+#
+# ########################
+PingERParameters = element nmwg:parameters { PingERParametersContent }
+PingERParametersContent =
+  Identifier?
+  & element nmwg:parameter {
+      attribute name { "packetSize" } &
+      (
+        attribute value { text } |
+        text
+      )
+  & element nmwg:parameter {
+      attribute name { "count" } &
+      (
+        attribute value { text } |
+        text
+      )
+  & element nmwg:parameter {
+      attribute name { "packetInterval" } &
+      (
+        attribute value { text } |
+        text
+      )
+  & element nmwg:parameter {
+     attribute name { "ttl" } &
+     (
+       attribute value { text } |
+       text
+     )
+   & element nmwg:parameter {
+      attribute name { "measurementPeriod" } &
+      (
+        attribute value { text } |
+        text
+      )
+  & element nmwg:parameter {
+     attribute name { "measurementOffset" } &
+     (
+       attribute value { text } |
+       text
+     )
+
+
+# ########################
+# misc
+# ########################
+BaseName =
+  element nmtb:name {
+    attribute type { xsd:string }?
+    & xsd:string
+  }
+
+# ########################
+# layer3 port
+# ########################
+Port = element nmtl3:port { BasePortContent }
+BasePortContent =
+  Identifier?
+  & element nmtl3:ipAddress {
+	                L3Address
+	        }

Added: NMWG/base/schema/pinger.rnc
===================================================================
--- NMWG/base/schema/pinger.rnc	                        (rev 0)
+++ NMWG/base/schema/pinger.rnc	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,324 @@
+# ##############################################################
+# 
+# File:         pinger.rnc - Specialized schema for the pinger 
+#                          suite
+# Version:      $Id: pinger.rnc 341 2008-04-24 21:52:11Z boote $
+# Purpose:      Defines elements to be used in the representation 
+#               of ping measurements and summaries.
+#                         
+# ##############################################################
+
+
+# ##############################################################
+# Namespace definitions
+# ##############################################################
+namespace nmwg = "http://ggf.org/ns/nmwg/base/2.0/"
+namespace nmwgr = "http://ggf.org/ns/nmwg/result/2.0/"
+namespace pinger = "http://ggf.org/ns/nmwg/tools/pinger/2.0/"
+
+# ##############################################################
+# Include additional functionality from other files
+# ##############################################################
+include "nmtopo.rnc"
+include "nmtopo_ver3.rnc"
+include "result.rnc"
+include "nmbase.rnc" {
+        Metadata |= PingERMetadata
+        Data |= PingERData        
+} 
+
+
+
+# ##############################################################
+# Metadata 
+# ##############################################################
+
+PingERMetadata = 
+        element nmwg:metadata {
+                Identifier &
+                MetadataIdentifierRef? &
+                PingERMetadataContent
+        }
+
+PingERMetadataBlock = 
+        PingERSubject? &
+        (
+                PingERParameters |
+                Parameters
+        )?        
+
+PingERMetadataContent = 
+        (
+                PingERMetadataBlock |
+                FilterMetadataBlock                
+        ) &        
+        EventType? &
+        Key?        
+
+
+# ##############################################################
+# Redefined ping subject allows only an endPointPair, and the
+# two id attributes.    
+#
+# Example: 
+# 
+# <pinger:subject id="REQUIRED_ID" 
+#               metadataIdRef="OPTIONAL_REFERENCE_ID"
+#               xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0">
+# 
+#   <nmwgtopo:endPointPair xmlns:nmwgtopo="http://ggf.org/ns/nmwg/topology/2.0/">
+# 
+#     <nmwgtopo:src type="REQUIRED_TYPE" value="REQUIRED_VALUE" 
+#                   port="OPTIONAL_PORT"/>
+# 
+#     <nmwgtopo:dst type="REQUIRED_TYPE" value="REQUIRED_VALUE" 
+#                   port="OPTIONAL_PORT"/>
+#  
+#   </nmwgtopo:endPointPair>
+#  
+# </pinger:subject>
+#
+# ##############################################################
+
+PingERSubject =
+        element pinger:subject {
+                Identifier &
+                MetadataIdentifierRef? &     
+                (                   
+                        EndpointPair |
+                        L4EndpointPair
+                )
+        }
+
+
+# ##############################################################
+# This is simply the regular method of doing parameters with an
+# enumeration to limit what 'names' are accepted and an outer
+# ping: namespace for the parameters.
+#
+# The parameter set is typically used for on-demand measurements.
+#
+# count       		specifies the number fo packets sent (not necessarily recieved)
+# packetInterval  specifies the interpacket delay between packets
+# packetSize			specifies the size of the icmp packets
+# ttl         		specifies the maximum ttl fo the icmp packets
+#
+# Example: 
+# 
+# <pinger:parameters id="REQUIRED_ID" 
+#                   xmlns:nmwg="http://ggf.org/ns/nmwg/tools/base/2.0/">
+# 
+#   <nmwg:parameter name="REQUIRED_ENUM_NAME" value="OPTIONAL_VALUE"
+#                   xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#     <!-- ANY TEXT, (IF YOU DID NOT USE THE VALUE ATTRIBUTE) -->
+# 
+#   </nmwg:parameter>
+#  
+#   <!-- MORE PARAMETERS -->
+#   
+# </pinger:parameters>
+# 
+# ##############################################################
+
+PingERParameters =
+        element pinger:parameters {
+                Identifier &        
+                PingERParameter+
+        }
+
+PingERParameter = 
+        element nmwg:parameter { 
+                attribute name { 
+                                 "count" | "packetInterval" | 
+                                 "packetSize" | "ttl" |   
+                                 "valueUnits"  
+                               } &
+                (
+                        attribute value { text } |
+                        text
+                )
+        }
+
+
+# ##############################################################
+# The data block is complex, and has the potential to contain
+# many things.  The data block can be used to return a metadata
+# block from a request, commonTime or datum elements, keys, 
+# or something that we have perhaps not defined as of yet.  
+#
+# Example: 
+# 
+# <nmwg:data id="REQUIRED_ID" 
+#            metadataIdRef="OPTIONAL_REFERENCE_ID" 
+#            xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <!-- OPTIONAL (MULTIPLE) METADATA -->
+# 
+#           <!-- OR -->
+#
+#   <!-- TBD OPTIONAL (MULTIPLE) COMMON TIME ELEMENTS AND 
+#        OPTIONAL (MULTIPLE) DATUM ELEMENTS-->
+# 
+#           <!-- OR -->
+#  
+#   <!-- TBD OPTIONAL (MULTIPLE) DATUM ELEMENTS -->
+# 
+#           <!-- OR -->
+#  
+#   <!-- OPTIONAL (MULTIPLE) KEY ELEMENTS -->
+# 
+#           <!-- OR -->
+# 
+#   <!-- ANY OPTIONAL (MULTIPLE) ELEMENT IN ANY NAMESPACE -->
+#   
+# </nmwg:data>
+# 
+# ##############################################################
+
+PingERData =
+        element nmwg:data {
+                Identifier &
+                MetadataIdentifierRef? &
+                (
+                        (
+                                Metadata* |
+                                PingERMetadata*
+                        ) |
+                        (
+                                PingERCommonTime+ & 
+                                (
+                                        PingERDatum* |
+                                        ResultDatum*
+                                )
+                        ) |
+                        (
+                                PingERDatum* |
+                                ResultDatum*
+                        ) |
+                        Key*
+                )
+        }
+
+
+# ##############################################################
+# CommonTime 
+# ##############################################################
+
+PingERCommonTime = 
+        element nmwg:commonTime {
+                Type &
+                (
+                        TimeStamp |
+                        (
+                                StartTime & 
+                                (
+                                        EndTime | 
+                                        Duration 
+                                )
+                         )
+                ) &
+                (
+                        PingERDatum* |
+                        ResultDatum*
+                )
+        } 
+
+
+# ##############################################################
+# These are supplemental datum values that summarise the content
+# of the datum
+#
+# Valued datum elements:
+#
+# rtt  is the measured roundtrip delay of the ping packets
+# ipd  is the Interpacket Delay between adjacent packets (irrelevant
+#      loss and out of order packets)
+# clp  is the Conditional Loss Probility as defined by
+#        clp = Probability(loss(packet n+1) = true | loss(packet n) = true)
+# lossPercent  is the percentage of packets lost (recieved/sent)
+# ipdv is the Interpacket Delay Variability. Due to the differing
+#      possible ways in which to calculate ipdv, two of the most
+#      popular methods of determine the ipdv are:
+#   meanIpd  is the mean value of interpacket delays calculated as:
+#              SUM(i=1,N): abs(d(i) - d(i-1)) / (N -1)
+#   iqrIpd   is the interquartile range of the distribution of
+#            interpacket delays.
+#              
+# Boolean datum elements:
+#
+# outOfOrder  were any of the packets in the ping sequence recieved 
+#            out of order? 
+# duplicates  were any of the packets in the ping sequence recieved
+#            as duplicates?
+#
+# Notes:
+#
+# 1) if a unit is not reported, it MUST be assumed that the values
+#    are in the unit value of milliseconds. (unless the value type
+#    is a boolean)
+#
+# Example:
+# 
+# <pinger:datum value="REQUIRED_VALUE"
+#              valueUnits="OPTIONAL_VALUE_UNITS"
+#              numBytes="OPTIONAL_NUM_BYTES"
+#              seqNum="OPTIONAL_SEQ_NUM"
+#              ttl="OPTIONAL_TTL"
+#              timeType="OPTIONAL_TIME_TYPE"
+#              timeValue="OPTIONAL_TIME_VALUE"
+#              xmlns:nmwg="http://ggf.org/ns/nmwg/tools/ping/2.0/">
+# <pinger:datum name="REQUIRED_TYPE" 
+#              value="REQUIRED_VALUE"
+#              valueUnits="OPTIONAL_VALUE_UNITS">
+#
+#   <!-- TIME ELEMENT (IF ATTRIBUTES NOT USED) -->
+#
+# </pinger:datum>
+#
+# Specific examples:
+#
+# <pinger:datum value="12.1" seqNum="1" numBytes="1480" valueUnits="msec"/>
+# <pinger:datum value="13.5" seqNum="2" numBytes="1480" valueUnits="msec"/>
+# ...
+# <pinger:datum name="minRtt" value="12.1" valueUnits="msec"/>
+# <pinger:datum name="maxRtt" value="74.2"/>
+# <pinger:datum name="meanIpd" value="0.9"/>
+# <pinger:datum name="duplicates" value="true"/>
+# <pinger:datum name="outOfOrder" value="false"/>
+#
+# ##############################################################
+
+PingERDatum =
+          element pinger:datum {
+                (
+                    (
+                        attribute value { xsd:float } &
+                        attribute valueUnits { xsd:string }? &        
+                        attribute seqNum { xsd:int }? &
+                        attribute numBytes { xsd:int }? &
+                        attribute ttl { xsd:int }?
+                    ) |
+                    (
+                        attribute name {  "minRtt" | "maxRtt" | 
+                                          "meanRtt" | "medianRtt" |
+                                          "lossPercent" | "clp" |
+                                          "minIpd" | "maxIpd" | 
+                                          "iqrIpd" | "meanIpd" } &
+                        attribute value { xsd:float } &
+                        attribute valueUnits { xsd:string }?
+                    ) |
+                    (
+                        attribute name { "outOfOrder" | "duplicates" } &
+                        attribute value { xsd:boolean }
+                    )
+                ) &
+                (
+                        (
+                                attribute timeType { xsd:string } & 
+                                attribute timeValue { xsd:string }
+                        ) |
+                        Time
+                )?
+          }
+

Added: NMWG/base/schema/result.rnc
===================================================================
--- NMWG/base/schema/result.rnc	                        (rev 0)
+++ NMWG/base/schema/result.rnc	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,41 @@
+# ##############################################################
+# 
+# File:         result.rnc - Extension for a 'results' namespace
+# Version:      $Id: result.rnc 341 2008-04-24 21:52:11Z boote $
+# Purpose:      The 'results' namespace, for our purposes, is used
+#               for errors or other system messages.  At current
+#               time only a 'datum' element is defined.
+# Reference:    http://books.xmlschemata.org/relaxng/page2.html
+#                         
+# ##############################################################
+
+
+# ##############################################################
+# Namespace definitions
+# ##############################################################
+namespace nmwgr = "http://ggf.org/ns/nmwg/result/2.0/"
+
+
+# ##############################################################
+# This datum can be used to relay errors or system information
+# usually in response to a request.
+#
+# Example: 
+# 
+# <nmwgr:datum type="OPTIONAL_TYPE"
+#             xmlns:nmwgr="http://ggf.org/ns/nmwg/result/2.0/">
+# 
+#   <!-- ANY TEXT -->
+#  
+# </nmwgr:datum>
+# 
+# ##############################################################
+
+ResultDatum =
+        element nmwgr:datum {
+                attribute type { xsd:string }? &
+                (
+                        text |
+                        anyElement+
+                )
+        }

Added: NMWG/base/schema/service.rnc
===================================================================
--- NMWG/base/schema/service.rnc	                        (rev 0)
+++ NMWG/base/schema/service.rnc	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,243 @@
+# ##############################################################
+# 
+# File:         service.rnc - Elements specific to the perfsonar
+#                             implementation.
+# Version:         $Id: service.rnc 341 2008-04-24 21:52:11Z boote $
+# Purpose:         Describes specific elements to be used in the
+#               representation and handling of perfsonar.
+# Reference:        http://books.xmlschemata.org/relaxng/page2.html
+#                         
+# ##############################################################
+
+
+# ##############################################################
+# Namespace definitions
+# ##############################################################
+namespace perfsonar = "http://ggf.org/ns/nmwg/tools/org/perfsonar/1.0/"
+namespace psservice = "http://ggf.org/ns/nmwg/tools/org/perfsonar/service/1.0/"
+namespace xpath = "http://ggf.org/ns/nmwg/tools/org/perfsonar/service/lookup/xpath/1.0/"
+namespace xquery = "http://ggf.org/ns/nmwg/tools/org/perfsonar/service/lookup/xquery/1.0/"
+namespace sql = "http://ggf.org/ns/nmwg/tools/org/perfsonar/service/lookup/sql/1.0/"
+namespace nmwg = "http://ggf.org/ns/nmwg/base/2.0/"
+
+
+# ##############################################################
+# The service description describes something running at the
+# application layer in most instances.  
+#
+# Example: 
+#
+#   <psservice:service id="REQUIRED_ID"
+#                      xmlns:psservice="http://ggf.org/ns/nmwg/tools/org/perfsonar/service/1.0/">
+#
+#     <psservice:serviceName> TEXT </psservice:serviceName>
+#
+#     <psservice:accessPoint> TEXT </psservice:accessPoint>       
+#
+#     <psservice:serviceType> TEXT </psservice:serviceType>
+#
+#     <psservice:serviceDescription> TEXT </psservice:serviceDescription>
+#
+#   </psservice:service>
+#
+# ##############################################################
+
+LSMetadataBlock = 
+        (
+                ServiceSubject? &
+                (
+                        ServiceParameters |
+                        ReDefParameters
+                )?
+        ) |
+        (
+                XPathSubject? &
+                (
+                        XPathParameters |
+                        ReDefParameters
+                )?
+        ) |
+        (
+                XQuerySubject? &
+                (
+                        XQueryParameters |
+                        ReDefParameters
+                )?
+        ) |                
+        (
+                SQLSubject? &
+                (
+                        SQLParameters |
+                        ReDefParameters
+                )?
+        )
+
+
+
+
+Service = 
+        element psservice:service {
+                attribute id { xsd:string } &
+                element psservice:serviceName { xsd:string }? &
+                element psservice:accessPoint { xsd:string }? &
+                element psservice:serviceType { xsd:string }? &
+                element psservice:serviceDescription { xsd:string }?                        
+        }
+
+
+
+
+ServiceSubject =
+        element psservice:subject {
+                attribute id { xsd:string } &
+                (
+                        Service |
+                        text
+                )?
+        }
+
+ServiceParameters = 
+        element psservice:parameters {
+                ReDefParametersContent
+        }
+
+
+
+
+XPathSubject =
+        element xpath:subject {
+                attribute id { xsd:string } &
+                text?
+        }
+
+XPathParameters = 
+        element xpath:parameters {
+                ReDefParametersContent
+        }
+        
+        
+
+                
+XQuerySubject =
+        element xquery:subject {
+                attribute id { xsd:string } &
+                text?
+        }
+
+XQueryParameters = 
+        element xquery:parameters {
+                ReDefParametersContent
+        }
+        
+        
+
+
+SQLSubject =
+        element sql:subject {
+                attribute id { xsd:string } &
+                text?
+        }
+
+SQLParameters = 
+        element sql:parameters {
+                ReDefParametersContent
+        }
+        
+        
+                                
+
+# ##############################################################
+# Specific datum elements primarily used to guide the execution 
+# process within perfsonar.
+#
+# Example: 
+# 
+# <xpath:datum type="OPTIONAL TYPE"
+#              xmlns:nmwg="http://ggf.org/ns/nmwg/tools/org/perfsonar/service/lookup/xpath/1.0/">
+# 
+#   <!-- ANY ELEMENT IN ANY NAMESPACE OR ANY TEXT -->
+#  
+# </xpath:datum>
+#
+# The namespaces could of course be different
+# 
+# ##############################################################
+
+LookupServiceDataContent = 
+        ServiceDatum |
+        XPathDatum |
+        XQueryDatum |
+        SQLDatum |
+        ResultDatum
+
+ServiceDatum =
+        element psservice:datum {
+                attribute type { xsd:string }? &
+                anyElement
+        }*
+
+XPathDatum =
+        element xpath:datum { 
+                anyElement
+        }*
+        
+XQueryDatum =
+        element xquery:datum { 
+                anyElement
+        }*
+        
+SQLDatum =
+        element sql:datum { 
+                anyElement
+        }*
+
+
+# ##############################################################
+# Parameters and Parameter elements can be used in a number of 
+# ways: in the message to signify items such as time stamp or
+# authorization, in metadata or data to specify filters or
+# special cases for the information.  A 'parameters' block
+# has an id, and encloses one to many 'parameter' elements. 
+# These elements have a required 'name', and may contain
+# an attribute, element, or text value (only one please, 
+# software using this should consider complex elements, then 
+# text, and finally the value attribute; exceptions should
+# be thrown on duplicates).
+#
+# Example: 
+# 
+# <nmwg:parameters id="REQUIRED_ID" 
+#                  xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <nmwg:parameter name="REQUIRED_NAME" value="OPTIONAL_VALUE"
+#                   xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#     <!-- ANY TEXT, OR ANY ELEMENT ANY NAMESPACE (IF YOU DID NOT 
+#          USE THE VALUE ATTRIBUTE) -->
+# 
+#   </nmwg:parameter>
+#  
+#   <!-- MORE PARAMETERS -->
+#   
+# </nmwg:parameters>
+# 
+# The namespaces can of course be different.
+# 
+# ##############################################################
+
+ReDefParameters = 
+        element nmwg:parameters { ReDefParametersContent }
+
+ReDefParametersContent =    
+        attribute id { xsd:string } &
+        ReDefParameter+
+   
+ReDefParameter = 
+        element nmwg:parameter { 
+                attribute name { xsd:string } &
+                (
+                        attribute value { xsd:string } |
+                        anyElement |
+                        text
+                )?
+        }   

Added: NMWG/base/schema/snmp.rnc
===================================================================
--- NMWG/base/schema/snmp.rnc	                        (rev 0)
+++ NMWG/base/schema/snmp.rnc	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,212 @@
+# ##############################################################
+#
+# File:         snmp.rnc - Specialized schema for snmp
+#
+# Version:      $Id: snmp.rnc 341 2008-04-24 21:52:11Z boote $
+# Purpose:      Describes specific elements to be used in the
+#               representation and handling of snmp
+# Reference:    http://books.xmlschemata.org/relaxng/page2.html
+#
+# ##############################################################
+
+
+# ##############################################################
+# Namespace definitions
+# ##############################################################
+namespace nmwg = "http://ggf.org/ns/nmwg/base/2.0/"
+namespace snmp = "http://ggf.org/ns/nmwg/tools/snmp/2.0/"
+namespace nmwgr = "http://ggf.org/ns/nmwg/result/2.0/"
+namespace netutil = "http://ggf.org/ns/nmwg/characteristic/utilization/2.0/" 
+namespace neterr = "http://ggf.org/ns/nmwg/characteristic/errors/2.0/" 
+
+# ##############################################################
+# Include additional functionality from other files
+# ##############################################################
+include "nmtopo.rnc"
+include "nmtopo_ver3.rnc"
+include "result.rnc"
+include "nmbase.rnc" {
+        Metadata |= SNMPMetadata
+        Data |= SNMPData
+}
+
+
+# ##############################################################
+# 
+# The metadata in this case is an NMWG metadata block, with options
+# of having an SNMP subject, some form of parameters block (SNMP,
+# Filtering [select, etc.], or NMWG), an eventType block with
+# enumerated values, and a key with specified enumerated values.
+#
+# ##############################################################
+
+SNMPMetadata =
+        element nmwg:metadata {
+                Identifier &
+                MetadataIdentifierRef? &
+                SNMPMetadataContent
+        }
+
+SNMPMetadataBlock =
+        (
+                SNMPSubject |
+                UtilSubject |
+                ErrSubject
+        )? &
+        (
+                SNMPParameters |
+                Parameters
+        )?
+
+SNMPMetadataContent =
+        (
+                SNMPMetadataBlock |
+                FilterMetadataBlock
+        ) &
+        SNMPEventType? &
+        Key?
+
+
+# ##############################################################
+# 
+# Subject is a topology 'interface' as well as ids and reference
+# attributes.
+#
+# ##############################################################
+
+SNMPSubject =
+        element snmp:subject {
+                SNMPSubjectContent
+        }
+
+UtilSubject =
+        element netutil:subject {
+                SNMPSubjectContent
+        }
+
+ErrSubject =
+        element neterr:subject {
+                SNMPSubjectContent
+        }
+
+SNMPSubjectContent = 
+        Identifier &
+        MetadataIdentifierRef? &
+        (
+                Interface |
+                BaseInterface |
+                L2Interface |
+                L3Interface
+        )?
+        
+# ##############################################################
+# 
+# Parameters are mostly used in the context of an MP providing
+# contact information to gather data.
+#
+# ##############################################################
+
+SNMPParameters =
+        element snmp:parameters {
+                Identifier &
+                SNMPParameter+
+        }
+
+SNMPParameter =
+        element nmwg:parameter {
+                attribute name { "supportedEventType" | "SNMPVersion" | 
+                                 "SNMPCommunity" | "OID" | "Alias" } &
+                (
+                        attribute value { text } |
+                        text
+                )
+        }
+
+
+# ##############################################################
+# 
+# EventType can be the specific (gathered via SNMP) or can resemble
+# the characteristic type of the measurement (utilization, errors, 
+# drops, etc.)
+#
+# ##############################################################
+
+SNMPEventType =
+        element nmwg:eventType {
+                "http://ggf.org/ns/nmwg/characteristic/utilization/2.0" |
+                "http://ggf.org/ns/nmwg/characteristic/errors/2.0" |
+                "http://ggf.org/ns/nmwg/tools/snmp/2.0"
+        }
+
+# ##############################################################
+# 
+# Key is used to describe the backend storage, we use primarily
+# RRD files, and SQL databases (MySQL, SQLite, etc.)
+#
+# ##############################################################
+
+SNMPKey = 
+        element nmwg:key {
+                Identifier? &
+                (
+                        Parameters |
+                        SNMPKeyParameters                                
+                )
+        } 
+
+SNMPKeyParameters =
+        element nmwg:parameters {
+                Identifier &
+                SNMPKeyParameter+
+        }
+
+SNMPKeyParameter =
+        element nmwg:parameter {
+                attribute name { "type" | "valueUnits" | "file" | 
+                                 "dataSource" | "table" } &
+                (
+                        attribute value { text } |
+                        text
+                )
+        }
+
+# ##############################################################
+# 
+# Data can be a key, a result datum, or general/specific incarnations
+# of the datum element.
+#
+# ##############################################################
+
+SNMPData =
+        element nmwg:data {
+                Identifier &
+                MetadataIdentifierRef? &
+                (                 
+                        Datum* |
+                        SNMPDatum* |
+                        ResultDatum* |
+                        Key*
+                )
+        }
+
+        
+# ##############################################################
+# 
+# Datum is left unspecified at the moment, simply returning
+# the time/value pair.  
+#
+# ##############################################################
+
+SNMPDatum =
+        element snmp:datum {
+                attribute value { xsd:string } &
+                attribute valueUnits { xsd:string }? &                
+                (
+                        (
+                                attribute timeType { xsd:string } &
+                                attribute timeValue { xsd:string }
+                        ) |
+                        Time
+                )?
+        }
+

Added: NMWG/base/schema/sonar.rnc
===================================================================
--- NMWG/base/schema/sonar.rnc	                        (rev 0)
+++ NMWG/base/schema/sonar.rnc	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,316 @@
+# ##############################################################
+# 
+# File:         sonar.rnc - Elements specific to the perfsonar
+#                           implementation.
+# Version:      $Id: sonar.rnc 341 2008-04-24 21:52:11Z boote $
+# Purpose:      Describes specific elements to be used in the
+#               representation and handling of perfsonar.
+# Reference:    http://books.xmlschemata.org/relaxng/page2.html
+#                         
+# ##############################################################
+
+
+# ##############################################################
+# Namespace definitions
+# ##############################################################
+namespace perfsonar = "http://ggf.org/ns/nmwg/tools/org/perfsonar/1.0/"
+namespace nmtm = "http://ggf.org/ns/nmwg/time/2.0/"
+namespace nmwg = "http://ggf.org/ns/nmwg/base/2.0/"
+namespace nmwgt = "http://ggf.org/ns/nmwg/topology/2.0/"
+ 
+
+# ##############################################################
+# Include additional functionality from other files
+# ############################################################## 
+include "service.rnc"
+include "event.rnc"
+include "utilization.rnc" {
+        Metadata |= SonarMetadata
+        Data |= SonarData        
+} 
+
+
+# ##############################################################
+# Similar to the nmwg metadata (still in the appropriate namespace)
+# but we incorporate the new subject elements.
+#
+# Example: 
+# 
+# <nmwg:metadata id="REQUIRED_ID" 
+#                metadataIdRef="OPTIONAL_REFERENCE_ID"
+#                xmlns:perfsonar="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <!-- TBD OPTIONAL SUBJECT -->
+# 
+#   <!-- TBD OPTIONAL PARAMETERS -->
+#
+#   <!-- TBD OPTIONAL EVENTTYPE -->
+# 
+#   <!-- TBD OPTIONAL KEY -->
+#
+# </nmwg:metadata>
+# 
+# ##############################################################
+
+SonarMetadata = 
+        element nmwg:metadata {
+                Identifier &
+                MetadataIdentifierRef? &
+                SonarMetadataContent
+        }        
+
+
+SonarMetadataContent =
+        (
+                (
+                        (
+                                SonarSubject? &
+                                (
+                                        Parameters |
+                                        SonarParameters
+                                )?
+                        ) |
+			(
+                                NMWGSubject? &
+                                Parameters?
+                        )
+                )? |
+                UtilizationMetadataBlock |
+                FilterMetadataBlock |
+                LSMetadataBlock
+        ) &
+        EventType? &
+        Key?        
+
+
+# ##############################################################
+# The perfsonar subject is similar to the nmwg subject, except
+# we want to allow interfaces, endpointpairs, and service 
+# descriptions.
+#
+# Example: 
+# 
+# <perfsonar:subject id="REQUIRED_ID" 
+#               metadataIdRef="OPTIONAL_REFERENCE_ID"
+#               xmlns:perfsonar="http://ggf.org/ns/nmwg/tools/org/perfsonar/1.0/">
+# 
+#   <nmwgtopo:endPointPair xmlns:nmwgtopo="http://ggf.org/ns/nmwg/topology/2.0/">
+# 
+#     <nmwgtopo:src type="REQUIRED_TYPE" value="REQUIRED_VALUE" 
+#                   port="OPTIONAL_PORT"/>
+# 
+#     <nmwgtopo:dst type="REQUIRED_TYPE" value="REQUIRED_VALUE" 
+#                   port="OPTIONAL_PORT"/>
+#  
+#   </nmwgtopo:endPointPair>
+#
+#           <!-- OR -->
+#
+#   <nmwgtopo:interface xmlns:nmwgtopo="http://ggf.org/ns/nmwg/topology/2.0/">
+# 
+#     <nmwgtopo:ipAddress type='REQUIRED_TYPE'> TEXT </nmwgtopo:ipAddress>
+# 
+#     <nmwgtopo:hostName> TEXT </nmwgtopo:hostName>
+# 
+#     <nmwgtopo:ifName> TEXT </nmwgtopo:ifName>
+# 
+#     <nmwgtopo:ifDescription> TEXT </nmwgtopo:ifDescription>
+# 
+#     <nmwgtopo:ifAddress type='REQUIRED_TYPE'> TEXT </nmwgtopo:ifAddress>
+# 
+#     <nmwgtopo:ifHostName> TEXT </nmwgtopo:ifHostName>
+# 
+#     <nmwgtopo:ifIndex> TEXT </nmwgtopo:ifIndex>
+# 
+#     <nmwgtopo:type> TEXT </nmwgtopo:type>
+# 
+#     <nmwgtopo:direction> TEXT </nmwgtopo:direction>
+# 
+#     <nmwgtopo:authRealm> TEXT </nmwgtopo:authRealm>
+# 
+#     <nmwgtopo:classOfService> TEXT </nmwgtopo:classOfService>
+# 
+#     <nmwgtopo:capacity> TEXT </nmwgtopo:capacity>
+#  
+#   </nmwgtopo:interface>
+#  
+#           <!-- OR -->
+#
+#   <psservice:service id="REQUIRED_ID">
+#
+#     <psservice:serviceName> TEXT </psservice:serviceName>
+#
+#     <psservice:accessPoint> TEXT </psservice:accessPoint>       
+#
+#     <psservice:serviceType> TEXT </psservice:serviceType>
+#
+#     <psservice:serviceDescription> TEXT </psservice:serviceDescription>
+#
+#   </psservice:service>
+# 
+# </perfsonar:subject>
+#
+# ##############################################################
+
+SonarSubject = 
+        element perfsonar:subject {
+                Identifier &
+                MetadataIdentifierRef? & 
+                (
+                        Node? |
+                        (
+                                BaseLink? |
+                                L2Link? |
+                                L3Link?
+                        ) |
+                        (
+                                Interface |
+                                BaseInterface |
+                                L2Interface |
+                                L3Interface
+                        ) |
+                        (                   
+                                EndpointPair |
+                                L4EndpointPair
+                        ) |
+                        Service
+                )?
+        }
+
+NMWGSubject = 
+        element nmwg:subject {
+                Identifier &
+                MetadataIdentifierRef? & 
+                (
+                        Node? |
+                        (
+                                BaseLink? |
+                                L2Link? |
+                                L3Link?
+                        ) |
+                        (
+                                Interface |
+                                BaseInterface |
+                                L2Interface |
+                                L3Interface
+                        ) |
+                        (                   
+                                EndpointPair |
+                                L4EndpointPair
+                        )
+                )?
+        }
+
+	
+# ##############################################################
+# Similar to the nmwg data (still in the appropriate namespace)
+# but we incorporate the new datum elements.
+#
+# Example: 
+# 
+# <nmwg:data id="REQUIRED_ID" 
+#            metadataIdRef="OPTIONAL_REFERENCE_ID" 
+#            xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <!-- OPTIONAL (MULTIPLE) METADATA -->
+# 
+#           <!-- OR -->
+#
+#   <!-- TBD OPTIONAL (MULTIPLE) COMMON TIME ELEMENTS AND 
+#        OPTIONAL (MULTIPLE) DATUM ELEMENTS-->
+# 
+#           <!-- OR -->
+#  
+#   <!-- TBD OPTIONAL (MULTIPLE) DATUM ELEMENTS -->
+# 
+#           <!-- OR -->
+#  
+#   <!-- OPTIONAL (MULTIPLE) KEY ELEMENTS -->
+# 
+# </nmwg:data>
+# 
+# ##############################################################
+        
+SonarData =
+        element nmwg:data {
+                Identifier &
+                MetadataIdentifierRef? &
+                (
+                        (
+                                Metadata* |
+                                SonarMetadata*
+                        ) |
+                        (
+                                SonarCommonTime+ & 
+                                (
+                                        Datum* |
+                                        ResultDatum* |
+                                        EventDatum* |
+                                        LookupServiceDataContent*                                
+                                )
+                        ) |
+                        (
+                                Datum* |
+                                ResultDatum* |
+                                EventDatum* |
+                                LookupServiceDataContent*                                
+                        ) |
+                        Key*        
+                )
+	}
+
+
+# ##############################################################
+# CommonTime is used a a shortcut able to 'factor out' a frequently
+# occurring time range that a bunch of datum (or other) elements
+# might share, thus reducing complexity of XML representation.  
+# CommonTime is similar to the other NMWG time stamps (from 
+# nmtime.rnc) in its potential time representations.
+#
+# Example: 
+# 
+# <nmwg:commonTime type="REQUIRED_TYPE" value="OPTIONAL_VALUE"
+#                  duration="OPTIONAL_DURATION" 
+#                  inclusive="OPTIONAL_INCLUSIVE_FLAG"
+#                  xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <!-- TBD OPTIONAL START TIME ELEMENT (USE END TIME OR DURATION) -->
+#  
+#   <!-- TBD OPTIONAL END TIME ELEMENT (ONLY WITH START TIME) -->
+#  
+#   <!-- TBD OPTIONAL TIME VALUE ELEMENT (USE IF NO VALUE ATTRIBUTE) -->
+#  
+#   <!-- TBD OPTIONAL (MULTIPLE) DATUM ELEMENTS -->
+# 
+#   <!-- ANY OPTIONAL (MULTIPLE) ELEMENT IN ANY NAMESPACE -->
+# </nmwg:commonTime>
+# 
+# ##############################################################
+
+SonarCommonTime =
+        element nmwg:commonTime {
+                Type &
+                (
+                         TimeStamp |
+                         (
+                                StartTime & 
+                                (
+                                        EndTime | 
+                                        Duration 
+                                )
+                         )
+		) &
+                (
+                        Datum* |
+                        ResultDatum* |
+                        EventDatum* |
+                        LookupServiceDataContent*                                
+                )
+        } 
+
+SonarParameters = 
+        element perfsonar:parameters {
+                ParametersContent
+        }
+
+   

Added: NMWG/base/schema/topo/nmtopo_base.rnc
===================================================================
--- NMWG/base/schema/topo/nmtopo_base.rnc	                        (rev 0)
+++ NMWG/base/schema/topo/nmtopo_base.rnc	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,189 @@
+# ##############################################################
+#
+# File:    nmtopo_base.rnc - Schema to describe network elements
+# Version: $Id: nmtopo_base.rnc 347 2008-05-20 15:55:47Z aaron $
+#
+# ##############################################################
+
+# ##############################################################
+# Namespace definitions
+# ##############################################################
+ default namespace nmtb =
+   "http://ogf.org/schema/network/topology/base/20070707/"
+
+# External schema files
+ include "nmtypes.rnc"
+
+# generic Topology can be a root element
+ start |= Topology
+
+ Topology = element topology {
+     Domain*
+     & BaseNode*
+     & BaseLink*
+     & BasePort*
+     & BaseNetwork*
+     & BasePath*
+   }
+
+ Domain = element domain {
+     Identifier?
+     & IdReference?
+     & BaseNode*
+     & BaseLink*
+     & BaseNetwork*
+     & BasePath*
+   }
+
+## ########################
+## generic node
+## ########################
+ BaseNode = element node { BaseNodeContent }
+ BaseNodeContent =
+   Identifier?
+   & IdReference?
+   & Name*
+   & Address*
+   & Relation*
+   & Lifetime?
+   & element role { xsd:string }?
+   & element type { xsd:string }?
+   & element description { xsd:string }?
+   & element location { LocationContent }?
+   & element contact { ContactInformationContent }*
+   & element comments { xsd:string }*
+   & BasePort*
+   & BaseService*
+
+ ContactInformationContent =
+   attribute priority { xsd:integer }?
+   & element email { xsd:string }?
+   & element phoneNumber { xsd:string }?
+   & element administrator { xsd:string }?
+   & element institution { xsd:string }?
+
+ LocationContent =
+   element continent { xsd:string }?
+   & element country { xsd:string }?
+   & element zipcode { xsd:integer }?
+   & element state { xsd:string }?
+   & element institution { xsd:string }?
+   & element city { xsd:string }?
+   & element streetAddress { xsd:string }?
+   & element floor { xsd:string }?
+   & element room { xsd:string }?
+   & element cage { xsd:string }?
+   & element rack { xsd:string }?
+   & element shelf { xsd:string }?
+   & element latitude { xsd:float }?
+   & element longitude { xsd:float }?
+
+## ########################
+## generic port
+## ########################
+ BasePort = element port { BasePortContent }
+ BasePortContent =
+   Identifier?
+   & IdReference?
+   & Name*
+   & Address*
+   & Relation*
+   & Lifetime?
+   & element type { xsd:string }?
+   & element description { xsd:string }?
+   & element capacity { xsd:string }?
+   & element mtu { xsd:string }?
+   & element comments { xsd:string }*
+   & BaseLink*
+
+## ########################
+## generic link
+## ########################
+ BaseLink = element link { BaseLinkContent }
+ BaseLinkContent =
+   Identifier?
+   & IdReference?
+   & Name*
+   & Relation*
+   & Lifetime?
+   & element remoteLinkId { xsd:string }
+   & element type { xsd:string }?
+   & element description { xsd:string }?
+   & element globalName {
+       attribute type { xsd:string }?
+       & xsd:string
+     }?
+   & element comments { xsd:string }*
+
+## ########################
+## generic network
+## ########################
+ BaseNetwork = element network { BaseNetworkContent }
+ BaseNetworkContent =
+   Identifier?
+   & IdReference?
+   & NodeIdRef*
+   & PortIdRef*
+   & LinkIdRef*
+   & Name*
+   & Relation*
+   & Lifetime?
+   & element type { xsd:string }?
+   & element description { xsd:string }?
+   & element comments { xsd:string }*
+
+## ########################
+## generic path
+## ########################
+ BasePath =
+   element path { BasePathContent }
+
+# a path consists of a list of hops
+ BasePathContent =
+   Identifier
+   & Relation*
+   & Lifetime?
+   & element comments { xsd:string }*
+   & element hop { HopContent }*
+
+ HopContent =
+   Identifier,
+   (
+     DomainIdRef
+     | NodeIdRef
+     | PortIdRef
+     | LinkIdRef
+     | PathIdRef
+     | NetworkIdRef
+   )
+
+## ########################
+## generic endpoint pair
+## ########################
+ BaseEndPointPair =
+   element endPointPair { BaseEndPointPairContent }
+
+# an endpoint pair consists of two endpoints in the form of ports
+ BaseEndPointPairContent =
+   Name*
+   & element type { xsd:string }?
+   & element description { xsd:string }?
+   & element comments { xsd:string }*
+   & element src { (BasePortContent | PortIdRef) }
+   & element dst { (BasePortContent | PortIdRef) }
+
+## ########################
+## generic service
+## ########################
+ BaseService =
+   element service { BaseServiceContent }
+
+ BaseServiceContent =
+   Identifier?
+   & IdReference?
+   & Name*
+   & element type { xsd:string }?
+   & element description { xsd:string }?
+   & element comments { xsd:string }*
+   & Relation*
+   & Lifetime?

Added: NMWG/base/schema/topo/nmtopo_ctrlplane.rnc
===================================================================
--- NMWG/base/schema/topo/nmtopo_ctrlplane.rnc	                        (rev 0)
+++ NMWG/base/schema/topo/nmtopo_ctrlplane.rnc	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,193 @@
+# ##############################################################
+# 
+# File: 	nmtopo_ctrlplane.rnc
+# Version: $Id: nmtopo_ctrlplane.rnc 378 2009-02-02 17:25:37Z aaron $
+# 
+# ##############################################################
+
+default namespace CtrlPlane =
+  "http://ogf.org/schema/network/topology/ctrlPlane/20080828/"
+
+include "nmtypes.rnc"
+
+## Definition of the topology element
+start |= element topology { CtrlPlaneTopologyContent }
+
+
+CtrlPlaneTopologyContent =
+ # & Parameters
+  Identifier
+  & element idcId { xsd:string }
+  & (
+    CtrlPlaneDomain |
+    element domainSignature {
+      CtrlPlaneDomainSignatureContent
+    }
+  )*
+
+## this a placeholder until we discuss and experiment with signatures
+CtrlPlaneDomainSignatureContent =
+  attribute domainId { xsd:string }
+  & anyElement
+  
+CtrlPlaneDomain =
+  element domain {
+    Identifier
+    & Lifetime?
+    & ( 
+      CtrlPlaneNode*
+      & CtrlPlanePort*
+      & CtrlPlaneLink*
+    )
+  }
+  
+CtrlPlaneNode =
+  element node {
+    Identifier
+    & Address?
+    & CtrlPlanePort*
+  }
+  
+CtrlPlanePort =
+  element port {
+    Identifier
+    & CtrlPlaneCapacityContent
+    & CtrlPlaneLink*
+  }
+  
+CtrlPlaneLink =
+  element link {
+    Identifier
+    & element remoteLinkId { xsd:string }?
+    & element trafficEngineeringMetric { xsd:string }
+    & CtrlPlaneCapacityContent?
+    & element linkProtectionTypes { xsd:string }*
+    & element administrativeGroups { CtrlPlaneAdministrativeGroup }*
+    & element SwitchingCapabilityDescriptors { CtrlPlaneSwitchingCapabilityDescriptor+ }
+  }
+  
+# Begin path and endpoint additions
+CtrlPlanePath =
+  element path {
+    Identifier
+    & Lifetime?
+    & attribute direction { "upstream" | "downstream" }?
+    & CtrlPlanePathContent 
+  }
+
+# a path consists of a list of hops, and/or links
+CtrlPlanePathContent =
+  element hop { CtrlPlaneHopContent }*
+
+  
+CtrlPlaneHopContent =
+  Identifier
+  & ( 
+    DomainIdRef |
+    NodeIdRef |
+    PortIdRef |
+    LinkIdRef |
+    CtrlPlaneDomain |
+    CtrlPlaneNode |
+    CtrlPlanePort |
+    CtrlPlaneLink
+  )
+  & element nextHop { CtrlPlaneNextHopContent }*
+
+CtrlPlaneNextHopContent = 
+  attribute weight { xsd:integer }?
+  & attribute optional { "true" | "false" }?
+  & xsd:string
+
+CtrlPlaneBidirectionalPath =
+  element bidirectionalPath { CtrlPlaneBidirectionalPathContent }
+
+CtrlPlaneBidirectionalPathContent =
+  Identifier
+  & Lifetime?
+  # We have to do this so that it can be validated using trang/jing and still
+  # have the paths appear in an arbitrary order
+  & (
+        (CtrlPlaneDownstreamPathContent, CtrlPlaneUpstreamPathContent)
+        | (CtrlPlaneUpstreamPathContent, CtrlPlaneDownstreamPathContent)
+    )
+
+CtrlPlaneDownstreamPathContent = 
+  element path {
+    Identifier?
+    & attribute direction { "downstream" }
+    & CtrlPlanePathContent
+  }
+
+CtrlPlaneUpstreamPathContent = 
+  element path {
+    Identifier?
+    & attribute direction { "upstream" }
+    & CtrlPlanePathContent
+  }
+
+# End path and endpoint
+
+CtrlPlaneAdministrativeGroup =
+  element group { xsd:int }
+  & element groupID { xsd:string }?
+  
+CtrlPlaneSwitchingCapabilityDescriptor =
+  element switchingcapType {
+    "psc-1"
+    | "psc-2"
+    | "psc-3"
+    | "psc-4"
+    | "l2sc"
+    | "tdm"
+    | "lsc"
+    | "fsc"
+  }
+  & element encodingType {
+      "packet"
+      | "ethernet"
+      | "pdh"
+      | "sdh/sonet"
+      | "digital wrapper"
+      | "lambda"
+      | "fiber"
+      | "fiberchannel"
+      | xsd:string
+    }
+  & element switchingCapabilitySpecificInfo {
+      CtrlPlaneSwitchingCapabilitySpecificInfo
+    }+
+    
+CtrlPlaneSwitchingCapabilitySpecificInfo =
+  CtrlPlaneSwitchingCapabilitySpecificInfo_psc
+  | CtrlPlaneSwitchingCapabilitySpecificInfo_l2sc
+  | CtrlPlaneSwitchingCapabilitySpecificInfo_tdm
+  | CtrlPlaneSwitchingCapabilitySpecificInfo_lsc
+  | CtrlPlaneSwitchingCapabilitySpecificInfo_fsc
+  
+CtrlPlaneSwitchingCapabilitySpecificInfo_psc =
+  element capability { xsd:string }
+  
+CtrlPlaneSwitchingCapabilitySpecificInfo_tdm =
+  element capability { xsd:string }
+  
+CtrlPlaneSwitchingCapabilitySpecificInfo_lsc =
+  element capability { xsd:string }
+  
+CtrlPlaneSwitchingCapabilitySpecificInfo_fsc =
+  element capability { xsd:string }
+  
+CtrlPlaneSwitchingCapabilitySpecificInfo_l2sc =
+  element interfaceMTU { xsd:int }
+  & element vlanRangeAvailability { xsd:string }
+  & element suggestedVLANRange { xsd:string }?
+  & element vlanTranslation { "true" | "false" }?
+
+## Capacity Description Pattern  
+CtrlPlaneCapacityContent =
+  element capacity { xsd:string }?
+  & element maximumReservableCapacity { xsd:string }?
+  & element minimumReservableCapacity { xsd:string }?
+  & element granularity { xsd:string }?
+  & element unreservedCapacity { xsd:string }?
+  

Added: NMWG/base/schema/topo/nmtopo_l2.rnc
===================================================================
--- NMWG/base/schema/topo/nmtopo_l2.rnc	                        (rev 0)
+++ NMWG/base/schema/topo/nmtopo_l2.rnc	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,90 @@
+# ##############################################################
+#
+# File:    nmtopo_l2.rnc - Schema to describe L2 network elements
+# Version: $Id: nmtopo_l2.rnc 347 2008-05-20 15:55:47Z aaron $
+#
+# ##############################################################
+
+# ##############################################################
+# Namespace definitions
+# ##############################################################
+ default namespace nmtl2 =
+           "http://ogf.org/schema/network/topology/l2/20070707/"
+
+# External schema files
+ include "nmtypes.rnc"
+
+## ########################
+## layer 2 port
+## ########################
+ L2Port = element port { L2PortContent }
+ L2PortContent =
+   Identifier?
+   & IdReference?
+   & Name*
+   & Address*
+   & Relation*
+   & Lifetime?
+   & element type { xsd:string }?
+   & element description { xsd:string }?
+   & element capacity { xsd:string }?
+   & element mtu { xsd:string }?
+   & element comments { xsd:string }*
+   & element ifName {xsd:string }?
+   & element ifIndex {xsd:integer }?
+   & element vlan {xsd:integer }?
+   & element vlanRangeAvailability { xsd:string }
+   & L2Link*
+
+## ########################
+## layer 2 link
+## ########################
+ L2Link = element link { L2LinkContent }
+ L2LinkContent =
+   Identifier?
+   & IdReference?
+   & Name*
+   & Relation*
+   & Lifetime?
+   & element remoteLinkId { xsd:string }
+   & element type { xsd:string }?
+   & element description { xsd:string }?
+   & element globalName {
+       attribute type { xsd:string }?
+       & xsd:string
+     }?
+   & element comments { xsd:string }*
+   & element vlan {xsd:integer }?
+
+## ########################
+## layer 2 network
+## ########################
+ L2Network = element network { L2NetworkContent }
+ L2NetworkContent =
+   Identifier?
+   & IdReference?
+   & NodeIdRef*
+   & PortIdRef*
+   & LinkIdRef*
+   & Name*
+   & Relation*
+   & Lifetime?
+   & element type { xsd:string }?
+   & element description { xsd:string }?
+   & element comments { xsd:string }*
+   & element vlan {xsd:integer }?
+
+## ########################
+## layer 2 endpoint pair
+## ########################
+ L2EndPointPair =
+   element endPointPair { L2EndPointPairContent }
+
+# an endpoint pair consists of two endpoints in the form of ports
+ L2EndPointPairContent =
+   Name*
+   & element type { xsd:string }?
+   & element description { xsd:string }?
+   & element comments { xsd:string }*
+   & element src { (L2PortContent | PortIdRef | Address) }
+   & element dst { (L2PortContent | PortIdRef | Address) }

Added: NMWG/base/schema/topo/nmtopo_l3.rnc
===================================================================
--- NMWG/base/schema/topo/nmtopo_l3.rnc	                        (rev 0)
+++ NMWG/base/schema/topo/nmtopo_l3.rnc	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,91 @@
+# ##############################################################
+#
+# File:    nmtopo_l3.rnc - Schema to describe L3 network elements
+# Version: $Id: nmtopo_l3.rnc 347 2008-05-20 15:55:47Z aaron $
+#
+# ##############################################################
+
+# ##############################################################
+# Namespace definitions
+# ##############################################################
+ default namespace nmtl3 =
+           "http://ogf.org/schema/network/topology/l3/20070707/"
+
+# External schema files
+ include "nmtypes.rnc"
+
+## ########################
+## layer 3 port
+## ########################
+ L3Port = element port { L3PortContent }
+ L3PortContent =
+   Identifier?
+   & IdReference?
+   & Name*
+   & Address*
+   & Relation*
+   & Lifetime?
+   & element type { xsd:string }?
+   & element description { xsd:string }?
+   & element capacity { xsd:string }?
+   & element mtu { xsd:string }?
+   & element comments { xsd:string }*
+   & element netmask { xsd:string }?
+   & L3Link*
+
+## ########################
+## layer 3 link
+## ########################
+ L3Link = element link { L3LinkContent }
+ L3LinkContent =
+   Identifier?
+   & IdReference?
+   & Name*
+   & Relation*
+   & Lifetime?
+   & element remoteLinkId { xsd:string }
+   & element type { xsd:string }?
+   & element description { xsd:string }?
+   & element globalName {
+       attribute type { xsd:string }?
+       & xsd:string
+     }?
+   & element comments { xsd:string }*
+   & element netmask { xsd:string }?
+
+## ########################
+## layer 3 network
+## ########################
+ L3Network = element network { L3NetworkContent }
+ L3NetworkContent =
+   Identifier?
+   & IdReference?
+   & NodeIdRef*
+   & PortIdRef*
+   & LinkIdRef*
+   & Name*
+   & Relation*
+   & Lifetime?
+   & element type { xsd:string }?
+   & element description { xsd:string }?
+   & element comments { xsd:string }*
+   & element subnet {
+        Address
+        & element netmask { xsd:string }
+     }?
+   & element asn { xsd:integer }
+
+## ########################
+## layer 3 endpoint pair
+## ########################
+ L3EndPointPair =
+   element endPointPair { L3EndPointPairContent }
+
+# an endpoint pair consists of two endpoints in the form of ports
+ L3EndPointPairContent =
+   Name*
+   & element type { xsd:string }?
+   & element description { xsd:string }?
+   & element comments { xsd:string }*
+   & element src { (L3PortContent | PortIdRef | Address) }
+   & element dst { (L3PortContent | PortIdRef | Address) }

Added: NMWG/base/schema/topo/nmtopo_l4.rnc
===================================================================
--- NMWG/base/schema/topo/nmtopo_l4.rnc	                        (rev 0)
+++ NMWG/base/schema/topo/nmtopo_l4.rnc	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,85 @@
+# ##############################################################
+#
+# File:    nmtopo_l4.rnc - Schema to describe L4 network elements
+# Version: $Id: nmtopo_l4.rnc 347 2008-05-20 15:55:47Z aaron $
+#
+# ##############################################################
+
+# ##############################################################
+# Namespace definitions
+# ##############################################################
+ default namespace nmtl4 =
+           "http://ogf.org/schema/network/topology/l4/20070707/"
+
+# External schema files
+ include "nmtypes.rnc"
+
+## ########################
+## layer 4 port
+## ########################
+ L4Port = element port { L4PortContent }
+ L4PortContent =
+   Identifier?
+   & IdReference?
+   & Name*
+   & Address*
+   & Relation*
+   & Lifetime?
+   & element type { xsd:string }?
+   & element description { xsd:string }?
+   & element capacity { xsd:string }?
+   & element mtu { xsd:string }?
+   & element comments { xsd:string }*
+   & element portNum { xsd:integer }?
+   & L4Link*
+
+## ########################
+## layer 4 link
+## ########################
+ L4Link = element link { L4LinkContent }
+ L4LinkContent =
+   Identifier?
+   & IdReference?
+   & Name*
+   & Relation*
+   & Lifetime?
+   & element remoteLinkId { xsd:string }
+   & element type { xsd:string }?
+   & element description { xsd:string }?
+   & element globalName {
+       attribute type { xsd:string }?
+       & xsd:string
+     }?
+   & element comments { xsd:string }*
+
+## ########################
+## layer 4 network
+## ########################
+ L4Network = element network { L4NetworkContent }
+ L4NetworkContent =
+   Identifier?
+   & IdReference?
+   & NodeIdRef*
+   & PortIdRef*
+   & LinkIdRef*
+   & Name*
+   & Relation*
+   & Lifetime?
+   & element type { xsd:string }?
+   & element description { xsd:string }?
+   & element comments { xsd:string }*
+
+## ########################
+## layer 4 endpoint pair
+## ########################
+ L4EndPointPair =
+   element endPointPair { L4EndPointPairContent }
+
+# an endpoint pair consists of two endpoints in the form of ports
+ L4EndPointPairContent =
+   Name*
+   & element type { xsd:string }?
+   & element description { xsd:string }?
+   & element comments { xsd:string }*
+   & element src { (L4PortContent | PortIdRef | Address) }
+   & element dst { (L4PortContent | PortIdRef | Address) }

Added: NMWG/base/schema/topo/nmtopo_tcp.rnc
===================================================================
--- NMWG/base/schema/topo/nmtopo_tcp.rnc	                        (rev 0)
+++ NMWG/base/schema/topo/nmtopo_tcp.rnc	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,95 @@
+# ##############################################################
+#
+# File:    nmtopo_tcp- Schema to describe TCP network elements
+# Version: $Id: nmtopo_tcp277 2007-09-28 20:47:38Z aaron $
+#
+# ##############################################################
+
+# ##############################################################
+# Namespace definitions
+# ##############################################################
+ default namespace nmttcp=
+           "http://ogf.org/schema/network/topology/l4/20070707/tcp/20070707/"
+
+# External schema files
+ include "nmtypes.rnc"
+
+## ########################
+## layer 4 port
+## ########################
+ TCPPort = element port { TCPPortContent }
+ TCPPortContent =
+   Identifier?
+   & IdReference?
+   & Name*
+   & Address*
+   & Relation*
+   & Lifetime?
+   & element type { xsd:string }?
+   & element description { xsd:string }?
+   & element capacity { xsd:string }?
+   & element mtu { xsd:string }?
+   & element comments { xsd:string }*
+   & element portNum { xsd:integer }?
+   & element recvBufferSize { xsd:integer }?
+   & element recvTimeout { xsd:integer }?
+   & element sendBufferSize { xsd:integer }?
+   & element sendTimeout { xsd:integer }?
+   & element congestionControlAlgorithm { xsd: string }?
+   & TCPLink*
+
+## ########################
+## layer 4 link
+## ########################
+ TCPLink = element link { TCPLinkContent }
+ TCPLinkContent =
+   Identifier?
+   & IdReference?
+   & Name*
+   & Relation*
+   & Lifetime?
+   & element remoteLinkId { xsd:string }
+   & element type { xsd:string }?
+   & element description { xsd:string }?
+   & element globalName {
+       attribute type { xsd:string }?
+       & xsd:string
+     }?
+   & element comments { xsd:string }*
+   & element recvBufferSize { xsd:integer }?
+   & element recvTimeout { xsd:integer }?
+   & element sendBufferSize { xsd:integer }?
+   & element sendTimeout { xsd:integer }?
+   & element congestionControlAlgorithm { xsd: string }?
+
+## ########################
+## layer 4 network
+## ########################
+ TCPNetwork = element network { TCPNetworkContent }
+ TCPNetworkContent =
+   Identifier?
+   & IdReference?
+   & NodeIdRef*
+   & PortIdRef*
+   & LinkIdRef*
+   & Name*
+   & Relation*
+   & Lifetime?
+   & element type { xsd:string }?
+   & element description { xsd:string }?
+   & element comments { xsd:string }*
+
+## ########################
+## layer 4 endpoint pair
+## ########################
+ TCPEndPointPair =
+   element endPointPair { TCPEndPointPairContent }
+
+# an endpoint pair consists of two endpoints in the form of ports
+ TCPEndPointPairContent =
+   Name*
+   & element type { xsd:string }?
+   & element description { xsd:string }?
+   & element comments { xsd:string }*
+   & element src { (TCPPortContent | PortIdRef | Address) }
+   & element dst { (TCPPortContent | PortIdRef | Address) }

Added: NMWG/base/schema/topo/nmtopo_udt.rnc
===================================================================
--- NMWG/base/schema/topo/nmtopo_udt.rnc	                        (rev 0)
+++ NMWG/base/schema/topo/nmtopo_udt.rnc	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,89 @@
+# ##############################################################
+#
+# File:    nmtopo_udt- Schema to describe UDT network elements
+# Version: $Id: nmtopo_udt277 2007-09-28 20:47:38Z aaron $
+#
+# ##############################################################
+
+# ##############################################################
+# Namespace definitions
+# ##############################################################
+ default namespace nmtudt=
+           "http://ogf.org/schema/network/topology/l4/20070707/udt/20070707/"
+
+# External schema files
+ include "nmtypes.rnc"
+
+## ########################
+## layer 4 port
+## ########################
+ UDTPort = element port { UDTPortContent }
+ UDTPortContent =
+   Identifier?
+   & IdReference?
+   & Name*
+   & Address*
+   & Relation*
+   & Lifetime?
+   & element type { xsd:string }?
+   & element description { xsd:string }?
+   & element capacity { xsd:string }?
+   & element mtu { xsd:string }?
+   & element comments { xsd:string }*
+   & element portNum { xsd:integer }?
+   & element recvBufferSize { xsd:integer }?
+   & element sendBufferSize { xsd:integer }?
+   & UDTLink*
+
+## ########################
+## layer 4 link
+## ########################
+ UDTLink = element link { UDTLinkContent }
+ UDTLinkContent =
+   Identifier?
+   & IdReference?
+   & Name*
+   & Relation*
+   & Lifetime?
+   & element remoteLinkId { xsd:string }
+   & element type { xsd:string }?
+   & element description { xsd:string }?
+   & element globalName {
+       attribute type { xsd:string }?
+       & xsd:string
+     }?
+   & element comments { xsd:string }*
+   & element recvBufferSize { xsd:integer }?
+   & element sendBufferSize { xsd:integer }?
+
+## ########################
+## layer 4 network
+## ########################
+ UDTNetwork = element network { UDTNetworkContent }
+ UDTNetworkContent =
+   Identifier?
+   & IdReference?
+   & NodeIdRef*
+   & PortIdRef*
+   & LinkIdRef*
+   & Name*
+   & Relation*
+   & Lifetime?
+   & element type { xsd:string }?
+   & element description { xsd:string }?
+   & element comments { xsd:string }*
+
+## ########################
+## layer 4 endpoint pair
+## ########################
+ UDTEndPointPair =
+   element endPointPair { UDTEndPointPairContent }
+
+# an endpoint pair consists of two endpoints in the form of ports
+ UDTEndPointPairContent =
+   Name*
+   & element type { xsd:string }?
+   & element description { xsd:string }?
+   & element comments { xsd:string }*
+   & element src { (UDTPortContent | PortIdRef | Address) }
+   & element dst { (UDTPortContent | PortIdRef | Address) }

Added: NMWG/base/schema/topo/nmtypes.rnc
===================================================================
--- NMWG/base/schema/topo/nmtypes.rnc	                        (rev 0)
+++ NMWG/base/schema/topo/nmtypes.rnc	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,122 @@
+# ##############################################################
+# File: nmtypes.rnc
+# Version: $Id: nmtypes.rnc 378 2009-02-02 17:25:37Z aaron $
+# ##############################################################
+
+Identifier =
+        attribute id { xsd:string }
+
+IdReference =
+        attribute idRef { xsd:string }
+
+Type = 
+        attribute type { xsd:string }    
+
+Comment =
+        element comment { xsd:string }
+
+Description =
+        element description { xsd:string }
+
+# ##############################################################
+# This sequence allows any element, attribute, or text (regardless 
+# of name or namespace) into the document when invoked.
+# ##############################################################
+
+anyElement = 
+        element * { 
+                anyThing 
+        }
+
+anyAttribute = 
+        attribute * { text }
+
+anyThing = 
+        ( 
+                anyElement | 
+                anyAttribute | 
+                text 
+        )*
+        
+
+# Base Topology IdReference types
+TopologyIdRef = 
+  element topologyIdRef { xsd:string }
+  
+NodeIdRef =
+  element nodeIdRef { xsd:string }
+
+PortIdRef =
+  element portIdRef { xsd:string }
+  
+LinkIdRef =
+  element linkIdRef { xsd:string }
+  
+PathIdRef = 
+  element pathIdRef { xsd:string }
+        
+NetworkIdRef = 
+  element networkIdRef { xsd:string }
+  
+DomainIdRef = 
+  element domainIdRef { xsd:string }
+
+GroupIdRef = 
+  element groupIdRef { xsd:string }
+
+ServiceIdRef = 
+  element serviceIdRef { xsd:string }
+
+ Name =
+   element name {
+     attribute type { xsd:string }?
+     & xsd:string
+   }
+
+ Address =
+   element address {
+     attribute type { xsd:string }?
+     & xsd:string
+   }
+
+ Relation =
+   element relation {
+     attribute type { xsd:string }
+     & DomainIdRef*
+     & NodeIdRef*
+     & PortIdRef*
+     & LinkIdRef*
+     & PathIdRef*
+     & NetworkIdRef*
+     & ServiceIdRef*
+     & GroupIdRef*
+   }
+
+  Role = 
+    element role { xsd:string }
+
+  Lifetime =
+        element lifetime {
+          StartTime
+          & (EndTime | Duration)?
+        }
+
+TimeContent = 
+        attribute type { text } &
+        xsd:string
+
+StartTime = 
+        element start {
+                TimeContent
+        }
+   
+EndTime = 
+        element end {
+                TimeContent
+        }
+
+Duration =
+        element duration {
+          attribute type { xsd:string }
+          & xsd:string
+        }

Added: NMWG/base/schema/traceroute.rnc
===================================================================
--- NMWG/base/schema/traceroute.rnc	                        (rev 0)
+++ NMWG/base/schema/traceroute.rnc	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,308 @@
+# ##############################################################
+# 
+# File:         traceroute.rnc - Specialized schema for the 
+#                                 traceroute tool 
+# Version:      $Id: traceroute.rnc 341 2008-04-24 21:52:11Z boote $
+# Purpose:      Describes specific elements to be used in the
+#               representation and handling of traceroute
+#               measurements.
+# Reference:    http://books.xmlschemata.org/relaxng/page2.html
+#                         
+# ##############################################################
+
+
+# ##############################################################
+# Namespace definitions
+# ##############################################################
+namespace nmwg = "http://ggf.org/ns/nmwg/base/2.0/"
+namespace traceroute = "http://ggf.org/ns/nmwg/tools/traceroute/2.0/"
+namespace nmwgr = "http://ggf.org/ns/nmwg/result/2.0/"
+
+
+# ##############################################################
+# Include additional functionality from other files
+# ##############################################################
+include "nmtopo.rnc"
+include "nmtopo_ver3.rnc"
+include "result.rnc"
+include "nmbase.rnc" {
+        Metadata |= TracerouteMetadata
+        Data |= TracerouteData        
+} 
+
+
+# ##############################################################
+# Metadata is the 'data' that describes physical measurements. 
+# Metadata can be something such as a physical address, or 
+# a geographical location; any form of static, re-usable 
+# designation.  It is important to note that the subject
+# namespace and parameters namespace MUST match (or the parameters
+# can be a generic NMWG) or bad things will occur.
+#
+# Example: 
+# 
+# <nmwg:metadata id="REQUIRED_ID" 
+#                metadataIdRef="OPTIONAL_REFERENCE_ID"
+#                xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <!-- TBD OPTIONAL SUBJECT -->
+# 
+#   <!-- TBD OPTIONAL PARAMETERS -->
+#
+#   <!-- TBD OPTIONAL EVENTTYPE -->
+# 
+#   <!-- TBD OPTIONAL KEY -->
+#  
+#   <!-- ANY OPTIONAL (MULTIPLE) ELEMENT IN ANY NAMESPACE --> 
+#
+# </nmwg:metadata>
+# 
+# ##############################################################
+        
+TracerouteMetadata = 
+        element nmwg:metadata {
+                Identifier &
+                MetadataIdentifierRef? &
+                TracerouteMetadataContent
+        }
+          
+TracerouteMetadataBlock = 
+        TracerouteSubject? &
+        (
+                TracerouteParameters |
+                Parameters
+        )?        
+        
+TracerouteMetadataContent = 
+        (
+                TracerouteMetadataBlock |
+                FilterMetadataBlock                
+        ) &        
+        EventType? &
+        Key?        
+
+# ##############################################################
+# Redefined ping subject allows only an endPointPair, and the
+# two id attributes.    
+#
+# Example: 
+# 
+# <traceroute:subject id="REQUIRED_ID" 
+#               metadataIdRef="OPTIONAL_REFERENCE_ID"
+#               xmlns:nmwg="http://ggf.org/ns/nmwg/tools/traceroute/2.0/">
+# 
+#   <nmwgtopo:endPointPair xmlns:nmwgtopo="http://ggf.org/ns/nmwg/topology/2.0/">
+# 
+#     <nmwgtopo:src type="REQUIRED_TYPE" value="REQUIRED_VALUE" 
+#                   port="OPTIONAL_PORT"/>
+# 
+#     <nmwgtopo:dst type="REQUIRED_TYPE" value="REQUIRED_VALUE" 
+#                   port="OPTIONAL_PORT"/>
+#  
+#   </nmwgtopo:endPointPair>
+#  
+# </traceroute:subject>
+#
+# ##############################################################
+
+TracerouteSubject =
+        element traceroute:subject {
+                Identifier &
+                MetadataIdentifierRef? &                        
+                (                   
+                        EndpointPair |
+                        L4EndpointPair
+                )
+        }
+
+
+# ##############################################################
+# This is simply the regular method of doing parameters with an
+# enumeration to limit what 'names' are accepted and an outer
+# ping: namespace for the parameters.
+#
+# Example: 
+# 
+# <traceroute:parameters id="REQUIRED_ID" 
+#                   xmlns:nmwg="http://ggf.org/ns/nmwg/tools/traceroute/2.0/">
+# 
+#   <nmwg:parameter name="REQUIRED_ENUM_NAME" value="OPTIONAL_VALUE"
+#                   xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#     <!-- ANY TEXT, (IF YOU DID NOT USE THE VALUE ATTRIBUTE) -->
+# 
+#   </nmwg:parameter>
+#  
+#   <!-- MORE PARAMETERS -->
+#   
+# </traceroute:parameters>
+# 
+# ##############################################################
+
+TracerouteParameters =
+        element traceroute:parameters {
+                Identifier &        
+                TracerouteParameter+
+        }
+        
+TracerouteParameter = 
+        element nmwg:parameter { 
+                attribute name { "firstTtl" | "maxTtl" | "waitTime" | 
+                                 "pause" | "packetSize" | "arguments" |       
+                                 "valueUnits" | "numBytes" | 
+                                 "numBytesUnits" } &
+                (
+                        attribute value { text } |
+                        text
+                )
+        }
+
+
+# ##############################################################
+# The data block is complex, and has the potential to contain
+# many things.  The data block can be used to return a metadata
+# block from a request, commonTime or datum elements, keys, 
+# or something that we have perhaps not defined as of yet.  
+#
+# Example: 
+# 
+# <nmwg:data id="REQUIRED_ID" 
+#            metadataIdRef="OPTIONAL_REFERENCE_ID" 
+#            xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <!-- OPTIONAL (MULTIPLE) METADATA -->
+# 
+#           <!-- OR -->
+#
+#   <!-- TBD OPTIONAL (MULTIPLE) COMMON TIME ELEMENTS AND 
+#        OPTIONAL (MULTIPLE) DATUM ELEMENTS-->
+# 
+#           <!-- OR -->
+#  
+#   <!-- TBD OPTIONAL (MULTIPLE) DATUM ELEMENTS -->
+# 
+#           <!-- OR -->
+#  
+#   <!-- OPTIONAL (MULTIPLE) KEY ELEMENTS -->
+# 
+#           <!-- OR -->
+# 
+#   <!-- ANY OPTIONAL (MULTIPLE) ELEMENT IN ANY NAMESPACE -->
+#   
+# </nmwg:data>
+# 
+# ##############################################################
+   
+TracerouteData =
+        element nmwg:data {
+                Identifier &
+                MetadataIdentifierRef? &
+                (
+                        (
+                                Metadata* |
+                                TracerouteMetadata*
+                        ) |
+                        (
+                                TracerouteCommonTime+ & 
+                                (
+                                        TracerouteDatum* |
+                                        ResultDatum*
+                                )
+                        ) |
+                        (
+                                TracerouteDatum* |
+                                ResultDatum*
+                        ) |
+                        Key*
+                )
+        }
+
+
+# ##############################################################
+# CommonTime is used a a shortcut able to 'factor out' a frequently
+# occurring time range that a bunch of datum (or other) elements
+# might share, thus reducing complexity of XML representation.  
+# CommonTime is similar to the other NMWG time stamps (from 
+# nmtime.rnc) in its potential time representations.
+#
+# Example: 
+# 
+# <nmwg:commonTime type="REQUIRED_TYPE" value="OPTIONAL_VALUE"
+#                  duration="OPTIONAL_DURATION" 
+#                  inclusive="OPTIONAL_INCLUSIVE_FLAG"
+#                  xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <!-- TBD OPTIONAL START TIME ELEMENT (USE END TIME OR DURATION) -->
+#  
+#   <!-- TBD OPTIONAL END TIME ELEMENT (ONLY WITH START TIME) -->
+#  
+#   <!-- TBD OPTIONAL TIME VALUE ELEMENT (USE IF NO VALUE ATTRIBUTE) -->
+#  
+#   <!-- TBD OPTIONAL (MULTIPLE) DATUM ELEMENTS -->
+# 
+#   <!-- ANY OPTIONAL (MULTIPLE) ELEMENT IN ANY NAMESPACE -->
+# </nmwg:commonTime>
+# 
+# ##############################################################
+
+TracerouteCommonTime = 
+        element nmwg:commonTime {
+                Type &
+                (
+                        TimeStamp |
+                        (
+                                StartTime & 
+                                (
+                                        EndTime | 
+                                        Duration 
+                                )
+                        )
+                ) &
+                (
+                        TracerouteDatum* |
+                        ResultDatum*
+                )
+        } 
+
+
+# ##############################################################
+# These are the basic elements we would expect to see in the 
+# specific traceroute datum.
+#
+# Example: 
+# 
+# <traceroute:datum value="REQUIRED_VALUE"
+#              valueUnits="OPTIONAL_VALUE_UNITS"
+#              numBytes="OPTIONAL_NUM_BYTES"
+#              numBytesUnits="OPTIONAL_NUM_BYTES_UNITS"
+#              ttl="OPTIONAL_TTL"
+#              queryNum="OPTIONAL_QUERY_NUM"
+#              hop="OPTIONAL_HOP"
+#              timeType="OPTIONAL_TIME_TYPE"
+#              timeValue="OPTIONAL_TIME_VALUE"
+#              xmlns:nmwg="http://ggf.org/ns/nmwg/tools/traceroute/2.0/">
+# 
+#   <!-- TIME ELEMENT (IF ATTRIBUTES NOT USED) -->
+#  
+# </traceroute:datum>
+# 
+# ##############################################################
+
+TracerouteDatum =
+        element traceroute:datum {
+                attribute value { xsd:float } &
+                attribute valueUnits { xsd:string }? &        
+                attribute numBytes { xsd:int }? &
+                attribute numBytesUnits { xsd:string }? &        
+                attribute ttl { xsd:int }? &
+                attribute queryNum { xsd:int }? &
+                attribute hop { xsd:string }? & 
+                (
+                        (
+                                attribute timeType { xsd:string } & 
+                                attribute timeValue { xsd:string }
+                        ) |
+                        Time
+                )?                       
+        }
+

Added: NMWG/base/schema/utilization.rnc
===================================================================
--- NMWG/base/schema/utilization.rnc	                        (rev 0)
+++ NMWG/base/schema/utilization.rnc	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,315 @@
+# ##############################################################
+# 
+# File:         utilization.rnc - Specialized schema for the 
+#                                 measure of interface utilization
+# Version:      $Id: utilization.rnc 341 2008-04-24 21:52:11Z boote $
+# Purpose:      Describes specific elements to be used in the
+#               representation and handling of interface 
+#               utilization
+# Reference:    http://books.xmlschemata.org/relaxng/page2.html
+#                         
+# ##############################################################
+        
+
+# ##############################################################
+# Namespace definitions
+# ##############################################################
+namespace nmwg = "http://ggf.org/ns/nmwg/base/2.0/"
+namespace utilization = "http://ggf.org/ns/nmwg/characteristic/utilization/2.0/"
+namespace nmwgr = "http://ggf.org/ns/nmwg/result/2.0/"
+
+
+# ##############################################################
+# Include additional functionality from other files
+# ##############################################################
+include "nmtopo.rnc"
+include "nmtopo_ver3.rnc"
+include "result.rnc"
+include "nmbase.rnc" {
+        Metadata |= UtilizationMetadata
+        Data |= UtilizationData        
+} 
+
+
+# ##############################################################
+# Metadata is the 'data' that describes physical measurements. 
+# Metadata can be something such as a physical address, or 
+# a geographical location; any form of static, re-usable 
+# designation.  It is important to note that the subject
+# namespace and parameters namespace MUST match (or the parameters
+# can be a generic NMWG) or bad things will occur.
+#
+# Example: 
+# 
+# <nmwg:metadata id="REQUIRED_ID" 
+#                metadataIdRef="OPTIONAL_REFERENCE_ID"
+#                xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <!-- TBD OPTIONAL SUBJECT -->
+# 
+#   <!-- TBD OPTIONAL PARAMETERS -->
+#
+#   <!-- TBD OPTIONAL EVENTTYPE -->
+# 
+#   <!-- TBD OPTIONAL KEY -->
+#  
+#   <!-- ANY OPTIONAL (MULTIPLE) ELEMENT IN ANY NAMESPACE --> 
+#
+# </nmwg:metadata>
+# 
+# ##############################################################
+        
+UtilizationMetadata = 
+        element nmwg:metadata {
+                Identifier &
+                MetadataIdentifierRef? &
+                UtilizationMetadataContent
+        }
+          
+UtilizationMetadataBlock = 
+        UtilizationSubject? &
+        (
+                UtilizationParameters |
+                Parameters
+        )?
+        
+UtilizationMetadataContent = 
+        (
+                UtilizationMetadataBlock |
+                FilterMetadataBlock                
+        ) &        
+        EventType? &
+        Key?        
+
+
+# ##############################################################
+# Redefined utilization subject allows only an interface, and
+# the two id attributes.    
+#
+# Example: 
+# 
+# <utilization:subject id="REQUIRED_ID" 
+#               metadataIdRef="OPTIONAL_REFERENCE_ID"
+#               xmlns:nmwg="http://ggf.org/ns/nmwg/tools/utilization/2.0/">
+# 
+#   <nmwgtopo:interface xmlns:nmwgtopo="http://ggf.org/ns/nmwg/topology/2.0/">
+# 
+#     <nmwgtopo:ipAddress type='REQUIRED_TYPE'> TEXT </nmwgtopo:ipAddress>
+# 
+#     <nmwgtopo:hostName> TEXT </nmwgtopo:hostName>
+# 
+#     <nmwgtopo:ifName> TEXT </nmwgtopo:ifName>
+# 
+#     <nmwgtopo:ifDescription> TEXT </nmwgtopo:ifDescription>
+# 
+#     <nmwgtopo:ifAddress type='REQUIRED_TYPE'> TEXT </nmwgtopo:ifAddress>
+# 
+#     <nmwgtopo:ifHostName> TEXT </nmwgtopo:ifHostName>
+# 
+#     <nmwgtopo:ifIndex> TEXT </nmwgtopo:ifIndex>
+# 
+#     <nmwgtopo:type> TEXT </nmwgtopo:type>
+# 
+#     <nmwgtopo:direction> TEXT </nmwgtopo:direction>
+# 
+#     <nmwgtopo:authRealm> TEXT </nmwgtopo:authRealm>
+# 
+#     <nmwgtopo:classOfService> TEXT </nmwgtopo:classOfService>
+# 
+#     <nmwgtopo:capacity> TEXT </nmwgtopo:capacity>
+#  
+#   </nmwgtopo:interface>
+#  
+# </utilization:subject>
+#
+# ##############################################################
+
+UtilizationSubject =
+        element utilization:subject {
+                Identifier &
+                MetadataIdentifierRef? &                
+                (
+                        Interface |
+                        BaseInterface |
+                        L2Interface |
+                        L3Interface
+                )
+        }
+
+
+# ##############################################################
+# This is simply the regular method of doing parameters with an
+# enumeration to limit what 'names' are accepted and an outer
+# utilization: namespace for the parameters.
+#
+# Example: 
+# 
+# <utilization:parameters id="REQUIRED_ID" 
+#                   xmlns:nmwg="http://ggf.org/ns/nmwg/tools/utilization/2.0/">
+# 
+#   <nmwg:parameter name="REQUIRED_ENUM_NAME" value="OPTIONAL_VALUE"
+#                   xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#     <!-- ANY TEXT, (IF YOU DID NOT USE THE VALUE ATTRIBUTE) -->
+# 
+#   </nmwg:parameter>
+#  
+#   <!-- MORE PARAMETERS -->
+#   
+# </utilization:parameters>
+# 
+# ##############################################################
+
+UtilizationParameters =
+        element utilization:parameters {
+                Identifier &        
+                UtilizationParameter+
+        }
+        
+UtilizationParameter = 
+        element nmwg:parameter { 
+                attribute name { "interval" | "valueUnits" } &
+                (
+                        attribute value { text } |
+                        text
+                )
+        }
+
+
+# ##############################################################
+# The data block is complex, and has the potential to contain
+# many things.  The data block can be used to return a metadata
+# block from a request, commonTime or datum elements, keys, 
+# or something that we have perhaps not defined as of yet.  
+#
+# Example: 
+# 
+# <nmwg:data id="REQUIRED_ID" 
+#            metadataIdRef="OPTIONAL_REFERENCE_ID" 
+#            xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <!-- OPTIONAL (MULTIPLE) METADATA -->
+# 
+#           <!-- OR -->
+#
+#   <!-- TBD OPTIONAL (MULTIPLE) COMMON TIME ELEMENTS AND 
+#        OPTIONAL (MULTIPLE) DATUM ELEMENTS-->
+# 
+#           <!-- OR -->
+#  
+#   <!-- TBD OPTIONAL (MULTIPLE) DATUM ELEMENTS -->
+# 
+#           <!-- OR -->
+#  
+#   <!-- OPTIONAL (MULTIPLE) KEY ELEMENTS -->
+# 
+#           <!-- OR -->
+# 
+#   <!-- ANY OPTIONAL (MULTIPLE) ELEMENT IN ANY NAMESPACE -->
+#   
+# </nmwg:data>
+# 
+# ##############################################################
+   
+UtilizationData =
+        element nmwg:data {
+                Identifier &
+                MetadataIdentifierRef? &
+                (
+                        (
+                                Metadata* |
+                                UtilizationMetadata*
+                        ) |
+                        (
+                                UtilizationCommonTime+ & 
+                                (
+                                        UtilizationDatum* |
+                                        ResultDatum*
+                                )
+                        ) |
+                        (
+                                UtilizationDatum* |
+                                ResultDatum*
+                        ) |
+                        Key*
+                )
+        }
+
+
+# ##############################################################
+# CommonTime is used a a shortcut able to 'factor out' a frequently
+# occurring time range that a bunch of datum (or other) elements
+# might share, thus reducing complexity of XML representation.  
+# CommonTime is similar to the other NMWG time stamps (from 
+# nmtime.rnc) in its potential time representations.
+#
+# Example: 
+# 
+# <nmwg:commonTime type="REQUIRED_TYPE" value="OPTIONAL_VALUE"
+#                  duration="OPTIONAL_DURATION" 
+#                  inclusive="OPTIONAL_INCLUSIVE_FLAG"
+#                  xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
+# 
+#   <!-- TBD OPTIONAL START TIME ELEMENT (USE END TIME OR DURATION) -->
+#  
+#   <!-- TBD OPTIONAL END TIME ELEMENT (ONLY WITH START TIME) -->
+#  
+#   <!-- TBD OPTIONAL TIME VALUE ELEMENT (USE IF NO VALUE ATTRIBUTE) -->
+#  
+#   <!-- TBD OPTIONAL (MULTIPLE) DATUM ELEMENTS -->
+# 
+#   <!-- ANY OPTIONAL (MULTIPLE) ELEMENT IN ANY NAMESPACE -->
+# </nmwg:commonTime>
+# 
+# ##############################################################
+
+UtilizationCommonTime = 
+        element nmwg:commonTime {
+                Type &
+                (
+                        TimeStamp |
+                        (
+                                StartTime & 
+                                (
+                                        EndTime | 
+                                        Duration 
+                                )
+                        )
+                ) &
+                (
+                        UtilizationDatum* |
+                        ResultDatum*
+                )
+        } 
+
+
+# ##############################################################
+# These are the basic elements we would expect to see in the 
+# specific iperf datum.
+#
+# Example: 
+# 
+# <utilization:datum value="REQUIRED_VALUE"
+#                    valueUnits="OPTIONAL_VALUE_UNITS"
+#                    timeType="OPTIONAL_TIME_TYPE"
+#                    timeValue="OPTIONAL_TIME_VALUE"
+#                    xmlns:nmwg="http://ggf.org/ns/nmwg/tools/utilization/2.0/">
+# 
+#   <!-- TIME ELEMENT (IF ATTRIBUTES NOT USED) -->
+#  
+# </utilization:datum>
+# 
+# ##############################################################
+
+UtilizationDatum =
+        element utilization:datum {
+                attribute value { xsd:float } &
+                attribute valueUnits { xsd:string }? &        
+                (
+                        (
+                                attribute timeType { xsd:string } & 
+                                attribute timeValue { xsd:string }
+                        ) |
+                        Time
+                )?                         
+        }

Added: NMWG/base/schema.tex
===================================================================
--- NMWG/base/schema.tex	                        (rev 0)
+++ NMWG/base/schema.tex	2012-06-28 13:50:31 UTC (rev 38)
@@ -0,0 +1,68 @@
+\section{Schema} \label{s:schema}
+
+The following sections show the formal schemata of the \textbf{NM-WG} using the
+elements described in Section~\ref{s:elements} and concepts presented in this
+document.  Each is written in the RELAX-NG\cite{relaxng} language. Through the
+use of tools such as Trang\cite{trang} and MSV\cite{msv} it is possible to
+convert this to other widely accepted formats such as XSD\cite{xsd}.
+
+We are presenting three major components of the entire schemata:
+
+\begin{itemize} \item \textbf{Base} - A representation of the elements in
+Section~\ref{s:elements} \item \textbf{Time} - A simple schema that describes
+representation of time values in network measurements \item \textbf{Topology} -
+A basic representation of network topology; this work will be superseded by the
+efforts of more relevant working groups (such as the \textbf{NML-WG})
+\end{itemize}
+
+\subsection{Base Schema} \label{s:base_schema}
+
+The ``base'' schema is so named because it contains the essential elements of
+this work.  Subsequent extensions and profiles will incorporate the items
+presented below.  
+
+\tiny
+\begin{verbatim}
+
+% INLINESCHEMA="schema/nmbase.rnc"
+
+\end{verbatim}
+\normalsize
+
+\subsection{Time Schema} \label{s:time_schema}
+
+The time schema features a simple schema capable of representing time in the
+data portion of \textbf{NM-WG} encoded information.  This schema does not offer
+a complex time definition, and may fall short of what is required for many high
+performance measurement tools.  The members of this group fully expect this
+work to be augmented and eventually replaced by stronger representations that
+will come from members of the network measurement community.  
+
+\tiny
+\begin{verbatim}
+
+% INLINESCHEMA="schema/nmtime.rnc"
+
+\end{verbatim}
+\normalsize
+
+\subsection{Topology Schema} \label{s:topology_schema}
+
+The topology schema contains elements that define simple aspects of network
+topology.  The elements in this work are by no means exhaustive and cover only
+common measurement cases such as measurements originating from the 3rd and 4th
+``Layers'' of the \textit{OSI protocol model}.  
+
+As noted above there has been significant work in the \textbf{NML-WG} to define
+network topology that is both scalable and sharable; the \textbf{NM-WG} expects
+to deprecate this topology schema in time when there concrete standards
+published.  A migration plan and information document from the \textbf{NM-WG}
+is fully expected in this time of transition.
+
+\tiny
+\begin{verbatim}
+
+% INLINESCHEMA="schema/nmtopo.rnc"
+
+\end{verbatim}
+\normalsize

Added: NMWG/base/smooth.dia
===================================================================
(Binary files differ)


Property changes on: NMWG/base/smooth.dia
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: NMWG/base/smooth.eps
===================================================================
(Binary files differ)


Property changes on: NMWG/base/smooth.eps
___________________________________________________________________
Added: svn:mime-type
   + application/postscript

Added: NMWG/base/ven.dia
===================================================================
(Binary files differ)


Property changes on: NMWG/base/ven.dia
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: NMWG/base/ven.eps
===================================================================
(Binary files differ)


Property changes on: NMWG/base/ven.eps
___________________________________________________________________
Added: svn:mime-type
   + application/postscript



More information about the Nmc-wg mailing list