DataFormats»Dynet ML

Dynet ML

DynetML is an XML based syntax for representing complex social network graphs through the use of a MetaMatrix. This allows one to capture all of the relations between agents, tasks, resources, knowledge, etc. Of course, while it supports all of these, it works just fine for simple social networks with only one relation.

Main Page:


XML DTD file

RelaxNG xml format

Very nice paper

comparing formats, explaining DyNetML and giving more examples:


  • Typed nodes
  • Node attributes
  • Node Sets
  • typed edges
  • edge attributes
  • multiple graphs
  • dynamic graphs (as multiple graphs)
  • measures?


Developed by the CASOS Carnegie Mellon University: Maksim Tsvetovat, Jeff Reminga, Kathleen M. Carley


(contact info for somebody to ask questions, suggest improvements) CASOS at Carnegie Mellon University


COPYRIGHT (c) 2001-2006 Kathleen M. Carley - Center for Computational Analysis of Social and Organizational Systems (CASOS), Institute for Software Research International (ISRI), School of Computer Science, Carnegie Mellon University, 5000 Forbes Avenue - Pittsburgh, PA 15213-3890 - ALL RIGHTS RESERVED.

" Permission to use, copy and modify this version of the software or any parts of it and its documentation is hereby granted for RESEARCH ONLY purposes and provided that the above copyright notice and this permission notice appear intact in all copies of the software, that you do not sell the software, nor include the software in a commercial package"

tho this copyright does not appear to be aggressively enforced


from DyNetML to DyNetML

Example Files:

Short example:

  <!-- Define the metamatrix... watch comments in the XML 
for explanation of particular features of the format -->
   <MetaMatrix timePeriod="1">
   <!-- A global measure on the entire metamatrix -->
       <measure name="global" type="double" value="3.14">
         <input id="knowledgeNetwork"/>
         <input id="friendship"/>
    <!-- First, we specify the nodes -->
    <!-- Nodes are broken up into nodesets by type (e.g. agent,
         knowledge, resource, task, etc) -->
      <nodeset id="foo" type="agent">
      <!-- This is the simple node with no extended data -->
        <node id="b"/>
        <!--This is a more complex node with properties and 
            attached measures -->
	<node id="a">
        <!-- This is how to specify internal node properties 
           (see %admissibleProperties entity in DTD) -->
            <property name="foo" type="double" value="3.14"/>
            <property name="bar" type="double" value="3.14"/>
          <!-- This is how to specify node-level measures -->
          <!-- Each measure is named and accompanied by type 
               (double|string|binary) -->
            <measure name="centrality" type="double" value="3.14"/>
            <measure name="betweenness" type="double" value="3.14"/>
      <!-- Another nodeset -->
      <nodeset id="bar" type="knowledge">
        <node id="a1"/>
        <node id="a2" title="boss"/>
    <!-- Now we specify the graphs that comprise the metamatrix -->
    <!-- NOTE: source and target of each edge should be a valid node;
       however it's up to the software developer to ensure that
       - or to check consistency in any code that imports 
       this data -->
    <!-- A very simple graph -->
      <graph id="friendship" sourceType="agent" targetType="agent">
        <edge source="a" target="b" type="binary"/>
        <edge source="b" target="a" type="binary"/>
      <!-- A graph with some graph-level measures -->
      <graph id="advice" sourceType="agent" targetType="agent">
        <!-- Just like node-level measures; nothing new here -->
          <measure name="centralization" type="double"    
          <measure name="foo" type="double" value="3.14159"/>
          <measure name="bar" type="double" value="3.14159"/>
        <edge source="a" target="b" type="binary"/>
      <graph id="knowledgeNetwork" isDirected="true" 
        sourceType="agent" targetType="knowledge">
        <edge source="a" target="1" type="string" value="foobar"/>
        <edge source="b" target="2" type="double" value="3.14159"/>

tho it is not shown in the example, attributes for eges work the same as for nodes.


  • Dynamics only supports discrete waves?
  • difficult to specify attribute changes in time
  • documentation and examples do not show edge attribuetes
  • doesn't have an "edgeset" like its "nodeset" to allow reuseing edges in multiple graphs

Differences from GraphML

  • DynetML allows easy representation of multiple graphs with repeating node sets. This saves the need to redefine node sets for each network.
  • DynetML is designed to represent a multitude of relations in a network. For example, it can represent not only the relations between actors, but also between actors and items, thoughts, etc. This is through the use of a MetaMatrix approach to social network analysis.
  • Longitudinal data is easily represented by including multiple graphs in a single file. This allows distribution of a complete data set using a single file.

Tools Supporting DynetML

All of the tools created by CASOS support DynetML. Particular tools of interest are:

  • ORA - the Oganizational Risk Analyzer - a full network analysis and visualization package
  • AutoMap - a text analysis and linking package.

Unfortunately, there are very few additional libraries for parsing DynetML. Those using Python may wish to look at PyDynet for a parsing and creation package.