From e52d73fb6e3339384c6121d0d1efd2fd90bfcd62 Mon Sep 17 00:00:00 2001
From: Jeffrey Phillips Freeman <jeffrey.freeman@syncleus.com>
Date: Sun, 4 Sep 2011 09:12:25 -0400
Subject: [PATCH] Uncommented XML serialization code and adapted it to the new
class strucutre.
---
.../AbstractGraphicalModelAdjacencyGraph.java | 30 +-
.../dann/graphicalmodel/EvidenceMap.java | 22 +-
.../graphicalmodel/GraphicalModelNode.java | 6 +-
.../SimpleGraphicalModelNode.java | 35 +-
.../dann/graphicalmodel/StateEvidence.java | 11 +-
.../ImmutableBayesianAdjacencyNetwork.java | 1 -
.../MutableBayesianAdjacencyNetwork.java | 1 -
....syncleus.dann.graphicalmodel.bayesian.xsd | 208 +-----------
.../com.syncleus.dann.graphicalmodel.xsd | 302 ++++++++++++++++++
.../TestSicknessRandomMarkovField.java | 6 +-
10 files changed, 358 insertions(+), 264 deletions(-)
create mode 100644 src/main/resources/com.syncleus.dann.graphicalmodel.xsd
diff --git a/src/main/java/com/syncleus/dann/graphicalmodel/AbstractGraphicalModelAdjacencyGraph.java b/src/main/java/com/syncleus/dann/graphicalmodel/AbstractGraphicalModelAdjacencyGraph.java
index 2a1c5d19..fa5fa50b 100644
--- a/src/main/java/com/syncleus/dann/graphicalmodel/AbstractGraphicalModelAdjacencyGraph.java
+++ b/src/main/java/com/syncleus/dann/graphicalmodel/AbstractGraphicalModelAdjacencyGraph.java
@@ -19,14 +19,12 @@
package com.syncleus.dann.graphicalmodel;
import java.util.*;
-import com.sun.org.apache.xpath.internal.operations.Neg;
import com.syncleus.dann.graph.*;
-import sun.reflect.generics.reflectiveObjects.NotImplementedException;
-//import com.syncleus.dann.graphicalmodel.bayesian.xml.BayesianNetworkElementXml;
-//import com.syncleus.dann.graphicalmodel.bayesian.xml.BayesianNetworkXml;
-//import com.syncleus.dann.xml.NamedValueXml;
-//import com.syncleus.dann.xml.Namer;
-//import com.syncleus.dann.xml.XmlSerializable;
+import com.syncleus.dann.graphicalmodel.xml.GraphicalModelElementXml;
+import com.syncleus.dann.graphicalmodel.xml.GraphicalModelXml;
+import com.syncleus.dann.xml.NamedValueXml;
+import com.syncleus.dann.xml.Namer;
+import com.syncleus.dann.xml.XmlSerializable;
public abstract class AbstractGraphicalModelAdjacencyGraph<N extends GraphicalModelNode, E extends BidirectedEdge<N>> extends AbstractBidirectedAdjacencyGraph<N, E> implements GraphicalModel<N, E>
{
@@ -56,7 +54,7 @@ public abstract class AbstractGraphicalModelAdjacencyGraph<N extends GraphicalMo
public double jointProbability()
{
// TODO implement this!
- throw new NotImplementedException();
+ throw new UnsupportedOperationException();
}
@Override
@@ -183,15 +181,14 @@ public abstract class AbstractGraphicalModelAdjacencyGraph<N extends GraphicalMo
return (AbstractGraphicalModelAdjacencyGraph<N, E>) super.clone();
}
-/*
@Override
- public BayesianNetworkXml toXml()
+ public GraphicalModelXml toXml()
{
- final BayesianNetworkElementXml networkXml = new BayesianNetworkElementXml();
+ final GraphicalModelElementXml networkXml = new GraphicalModelElementXml();
final Namer<Object> namer = new Namer<Object>();
- networkXml.setNodeInstances(new BayesianNetworkElementXml.NodeInstances());
- networkXml.setStateInstances(new BayesianNetworkElementXml.StateInstances());
+ networkXml.setNodeInstances(new GraphicalModelElementXml.NodeInstances());
+ networkXml.setStateInstances(new GraphicalModelElementXml.StateInstances());
final Set<Object> writtenStates = new HashSet<Object>();
for (N node : this.getNodes())
{
@@ -244,19 +241,19 @@ public abstract class AbstractGraphicalModelAdjacencyGraph<N extends GraphicalMo
}
@Override
- public BayesianNetworkXml toXml(final Namer<Object> namer)
+ public GraphicalModelXml toXml(final Namer<Object> namer)
{
if (namer == null)
{
throw new IllegalArgumentException("namer can not be null");
}
- final BayesianNetworkXml xml = new BayesianNetworkXml();
+ final GraphicalModelXml xml = new GraphicalModelXml();
this.toXml(xml, namer);
return xml;
}
- protected static class NodeConnectivity<N extends BayesianNode, E extends BayesianEdge<N>> extends HashMap<N, Set<E>>
+ protected static class NodeConnectivity<N extends GraphicalModelNode, E extends BidirectedEdge<N>> extends HashMap<N, Set<E>>
{
private static final long serialVersionUID = -3068604309573134643L;
@@ -272,5 +269,4 @@ public abstract class AbstractGraphicalModelAdjacencyGraph<N extends GraphicalMo
return edges;
}
}
-*/
}
\ No newline at end of file
diff --git a/src/main/java/com/syncleus/dann/graphicalmodel/EvidenceMap.java b/src/main/java/com/syncleus/dann/graphicalmodel/EvidenceMap.java
index 1233555f..19d36e44 100644
--- a/src/main/java/com/syncleus/dann/graphicalmodel/EvidenceMap.java
+++ b/src/main/java/com/syncleus/dann/graphicalmodel/EvidenceMap.java
@@ -19,9 +19,11 @@
package com.syncleus.dann.graphicalmodel;
import java.util.*;
+import com.syncleus.dann.graphicalmodel.xml.EvidenceMapElementXml;
+import com.syncleus.dann.graphicalmodel.xml.EvidenceMapXml;
import com.syncleus.dann.xml.*;
-public class EvidenceMap<S> extends HashMap<Map<GraphicalModelNode, Object>, StateEvidence<S>>// implements XmlSerializable<EvidenceMapXml, Object>
+public class EvidenceMap<S> extends HashMap<Map<GraphicalModelNode, Object>, StateEvidence<S>> implements XmlSerializable<EvidenceMapXml, Object>
{
private static final long serialVersionUID = 5956089319330421885L;
private final Set<GraphicalModelNode> influencingNodes;
@@ -138,27 +140,26 @@ public class EvidenceMap<S> extends HashMap<Map<GraphicalModelNode, Object>, Sta
super.putAll(map);
}
-/*
@Override
public EvidenceMapXml toXml()
{
final EvidenceMapElementXml xml = new EvidenceMapElementXml();
final Namer<Object> namer = new Namer<Object>();
- final Set<BayesianNode> seenNodes = new HashSet<BayesianNode>();
+ final Set<GraphicalModelNode> seenNodes = new HashSet<GraphicalModelNode>();
final Set<Object> seenStates = new HashSet<Object>();
xml.setNodeInstances(new EvidenceMapElementXml.NodeInstances());
xml.setStateInstances(new EvidenceMapElementXml.StateInstances());
- for (Map.Entry<Map<BayesianNode, Object>, com.syncleus.dann.graphicalmodel.bayesian.StateEvidence<S>> entry : this.entrySet())
+ for (Map.Entry<Map<GraphicalModelNode, Object>, StateEvidence<S>> entry : this.entrySet())
{
- final Map<BayesianNode, Object> influences = entry.getKey();
- final com.syncleus.dann.graphicalmodel.bayesian.StateEvidence<S> evidence = entry.getValue();
+ final Map<GraphicalModelNode, Object> influences = entry.getKey();
+ final StateEvidence<S> evidence = entry.getValue();
//add instances for all the nodes and states from the influences
- for (Map.Entry<BayesianNode, Object> influenceEntry : influences.entrySet())
+ for (Map.Entry<GraphicalModelNode, Object> influenceEntry : influences.entrySet())
{
- final BayesianNode node = influenceEntry.getKey();
+ final GraphicalModelNode node = influenceEntry.getKey();
final Object state = influenceEntry.getValue();
if (seenStates.add(state))
@@ -246,13 +247,13 @@ public class EvidenceMap<S> extends HashMap<Map<GraphicalModelNode, Object>, Sta
{
jaxbObject.setInfluencedEvidences(new EvidenceMapXml.InfluencedEvidences());
}
- for (Map.Entry<Map<BayesianNode, Object>, StateEvidence<S>> entry : this.entrySet())
+ for (Map.Entry<Map<GraphicalModelNode, Object>, StateEvidence<S>> entry : this.entrySet())
{
final EvidenceMapXml.InfluencedEvidences.InfluencedEvidence influencedEvidence = new EvidenceMapXml.InfluencedEvidences.InfluencedEvidence();
//add the influences to the xml
influencedEvidence.setInfluences(new EvidenceMapXml.InfluencedEvidences.InfluencedEvidence.Influences());
- for (Map.Entry<BayesianNode, Object> influenceEntry : entry.getKey().entrySet())
+ for (Map.Entry<GraphicalModelNode, Object> influenceEntry : entry.getKey().entrySet())
{
final EvidenceMapXml.InfluencedEvidences.InfluencedEvidence.Influences.Influence influenceXml = new EvidenceMapXml.InfluencedEvidences.InfluencedEvidence.Influences.Influence();
influenceXml.setNode(namer.getNameOrCreate(influenceEntry.getKey()));
@@ -266,5 +267,4 @@ public class EvidenceMap<S> extends HashMap<Map<GraphicalModelNode, Object>, Sta
jaxbObject.getInfluencedEvidences().getInfluencedEvidences().add(influencedEvidence);
}
}
-*/
}
diff --git a/src/main/java/com/syncleus/dann/graphicalmodel/GraphicalModelNode.java b/src/main/java/com/syncleus/dann/graphicalmodel/GraphicalModelNode.java
index 7ff8540c..b006bccd 100644
--- a/src/main/java/com/syncleus/dann/graphicalmodel/GraphicalModelNode.java
+++ b/src/main/java/com/syncleus/dann/graphicalmodel/GraphicalModelNode.java
@@ -18,11 +18,11 @@
******************************************************************************/
package com.syncleus.dann.graphicalmodel;
-//import com.syncleus.dann.graphicalmodel.xml.GraphicalModelNodeXml;
-//import com.syncleus.dann.xml.XmlSerializable;
+import com.syncleus.dann.graphicalmodel.xml.GraphicalModelNodeXml;
+import com.syncleus.dann.xml.XmlSerializable;
import java.util.Set;
-public interface GraphicalModelNode<S>// extends XmlSerializable<GraphicalModelNodeXml, Object>
+public interface GraphicalModelNode<S> extends XmlSerializable<GraphicalModelNodeXml, Object>
{
Set<S> getLearnedStates();
void setState(S currentState);
diff --git a/src/main/java/com/syncleus/dann/graphicalmodel/SimpleGraphicalModelNode.java b/src/main/java/com/syncleus/dann/graphicalmodel/SimpleGraphicalModelNode.java
index fcf57b04..5548769c 100644
--- a/src/main/java/com/syncleus/dann/graphicalmodel/SimpleGraphicalModelNode.java
+++ b/src/main/java/com/syncleus/dann/graphicalmodel/SimpleGraphicalModelNode.java
@@ -21,14 +21,13 @@ package com.syncleus.dann.graphicalmodel;
import java.util.*;
import com.syncleus.dann.graph.BidirectedEdge;
import com.syncleus.dann.graph.context.AbstractContextNode;
-import com.syncleus.dann.math.counting.CombinationCounter;
-//import com.syncleus.dann.graphicalmodel.bayesian.xml.BayesianNodeXml;
-//import com.syncleus.dann.graphicalmodel.bayesian.xml.SimpleBayesianNodeElementXml;
-//import com.syncleus.dann.graphicalmodel.bayesian.xml.SimpleBayesianNodeXml;
-//import com.syncleus.dann.xml.NameXml;
-//import com.syncleus.dann.xml.NamedValueXml;
-//import com.syncleus.dann.xml.Namer;
-//import com.syncleus.dann.xml.XmlSerializable;
+import com.syncleus.dann.graphicalmodel.xml.GraphicalModelNodeXml;
+import com.syncleus.dann.graphicalmodel.xml.SimpleGraphicalModelNodeElementXml;
+import com.syncleus.dann.graphicalmodel.xml.SimpleGraphicalModelNodeXml;
+import com.syncleus.dann.xml.NameXml;
+import com.syncleus.dann.xml.NamedValueXml;
+import com.syncleus.dann.xml.Namer;
+import com.syncleus.dann.xml.XmlSerializable;
public class SimpleGraphicalModelNode<S> extends AbstractContextNode<GraphicalModelNode<S>, BidirectedEdge<GraphicalModelNode<S>>, GraphicalModel<GraphicalModelNode<S>, BidirectedEdge<GraphicalModelNode<S>>>> implements GraphicalModelNode<S>
{
@@ -169,14 +168,13 @@ public class SimpleGraphicalModelNode<S> extends AbstractContextNode<GraphicalMo
return false;
}
-/*
@Override
- public SimpleBayesianNodeXml toXml()
+ public SimpleGraphicalModelNodeXml toXml()
{
final Namer<Object> namer = new Namer<Object>();
- final SimpleBayesianNodeElementXml xml = new SimpleBayesianNodeElementXml();
+ final SimpleGraphicalModelNodeElementXml xml = new SimpleGraphicalModelNodeElementXml();
- xml.setStateInstances(new SimpleBayesianNodeElementXml.StateInstances());
+ xml.setStateInstances(new SimpleGraphicalModelNodeElementXml.StateInstances());
final Set<S> writtenStates = new HashSet<S>();
for (S learnedState : this.learnedStates)
{
@@ -217,25 +215,25 @@ public class SimpleGraphicalModelNode<S> extends AbstractContextNode<GraphicalMo
}
@Override
- public SimpleBayesianNodeXml toXml(final Namer<Object> namer)
+ public SimpleGraphicalModelNodeXml toXml(final Namer<Object> namer)
{
if (namer == null)
{
throw new IllegalArgumentException("namer can not be null");
}
- final SimpleBayesianNodeXml xml = new SimpleBayesianNodeXml();
+ final SimpleGraphicalModelNodeXml xml = new SimpleGraphicalModelNodeXml();
this.toXml(xml, namer);
return xml;
}
@Override
- public void toXml(final BayesianNodeXml jaxbObject, final Namer<Object> namer)
+ public void toXml(final GraphicalModelNodeXml jaxbObject, final Namer<Object> namer)
{
//set learned states
if (jaxbObject.getLearnedStates() == null)
{
- jaxbObject.setLearnedStates(new SimpleBayesianNodeXml.LearnedStates());
+ jaxbObject.setLearnedStates(new SimpleGraphicalModelNodeXml.LearnedStates());
}
for (S learnedState : learnedStates)
{
@@ -252,10 +250,9 @@ public class SimpleGraphicalModelNode<S> extends AbstractContextNode<GraphicalMo
jaxbObject.getState().setName(namer.getNameOrCreate(this.state));
//set evidence map
- if ((jaxbObject instanceof SimpleBayesianNodeXml) && (this.evidence != null))
+ if ((jaxbObject instanceof SimpleGraphicalModelNodeXml) && (this.evidence != null))
{
- ((SimpleBayesianNodeXml) jaxbObject).setEvidence(this.evidence.toXml(namer));
+ ((SimpleGraphicalModelNodeXml) jaxbObject).setEvidence(this.evidence.toXml(namer));
}
}
- */
}
diff --git a/src/main/java/com/syncleus/dann/graphicalmodel/StateEvidence.java b/src/main/java/com/syncleus/dann/graphicalmodel/StateEvidence.java
index 760c9179..e326b6e0 100644
--- a/src/main/java/com/syncleus/dann/graphicalmodel/StateEvidence.java
+++ b/src/main/java/com/syncleus/dann/graphicalmodel/StateEvidence.java
@@ -20,11 +20,11 @@ package com.syncleus.dann.graphicalmodel;
import java.util.HashMap;
import java.util.Map;
-//import com.syncleus.dann.graphicalmodel.bayesian.xml.StateEvidenceElementXml;
-//import com.syncleus.dann.graphicalmodel.bayesian.xml.StateEvidenceXml;
-//import com.syncleus.dann.xml.*;
+import com.syncleus.dann.graphicalmodel.xml.StateEvidenceElementXml;
+import com.syncleus.dann.graphicalmodel.xml.StateEvidenceXml;
+import com.syncleus.dann.xml.*;
-public class StateEvidence<S> extends HashMap<S, Integer>// implements XmlSerializable<StateEvidenceXml, Object>
+public class StateEvidence<S> extends HashMap<S, Integer> implements XmlSerializable<StateEvidenceXml, Object>
{
private static final long serialVersionUID = 4276706788994272957L;
private long totalEvidence;
@@ -68,7 +68,7 @@ public class StateEvidence<S> extends HashMap<S, Integer>// implements XmlSerial
}
}
-/*
+
@Override
public StateEvidenceXml toXml()
{
@@ -138,5 +138,4 @@ public class StateEvidence<S> extends HashMap<S, Integer>// implements XmlSerial
jaxbObject.getStates().getStates().add(stateXml);
}
}
-*/
}
diff --git a/src/main/java/com/syncleus/dann/graphicalmodel/bayesian/ImmutableBayesianAdjacencyNetwork.java b/src/main/java/com/syncleus/dann/graphicalmodel/bayesian/ImmutableBayesianAdjacencyNetwork.java
index 9a9054ea..424b4b7a 100644
--- a/src/main/java/com/syncleus/dann/graphicalmodel/bayesian/ImmutableBayesianAdjacencyNetwork.java
+++ b/src/main/java/com/syncleus/dann/graphicalmodel/bayesian/ImmutableBayesianAdjacencyNetwork.java
@@ -27,7 +27,6 @@ import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import com.syncleus.dann.graph.DirectedEdge;
-import com.syncleus.dann.graphicalmodel.AbstractGraphicalModelAdjacencyGraph;
import com.syncleus.dann.graphicalmodel.GraphicalModelNode;
public class ImmutableBayesianAdjacencyNetwork<N extends GraphicalModelNode, E extends DirectedEdge<N>> extends AbstractBayesianAdjacencyNetwork<N, E>
diff --git a/src/main/java/com/syncleus/dann/graphicalmodel/bayesian/MutableBayesianAdjacencyNetwork.java b/src/main/java/com/syncleus/dann/graphicalmodel/bayesian/MutableBayesianAdjacencyNetwork.java
index 8730a3f9..bd6e39cf 100644
--- a/src/main/java/com/syncleus/dann/graphicalmodel/bayesian/MutableBayesianAdjacencyNetwork.java
+++ b/src/main/java/com/syncleus/dann/graphicalmodel/bayesian/MutableBayesianAdjacencyNetwork.java
@@ -25,7 +25,6 @@ import java.util.Set;
import com.syncleus.dann.graph.DirectedEdge;
import com.syncleus.dann.graph.context.ContextGraphElement;
import com.syncleus.dann.graph.Graph;
-import com.syncleus.dann.graphicalmodel.AbstractGraphicalModelAdjacencyGraph;
import com.syncleus.dann.graphicalmodel.GraphicalModelNode;
public class MutableBayesianAdjacencyNetwork<N extends GraphicalModelNode, E extends DirectedEdge<N>> extends AbstractBayesianAdjacencyNetwork<N, E> implements MutableBayesianNetwork<N, E>
diff --git a/src/main/resources/com.syncleus.dann.graphicalmodel.bayesian.xsd b/src/main/resources/com.syncleus.dann.graphicalmodel.bayesian.xsd
index 20716f5d..52eb9436 100644
--- a/src/main/resources/com.syncleus.dann.graphicalmodel.bayesian.xsd
+++ b/src/main/resources/com.syncleus.dann.graphicalmodel.bayesian.xsd
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema
xmlns="http://127.0.0.1:8080/Aide/com/syncleus/dann/graphicalmodel/bayesian/xml"
+ xmlns:graphicalmodel="http://127.0.0.1:8080/Aide/com/syncleus/dann/graphicalmodel/xml"
xmlns:dann="http://127.0.0.1:8080/Aide/com/syncleus/dann/xml"
xmlns:graph="http://127.0.0.1:8080/Aide/com/syncleus/dann/graph/xml"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
@@ -19,6 +20,8 @@
schemaLocation="com.syncleus.dann.xml.xsd"/>
<xsd:import namespace="http://127.0.0.1:8080/Aide/com/syncleus/dann/graph/xml"
schemaLocation="com.syncleus.dann.graph.xml.xsd"/>
+ <xsd:import namespace="http://127.0.0.1:8080/Aide/com/syncleus/dann/graphicalmodel/xml"
+ schemaLocation="com.syncleus.dann.graphicalmodel.xsd"/>
<!-- Global annotations -->
@@ -51,7 +54,7 @@
<jaxb:class name="BayesianNetworkElementXml"/>
<annox:annotate target="class">
<!-- this allows for proper unmarshalling, can not be used on classes which already generate this-->
- <anno:XmlSeeAlso value="BayesianNodeXml"/>
+ <anno:XmlSeeAlso value="com.syncleus.dann.graphicalmodel.xml.GraphicalModelNodeXml"/>
</annox:annotate>
</xsd:appinfo>
</xsd:annotation>
@@ -93,210 +96,9 @@
<!-- MarkovRandomField Type, contains references to instanced objects -->
<xsd:complexType name="BayesianNetwork">
<xsd:complexContent>
- <xsd:extension base="graph:Graph"/>
+ <xsd:extension base="graphicalmodel:GraphicalModel"/>
</xsd:complexContent>
</xsd:complexType>
- <!-- Nodes -->
-
- <!-- BayesianNode Type, Abstract representing types common to all Bayesian Nodes -->
- <xsd:complexType name="BayesianNode" abstract="true">
- <xsd:sequence>
- <xsd:element name="learnedStates" maxOccurs="1">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="learnedState" type="dann:Name" maxOccurs="unbounded">
- <xsd:annotation>
- <xsd:appinfo>
- <jaxb:property name="states"/>
- </xsd:appinfo>
- </xsd:annotation>
- </xsd:element>
- </xsd:sequence>
- </xsd:complexType>
- </xsd:element>
- <xsd:element name="State" type="dann:Name" minOccurs="1" maxOccurs="1"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <!-- SimpleBayesianNode Element, contains instances -->
- <xsd:element name="SimpleBayesianNode">
- <xsd:annotation>
- <xsd:appinfo>
- <jaxb:class name="SimpleBayesianNodeElementXml"/>
- </xsd:appinfo>
- </xsd:annotation>
- <xsd:complexType>
- <xsd:complexContent>
- <xsd:extension base="SimpleBayesianNode">
- <xsd:sequence>
- <xsd:element name="stateInstances" maxOccurs="1">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="learnedState" type="dann:NamedValue" maxOccurs="unbounded">
- <xsd:annotation>
- <xsd:appinfo>
- <jaxb:property name="states"/>
- </xsd:appinfo>
- </xsd:annotation>
- </xsd:element>
- </xsd:sequence>
- </xsd:complexType>
- </xsd:element>
- </xsd:sequence>
- </xsd:extension>
- </xsd:complexContent>
- </xsd:complexType>
- </xsd:element>
- <!-- SimpleBayesianNode Type, contains references to instanced objects -->
- <xsd:complexType name="SimpleBayesianNode">
- <xsd:complexContent>
- <xsd:extension base="BayesianNode">
- <xsd:sequence>
- <xsd:element name="Evidence" type="EvidenceMap" minOccurs="1" maxOccurs="1"/>
- </xsd:sequence>
- </xsd:extension>
- </xsd:complexContent>
- </xsd:complexType>
-
- <!-- EvidenceMap Element, contains instances -->
- <xsd:element name="EvidenceMap">
- <xsd:annotation>
- <xsd:appinfo>
- <jaxb:class name="EvidenceMapElementXml"/>
- </xsd:appinfo>
- </xsd:annotation>
- <xsd:complexType>
- <xsd:complexContent>
- <xsd:extension base="EvidenceMap">
- <xsd:sequence>
- <xsd:element name="stateInstances" maxOccurs="1">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="learnedState" type="dann:NamedValue" maxOccurs="unbounded">
- <xsd:annotation>
- <xsd:appinfo>
- <jaxb:property name="states"/>
- </xsd:appinfo>
- </xsd:annotation>
- </xsd:element>
- </xsd:sequence>
- </xsd:complexType>
- </xsd:element>
- <xsd:element name="nodeInstances" maxOccurs="1">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="node" type="dann:NamedValue" maxOccurs="unbounded">
- <xsd:annotation>
- <xsd:appinfo>
- <jaxb:property name="nodes"/>
- </xsd:appinfo>
- </xsd:annotation>
- </xsd:element>
- </xsd:sequence>
- </xsd:complexType>
- </xsd:element>
- </xsd:sequence>
- </xsd:extension>
- </xsd:complexContent>
- </xsd:complexType>
- </xsd:element>
- <!-- EvidenceMap Type, contains references to instanced objects -->
- <xsd:complexType name="EvidenceMap">
- <xsd:sequence>
- <xsd:element name="influencedEvidences" maxOccurs="1">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="influencedEvidence" minOccurs="1" maxOccurs="unbounded">
- <xsd:annotation>
- <xsd:appinfo>
- <jaxb:property name="influencedEvidences"/>
- </xsd:appinfo>
- </xsd:annotation>
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="Influences" minOccurs="1" maxOccurs="1">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="influence" minOccurs="1" maxOccurs="unbounded">
- <xsd:annotation>
- <xsd:appinfo>
- <jaxb:property name="influences"/>
- </xsd:appinfo>
- </xsd:annotation>
- <xsd:complexType>
- <xsd:attribute name="node" use="required"/>
- <xsd:attribute name="state" use="required"/>
- </xsd:complexType>
- </xsd:element>
- </xsd:sequence>
- </xsd:complexType>
- </xsd:element>
- <xsd:element name="StateEvidence" type="StateEvidence" minOccurs="1" maxOccurs="1"/>
- </xsd:sequence>
- </xsd:complexType>
- </xsd:element>
- </xsd:sequence>
- </xsd:complexType>
- </xsd:element>
- </xsd:sequence>
- </xsd:complexType>
-
- <!-- StateEvidence Element, contains instances -->
- <xsd:element name="StateEvidence">
- <xsd:annotation>
- <xsd:appinfo>
- <jaxb:class name="StateEvidenceElementXml"/>
- </xsd:appinfo>
- </xsd:annotation>
- <xsd:complexType>
- <xsd:complexContent>
- <xsd:extension base="StateEvidence">
- <xsd:sequence>
- <xsd:element name="stateInstances" maxOccurs="1">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="learnedState" type="dann:NamedValue" maxOccurs="unbounded">
- <xsd:annotation>
- <xsd:appinfo>
- <jaxb:property name="states"/>
- </xsd:appinfo>
- </xsd:annotation>
- </xsd:element>
- </xsd:sequence>
- </xsd:complexType>
- </xsd:element>
- </xsd:sequence>
- </xsd:extension>
- </xsd:complexContent>
- </xsd:complexType>
- </xsd:element>
- <!-- StateEvidence Type, contains references to instanced objects -->
- <xsd:complexType name="StateEvidence">
- <xsd:sequence>
- <xsd:element name="States">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="State" minOccurs="1" maxOccurs="unbounded">
- <xsd:annotation>
- <xsd:appinfo>
- <jaxb:property name="states"/>
- </xsd:appinfo>
- </xsd:annotation>
- <xsd:complexType>
- <xsd:complexContent>
- <xsd:extension base="dann:Name">
- <xsd:attribute name="count" type="xsd:int" use="required"/>
- </xsd:extension>
- </xsd:complexContent>
- </xsd:complexType>
- </xsd:element>
- </xsd:sequence>
- </xsd:complexType>
- </xsd:element>
- </xsd:sequence>
- </xsd:complexType>
-
-
</xsd:schema>
\ No newline at end of file
diff --git a/src/main/resources/com.syncleus.dann.graphicalmodel.xsd b/src/main/resources/com.syncleus.dann.graphicalmodel.xsd
new file mode 100644
index 00000000..4f054467
--- /dev/null
+++ b/src/main/resources/com.syncleus.dann.graphicalmodel.xsd
@@ -0,0 +1,302 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema
+ xmlns="http://127.0.0.1:8080/Aide/com/syncleus/dann/graphicalmodel/xml"
+ xmlns:dann="http://127.0.0.1:8080/Aide/com/syncleus/dann/xml"
+ xmlns:graph="http://127.0.0.1:8080/Aide/com/syncleus/dann/graph/xml"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
+ xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
+ xmlns:annox="http://annox.dev.java.net"
+ xmlns:anno="http://annox.dev.java.net/javax.xml.bind.annotation"
+ targetNamespace="http://127.0.0.1:8080/Aide/com/syncleus/dann/graphicalmodel/xml"
+ jaxb:version="2.0"
+ jaxb:extensionBindingPrefixes="xjc annox"
+ attributeFormDefault="unqualified"
+ elementFormDefault="unqualified">
+
+
+ <xsd:import namespace="http://127.0.0.1:8080/Aide/com/syncleus/dann/xml"
+ schemaLocation="com.syncleus.dann.xml.xsd"/>
+ <xsd:import namespace="http://127.0.0.1:8080/Aide/com/syncleus/dann/graph/xml"
+ schemaLocation="com.syncleus.dann.graph.xml.xsd"/>
+
+
+ <!-- Global annotations -->
+ <xsd:annotation>
+ <xsd:appinfo>
+ <jaxb:globalBindings
+ fixedAttributeAsConstantProperty="true"
+ collectionType="java.util.ArrayList"
+ typesafeEnumBase="xsd:NCName"
+ choiceContentProperty="true"
+ typesafeEnumMemberName="generateError"
+ enableFailFastCheck="false"
+ generateIsSetMethod="true"/>
+ <jaxb:schemaBindings>
+ <jaxb:package name="com.syncleus.dann.graphicalmodel.xml"/>
+ <jaxb:nameXmlTransform>
+ <jaxb:typeName suffix="Xml"/>
+ </jaxb:nameXmlTransform>
+ </jaxb:schemaBindings>
+ </xsd:appinfo>
+ </xsd:annotation>
+
+
+ <!-- Graphs -->
+
+ <!-- MarkovRandomField Element, contains instances -->
+ <xsd:element name="GraphicalModel">
+ <xsd:annotation>
+ <xsd:appinfo>
+ <jaxb:class name="GraphicalModelElementXml"/>
+ <annox:annotate target="class">
+ <!-- this allows for proper unmarshalling, can not be used on classes which already generate this-->
+ <anno:XmlSeeAlso value="GraphicalModelNodeXml"/>
+ </annox:annotate>
+ </xsd:appinfo>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:complexContent>
+ <xsd:extension base="GraphicalModel">
+ <xsd:sequence>
+ <xsd:element name="nodeInstances" maxOccurs="1">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="node" type="dann:NamedValue" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:appinfo>
+ <jaxb:property name="nodes"/>
+ </xsd:appinfo>
+ </xsd:annotation>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="stateInstances" maxOccurs="1">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="learnedState" type="dann:NamedValue" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:appinfo>
+ <jaxb:property name="states"/>
+ </xsd:appinfo>
+ </xsd:annotation>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+ <!-- MarkovRandomField Type, contains references to instanced objects -->
+ <xsd:complexType name="GraphicalModel">
+ <xsd:complexContent>
+ <xsd:extension base="graph:Graph"/>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+
+ <!-- Nodes -->
+
+ <!-- BayesianNode Type, Abstract representing types common to all Bayesian Nodes -->
+ <xsd:complexType name="GraphicalModelNode" abstract="true">
+ <xsd:sequence>
+ <xsd:element name="learnedStates" maxOccurs="1">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="learnedState" type="dann:Name" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:appinfo>
+ <jaxb:property name="states"/>
+ </xsd:appinfo>
+ </xsd:annotation>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="State" type="dann:Name" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <!-- SimpleBayesianNode Element, contains instances -->
+ <xsd:element name="SimpleGraphicalModelNode">
+ <xsd:annotation>
+ <xsd:appinfo>
+ <jaxb:class name="SimpleGraphicalModelNodeElementXml"/>
+ </xsd:appinfo>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:complexContent>
+ <xsd:extension base="SimpleGraphicalModelNode">
+ <xsd:sequence>
+ <xsd:element name="stateInstances" maxOccurs="1">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="learnedState" type="dann:NamedValue" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:appinfo>
+ <jaxb:property name="states"/>
+ </xsd:appinfo>
+ </xsd:annotation>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+ <!-- SimpleBayesianNode Type, contains references to instanced objects -->
+ <xsd:complexType name="SimpleGraphicalModelNode">
+ <xsd:complexContent>
+ <xsd:extension base="GraphicalModelNode">
+ <xsd:sequence>
+ <xsd:element name="Evidence" type="EvidenceMap" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <!-- EvidenceMap Element, contains instances -->
+ <xsd:element name="EvidenceMap">
+ <xsd:annotation>
+ <xsd:appinfo>
+ <jaxb:class name="EvidenceMapElementXml"/>
+ </xsd:appinfo>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:complexContent>
+ <xsd:extension base="EvidenceMap">
+ <xsd:sequence>
+ <xsd:element name="stateInstances" maxOccurs="1">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="learnedState" type="dann:NamedValue" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:appinfo>
+ <jaxb:property name="states"/>
+ </xsd:appinfo>
+ </xsd:annotation>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="nodeInstances" maxOccurs="1">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="node" type="dann:NamedValue" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:appinfo>
+ <jaxb:property name="nodes"/>
+ </xsd:appinfo>
+ </xsd:annotation>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+ <!-- EvidenceMap Type, contains references to instanced objects -->
+ <xsd:complexType name="EvidenceMap">
+ <xsd:sequence>
+ <xsd:element name="influencedEvidences" maxOccurs="1">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="influencedEvidence" minOccurs="1" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:appinfo>
+ <jaxb:property name="influencedEvidences"/>
+ </xsd:appinfo>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="Influences" minOccurs="1" maxOccurs="1">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="influence" minOccurs="1" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:appinfo>
+ <jaxb:property name="influences"/>
+ </xsd:appinfo>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:attribute name="node" use="required"/>
+ <xsd:attribute name="state" use="required"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="StateEvidence" type="StateEvidence" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <!-- StateEvidence Element, contains instances -->
+ <xsd:element name="StateEvidence">
+ <xsd:annotation>
+ <xsd:appinfo>
+ <jaxb:class name="StateEvidenceElementXml"/>
+ </xsd:appinfo>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:complexContent>
+ <xsd:extension base="StateEvidence">
+ <xsd:sequence>
+ <xsd:element name="stateInstances" maxOccurs="1">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="learnedState" type="dann:NamedValue" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:appinfo>
+ <jaxb:property name="states"/>
+ </xsd:appinfo>
+ </xsd:annotation>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+ <!-- StateEvidence Type, contains references to instanced objects -->
+ <xsd:complexType name="StateEvidence">
+ <xsd:sequence>
+ <xsd:element name="States">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="State" minOccurs="1" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:appinfo>
+ <jaxb:property name="states"/>
+ </xsd:appinfo>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:complexContent>
+ <xsd:extension base="dann:Name">
+ <xsd:attribute name="count" type="xsd:int" use="required"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+</xsd:schema>
\ No newline at end of file
diff --git a/src/test/java/com/syncleus/dann/graphicalmodel/markovrandomfield/TestSicknessRandomMarkovField.java b/src/test/java/com/syncleus/dann/graphicalmodel/markovrandomfield/TestSicknessRandomMarkovField.java
index 76b8714c..81b37756 100644
--- a/src/test/java/com/syncleus/dann/graphicalmodel/markovrandomfield/TestSicknessRandomMarkovField.java
+++ b/src/test/java/com/syncleus/dann/graphicalmodel/markovrandomfield/TestSicknessRandomMarkovField.java
@@ -26,7 +26,7 @@ import java.util.*;
import com.syncleus.dann.graph.ImmutableUndirectedEdge;
import com.syncleus.dann.graphicalmodel.GraphicalModelNode;
import com.syncleus.dann.graphicalmodel.SimpleGraphicalModelNode;
-import com.syncleus.dann.graphicalmodel.bayesian.xml.BayesianNetworkXml;
+import com.syncleus.dann.graphicalmodel.xml.GraphicalModelXml;
import org.junit.Assert;
import org.junit.Test;
@@ -72,7 +72,7 @@ public class TestSicknessRandomMarkovField
testOverall();
//mashall it
- JAXBContext context = JAXBContext.newInstance(BayesianNetworkXml.class, TestSicknessRandomMarkovField.FeverState.class, TestSicknessRandomMarkovField.AgeState.class, TestSicknessRandomMarkovField.BooleanState.class, TestSicknessRandomMarkovField.SeasonState.class);
+ JAXBContext context = JAXBContext.newInstance(GraphicalModelXml.class, TestSicknessRandomMarkovField.FeverState.class, TestSicknessRandomMarkovField.AgeState.class, TestSicknessRandomMarkovField.BooleanState.class, TestSicknessRandomMarkovField.SeasonState.class);
Marshaller marshal = context.createMarshaller();
StringWriter writer = new StringWriter();
@@ -80,7 +80,7 @@ public class TestSicknessRandomMarkovField
//unmarshall it
StringReader reader = new StringReader(writer.toString());
- BayesianNetworkXml xml = JAXB.unmarshal(reader, BayesianNetworkXml.class);
+ GraphicalModelXml xml = JAXB.unmarshal(reader, GraphicalModelXml.class);
Assert.assertTrue("could not unmarshal object!", xml != null);
Assert.assertTrue("Wrong number of edges after unmarshaling: " + xml.getEdges().getEdges().size(), xml.getEdges().getEdges().size() == 14);
--
GitLab