Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[higgins-dev] diffs for DigitalSubject -> Node refactor

All,


At Paul's request, I've renamed DigitalSubject to Node as well as a lot of supporting word changes.


Please review the .diff files attached to see if there's anything that I missed or that you don't like.  I'll commit tomorrow if no one has issues.


Jim


p.s.  How do you get the subversion plugin to let you do one big diff over all the projects?

Index: /home/jimse/dev/higgins/org.eclipse.higgins.util.idas.cp/src/org/eclipse/higgins/util/idas/cp/IMetadataPDPs.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.util.idas.cp/src/org/eclipse/higgins/util/idas/cp/IMetadataPDPs.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.util.idas.cp/src/org/eclipse/higgins/util/idas/cp/IMetadataPDPs.java	(working copy)
@@ -21,7 +21,7 @@
 /**
  * Part of a <a href="http://www.eclipse.org/higgins/";>Higgins</a> Context
  * provider. This module defines the PDP interfaces that are common to
- * metadata elements found on DigitalSubjects, Attributes, and AttributeValues.
+ * metadata elements found on Nodes, Attributes, and AttributeValues.
  * Assists in mapping between consumer and provider elements
  * 
  * @author dbuss@xxxxxxxxxx
Index: /home/jimse/dev/higgins/org.eclipse.higgins.util.idas.cp/src/org/eclipse/higgins/util/idas/cp/jscript/JScriptCPAttributePDPs.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.util.idas.cp/src/org/eclipse/higgins/util/idas/cp/jscript/JScriptCPAttributePDPs.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.util.idas.cp/src/org/eclipse/higgins/util/idas/cp/jscript/JScriptCPAttributePDPs.java	(working copy)
@@ -243,7 +243,7 @@
 	 * defined using the id {@link #providerTypeToConsumer}
 	 * <p>
 	 * 
-	 * A simple nonsensical sample where the provider Digital Subject Type mappings
+	 * A simple nonsensical sample where the provider Node Type mappings
 	 * are stored in a globally scoped attribute multimap, and are referenced
 	 * using JavaScript Associative Arrays.
 	 * 
@@ -249,10 +249,10 @@
 	 * 
 	 * <pre>
 	 *  
-	 * 		&lt;JSPolicyAction id=&quot;consumerDSTypeToProvider&quot; evalType=&quot;javascript&quot;&gt;
+	 * 		&lt;JSPolicyAction id=&quot;consumerNodeTypeToProvider&quot; evalType=&quot;javascript&quot;&gt;
 	 * 			RESULT = multimap.consumer[(PARAM.toString())];
 	 * 		&lt;/JSPolicyAction&gt;
-	 * 		&lt;JSPolicyAction id=&quot;providerDSTypeToConsumer&quot; evalType=&quot;javascript&quot;&gt;
+	 * 		&lt;JSPolicyAction id=&quot;providerNodeTypeToConsumer&quot; evalType=&quot;javascript&quot;&gt;
 	 * 			RESULT = multimap.provider[String(PARAM.toString())];
 	 * 		&lt;/JSPolicyAction&gt;
 	 * </pre>
Index: /home/jimse/dev/higgins/org.eclipse.higgins.util.idas.cp/src/org/eclipse/higgins/util/idas/cp/jscript/JScriptCPMetadataPDPs.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.util.idas.cp/src/org/eclipse/higgins/util/idas/cp/jscript/JScriptCPMetadataPDPs.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.util.idas.cp/src/org/eclipse/higgins/util/idas/cp/jscript/JScriptCPMetadataPDPs.java	(working copy)
@@ -243,7 +243,7 @@
 	 * defined using the id {@link #providerTypeToConsumer}
 	 * <p>
 	 * 
-	 * A simple nonsensical sample where the provider Digital Subject Type mappings
+	 * A simple nonsensical sample where the provider Node Type mappings
 	 * are stored in a globally scoped metadata multimap, and are referenced
 	 * using JavaScript Associative Arrays.
 	 * 
@@ -249,10 +249,10 @@
 	 * 
 	 * <pre>
 	 *  
-	 * 		&lt;JSPolicyAction id=&quot;consumerDSTypeToProvider&quot; evalType=&quot;javascript&quot;&gt;
+	 * 		&lt;JSPolicyAction id=&quot;consumerNodeTypeToProvider&quot; evalType=&quot;javascript&quot;&gt;
 	 * 			RESULT = multimap.consumer[(PARAM.toString())];
 	 * 		&lt;/JSPolicyAction&gt;
-	 * 		&lt;JSPolicyAction id=&quot;providerDSTypeToConsumer&quot; evalType=&quot;javascript&quot;&gt;
+	 * 		&lt;JSPolicyAction id=&quot;providerNodeTypeToConsumer&quot; evalType=&quot;javascript&quot;&gt;
 	 * 			RESULT = multimap.provider[String(PARAM.toString())];
 	 * 		&lt;/JSPolicyAction&gt;
 	 * </pre>
Index: /home/jimse/dev/higgins/org.eclipse.higgins.sts.server.token.saml/src/org/eclipse/higgins/sts/server/token/saml/TokenGeneratorHandler.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.sts.server.token.saml/src/org/eclipse/higgins/sts/server/token/saml/TokenGeneratorHandler.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.sts.server.token.saml/src/org/eclipse/higgins/sts/server/token/saml/TokenGeneratorHandler.java	(working copy)
@@ -598,7 +598,7 @@
 				"wst",
 				constants.getRequestFailedFaultCode(),
 				"The specified request failed",
-				"Digital Subject was not found");
+				"Node was not found");
 			response.setFault(fault);
 			return;
 	   	}
@@ -648,7 +648,7 @@
 	  		}
 			if (null == strSubjectNameIdentifier)
 			{
-				this.log.error("Digital Subject does not contain Subject NameIdentifier Claim: " + uriSubjectNameIdentifier.toString());
+				this.log.error("Node does not contain Subject NameIdentifier Claim: " + uriSubjectNameIdentifier.toString());
 				final Fault fault = new Fault
 					(constants.getWSTrustNamespace(),
 					"wst",
@@ -654,7 +654,7 @@
 					"wst",
 					constants.getRequestFailedFaultCode(),
 					"The specified request failed",
-					"Digital Subject does not contain Subject NameIdentifier Claim: " + uriSubjectNameIdentifier.toString());
+					"Node does not contain Subject NameIdentifier Claim: " + uriSubjectNameIdentifier.toString());
 				response.setFault(fault);
 				return;	
 			}
Index: /home/jimse/dev/higgins/org.eclipse.higgins.sts.server.token.identity/src/org/eclipse/higgins/sts/server/token/identity/DigitalIdentityHandler.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.sts.server.token.identity/src/org/eclipse/higgins/sts/server/token/identity/DigitalIdentityHandler.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.sts.server.token.identity/src/org/eclipse/higgins/sts/server/token/identity/DigitalIdentityHandler.java	(working copy)
@@ -18,7 +18,7 @@
 
 import org.eclipse.higgins.idas.api.IAttribute;
 import org.eclipse.higgins.idas.api.IAttributeValue;
-import org.eclipse.higgins.idas.api.IDigitalSubject;
+import org.eclipse.higgins.idas.api.INode;
 import org.eclipse.higgins.idas.api.ISimpleAttrValue;
 import org.eclipse.higgins.idas.api.IdASException;
 import org.eclipse.higgins.sts.api.IConstants;
@@ -235,7 +235,7 @@
 
   		//java.util.Iterator iterClaims = digitalIdentity.getClaims();
 
-		IDigitalSubject digitalSubject = null;
+		INode node = null;
 		java.net.URI uriContextRef = null;
 	   	final org.eclipse.higgins.sts.api.IInformationCardReference informationCardReference = RST.getInformationCardReference();
 	   	if (null != informationCardReference)
@@ -447,12 +447,12 @@
 	   					(strCUID,
 	   					alIdentityClaims.iterator());	   
 	   				*/
-	   				digitalSubject = context.getSubject
+	   				node = context.getNode
 	   					(strCUID);		   				
 	   				this.log.trace("after IContext::getSubject");
-	   				_displaySubjectInfo(digitalSubject);
+	   				_displaySubjectInfo(node);
 	   				
-	   				if (null != digitalSubject)
+	   				if (null != node)
 	   				{
 	   					for (int i = 0; i < alIdentityClaims.size(); ++i)
 	   					{
@@ -464,7 +464,7 @@
 	   				  		claimType.setName(uriAttribute);
 	   				  		final org.eclipse.higgins.sts.api.IClaim claim = new org.eclipse.higgins.sts.common.Claim();
 	   				  		claim.setType(claimType);
-	   						final org.eclipse.higgins.idas.api.IAttribute attribute = digitalSubject.getAttribute(uriAttribute);
+	   						final org.eclipse.higgins.idas.api.IAttribute attribute = node.getAttribute(uriAttribute);
 	   						if (null != attribute)
 	   						{
 		   						final java.util.Iterator iterAttributeValues = attribute.getValues();
@@ -539,7 +539,7 @@
 			"wst",
 			constants.getRequestFailedFaultCode(),
 			"The specified request failed",
-			"Digital Subject was not found");
+			"Node was not found");
 		response.setFault(fault);
 	}
 	
@@ -544,11 +544,11 @@
 	}
 	
 	private void _displaySubjectInfo
-		(IDigitalSubject subject) throws IdASException
+		(INode subject) throws IdASException
 	{
 		Iterator attrIter = subject.getAttributes();
-		System.out.println(subject.getSubjectID());
-		System.out.println(subject.getSubjectType());
+		System.out.println(subject.getNodeID());
+		System.out.println(subject.getNodeType());
 
 		while (attrIter.hasNext())
 		{
Index: /home/jimse/dev/higgins/org.eclipse.higgins.sts.server.token.alf/src/org/eclipse/higgins/sts/server/token/alf/ALFClaimHandler.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.sts.server.token.alf/src/org/eclipse/higgins/sts/server/token/alf/ALFClaimHandler.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.sts.server.token.alf/src/org/eclipse/higgins/sts/server/token/alf/ALFClaimHandler.java	(working copy)
@@ -128,7 +128,7 @@
 				"wst",
 				constants.getRequestFailedFaultCode(),
 				"The specified request failed",
-				"Digital Subject was not found");
+				"Node was not found");
 			response.setFault(fault);
 			return;
 	   	}
Index: /home/jimse/dev/higgins/org.eclipse.higgins.saml2idp.server/src/org/eclipse/higgins/saml2idp/server/LDAPLogin.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.saml2idp.server/src/org/eclipse/higgins/saml2idp/server/LDAPLogin.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.saml2idp.server/src/org/eclipse/higgins/saml2idp/server/LDAPLogin.java	(working copy)
@@ -23,7 +23,7 @@
 import org.eclipse.higgins.idas.api.IContext;
 import org.eclipse.higgins.idas.api.IContextFactory;
 import org.eclipse.higgins.idas.api.IContextId;
-import org.eclipse.higgins.idas.api.IDigitalSubject;
+import org.eclipse.higgins.idas.api.INode;
 import org.eclipse.higgins.idas.api.IdASException;
 import org.eclipse.higgins.idas.common.AuthNNamePasswordMaterials;
 import org.eclipse.higgins.saml2idp.server.util.SAMLUtil;
@@ -95,10 +95,10 @@
 
 			higginsContext = higginsContextFactory.createContext(higginsContextId);
 			Object authnMaterials = new AuthNNamePasswordMaterials(higginsContext, username, password);
-			String subjectId = higginsContext.open(authnMaterials);
-			if (subjectId == null) throw new NullPointerException("subjectId is null");
-			IDigitalSubject digitalSubject = higginsContext.getSubject(subjectId);
-			if (digitalSubject == null) throw new NullPointerException("digitalSubject is null");
+			String nodeId = higginsContext.open(authnMaterials);
+			if (nodeId == null) throw new NullPointerException("nodeId is null");
+			INode node = higginsContext.getNode(nodeId);
+			if (node == null) throw new NullPointerException("digitalSubject is null");
 		} catch (Exception ex) {
 
 			if (ex instanceof IdASException && ex.getCause() instanceof AuthenticationException) {
Index: /home/jimse/dev/higgins/org.eclipse.higgins.saml2idp.server/WebContent/conf/HigginsConfiguration.xml
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.saml2idp.server/WebContent/conf/HigginsConfiguration.xml	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.saml2idp.server/WebContent/conf/HigginsConfiguration.xml	(working copy)
@@ -50,7 +50,7 @@
 						</Setting>
 						<!-- Minimal mapping policy to convert LDAP-style attribute and class names to URIs -->
 						<Setting Name="JSPolicyAction" Type="htf:map">
-							<Setting Name="consumerSubjectIDToProvider" Type="htf:jscriptexec">
+							<Setting Name="consumerNodeIDToProvider" Type="htf:jscriptexec">
 								<![CDATA[
 									RESULT = "cn=" + consumerID + ",o=bandit";
 								]]>
@@ -66,7 +66,7 @@
 									RESULT = "http://www.eclipse.org/higgins/ontologies/deployment/idas/basic/ldap#attr_"; + providerID.toString();
 								]]>
 							</Setting>
-							<Setting Name="consumerDSTypeToProvider" Type="htf:jscriptexec">
+							<Setting Name="consumerNodeTypeToProvider" Type="htf:jscriptexec">
 								<![CDATA[
 									var re = new RegExp("^http://www.eclipse.org/higgins/ontologies/deployment/idas/basic/ldap#class_";, "i");
 									RESULT = String(consumerType.toString()).replace(re, "");
@@ -72,7 +72,7 @@
 									RESULT = String(consumerType.toString()).replace(re, "");
 								]]>
 							</Setting>
-							<Setting Name="providerDSTypeToConsumer" Type="htf:jscriptexec">
+							<Setting Name="providerNodeTypeToConsumer" Type="htf:jscriptexec">
 								<![CDATA[
 									RESULT = "http://www.eclipse.org/higgins/ontologies/deployment/idas/basic/ldap#class_"; + String(providerType.toString());
 								]]>
Index: /home/jimse/dev/higgins/org.eclipse.higgins.rpps/src/org/eclipse/higgins/rpps/core/impl/RppsService.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.rpps/src/org/eclipse/higgins/rpps/core/impl/RppsService.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.rpps/src/org/eclipse/higgins/rpps/core/impl/RppsService.java	(working copy)
@@ -206,7 +206,7 @@
 	}
 
 	/**
-	 * Locate the URIICard-type I-Card whose URI matches 'cref'. If no such card exists, create it. Find the Digital Subject whose unique identifier is 'cuid'. On the uniqueIdentifier attribute value itself: (1) if 'success' is true, add/update to "now" the the lastVerifiedFromSource metadata property's timestamp and (2) add/update the lastVerifiedAttempt metadata property's timestamp to "now".
+	 * Locate the URIICard-type I-Card whose URI matches 'cref'. If no such card exists, create it. Find the Node whose unique identifier is 'cuid'. On the uniqueIdentifier attribute value itself: (1) if 'success' is true, add/update to "now" the the lastVerifiedFromSource metadata property's timestamp and (2) add/update the lastVerifiedAttempt metadata property's timestamp to "now".
 	 * 
 	 * @param userId the id to identify the user.
 	 * @param password the password to identify the user.
Index: /home/jimse/dev/higgins/org.eclipse.higgins.rpps/src/org/eclipse/higgins/rpps/core/IRppsService.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.rpps/src/org/eclipse/higgins/rpps/core/IRppsService.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.rpps/src/org/eclipse/higgins/rpps/core/IRppsService.java	(working copy)
@@ -61,7 +61,7 @@
 	public String acquireICard(String userId, String password, String subscribeURL) throws MalformedURLException;
 
 	/**
-	 * Locate the URIICard-type I-Card whose URI matches 'cref'. If no such card exists, create it. Find the Digital Subject whose unique identifier is 'cuid'. On the uniqueIdentifier attribute value itself: (1) if 'success' is true, add/update to "now" the the lastVerifiedFromSource metadata property's timestamp and (2) add/update the lastVerifiedAttempt metadata property's timestamp to "now".
+	 * Locate the URIICard-type I-Card whose URI matches 'cref'. If no such card exists, create it. Find the Node whose unique identifier is 'cuid'. On the uniqueIdentifier attribute value itself: (1) if 'success' is true, add/update to "now" the the lastVerifiedFromSource metadata property's timestamp and (2) add/update the lastVerifiedAttempt metadata property's timestamp to "now".
 	 * 
 	 * @param userId the id to identify the user.
 	 * @param password the password to identify the user.
Index: /home/jimse/dev/higgins/org.eclipse.higgins.iss.cardspace/src/org/eclipse/higgins/iss/cardspace/util/VirtualPersonalCard.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.iss.cardspace/src/org/eclipse/higgins/iss/cardspace/util/VirtualPersonalCard.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.iss.cardspace/src/org/eclipse/higgins/iss/cardspace/util/VirtualPersonalCard.java	(working copy)
@@ -71,7 +71,7 @@
 		return null;
 	}
 
-	public String getClaimListSubjectID() {
+	public String getClaimListNodeID() {
 		// TODO Auto-generated method stub
 		return null;
 	}
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.spi/src/org/eclipse/higgins/idas/spi/BasicContext.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.spi/src/org/eclipse/higgins/idas/spi/BasicContext.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.spi/src/org/eclipse/higgins/idas/spi/BasicContext.java	(working copy)
@@ -23,21 +23,21 @@
 import org.eclipse.higgins.idas.api.IAuthNAttributesMaterials;
 import org.eclipse.higgins.idas.api.IComplexAttrValue;
 import org.eclipse.higgins.idas.api.IContext;
-import org.eclipse.higgins.idas.api.IDigitalSubject;
+import org.eclipse.higgins.idas.api.INode;
 import org.eclipse.higgins.idas.api.IFilter;
 import org.eclipse.higgins.idas.api.IFilterAttributeAssertion;
-import org.eclipse.higgins.idas.api.IFilterSubjectIDAssertion;
+import org.eclipse.higgins.idas.api.IFilterNodeIDAssertion;
 import org.eclipse.higgins.idas.api.IFilterMetadataAssertion;
-import org.eclipse.higgins.idas.api.IFilterSubjectTypeAssertion;
+import org.eclipse.higgins.idas.api.IFilterNodeTypeAssertion;
 import org.eclipse.higgins.idas.api.IMetadata;
-import org.eclipse.higgins.idas.api.IContextRelationship;
+import org.eclipse.higgins.idas.api.IContextRelation;
 import org.eclipse.higgins.idas.api.ISimpleAttrValue;
 import org.eclipse.higgins.idas.api.ITypedValue;
 import org.eclipse.higgins.idas.api.IdASException;
-import org.eclipse.higgins.idas.api.InvalidSubjectIDException;
+import org.eclipse.higgins.idas.api.InvalidNodeIDException;
 import org.eclipse.higgins.idas.api.InvalidTypeException;
 import org.eclipse.higgins.idas.api.NotImplementedException;
-import org.eclipse.higgins.idas.api.SubjectExistsException;
+import org.eclipse.higgins.idas.api.NodeExistsException;
 import org.eclipse.higgins.idas.api.model.IContextModel;
 
 /**
@@ -50,7 +50,7 @@
  * will still compile.  
  *
  */
-public class BasicContext extends BasicMetadataSet implements IContext, ISubjectContainer
+public class BasicContext extends BasicMetadataSet implements IContext, INodeContainer
 {
 	private Logger _log = Logger.getLogger(BasicContext.class.getName());
 	private static Hashtable _typeToBasicMap = new Hashtable();
@@ -55,7 +55,7 @@
 	private Logger _log = Logger.getLogger(BasicContext.class.getName());
 	private static Hashtable _typeToBasicMap = new Hashtable();
 	/**
-	 * This is a hashtable where the keys are subjectIDs and the values are vectors of SubjectNotifications
+	 * This is a hashtable where the keys are nodeIDs and the values are vectors of NodeNotifications
 	 */
 	private Hashtable _updateTable = new Hashtable();
 
@@ -104,9 +104,9 @@
 	}
 
 	/* (non-Javadoc)
-	 * @see org.eclipse.higgins.idas.api.IContext#getSubject(java.lang.String)
+	 * @see org.eclipse.higgins.idas.api.IContext#getNode(java.lang.String)
 	 */
-	public IDigitalSubject getSubject(String subjectID) throws IdASException {
+	public INode getNode(String nodeID) throws IdASException {
 		throw new NotImplementedException();
 	}
 
@@ -111,9 +111,9 @@
 	}
 
 	/* (non-Javadoc)
-	 * @see org.eclipse.higgins.idas.api.IContext#getSubject(java.lang.String, java.lang.Iterable)
+	 * @see org.eclipse.higgins.idas.api.IContext#getNode(java.lang.String, java.lang.Iterable)
 	 */
-	public IDigitalSubject getSubject(String subjectID,
+	public INode getNode(String nodeID,
 			Iterator attrSelectionList) throws IdASException {
 		throw new NotImplementedException();
 	}
@@ -119,9 +119,9 @@
 	}
 
 	/* (non-Javadoc)
-	 * @see org.eclipse.higgins.idas.api.IContext#getSubjects(org.eclipse.higgins.idas.api.IFilter)
+	 * @see org.eclipse.higgins.idas.api.IContext#getNodes(org.eclipse.higgins.idas.api.IFilter)
 	 */
-	public Iterator getSubjects(IFilter filter)
+	public Iterator getNodes(IFilter filter)
 			throws IdASException {
 		throw new NotImplementedException();
 	}
@@ -127,9 +127,9 @@
 	}
 
 	/* (non-Javadoc)
-	 * @see org.eclipse.higgins.idas.api.IContext#getSubjects(org.eclipse.higgins.idas.api.IFilter, java.lang.Iterable)
+	 * @see org.eclipse.higgins.idas.api.IContext#getNodes(org.eclipse.higgins.idas.api.IFilter, java.lang.Iterable)
 	 */
-	public Iterator getSubjects(IFilter filter,
+	public Iterator getNodes(IFilter filter,
 			Iterator attrs) throws IdASException {
 		throw new NotImplementedException();
 	}
@@ -165,9 +165,9 @@
 	}
 
 	/* (non-Javadoc)
-	 * @see org.eclipse.higgins.idas.api.IContext#verifySubjectAttributes(java.lang.String, java.lang.Iterable)
+	 * @see org.eclipse.higgins.idas.api.IContext#verifyNodeAttributes(java.lang.String, java.lang.Iterable)
 	 */
-	public boolean verifySubjectAttributes(String subjectID,
+	public boolean verifyNodeAttributes(String nodeID,
 			Iterator attributes) throws IdASException {
 		throw new NotImplementedException();
 	}
@@ -182,7 +182,7 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.higgins.idas.IHasRelationships#addRelationship(URI)
 	 */
-	public IContextRelationship addRelationship(URI relationshipType)
+	public IContextRelation addRelationship(URI relationshipType)
 			throws IdASException {
 		throw new NotImplementedException();
 	}
@@ -198,8 +198,8 @@
 		return new BasicFilterAttributeAssertion();
 	}
 
-	public IFilterSubjectIDAssertion buildSubjectIDAssertion() throws IdASException {
-		return new BasicFilterSubjectIDAssertion();
+	public IFilterNodeIDAssertion buildNodeIDAssertion() throws IdASException {
+		return new BasicFilterNodeIDAssertion();
 	}
 
 	public IFilter buildFilter() throws IdASException {
@@ -210,12 +210,12 @@
 		return new BasicFilterMetadataAssertion();
 	}
 
-	public IContextRelationship buildRelationship(URI type) throws IdASException {
+	public IContextRelation buildRelationship(URI type) throws IdASException {
 		throw new NotImplementedException();
 	}
 
-	public IFilterSubjectTypeAssertion buildSubjectTypeAssertion() throws IdASException {
-		return new BasicFilterSubjectTypeAssertion();
+	public IFilterNodeTypeAssertion buildNodeTypeAssertion() throws IdASException {
+		return new BasicFilterNodeTypeAssertion();
 	}
 
 	public ISimpleAttrValue buildSimpleAttrValue(URI type, Object data) throws IdASException {
@@ -304,7 +304,7 @@
 		_typeToBasicMap.put(ITypedValue.NCNAME_TYPE_URI, BasicValueNCName.class);
 	}
 
-	public IDigitalSubject addSubject(URI type, String subjectID) throws IdASException, InvalidTypeException, InvalidSubjectIDException, SubjectExistsException {
+	public INode addNode(URI type, String nodeID) throws IdASException, InvalidTypeException, InvalidNodeIDException, NodeExistsException {
 		throw new NotImplementedException();
 	}
 
@@ -316,7 +316,7 @@
 		throw new NotImplementedException();
 	}
 
-	public IDigitalSubject addSubject(IDigitalSubject copyFrom) throws IdASException, SubjectExistsException {
+	public INode addNode(INode copyFrom) throws IdASException, NodeExistsException {
 		throw new NotImplementedException();
 	}
 
@@ -340,15 +340,15 @@
 		return new BasicAttribute(attrID, (Iterator)null, null, this);
 	}
 
-	public void updateNotification(SubjectNotification subjectNotif) throws IdASException {
-		String subjectID = subjectNotif.getSubject().getSubjectID();
-		_log.debug("Received subject update notifcation - " + subjectID);
-		Vector updateNotifs = (Vector)_updateTable.get(subjectID);
+	public void updateNotification(NodeNotification nodeNotif) throws IdASException {
+		String nodeID = nodeNotif.getNode().getNodeID();
+		_log.debug("Received node update notifcation - " + nodeID);
+		Vector updateNotifs = (Vector)_updateTable.get(nodeID);
 		if (updateNotifs == null)
 			updateNotifs = new Vector();
-		updateNotifs.add(subjectNotif);
+		updateNotifs.add(nodeNotif);
 
-		_updateTable.put(subjectID, updateNotifs);
+		_updateTable.put(nodeID, updateNotifs);
 	}
 
 	protected Hashtable getUpdateList()
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.spi/src/org/eclipse/higgins/idas/spi/BasicDigitalSubject.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.spi/src/org/eclipse/higgins/idas/spi/BasicDigitalSubject.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.spi/src/org/eclipse/higgins/idas/spi/BasicDigitalSubject.java	(working copy)
@@ -1,248 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Novell, Inc..
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *   Duane Buss - Initial impl
- *******************************************************************************/
-package org.eclipse.higgins.idas.spi;
-
-import java.net.URI;
-import java.util.Iterator;
-
-import org.eclipse.higgins.idas.api.IAttribute;
-import org.eclipse.higgins.idas.api.IContext;
-import org.eclipse.higgins.idas.api.IDigitalSubject;
-import org.eclipse.higgins.idas.api.IHasAttributes;
-import org.eclipse.higgins.idas.api.IHasMetadata;
-import org.eclipse.higgins.idas.api.IMetadata;
-import org.eclipse.higgins.idas.api.ISingleValuedAttribute;
-import org.eclipse.higgins.idas.api.IdASException;
-import org.eclipse.higgins.idas.api.InvalidTypeException;
-import org.eclipse.higgins.idas.api.NotImplementedException;
-import org.eclipse.higgins.idas.api.NotSingleValuedAttributeException;
-import org.eclipse.higgins.idas.api.model.IDigitalSubjectModel;
-
-/**
- * Basic implementation of IDigitalSubject. The intent of this abstract class is
- * to be used by Context Provider writers as a superclass for IDigitalSubject
- * instances. The benefits of using this class are that you will pick up any
- * convenience methods as well as have the latest methods stubbed out such that
- * when new methods are added to IDigitalSubject and implemented here, the
- * subclass will still compile. <br>
- * The following methods are deliberatly not implemented in this abstract class
- * because they must be provided by the subclass :<br>
- * {@link  org.eclipse.higgins.idas.api.IDigitalSubject#remove() }<br>
- * {@link  IAttributeContainer#updateNotification(AttributeNotification)}<br>
- * {@link  IMetadataContainer#updateNotification(MetadataNotification)}<br>
- * 
- */
-public abstract class BasicDigitalSubject implements IDigitalSubject,
-	IAttributeContainer, IMetadataContainer
-{
-
-	private IContext _context;
-	private String _subjectId;
-	private URI _type;
-	private BasicAttributeSet _attrs;
-	private BasicMetadataSet _metadata;
-
-	/**
-	 * 
-	 * @param context
-	 * @throws IdASException
-	 */
-	public BasicDigitalSubject(
-		IContext context) throws IdASException
-	{
-		this(context, null, null, null, null);
-	}
-
-	/**
-	 * The prefered constructor
-	 * 
-	 * @param context
-	 * @param type
-	 * @param subjectId
-	 * @throws IdASException
-	 */
-	public BasicDigitalSubject(
-		IContext context,
-		URI type,
-		String subjectId) throws IdASException
-	{
-		this(context, type, subjectId, null, null);
-	}
-
-	/**
-	 * The prefered constructor
-	 * 
-	 * @param context
-	 * @param type
-	 * @param subjectId
-	 * @param attributes
-	 * @param metadata
-	 * @throws IdASException
-	 */
-	public BasicDigitalSubject(
-		IContext context,
-		URI type,
-		String subjectId,
-		Iterator attributes,
-		Iterator metadata) throws IdASException
-	{
-		_context = context;
-		_type = type;
-		_subjectId = subjectId;
-
-		_attrs = new BasicAttributeSet(attributes, this, _context);
-		_metadata = new BasicMetadataSet(metadata, this);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.higgins.idas.api.IDigitalSubject#getContext()
-	 */
-	public IContext getContext() throws IdASException
-	{
-		return _context;
-	}
-
-	/*
-	 * @see org.eclipse.higgins.idas.api.IDigitalSubject#getModel()
-	 */
-	public IDigitalSubjectModel getModel() throws IdASException
-	{
-		throw new NotImplementedException();
-	}
-
-	/*
-	 * @see org.eclipse.higgins.idas.api.IDigitalSubject#getType()
-	 */
-	public URI getSubjectType() throws IdASException
-	{
-		return _type;
-	}
-
-	/*
-	 * @see org.eclipse.higgins.idas.api.IDigitalSubject#getSubjectID()
-	 */
-	public String getSubjectID() throws IdASException
-	{
-		return _subjectId;
-	}
-
-	/*
-	 * @see org.eclipse.higgins.idas.api.IHasMetadata#addMetadata(org.eclipse.higgins.idas.api.IMetadata)
-	 */
-	public IMetadata addMetadata(
-		IMetadata copyFrom) throws IdASException
-	{
-		return _metadata.addMetadata(copyFrom);
-	}
-
-	/*
-	 * @see org.eclipse.higgins.idas.api.IHasMetadata#addMetadata(java.net.URI)
-	 */
-	public IMetadata addMetadata(
-		URI type) throws IdASException, InvalidTypeException
-	{
-		return _metadata.addMetadata(type);
-	}
-
-	/*
-	 * @see org.eclipse.higgins.idas.api.IHasMetadata#getMetadata(java.net.URI)
-	 */
-	public IMetadata getMetadata(
-		URI metadataID) throws IdASException
-	{
-		return _metadata.getMetadata(metadataID);
-	}
-
-	/*
-	 * @see org.eclipse.higgins.idas.api.IHasMetadata#getMetadataSet()
-	 */
-	public Iterator getMetadataSet() throws IdASException
-	{
-		return _metadata.getMetadataSet();
-	}
-
-	/*
-	 * @see org.eclipse.higgins.idas.api.IHasAttributes#addAttribute(org.eclipse.higgins.idas.api.IAttribute)
-	 */
-	public IAttribute addAttribute(
-		IAttribute copyFrom) throws IdASException
-	{
-		return _attrs.addAttribute(copyFrom);
-	}
-
-	/*
-	 * @see org.eclipse.higgins.idas.api.IHasAttributes#addAttribute(java.net.URI)
-	 */
-	public IAttribute addAttribute(
-		URI type) throws IdASException, InvalidTypeException
-	{
-		return _attrs.addAttribute(type);
-	}
-
-	/*
-	 * @see org.eclipse.higgins.idas.api.IHasAttributes#getAttribute(java.net.URI)
-	 */
-	public IAttribute getAttribute(
-		URI attrID) throws IdASException
-	{
-		return _attrs.getAttribute(attrID);
-	}
-	
-	/*
-	 * @see org.eclipse.higgins.idas.api.IHasAttributes#getSingleValuedAttribute(java.net.URI)
-	 */
-	public ISingleValuedAttribute getSingleValuedAttribute(URI attrID) throws IdASException, NotSingleValuedAttributeException {
-		return _attrs.getSingleValuedAttribute(attrID);
-	}	
-	
-
-	/*
-	 * @see org.eclipse.higgins.idas.api.IHasAttributes#getAttributes()
-	 */
-	public Iterator getAttributes() throws IdASException
-	{
-		return _attrs.getAttributes();
-	}
-
-	protected BasicAttributeSet getBasicAttributeSet()
-	{
-		return _attrs;
-	}
-
-	public void removeAttribute(URI attrID) throws IdASException {
-		_attrs.removeAttribute(attrID);
-	}
-
-	public void removeAttributeValue(URI attrID, Object value)
-	throws IdASException {
-		_attrs.removeAttributeValue(attrID, value);
-	}
-	
-	public void removeAttributeValue(IAttribute attr) throws IdASException {
-		_attrs.removeAttributeValue(attr);
-	}
-	
-	public boolean equals(IHasAttributes attributes) throws IdASException {
-		return _attrs.equals(attributes);
-	}
-
-	protected BasicMetadataSet getBasicMetadataSet()
-	{
-		return _metadata;
-	}
-
-	public boolean equals(IHasMetadata metadataSet) throws IdASException {
-		return _metadata.equals(metadataSet);
-	}
-	
-}
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.spi/src/org/eclipse/higgins/idas/spi/BasicFilterNodeIDAssertion.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.spi/src/org/eclipse/higgins/idas/spi/BasicFilterNodeIDAssertion.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.spi/src/org/eclipse/higgins/idas/spi/BasicFilterNodeIDAssertion.java	(working copy)
@@ -13,25 +13,25 @@
 
 import java.net.URI;
 
-import org.eclipse.higgins.idas.api.IFilterSubjectIDAssertion;
+import org.eclipse.higgins.idas.api.IFilterNodeIDAssertion;
 import org.eclipse.higgins.idas.api.IdASException;
 
-public class BasicFilterSubjectIDAssertion extends BasicFilterAssertion implements IFilterSubjectIDAssertion {
+public class BasicFilterNodeIDAssertion extends BasicFilterAssertion implements IFilterNodeIDAssertion {
 	private String _assertion;
 	
-	public BasicFilterSubjectIDAssertion() {
+	public BasicFilterNodeIDAssertion() {
 		super();
 	}
 	
-	public BasicFilterSubjectIDAssertion(URI id, String comparator) throws IdASException {
+	public BasicFilterNodeIDAssertion(URI id, String comparator) throws IdASException {
 		super(id, false, comparator);
 	}
 
-	public BasicFilterSubjectIDAssertion(URI id, boolean bIncludeSubtypes, String comparator) throws IdASException {
+	public BasicFilterNodeIDAssertion(URI id, boolean bIncludeSubtypes, String comparator) throws IdASException {
 		super(id, bIncludeSubtypes, comparator);
 	}
 
-	public BasicFilterSubjectIDAssertion(URI id, String comparator, String assertionValue) throws IdASException {
+	public BasicFilterNodeIDAssertion(URI id, String comparator, String assertionValue) throws IdASException {
 		super(id, comparator);
 		setAssertionValue(assertionValue);
 	}
@@ -36,7 +36,7 @@
 		setAssertionValue(assertionValue);
 	}
 
-	public BasicFilterSubjectIDAssertion(URI id, boolean bIncludeSubtypes, String comparator, String assertionValue) throws IdASException {
+	public BasicFilterNodeIDAssertion(URI id, boolean bIncludeSubtypes, String comparator, String assertionValue) throws IdASException {
 		super(id, bIncludeSubtypes, comparator);
 		setAssertionValue(assertionValue);
 	}
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.spi/src/org/eclipse/higgins/idas/spi/BasicFilterNodeTypeAssertion.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.spi/src/org/eclipse/higgins/idas/spi/BasicFilterNodeTypeAssertion.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.spi/src/org/eclipse/higgins/idas/spi/BasicFilterNodeTypeAssertion.java	(working copy)
@@ -13,25 +13,25 @@
 
 import java.net.URI;
 
-import org.eclipse.higgins.idas.api.IFilterSubjectTypeAssertion;
+import org.eclipse.higgins.idas.api.IFilterNodeTypeAssertion;
 import org.eclipse.higgins.idas.api.IdASException;
 
-public class BasicFilterSubjectTypeAssertion extends BasicFilterAssertion implements IFilterSubjectTypeAssertion {
+public class BasicFilterNodeTypeAssertion extends BasicFilterAssertion implements IFilterNodeTypeAssertion {
 	private URI _assertion;
 	
-	public BasicFilterSubjectTypeAssertion() {
+	public BasicFilterNodeTypeAssertion() {
 		super();
 	}
 
-	public BasicFilterSubjectTypeAssertion(URI id, String comparator) throws IdASException {
+	public BasicFilterNodeTypeAssertion(URI id, String comparator) throws IdASException {
 		super(id, false, comparator);
 	}
 
-	public BasicFilterSubjectTypeAssertion(URI id, boolean bIncludeSubtypes, String comparator) throws IdASException {
+	public BasicFilterNodeTypeAssertion(URI id, boolean bIncludeSubtypes, String comparator) throws IdASException {
 		super(id, bIncludeSubtypes, comparator);
 	}
 
-	public BasicFilterSubjectTypeAssertion(URI id, String comparator, URI assertionValue) throws IdASException {
+	public BasicFilterNodeTypeAssertion(URI id, String comparator, URI assertionValue) throws IdASException {
 		super(id, comparator);
 		setAssertionValue(assertionValue);
 	}
@@ -36,7 +36,7 @@
 		setAssertionValue(assertionValue);
 	}
 
-	public BasicFilterSubjectTypeAssertion(URI id, boolean bIncludeSubtypes, String comparator, URI assertionValue) throws IdASException {
+	public BasicFilterNodeTypeAssertion(URI id, boolean bIncludeSubtypes, String comparator, URI assertionValue) throws IdASException {
 		super(id, bIncludeSubtypes, comparator);
 		setAssertionValue(assertionValue);
 	}
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.spi/src/org/eclipse/higgins/idas/spi/BasicFilterSubjectIDAssertion.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.spi/src/org/eclipse/higgins/idas/spi/BasicFilterSubjectIDAssertion.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.spi/src/org/eclipse/higgins/idas/spi/BasicFilterSubjectIDAssertion.java	(working copy)
@@ -1,52 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 Novell, Inc..
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Jim Sermersheim - Initial cut
- *******************************************************************************/
-
-package org.eclipse.higgins.idas.spi;
-
-import java.net.URI;
-
-import org.eclipse.higgins.idas.api.IFilterSubjectIDAssertion;
-import org.eclipse.higgins.idas.api.IdASException;
-
-public class BasicFilterSubjectIDAssertion extends BasicFilterAssertion implements IFilterSubjectIDAssertion {
-	private String _assertion;
-	
-	public BasicFilterSubjectIDAssertion() {
-		super();
-	}
-	
-	public BasicFilterSubjectIDAssertion(URI id, String comparator) throws IdASException {
-		super(id, false, comparator);
-	}
-
-	public BasicFilterSubjectIDAssertion(URI id, boolean bIncludeSubtypes, String comparator) throws IdASException {
-		super(id, bIncludeSubtypes, comparator);
-	}
-
-	public BasicFilterSubjectIDAssertion(URI id, String comparator, String assertionValue) throws IdASException {
-		super(id, comparator);
-		setAssertionValue(assertionValue);
-	}
-
-	public BasicFilterSubjectIDAssertion(URI id, boolean bIncludeSubtypes, String comparator, String assertionValue) throws IdASException {
-		super(id, bIncludeSubtypes, comparator);
-		setAssertionValue(assertionValue);
-	}
-
-	public void setAssertionValue(String assertion) throws IdASException {
-		_assertion = assertion;
-	}
-
-	public String getAssertionValue() throws IdASException {
-		return _assertion;
-	}
-
-}
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.spi/src/org/eclipse/higgins/idas/spi/BasicFilterSubjectTypeAssertion.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.spi/src/org/eclipse/higgins/idas/spi/BasicFilterSubjectTypeAssertion.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.spi/src/org/eclipse/higgins/idas/spi/BasicFilterSubjectTypeAssertion.java	(working copy)
@@ -1,52 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 Novell, Inc..
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Jim Sermersheim - Initial cut
- *******************************************************************************/
-
-package org.eclipse.higgins.idas.spi;
-
-import java.net.URI;
-
-import org.eclipse.higgins.idas.api.IFilterSubjectTypeAssertion;
-import org.eclipse.higgins.idas.api.IdASException;
-
-public class BasicFilterSubjectTypeAssertion extends BasicFilterAssertion implements IFilterSubjectTypeAssertion {
-	private URI _assertion;
-	
-	public BasicFilterSubjectTypeAssertion() {
-		super();
-	}
-
-	public BasicFilterSubjectTypeAssertion(URI id, String comparator) throws IdASException {
-		super(id, false, comparator);
-	}
-
-	public BasicFilterSubjectTypeAssertion(URI id, boolean bIncludeSubtypes, String comparator) throws IdASException {
-		super(id, bIncludeSubtypes, comparator);
-	}
-
-	public BasicFilterSubjectTypeAssertion(URI id, String comparator, URI assertionValue) throws IdASException {
-		super(id, comparator);
-		setAssertionValue(assertionValue);
-	}
-
-	public BasicFilterSubjectTypeAssertion(URI id, boolean bIncludeSubtypes, String comparator, URI assertionValue) throws IdASException {
-		super(id, bIncludeSubtypes, comparator);
-		setAssertionValue(assertionValue);
-	}
-
-	public void setAssertionValue(URI assertion) throws IdASException {
-		_assertion = assertion;
-	}
-
-	public URI getAssertionValue() throws IdASException {
-		return _assertion;
-	}
-
-}
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.spi/src/org/eclipse/higgins/idas/spi/BasicNode.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.spi/src/org/eclipse/higgins/idas/spi/BasicNode.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.spi/src/org/eclipse/higgins/idas/spi/BasicNode.java	(working copy)
@@ -15,7 +15,7 @@
 
 import org.eclipse.higgins.idas.api.IAttribute;
 import org.eclipse.higgins.idas.api.IContext;
-import org.eclipse.higgins.idas.api.IDigitalSubject;
+import org.eclipse.higgins.idas.api.INode;
 import org.eclipse.higgins.idas.api.IHasAttributes;
 import org.eclipse.higgins.idas.api.IHasMetadata;
 import org.eclipse.higgins.idas.api.IMetadata;
@@ -24,18 +24,18 @@
 import org.eclipse.higgins.idas.api.InvalidTypeException;
 import org.eclipse.higgins.idas.api.NotImplementedException;
 import org.eclipse.higgins.idas.api.NotSingleValuedAttributeException;
-import org.eclipse.higgins.idas.api.model.IDigitalSubjectModel;
+import org.eclipse.higgins.idas.api.model.INodeModel;
 
 /**
- * Basic implementation of IDigitalSubject. The intent of this abstract class is
- * to be used by Context Provider writers as a superclass for IDigitalSubject
+ * Basic implementation of INode. The intent of this abstract class is
+ * to be used by Context Provider writers as a superclass for INode
  * instances. The benefits of using this class are that you will pick up any
  * convenience methods as well as have the latest methods stubbed out such that
- * when new methods are added to IDigitalSubject and implemented here, the
+ * when new methods are added to INode and implemented here, the
  * subclass will still compile. <br>
  * The following methods are deliberatly not implemented in this abstract class
  * because they must be provided by the subclass :<br>
- * {@link  org.eclipse.higgins.idas.api.IDigitalSubject#remove() }<br>
+ * {@link  org.eclipse.higgins.idas.api.INode#remove() }<br>
  * {@link  IAttributeContainer#updateNotification(AttributeNotification)}<br>
  * {@link  IMetadataContainer#updateNotification(MetadataNotification)}<br>
  * 
@@ -40,7 +40,7 @@
  * {@link  IMetadataContainer#updateNotification(MetadataNotification)}<br>
  * 
  */
-public abstract class BasicDigitalSubject implements IDigitalSubject,
+public abstract class BasicNode implements INode,
 	IAttributeContainer, IMetadataContainer
 {
 
@@ -45,7 +45,7 @@
 {
 
 	private IContext _context;
-	private String _subjectId;
+	private String _nodeId;
 	private URI _type;
 	private BasicAttributeSet _attrs;
 	private BasicMetadataSet _metadata;
@@ -55,7 +55,7 @@
 	 * @param context
 	 * @throws IdASException
 	 */
-	public BasicDigitalSubject(
+	public BasicNode(
 		IContext context) throws IdASException
 	{
 		this(context, null, null, null, null);
@@ -62,27 +62,27 @@
 	}
 
 	/**
-	 * The prefered constructor
+	 * The preferred constructor
 	 * 
 	 * @param context
 	 * @param type
-	 * @param subjectId
+	 * @param nodeId
 	 * @throws IdASException
 	 */
-	public BasicDigitalSubject(
+	public BasicNode(
 		IContext context,
 		URI type,
-		String subjectId) throws IdASException
+		String nodeId) throws IdASException
 	{
-		this(context, type, subjectId, null, null);
+		this(context, type, nodeId, null, null);
 	}
 
 	/**
-	 * The prefered constructor
+	 * The preferred constructor
 	 * 
 	 * @param context
 	 * @param type
-	 * @param subjectId
+	 * @param nodeId
 	 * @param attributes
 	 * @param metadata
 	 * @throws IdASException
@@ -87,10 +87,10 @@
 	 * @param metadata
 	 * @throws IdASException
 	 */
-	public BasicDigitalSubject(
+	public BasicNode(
 		IContext context,
 		URI type,
-		String subjectId,
+		String nodeId,
 		Iterator attributes,
 		Iterator metadata) throws IdASException
 	{
@@ -96,7 +96,7 @@
 	{
 		_context = context;
 		_type = type;
-		_subjectId = subjectId;
+		_nodeId = nodeId;
 
 		_attrs = new BasicAttributeSet(attributes, this, _context);
 		_metadata = new BasicMetadataSet(metadata, this);
@@ -105,7 +105,7 @@
 	/*
 	 * (non-Javadoc)
 	 * 
-	 * @see org.eclipse.higgins.idas.api.IDigitalSubject#getContext()
+	 * @see org.eclipse.higgins.idas.api.INode#getContext()
 	 */
 	public IContext getContext() throws IdASException
 	{
@@ -113,9 +113,9 @@
 	}
 
 	/*
-	 * @see org.eclipse.higgins.idas.api.IDigitalSubject#getModel()
+	 * @see org.eclipse.higgins.idas.api.INode#getModel()
 	 */
-	public IDigitalSubjectModel getModel() throws IdASException
+	public INodeModel getModel() throws IdASException
 	{
 		throw new NotImplementedException();
 	}
@@ -121,9 +121,9 @@
 	}
 
 	/*
-	 * @see org.eclipse.higgins.idas.api.IDigitalSubject#getType()
+	 * @see org.eclipse.higgins.idas.api.INode#getType()
 	 */
-	public URI getSubjectType() throws IdASException
+	public URI getNodeType() throws IdASException
 	{
 		return _type;
 	}
@@ -129,11 +129,11 @@
 	}
 
 	/*
-	 * @see org.eclipse.higgins.idas.api.IDigitalSubject#getSubjectID()
+	 * @see org.eclipse.higgins.idas.api.INode#getNodeID()
 	 */
-	public String getSubjectID() throws IdASException
+	public String getNodeID() throws IdASException
 	{
-		return _subjectId;
+		return _nodeId;
 	}
 
 	/*
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.spi/src/org/eclipse/higgins/idas/spi/BasicValueSubjectRelationship.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.spi/src/org/eclipse/higgins/idas/spi/BasicValueSubjectRelationship.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.spi/src/org/eclipse/higgins/idas/spi/BasicValueSubjectRelationship.java	(working copy)
@@ -1,71 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006-2007 Novell, Inc..
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Jim Sermersheim - Initial cut
- *******************************************************************************/
-package org.eclipse.higgins.idas.spi;
-
-import java.net.URI;
-import java.util.Iterator;
-
-import org.eclipse.higgins.idas.api.IAttribute;
-import org.eclipse.higgins.idas.api.IComplexAttrValue;
-import org.eclipse.higgins.idas.api.IDigitalSubject;
-import org.eclipse.higgins.idas.api.ITypedValue;
-import org.eclipse.higgins.idas.api.IAttributeValue;
-import org.eclipse.higgins.idas.api.IdASException;
-
-public class BasicValueSubjectRelationship extends AbstractComplexValue
-		implements IComplexAttrValue {
-
-	public static final URI CONTEXT_REF_TYPE_URI = URI.create(IAttributeValue.BASE_OWL_URI + "contextURI");
-	public static final URI SUBJECT_ID_TYPE_URI = URI.create(IAttributeValue.BASE_OWL_URI + "subjectID");
-	private URI _type = null;
-
-	public BasicValueSubjectRelationship(URI type, IAttributeValueContainer container) throws IdASException {
-		super();
-		_type = type;
-	}
-
-	/**
-	 * 
-	 * @param type
-	 * @param attrs Contains {@link IAttribute}s
-	 * @throws IdASException 
-	 */
-	public BasicValueSubjectRelationship(URI type, Iterator attrs, IAttributeValueContainer container) throws IdASException {
-		super(attrs, container);
-		_type = type;
-	}
-
-	/**
-	 * 
-	 * @param type Type of SubjectRelationship (typically sub-type of SubjectRelationship) 
-	 * @param contextID reference to the Context holding the referred-to {@link IDigitalSubject}
-	 * @param subjectID Contextually unique Identifier of the referred-to {@link IDigitalSubject}.
-	 */
-	public BasicValueSubjectRelationship(URI type, URI contextID, String subjectID, IAttributeValueContainer container) throws IdASException {
-		super();
-		IAttribute attr; 
-
-		attr = addAttribute(CONTEXT_REF_TYPE_URI);
-		attr.addSimpleValue(ITypedValue.ANYURI_TYPE_URI, contextID);
-
-		attr = addAttribute(SUBJECT_ID_TYPE_URI);
-		attr.addSimpleValue(ITypedValue.NORMALIZEDSTRING_TYPE_URI, subjectID); 
-		_type = type;
-	}
-
-	public URI getDataType() throws IdASException {
-		return _type;
-	}
-
-	public Object getData() throws IdASException {
-		return null;
-	}
-}
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.spi/src/org/eclipse/higgins/idas/spi/INodeContainer.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.spi/src/org/eclipse/higgins/idas/spi/INodeContainer.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.spi/src/org/eclipse/higgins/idas/spi/INodeContainer.java	(working copy)
@@ -14,12 +14,12 @@
 
 import org.eclipse.higgins.idas.api.IdASException;
 
-public interface ISubjectContainer
+public interface INodeContainer
 {
 	/**
 	 * 
-	 * @param subjectNotif
+	 * @param nodeNotif
 	 */
 	void updateNotification (
-		SubjectNotification subjectNotif) throws IdASException;
+		NodeNotification nodeNotif) throws IdASException;
 }
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.spi/src/org/eclipse/higgins/idas/spi/ISubjectContainer.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.spi/src/org/eclipse/higgins/idas/spi/ISubjectContainer.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.spi/src/org/eclipse/higgins/idas/spi/ISubjectContainer.java	(working copy)
@@ -1,25 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Novell, Inc..
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Jim Sermersheim
- *    Tom Doman
- *******************************************************************************/
-
-package org.eclipse.higgins.idas.spi;
-
-import org.eclipse.higgins.idas.api.IdASException;
-
-public interface ISubjectContainer
-{
-	/**
-	 * 
-	 * @param subjectNotif
-	 */
-	void updateNotification (
-		SubjectNotification subjectNotif) throws IdASException;
-}
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.spi/src/org/eclipse/higgins/idas/spi/NodeNotification.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.spi/src/org/eclipse/higgins/idas/spi/NodeNotification.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.spi/src/org/eclipse/higgins/idas/spi/NodeNotification.java	(working copy)
@@ -12,30 +12,30 @@
 
 package org.eclipse.higgins.idas.spi;
 
-import org.eclipse.higgins.idas.api.IDigitalSubject;
+import org.eclipse.higgins.idas.api.INode;
 
-public class SubjectNotification
+public class NodeNotification
 {
 	/**
-	 * This action is set when the {@link IDigitalSubject} returned by {@link #getSubject()} was added
+	 * This action is set when the {@link INode} returned by {@link #getNode()} was added
 	 */
-	public static final String UPDATE_ADD = "urn:eclipse.higgins.idas.spi.SubjectNotification.UPDATE_ADD";
+	public static final String UPDATE_ADD = "urn:eclipse.higgins.idas.spi.NodeNotification.UPDATE_ADD";
 	/**
-	 * This action is set when the {@link IDigitalSubject} returned by {@link #getSubject()} was removed
+	 * This action is set when the {@link INode} returned by {@link #getNode()} was removed
 	 */
-	public static final String UPDATE_REMOVE = "urn:eclipse.higgins.idas.spi.SubjectNotification.UPDATE_REMOVE";
+	public static final String UPDATE_REMOVE = "urn:eclipse.higgins.idas.spi.NodeNotification.UPDATE_REMOVE";
 	/**
 	 * This action is set when there is a {@link AttributeNotification} to be returned by {@link #getAttributeNotification()}
-	 * This signifies that an attribute on the subject was updated.
+	 * This signifies that an attribute on the node was updated.
 	 */
-	public static final String UPDATE_ATTR_NOTIFY = "urn:eclipse.higgins.idas.spi.SubjectNotification.UPDATE_ATTR_NOTIFY";
+	public static final String UPDATE_ATTR_NOTIFY = "urn:eclipse.higgins.idas.spi.NodeNotification.UPDATE_ATTR_NOTIFY";
 	/**
 	 * This action is set when there is a {@link MetadataNotification} to be returned by {@link #getMetadataNotification()}
-	 * This signifies that a metadata element on the subject was updated.
+	 * This signifies that a metadata element on the node was updated.
 	 */
-	public static final String UPDATE_METADATA_NOTIFY = "urn:eclipse.higgins.idas.spi.SubjectNotification.UPDATE_METADATA_NOTIFY";
+	public static final String UPDATE_METADATA_NOTIFY = "urn:eclipse.higgins.idas.spi.NodeNotification.UPDATE_METADATA_NOTIFY";
 
-	private IDigitalSubject _subject;
+	private INode _node;
 	private String _action;
 	private AttributeNotification _attrNotif;
 	private MetadataNotification _metadataNotif;
@@ -42,12 +42,12 @@
 
 	/**
 	 * 
-	 * @param subject
+	 * @param node
 	 * @param action
 	 * @param attrNotif
 	 */
-	public SubjectNotification(
-		IDigitalSubject subject,
+	public NodeNotification(
+		INode node,
 		String action,
 		AttributeNotification attrNotif,
 		MetadataNotification metadataNotif)
@@ -52,7 +52,7 @@
 		AttributeNotification attrNotif,
 		MetadataNotification metadataNotif)
 	{
-		_subject = subject;
+		_node = node;
 		_action = action;
 		_attrNotif = attrNotif;
 		_metadataNotif = metadataNotif;
@@ -60,11 +60,11 @@
 
 	/**
 	 * 
-	 * @return the IDigitalSubject being added or removed when the action is set to {@link #UPDATE_ADD} or {@link #UPDATE_REMOVE}
+	 * @return the INode being added or removed when the action is set to {@link #UPDATE_ADD} or {@link #UPDATE_REMOVE}
 	 */
-	public IDigitalSubject getSubject()
+	public INode getNode()
 	{
-		return _subject;
+		return _node;
 	}
 
 	/**
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.spi/src/org/eclipse/higgins/idas/spi/SubjectNotification.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.spi/src/org/eclipse/higgins/idas/spi/SubjectNotification.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.spi/src/org/eclipse/higgins/idas/spi/SubjectNotification.java	(working copy)
@@ -1,96 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Novell, Inc..
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Jim Sermersheim
- *    Tom Doman
- *******************************************************************************/
-
-package org.eclipse.higgins.idas.spi;
-
-import org.eclipse.higgins.idas.api.IDigitalSubject;
-
-public class SubjectNotification
-{
-	/**
-	 * This action is set when the {@link IDigitalSubject} returned by {@link #getSubject()} was added
-	 */
-	public static final String UPDATE_ADD = "urn:eclipse.higgins.idas.spi.SubjectNotification.UPDATE_ADD";
-	/**
-	 * This action is set when the {@link IDigitalSubject} returned by {@link #getSubject()} was removed
-	 */
-	public static final String UPDATE_REMOVE = "urn:eclipse.higgins.idas.spi.SubjectNotification.UPDATE_REMOVE";
-	/**
-	 * This action is set when there is a {@link AttributeNotification} to be returned by {@link #getAttributeNotification()}
-	 * This signifies that an attribute on the subject was updated.
-	 */
-	public static final String UPDATE_ATTR_NOTIFY = "urn:eclipse.higgins.idas.spi.SubjectNotification.UPDATE_ATTR_NOTIFY";
-	/**
-	 * This action is set when there is a {@link MetadataNotification} to be returned by {@link #getMetadataNotification()}
-	 * This signifies that a metadata element on the subject was updated.
-	 */
-	public static final String UPDATE_METADATA_NOTIFY = "urn:eclipse.higgins.idas.spi.SubjectNotification.UPDATE_METADATA_NOTIFY";
-
-	private IDigitalSubject _subject;
-	private String _action;
-	private AttributeNotification _attrNotif;
-	private MetadataNotification _metadataNotif;
-
-	/**
-	 * 
-	 * @param subject
-	 * @param action
-	 * @param attrNotif
-	 */
-	public SubjectNotification(
-		IDigitalSubject subject,
-		String action,
-		AttributeNotification attrNotif,
-		MetadataNotification metadataNotif)
-	{
-		_subject = subject;
-		_action = action;
-		_attrNotif = attrNotif;
-		_metadataNotif = metadataNotif;
-	}
-
-	/**
-	 * 
-	 * @return the IDigitalSubject being added or removed when the action is set to {@link #UPDATE_ADD} or {@link #UPDATE_REMOVE}
-	 */
-	public IDigitalSubject getSubject()
-	{
-		return _subject;
-	}
-
-	/**
-	 * 
-	 * @return one of: {@link #UPDATE_ADD}, {@link #UPDATE_REMOVE}, {@link #UPDATE_METADATA_NOTIFY}, {@link #UPDATE_ATTR_NOTIFY} 
-	 */
-	public String getAction()
-	{
-		return _action;
-	}	
-
-	/**
-	 * 
-	 * @return an AttributeNotification when the action is set to {@link #UPDATE_ATTR_NOTIFY}.
-	 */
-	public AttributeNotification getAttributeNotification()
-	{
-		return _attrNotif;
-	}
-
-	/**
-	 * 
-	 * @return an MetadataNotification when the action is set to {@link #UPDATE_METADATA_NOTIFY}.
-	 */
-	public MetadataNotification getMetadataNotification()
-	{
-		return _metadataNotif; 
-	}
-}
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.registry.test/.classpath
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.registry.test/.classpath	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.registry.test/.classpath	(working copy)
@@ -1,13 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
 	<classpathentry kind="src" path="src"/>
-	<classpathentry exported="true" kind="lib" path="lib/axiom-api-1.2.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/axiom-impl-1.2.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/openxri-client.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/openxri-syntax.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/xercesImpl.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/xml-apis.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/xmlsec-1.4.0.jar"/>
 	<classpathentry kind="lib" path="lib/testcontextfactory1.jar"/>
 	<classpathentry kind="lib" path="lib/testcontextfactory2.jar"/>
 	<classpathentry kind="lib" path="lib/testcontextfactory3.jar"/>
@@ -16,6 +9,5 @@
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/3.8.1"/>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="lib" path="lib/commons-logging-1.0.4.jar"/>
 	<classpathentry kind="output" path="bin"/>
 </classpath>
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.registry.test/META-INF/MANIFEST.MF
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.registry.test/META-INF/MANIFEST.MF	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.registry.test/META-INF/MANIFEST.MF	(working copy)
@@ -23,4 +23,5 @@
  org.eclipse.higgins.idas.common,
  org.eclipse.higgins.configuration.xrds,
  org.eclipse.higgins.idas.registry,
- org.eclipse.higgins.configuration.xml
+ org.eclipse.higgins.configuration.xml,
+ org.eclipse.higgins.dependencies.redistributable
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.registry.test/src/org/eclipse/higgins/idas/registry/test/TestContext.java.test
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.registry.test/src/org/eclipse/higgins/idas/registry/test/TestContext.java.test	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.registry.test/src/org/eclipse/higgins/idas/registry/test/TestContext.java.test	(working copy)
@@ -11,10 +11,10 @@
 import org.eclipse.higgins.idas.api.IContext;
 import org.eclipse.higgins.idas.api.IContextId;
 import org.eclipse.higgins.idas.api.IContextRelationship;
-import org.eclipse.higgins.idas.api.IDigitalSubject;
+import org.eclipse.higgins.idas.api.INode;
 import org.eclipse.higgins.idas.api.IFilter;
 import org.eclipse.higgins.idas.api.IFilterAttributeAssertion;
-import org.eclipse.higgins.idas.api.IFilterSubjectIDAssertion;
+import org.eclipse.higgins.idas.api.IFilterNodeIDAssertion;
 import org.eclipse.higgins.idas.api.IFilterMetadataAssertion;
 import org.eclipse.higgins.idas.api.IFilterTypeAssertion;
 import org.eclipse.higgins.idas.api.ISimpleAttrValue;
@@ -19,9 +19,9 @@
 import org.eclipse.higgins.idas.api.IFilterTypeAssertion;
 import org.eclipse.higgins.idas.api.ISimpleAttrValue;
 import org.eclipse.higgins.idas.api.IdASException;
-import org.eclipse.higgins.idas.api.InvalidSubjectIDException;
+import org.eclipse.higgins.idas.api.InvalidNodeIDException;
 import org.eclipse.higgins.idas.api.InvalidTypeException;
-import org.eclipse.higgins.idas.api.SubjectExistsException;
+import org.eclipse.higgins.idas.api.NodeExistsException;
 import org.eclipse.higgins.idas.api.model.IContextModel;
 import org.eclipse.higgins.idas.api.model.IModel;
 
@@ -56,9 +56,9 @@
 		return null;
 	}
 
-	public IDigitalSubject addSubject(URI type, String subjectID)
+	public INode addNode(URI type, String nodeID)
 			throws IdASException, InvalidTypeException,
-			InvalidSubjectIDException, SubjectExistsException {
+			InvalidNodeIDException, NodeExistsException {
 
 		return null;
 	}
@@ -63,8 +63,8 @@
 		return null;
 	}
 
-	public IDigitalSubject addSubject(IDigitalSubject copyFrom)
-			throws IdASException, SubjectExistsException {
+	public INode addNode(INode copyFrom)
+			throws IdASException, NodeExistsException {
 
 		return null;
 	}
@@ -90,7 +90,7 @@
 		return null;
 	}
 
-	public IFilterSubjectIDAssertion buildSubjectIDAssertion() throws IdASException {
+	public IFilterNodeIDAssertion buildNodeIDAssertion() throws IdASException {
 
 		return null;
 	}
@@ -163,7 +163,7 @@
 		return null;
 	}
 
-	public IDigitalSubject getSubject(String subjectID) throws IdASException {
+	public INode getNode(String nodeID) throws IdASException {
 
 		return null;
 	}
@@ -168,7 +168,7 @@
 		return null;
 	}
 
-	public IDigitalSubject getSubject(String subjectID, Iterator attrSelectionList)
+	public INode getNode(String nodeID, Iterator attrSelectionList)
 			throws IdASException {
 
 		return null;
@@ -174,7 +174,7 @@
 		return null;
 	}
 
-	public Iterator getSubjects(IFilter filter) throws IdASException {
+	public Iterator getNodes(IFilter filter) throws IdASException {
 
 		return null;
 	}
@@ -179,7 +179,7 @@
 		return null;
 	}
 
-	public Iterator getSubjects(IFilter filter, Iterator attrSelectionList)
+	public Iterator getNodes(IFilter filter, Iterator attrSelectionList)
 			throws IdASException {
 
 		return null;
@@ -205,7 +205,7 @@
 
 	}
 
-	public boolean verifySubjectAttributes(String subjectID, Iterator attributes)
+	public boolean verifyNodeAttributes(String nodeID, Iterator attributes)
 			throws IdASException {
 
 		return false;
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.xmlfile/src/org/eclipse/higgins/idas/cp/xmlfile/DigitalSubjectIterator.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.xmlfile/src/org/eclipse/higgins/idas/cp/xmlfile/DigitalSubjectIterator.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.xmlfile/src/org/eclipse/higgins/idas/cp/xmlfile/DigitalSubjectIterator.java	(working copy)
@@ -1,272 +0,0 @@
-/**
- * Copyright (c) 2007 Novell, Inc.
- * All Rights Reserved.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; version 2.1 of the license.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this library; if not, contact Novell, Inc.
- *
- * To contact Novell about this file by physical or electronic mail,
- * you may find current contact information at www.novell.com
- */
-
-/*
- * Copyright (c) 2007 Novell, Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *		Daniel Sanders
- */
-
-package org.eclipse.higgins.idas.cp.xmlfile;
-
-import org.eclipse.higgins.idas.api.IdASException;
-import org.eclipse.higgins.idas.api.IFilter;
-
-/**
- * 
- * @author dsanders@xxxxxxxxxx
- */
-
-public class DigitalSubjectIterator implements java.util.Iterator
-{
-	private NonsharedContext		_nonsharedContext;
-	private IFilter					_basicFilter;
-	private SharedDigitalSubject	_currDigitalSubject;
-	private int							_iCurrDigitalSubjectNum;
-	
-	DigitalSubjectIterator(
-		NonsharedContext	context,
-		IFilter				basicFilter)
-	{
-		_nonsharedContext = context;
-		_basicFilter = basicFilter;
-		_currDigitalSubject = null;
-		_iCurrDigitalSubjectNum = -1;
-	}
-	
-	private boolean _syncDigitalSubject(
-		boolean	bMustFindExact) throws IdASException
-	{
-		java.util.ArrayList	digitalSubjectList = _nonsharedContext.getSharedContext().getDigitalSubjectList();
-		java.util.Map			digitalSubjectMap = _nonsharedContext.getSharedContext().getDigitalSubjectMap();
-		String					szSubjectID = _currDigitalSubject.getSubjectID();
-		SharedDigitalSubject	sharedSubject;
-		
-		// See if we can find the subject ID.
-		
-		if ((sharedSubject = (SharedDigitalSubject)digitalSubjectMap.get( szSubjectID)) != null)
-		{
-			_currDigitalSubject = sharedSubject;
-			
-			// See if it happens to be the same one in the array list.
-			
-			if (_iCurrDigitalSubjectNum >= digitalSubjectList.size() ||
-				 _currDigitalSubject != (SharedDigitalSubject)digitalSubjectList.get( _iCurrDigitalSubjectNum))
-			{
-				
-				// Was not in the same place we left it, find it.
-				
-				for (_iCurrDigitalSubjectNum = 0; _iCurrDigitalSubjectNum < digitalSubjectList.size(); _iCurrDigitalSubjectNum++)
-				{
-					if (_currDigitalSubject == (SharedDigitalSubject)digitalSubjectList.get( _iCurrDigitalSubjectNum))
-					{
-						break;
-					}
-				}
-			}
-		}
-		else if (bMustFindExact)
-		{
-			return( false);
-		}
-		else
-		{
-			
-			// Could not find the digital subject by subject ID, assume it has been deleted and sync to the digital subject
-			// prior to that one in the list.
-
-			_iCurrDigitalSubjectNum--;
-			if (_iCurrDigitalSubjectNum >= 0 && _iCurrDigitalSubjectNum < digitalSubjectList.size())
-			{
-				_currDigitalSubject = (SharedDigitalSubject)digitalSubjectList.get( _iCurrDigitalSubjectNum);
-			}
-			else
-			{
-				return( false);
-			}
-		}
-		return( true);
-	}
-	
-	private int _getNextDigitalSubjectNum()
-	{
-		int						iNextDigitalSubjectNum;
-		java.util.ArrayList	digitalSubjectList;
-		
-		try
-		{
-			
-			// See if we switched contexts
-			
-			if (_nonsharedContext.sync( false))
-			{
-				if (_currDigitalSubject != null)
-				{
-					if (!_syncDigitalSubject( false))
-					{
-						return( -1);
-					}
-				}
-			}
-			
-			// If current attribute element is null, it means we have not yet positioned to an element
-			// for this iterator.  We will position to the first attribute element under the digital
-			// subject element in that case.
-			
-			if (_currDigitalSubject == null)
-			{
-				iNextDigitalSubjectNum = 0;
-			}
-			else
-			{
-				if (_currDigitalSubject.isDeleted())
-				{
-					if (!_syncDigitalSubject( false))
-					{
-						return( -1);
-					}
-				}
-				iNextDigitalSubjectNum = _iCurrDigitalSubjectNum + 1;
-			}
-			
-			// Need to continue until we find one that matches
-			
-			digitalSubjectList = _nonsharedContext.getSharedContext().getDigitalSubjectList();
-			while (iNextDigitalSubjectNum < digitalSubjectList.size())
-			{
-				if (_nonsharedContext.getSharedContext().testDigitalSubject( (SharedDigitalSubject)digitalSubjectList.get( iNextDigitalSubjectNum), _basicFilter))
-				{
-					return( iNextDigitalSubjectNum);
-				}
-				iNextDigitalSubjectNum++;
-			}
-		}
-		catch (IdASException e)
-		{
-		}
-		return( -1);
-	}
-	
-	public boolean hasNext()
-	{
-		int	iNextDigitalSubjectNum = -1;
-		
-		if (!_nonsharedContext.isOpen())
-		{
-			return( false);
-		}
-	
-		try
-		{
-			_nonsharedContext.lockSharedContext();
-			iNextDigitalSubjectNum = _getNextDigitalSubjectNum();
-		}
-		catch (IdASException e)
-		{
-			iNextDigitalSubjectNum = -1;
-		}
-		finally
-		{
-			_nonsharedContext.unlockSharedContext();
-		}
-		if (iNextDigitalSubjectNum == -1)
-		{
-			return( false);
-		}
-		return( true);
-	}
-	
-	public Object next()
-	{
-		int						iNextDigitalSubjectNum;
-		java.util.ArrayList	digitalSubjectList;
-		
-		if (!_nonsharedContext.isOpen())
-		{
-			throw new java.util.NoSuchElementException();
-		}
-	
-		try
-		{
-			_nonsharedContext.lockSharedContext();
-			if ((iNextDigitalSubjectNum = _getNextDigitalSubjectNum()) == -1)
-			{
-				_currDigitalSubject = null;
-				throw new java.util.NoSuchElementException();
-			}
-			digitalSubjectList = _nonsharedContext.getSharedContext().getDigitalSubjectList();
-			_currDigitalSubject = (SharedDigitalSubject)digitalSubjectList.get( iNextDigitalSubjectNum);
-			_iCurrDigitalSubjectNum = iNextDigitalSubjectNum;
-		}
-		catch (IdASException e)
-		{
-			throw new java.util.NoSuchElementException( "IdAS exception occurred: " + e.getMessage());
-		}
-		finally
-		{
-			_nonsharedContext.unlockSharedContext();
-		}
-		return( new NonsharedDigitalSubject( _nonsharedContext, _currDigitalSubject));
-	}
-	
-	public void remove()
-	{
-		boolean	bStartedTrans = false;
-		
-		if (!_nonsharedContext.isOpen())
-		{
-			throw new java.lang.IllegalStateException( "IdAS context is no longer open");
-		}
-		else if (_currDigitalSubject == null || _currDigitalSubject.isDeleted())
-		{
-			throw new java.lang.IllegalStateException();
-		}
-		
-		try
-		{
-			bStartedTrans = _nonsharedContext.beginTrans();
-			if (_nonsharedContext.sync( bStartedTrans))
-			{
-				if (!_syncDigitalSubject( true))
-				{
-					throw new java.util.NoSuchElementException();
-				}
-			}
-			_currDigitalSubject.remove();
-		}
-		catch (IdASException e)
-		{
-			throw new java.lang.IllegalStateException( "IdAS exception occurred: " + e.getMessage());
-		}
-		finally
-		{
-			if (!bStartedTrans)
-			{
-				_nonsharedContext.unlockSharedContext();
-			}
-		}
-	}
-}
-
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.xmlfile/src/org/eclipse/higgins/idas/cp/xmlfile/NodeIterator.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.xmlfile/src/org/eclipse/higgins/idas/cp/xmlfile/NodeIterator.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.xmlfile/src/org/eclipse/higgins/idas/cp/xmlfile/NodeIterator.java	(working copy)
@@ -39,14 +39,14 @@
  * @author dsanders@xxxxxxxxxx
  */
 
-public class DigitalSubjectIterator implements java.util.Iterator
+public class NodeIterator implements java.util.Iterator
 {
 	private NonsharedContext		_nonsharedContext;
 	private IFilter					_basicFilter;
-	private SharedDigitalSubject	_currDigitalSubject;
-	private int							_iCurrDigitalSubjectNum;
+	private SharedNode				_currNode;
+	private int					_iCurrNodeNum;
 	
-	DigitalSubjectIterator(
+	NodeIterator(
 		NonsharedContext	context,
 		IFilter				basicFilter)
 	{
@@ -52,28 +52,28 @@
 	{
 		_nonsharedContext = context;
 		_basicFilter = basicFilter;
-		_currDigitalSubject = null;
-		_iCurrDigitalSubjectNum = -1;
+		_currNode = null;
+		_iCurrNodeNum = -1;
 	}
 	
-	private boolean _syncDigitalSubject(
+	private boolean _syncNode(
 		boolean	bMustFindExact) throws IdASException
 	{
-		java.util.ArrayList	digitalSubjectList = _nonsharedContext.getSharedContext().getDigitalSubjectList();
-		java.util.Map			digitalSubjectMap = _nonsharedContext.getSharedContext().getDigitalSubjectMap();
-		String					szSubjectID = _currDigitalSubject.getSubjectID();
-		SharedDigitalSubject	sharedSubject;
+		java.util.ArrayList	nodeList = _nonsharedContext.getSharedContext().getNodeList();
+		java.util.Map			nodeMap = _nonsharedContext.getSharedContext().getNodeMap();
+		String					szNodeID = _currNode.getNodeID();
+		SharedNode	sharedNode;
 		
-		// See if we can find the subject ID.
+		// See if we can find the node ID.
 		
-		if ((sharedSubject = (SharedDigitalSubject)digitalSubjectMap.get( szSubjectID)) != null)
+		if ((sharedNode = (SharedNode)nodeMap.get( szNodeID)) != null)
 		{
-			_currDigitalSubject = sharedSubject;
+			_currNode = sharedNode;
 			
 			// See if it happens to be the same one in the array list.
 			
-			if (_iCurrDigitalSubjectNum >= digitalSubjectList.size() ||
-				 _currDigitalSubject != (SharedDigitalSubject)digitalSubjectList.get( _iCurrDigitalSubjectNum))
+			if (_iCurrNodeNum >= nodeList.size() ||
+				 _currNode != (SharedNode)nodeList.get( _iCurrNodeNum))
 			{
 				
 				// Was not in the same place we left it, find it.
@@ -78,9 +78,9 @@
 				
 				// Was not in the same place we left it, find it.
 				
-				for (_iCurrDigitalSubjectNum = 0; _iCurrDigitalSubjectNum < digitalSubjectList.size(); _iCurrDigitalSubjectNum++)
+				for (_iCurrNodeNum = 0; _iCurrNodeNum < nodeList.size(); _iCurrNodeNum++)
 				{
-					if (_currDigitalSubject == (SharedDigitalSubject)digitalSubjectList.get( _iCurrDigitalSubjectNum))
+					if (_currNode == (SharedNode)nodeList.get( _iCurrNodeNum))
 					{
 						break;
 					}
@@ -94,13 +94,13 @@
 		else
 		{
 			
-			// Could not find the digital subject by subject ID, assume it has been deleted and sync to the digital subject
+			// Could not find the Node by node ID, assume it has been deleted and sync to the Node
 			// prior to that one in the list.
 
-			_iCurrDigitalSubjectNum--;
-			if (_iCurrDigitalSubjectNum >= 0 && _iCurrDigitalSubjectNum < digitalSubjectList.size())
+			_iCurrNodeNum--;
+			if (_iCurrNodeNum >= 0 && _iCurrNodeNum < nodeList.size())
 			{
-				_currDigitalSubject = (SharedDigitalSubject)digitalSubjectList.get( _iCurrDigitalSubjectNum);
+				_currNode = (SharedNode)nodeList.get( _iCurrNodeNum);
 			}
 			else
 			{
@@ -110,10 +110,10 @@
 		return( true);
 	}
 	
-	private int _getNextDigitalSubjectNum()
+	private int _getNextNodeNum()
 	{
-		int						iNextDigitalSubjectNum;
-		java.util.ArrayList	digitalSubjectList;
+		int						iNextNodeNum;
+		java.util.ArrayList	nodeList;
 		
 		try
 		{
@@ -122,9 +122,9 @@
 			
 			if (_nonsharedContext.sync( false))
 			{
-				if (_currDigitalSubject != null)
+				if (_currNode != null)
 				{
-					if (!_syncDigitalSubject( false))
+					if (!_syncNode( false))
 					{
 						return( -1);
 					}
@@ -132,18 +132,18 @@
 			}
 			
 			// If current attribute element is null, it means we have not yet positioned to an element
-			// for this iterator.  We will position to the first attribute element under the digital
-			// subject element in that case.
+			// for this iterator.  We will position to the first attribute element under the node
+			// element in that case.
 			
-			if (_currDigitalSubject == null)
+			if (_currNode == null)
 			{
-				iNextDigitalSubjectNum = 0;
+				iNextNodeNum = 0;
 			}
 			else
 			{
-				if (_currDigitalSubject.isDeleted())
+				if (_currNode.isDeleted())
 				{
-					if (!_syncDigitalSubject( false))
+					if (!_syncNode( false))
 					{
 						return( -1);
 					}
@@ -148,7 +148,7 @@
 						return( -1);
 					}
 				}
-				iNextDigitalSubjectNum = _iCurrDigitalSubjectNum + 1;
+				iNextNodeNum = _iCurrNodeNum + 1;
 			}
 			
 			// Need to continue until we find one that matches
@@ -153,14 +153,14 @@
 			
 			// Need to continue until we find one that matches
 			
-			digitalSubjectList = _nonsharedContext.getSharedContext().getDigitalSubjectList();
-			while (iNextDigitalSubjectNum < digitalSubjectList.size())
+			nodeList = _nonsharedContext.getSharedContext().getNodeList();
+			while (iNextNodeNum < nodeList.size())
 			{
-				if (_nonsharedContext.getSharedContext().testDigitalSubject( (SharedDigitalSubject)digitalSubjectList.get( iNextDigitalSubjectNum), _basicFilter))
+				if (_nonsharedContext.getSharedContext().testNode( (SharedNode)nodeList.get( iNextNodeNum), _basicFilter))
 				{
-					return( iNextDigitalSubjectNum);
+					return( iNextNodeNum);
 				}
-				iNextDigitalSubjectNum++;
+				iNextNodeNum++;
 			}
 		}
 		catch (IdASException e)
@@ -171,7 +171,7 @@
 	
 	public boolean hasNext()
 	{
-		int	iNextDigitalSubjectNum = -1;
+		int	iNextNodeNum = -1;
 		
 		if (!_nonsharedContext.isOpen())
 		{
@@ -181,11 +181,11 @@
 		try
 		{
 			_nonsharedContext.lockSharedContext();
-			iNextDigitalSubjectNum = _getNextDigitalSubjectNum();
+			iNextNodeNum = _getNextNodeNum();
 		}
 		catch (IdASException e)
 		{
-			iNextDigitalSubjectNum = -1;
+			iNextNodeNum = -1;
 		}
 		finally
 		{
@@ -191,7 +191,7 @@
 		{
 			_nonsharedContext.unlockSharedContext();
 		}
-		if (iNextDigitalSubjectNum == -1)
+		if (iNextNodeNum == -1)
 		{
 			return( false);
 		}
@@ -200,8 +200,8 @@
 	
 	public Object next()
 	{
-		int						iNextDigitalSubjectNum;
-		java.util.ArrayList	digitalSubjectList;
+		int						iNextNodeNum;
+		java.util.ArrayList	nodeList;
 		
 		if (!_nonsharedContext.isOpen())
 		{
@@ -211,14 +211,14 @@
 		try
 		{
 			_nonsharedContext.lockSharedContext();
-			if ((iNextDigitalSubjectNum = _getNextDigitalSubjectNum()) == -1)
+			if ((iNextNodeNum = _getNextNodeNum()) == -1)
 			{
-				_currDigitalSubject = null;
+				_currNode = null;
 				throw new java.util.NoSuchElementException();
 			}
-			digitalSubjectList = _nonsharedContext.getSharedContext().getDigitalSubjectList();
-			_currDigitalSubject = (SharedDigitalSubject)digitalSubjectList.get( iNextDigitalSubjectNum);
-			_iCurrDigitalSubjectNum = iNextDigitalSubjectNum;
+			nodeList = _nonsharedContext.getSharedContext().getNodeList();
+			_currNode = (SharedNode)nodeList.get( iNextNodeNum);
+			_iCurrNodeNum = iNextNodeNum;
 		}
 		catch (IdASException e)
 		{
@@ -228,7 +228,7 @@
 		{
 			_nonsharedContext.unlockSharedContext();
 		}
-		return( new NonsharedDigitalSubject( _nonsharedContext, _currDigitalSubject));
+		return( new NonsharedNode( _nonsharedContext, _currNode));
 	}
 	
 	public void remove()
@@ -239,7 +239,7 @@
 		{
 			throw new java.lang.IllegalStateException( "IdAS context is no longer open");
 		}
-		else if (_currDigitalSubject == null || _currDigitalSubject.isDeleted())
+		else if (_currNode == null || _currNode.isDeleted())
 		{
 			throw new java.lang.IllegalStateException();
 		}
@@ -249,7 +249,7 @@
 			bStartedTrans = _nonsharedContext.beginTrans();
 			if (_nonsharedContext.sync( bStartedTrans))
 			{
-				if (!_syncDigitalSubject( true))
+				if (!_syncNode( true))
 				{
 					throw new java.util.NoSuchElementException();
 				}
@@ -254,7 +254,7 @@
 					throw new java.util.NoSuchElementException();
 				}
 			}
-			_currDigitalSubject.remove();
+			_currNode.remove();
 		}
 		catch (IdASException e)
 		{
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.xmlfile/src/org/eclipse/higgins/idas/cp/xmlfile/NonsharedContext.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.xmlfile/src/org/eclipse/higgins/idas/cp/xmlfile/NonsharedContext.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.xmlfile/src/org/eclipse/higgins/idas/cp/xmlfile/NonsharedContext.java	(working copy)
@@ -48,9 +48,9 @@
 import org.eclipse.higgins.idas.api.ContextNotOpenException;
 import org.eclipse.higgins.idas.api.ContextOpenException;
 import org.eclipse.higgins.idas.api.NotImplementedException;
-import org.eclipse.higgins.idas.api.SubjectExistsException;
+import org.eclipse.higgins.idas.api.NodeExistsException;
 
-import org.eclipse.higgins.idas.api.IDigitalSubject;
+import org.eclipse.higgins.idas.api.INode;
 import org.eclipse.higgins.idas.api.IFilter;
 import org.eclipse.higgins.idas.spi.BasicContext;
 
@@ -66,7 +66,7 @@
 	private Logger				_log = Logger.getLogger( NonsharedContext.class.getName());
 	private SharedContext	_readOnlyContext;
 	private SharedContext	_updateContext;
-	private String				_szSubjectID;
+	private String				_szNodeID;
 	private XDasSession		_xdasSession;
 	private Object				_identity = null;
 	private int					_iLockCount = 0;	
@@ -96,7 +96,7 @@
 		_bIsOpen = false;
 		_iLockCount = 0;
 		_identity = null;
-		_szSubjectID = null;
+		_szNodeID = null;
 		_xdasSession = null;
 		
 		_initXDASSession();
@@ -228,7 +228,7 @@
 		try
 		{
 			lockSharedContext();
-			_szSubjectID = _readOnlyContext.open( identity);
+			_szNodeID = _readOnlyContext.open( identity);
 			_bIsOpen = true;
 			if (identity instanceof AuthNAnonymousMaterials)
 			{
@@ -243,7 +243,7 @@
 		{
 			unlockSharedContext();
 		}
-		return( _szSubjectID);
+		return( _szNodeID);
 	}
 	
 	protected void finalize()
@@ -329,10 +329,10 @@
 	
 	/**
 	 */
-	public IDigitalSubject getSubject(
-		String	szSubjectID) throws IdASException
+	public INode getNode(
+		String	szNodeID) throws IdASException
 	{
-		return( getSubject( szSubjectID, null));
+		return( getNode( szNodeID, null));
 	}
 
 	/**
@@ -337,15 +337,15 @@
 
 	/**
 	 */
-	public IDigitalSubject getSubject(
-		String					szSubjectID,
+	public INode getNode(
+		String					szNodeID,
 		java.util.Iterator	consumerSelectionList) throws IdASException
 	{
-		SharedDigitalSubject	sharedSubject = null;
+		SharedNode	sharedNode = null;
 		
 		if (!_bIsOpen)
 		{
-			throw new ContextNotOpenException( "nonsharedContext:getSubject(subjectID,attrList): Context not open");
+			throw new ContextNotOpenException( "nonsharedContext:getNode(NodeID,attrList): Context not open");
 		}
 		
 		try
@@ -351,7 +351,7 @@
 		try
 		{
 			lockSharedContext();
-			sharedSubject = getSharedContext().getSubject( szSubjectID);
+			sharedNode = getSharedContext().getNode( szNodeID);
 		}
 		finally
 		{
@@ -358,7 +358,7 @@
 			unlockSharedContext();
 		}
 		
-		return( sharedSubject == null ? null : new NonsharedDigitalSubject( this, sharedSubject));
+		return( sharedNode == null ? null : new NonsharedNode( this, sharedNode));
 	}
 	
 	/**
@@ -363,10 +363,10 @@
 	
 	/**
 	 */
-	public java.util.Iterator getSubjects(
+	public java.util.Iterator getNodes(
 		IFilter	filter) throws IdASException
 	{
-		return( getSubjects( filter, null));
+		return( getNodes( filter, null));
 	}
 
 	/**
@@ -371,7 +371,7 @@
 
 	/**
 	 */
-	public java.util.Iterator getSubjects(
+	public java.util.Iterator getNodes(
 		IFilter					filter,
 		java.util.Iterator	consumerSelectionList) throws IdASException
 	{
@@ -377,7 +377,7 @@
 	{
 		if (!_bIsOpen)
 		{
-			throw new ContextNotOpenException( "nonsharedContext:getSubjects(filter,attrlist): Context not open");
+			throw new ContextNotOpenException( "nonsharedContext:getNodes(filter,attrlist): Context not open");
 		}
 
 		_emitXDASRecord(XDasEvents.XDAS_AE_QUERY_ACCOUNT, XDasOutcomes.XDAS_OUT_SUCCESS,
@@ -382,10 +382,10 @@
 
 		_emitXDASRecord(XDasEvents.XDAS_AE_QUERY_ACCOUNT, XDasOutcomes.XDAS_OUT_SUCCESS,
 			_identity.toString(), filter.toString(), null);
-		_log.debug("Searching for Digital Subjects matching filter: " + filter.toString()
+		_log.debug("Searching for Nodes matching filter: " + filter.toString()
 			+ " as: " + _identity.toString() + " in context: " + _szContextURIs);
 
-		return( new DigitalSubjectIterator( this, filter));			
+		return( new NodeIterator( this, filter));			
 	}
 
 	/**
@@ -390,8 +390,8 @@
 
 	/**
 	 */
-	public void removeSubject(
-		String	szSubjectID) throws IdASException
+	public void removeNode(
+		String	szNodeID) throws IdASException
 	{
 		boolean	bStartedTrans = false;
 		
@@ -397,7 +397,7 @@
 		
 		if (!_bIsOpen)
 		{
-			throw new ContextNotOpenException( "nonsharedContext:removeSubject(subjectID): Context not open");
+			throw new ContextNotOpenException( "nonsharedContext:removeNode(nodeID): Context not open");
 		}
 		
 		try
@@ -403,7 +403,7 @@
 		try
 		{
 			bStartedTrans = beginTrans();
-			_updateContext.removeSubject( szSubjectID);
+			_updateContext.removeNode( szNodeID);
 		}
 		finally
 		{
@@ -417,16 +417,16 @@
 	/**
 	 * 
 	 */
-	public IDigitalSubject addSubject(
+	public INode addNode(
 		java.net.URI	type,
-		String			szSubjectID) throws IdASException
+		String			szNodeID) throws IdASException
 	{
 		boolean					bStartedTrans = false;
-		SharedDigitalSubject	sharedSubject = null;
+		SharedNode	sharedNode = null;
 		
 		if (!_bIsOpen)
 		{
-			throw new ContextNotOpenException( "nonsharedContext:addSubject(type,subjectID): Context not open");
+			throw new ContextNotOpenException( "nonsharedContext:addNode(type,nodeID): Context not open");
 		}
 		
 		try
@@ -432,7 +432,7 @@
 		try
 		{
 			bStartedTrans = beginTrans();
-			sharedSubject = _updateContext.addSubject( type, szSubjectID);
+			sharedNode = _updateContext.addNode( type, szNodeID);
 		}
 		finally
 		{
@@ -441,7 +441,7 @@
 				unlockSharedContext();
 			}
 		}
-		return( sharedSubject == null ? null : new NonsharedDigitalSubject( this, sharedSubject));
+		return( sharedNode == null ? null : new NonsharedNode( this, sharedNode));
 	}
 	
 	/**
@@ -446,15 +446,15 @@
 	
 	/**
 	 */
-	public IDigitalSubject addSubject(
-		IDigitalSubject	copyFrom) throws IdASException, SubjectExistsException
+	public INode addNode(
+		INode	copyFrom) throws IdASException, NodeExistsException
 	{
 		boolean					bStartedTrans = false;
-		SharedDigitalSubject	sharedSubject = null;
+		SharedNode	sharedNode = null;
 		
 		if (!_bIsOpen)
 		{
-			throw new ContextNotOpenException( "nonsharedContext:addSubject(copyFrom): Context not open");
+			throw new ContextNotOpenException( "nonsharedContext:addNode(copyFrom): Context not open");
 		}
 		
 		try
@@ -460,7 +460,7 @@
 		try
 		{
 			bStartedTrans = beginTrans();
-			sharedSubject = _updateContext.addSubject( copyFrom);
+			sharedNode = _updateContext.addNode( copyFrom);
 		}
 		finally
 		{
@@ -469,7 +469,7 @@
 				unlockSharedContext();
 			}
 		}
-		return( sharedSubject == null ? null : new NonsharedDigitalSubject( this, sharedSubject));
+		return( sharedNode == null ? null : new NonsharedNode( this, sharedNode));
 	}
 
 	public void applyUpdates() throws IdASException
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.xmlfile/src/org/eclipse/higgins/idas/cp/xmlfile/NonsharedDigitalSubject.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.xmlfile/src/org/eclipse/higgins/idas/cp/xmlfile/NonsharedDigitalSubject.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.xmlfile/src/org/eclipse/higgins/idas/cp/xmlfile/NonsharedDigitalSubject.java	(working copy)
@@ -1,485 +0,0 @@
-/**
- * Copyright (c) 2007 Novell, Inc.
- * All Rights Reserved.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; version 2.1 of the license.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this library; if not, contact Novell, Inc.
- *
- * To contact Novell about this file by physical or electronic mail,
- * you may find current contact information at www.novell.com
- */
-
-/*
- * Copyright (c) 2007 Novell, Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *		Daniel Sanders
- */
-
-package org.eclipse.higgins.idas.cp.xmlfile;
-
-import org.apache.log4j.Logger;
-
-import org.eclipse.higgins.idas.api.IContext;
-import org.eclipse.higgins.idas.api.IAttribute;
-import org.eclipse.higgins.idas.api.ISingleValuedAttribute;
-import org.eclipse.higgins.idas.api.IMetadata;
-import org.eclipse.higgins.idas.api.IHasMetadata;
-import org.eclipse.higgins.idas.api.IHasAttributes;
-import org.eclipse.higgins.idas.api.IDigitalSubject;
-
-import org.eclipse.higgins.idas.api.IdASException;
-import org.eclipse.higgins.idas.api.ContextNotOpenException;
-import org.eclipse.higgins.idas.api.InvalidTypeException;
-import org.eclipse.higgins.idas.api.NotImplementedException;
-import org.eclipse.higgins.idas.api.NotSingleValuedAttributeException;
-import org.eclipse.higgins.idas.api.NoSuchSubjectException;
-
-import org.eclipse.higgins.idas.api.model.IDigitalSubjectModel;
-
-/**
- * 
- * @author dsanders@xxxxxxxxxx
- * 
- */
-
-public class NonsharedDigitalSubject implements IDigitalSubject, NonsharedAttrContainer
-{
-	private Logger						_log = Logger.getLogger( NonsharedDigitalSubject.class.getName());
-	private NonsharedContext		_nonsharedContext;
-	private SharedDigitalSubject	_sharedDigitalSubject;
-	private String						_szSubjectID;
-
-	NonsharedDigitalSubject(
-		NonsharedContext		nonsharedCtx,
-		SharedDigitalSubject	sharedDigitalSubject)
-	{
-		_nonsharedContext = nonsharedCtx;
-		_sharedDigitalSubject = sharedDigitalSubject;
-		_szSubjectID = _sharedDigitalSubject.getSubjectID();
-	}
-	
-	// nonsharedAttrContainer methods
-	
-	public NonsharedContext getNonSharedContext()
-	{
-		return( _nonsharedContext);
-	}
-	
-	public SharedAttrContainer getSharedContainer()
-	{
-		return( _sharedDigitalSubject);
-	}
-	
-	public java.util.ArrayList getAttrList()
-	{
-		return( _sharedDigitalSubject.getAttrList());
-	}
-	
-	public java.util.Map getAttrMap()
-	{
-		return( _sharedDigitalSubject.getAttrMap());
-	}
-	
-	public String getContainerType()
-	{
-		return( "digital subject");
-	}
-	
-	public String getContainerID()
-	{
-		return( _szSubjectID);
-	}
-	
-	public boolean sync(
-		boolean	bForceSync) throws IdASException
-	{
-		boolean	bSynced = false;
-	
-		if (_nonsharedContext.sync( bForceSync))
-		{
-			bForceSync = true;
-		}
-
-		if (bForceSync ||
-			_sharedDigitalSubject == null ||
-			_sharedDigitalSubject.isDeleted())
-		{
-			_sharedDigitalSubject = _nonsharedContext.getSharedContext().getSubject( _szSubjectID);
-			bSynced = true;
-		}
-		if (_sharedDigitalSubject == null)
-		{
-			String	szErrMsg = "Digital subject '" + _szSubjectID + "' no longer exists";
-			
-			_log.debug( szErrMsg);
-			throw new NoSuchSubjectException( szErrMsg);
-		}
-		return( bSynced);
-	}
-	
-	// Methods of the IDigitalSubject interface
-	
-	public IContext getContext() throws IdASException
-	{
-		return( _nonsharedContext);
-	}
-	
-	/**
-	 */
-	public String getSubjectID() throws IdASException
-	{
-		return( _szSubjectID);
-	}
-	
-	/**
-	 */
-	public java.net.URI getSubjectType() throws IdASException
-	{
-		java.net.URI	subjectType = null;
-		
-		if (!_nonsharedContext.isOpen())
-		{
-			throw new ContextNotOpenException( "nonsharedDigitalSubject:getType(): Context not open");
-		}
-		
-		try
-		{
-			_nonsharedContext.lockSharedContext();
-			sync( false);
-			subjectType = java.net.URI.create( _sharedDigitalSubject.getSubjectType());
-		}
-		finally
-		{
-			_nonsharedContext.unlockSharedContext();
-		}
-		
-		return( subjectType);
-	}
-	
-	/**
-	 */
-	public java.util.Iterator getAttributes() throws IdASException
-	{
-		java.util.Iterator	iter = null;
-		
-		if (!_nonsharedContext.isOpen())
-		{
-			throw new ContextNotOpenException( "nonsharedDigitalSubject:getAttributes(): Context not open");
-		}
-		
-		try
-		{
-			_nonsharedContext.lockSharedContext();
-			sync( false);
-			iter = new AttrIterator( this);
-		}
-		finally
-		{
-			_nonsharedContext.unlockSharedContext();
-		}
-		
-		return( iter);
-	}
-
-	/**
-	 */
-	public IAttribute getAttribute(
-		java.net.URI attrID) throws IdASException
-	{
-		SharedAttribute	sharedAttr = null;
-		
-		if (!_nonsharedContext.isOpen())
-		{
-			throw new ContextNotOpenException( "nonsharedDigitalSubject:getAttribute(attrID): Context not open");
-		}
-		
-		try
-		{
-			_nonsharedContext.lockSharedContext();
-			sync( false);
-			sharedAttr = _sharedDigitalSubject.getAttribute( attrID.toString());
-		}
-		finally
-		{
-			_nonsharedContext.unlockSharedContext();
-		}
-		return( sharedAttr == null ? null : new NonsharedAttribute( this, sharedAttr));
-	}
-
-	/**
-	 */
-	public IDigitalSubjectModel getModel() throws IdASException
-	{
-		throw new NotImplementedException( "Not Implemented: nonsharedDigitalSubject:getModel()");
-	}
-
-	/**
-	 */
-	public void remove() throws IdASException
-	{
-		boolean	bStartedTrans = false;
-		
-		if (!_nonsharedContext.isOpen())
-		{
-			throw new ContextNotOpenException( "nonsharedDigitalSubject:remove(): Context not open");
-		}
-		
-		try
-		{
-			bStartedTrans = _nonsharedContext.beginTrans();
-			sync( bStartedTrans);
-			_sharedDigitalSubject.remove();
-			_sharedDigitalSubject = null;
-		}
-		finally
-		{
-			if (!bStartedTrans)
-			{
-				_nonsharedContext.unlockSharedContext();
-			}
-		}
-	}
-
-	/**
-	 */
-	public ISingleValuedAttribute getSingleValuedAttribute(
-		java.net.URI	attrID) throws IdASException, NotSingleValuedAttributeException
-	{
-		SharedAttribute	sharedAttr = null;
-		
-		if (!_nonsharedContext.isOpen())
-		{
-			throw new ContextNotOpenException( "nonsharedDigitalSubject:getSingleValuedAttribute(): Context not open");
-		}
-		
-		try
-		{
-			_nonsharedContext.lockSharedContext();
-			sync( false);
-			sharedAttr = _sharedDigitalSubject.getSingleValuedAttribute( attrID.toString());
-		}
-		finally
-		{
-			_nonsharedContext.unlockSharedContext();
-		}
-		return( sharedAttr == null ? null : new NonsharedAttribute( this, sharedAttr));
-	}
-
-	/**
-	 */
-	public IAttribute addAttribute(
-		java.net.URI	attrID) throws IdASException, InvalidTypeException
-	{
-		boolean				bStartedTrans = false;
-		SharedAttribute	sharedAttr = null;
-		
-		if (!_nonsharedContext.isOpen())
-		{
-			throw new ContextNotOpenException( "nonsharedDigitalSubject:addAttribute(attrID): Context not open");
-		}
-		
-		try
-		{
-			bStartedTrans = _nonsharedContext.beginTrans();
-			sync( bStartedTrans);
-			sharedAttr = _sharedDigitalSubject.addAttribute( attrID.toString());
-		}
-		finally
-		{
-			if (!bStartedTrans)
-			{
-				_nonsharedContext.unlockSharedContext();
-			}
-		}
-		return( sharedAttr == null ? null : new NonsharedAttribute( this, sharedAttr));
-	}
-	
-	/**
-	 */
-	public IAttribute addAttribute(
-		IAttribute copyFrom) throws IdASException
-	{
-		boolean				bStartedTrans = false;
-		SharedAttribute	sharedAttr = null;
-		
-		if (!_nonsharedContext.isOpen())
-		{
-			throw new ContextNotOpenException( "nonsharedDigitalSubject:addAttribute(copyFrom): Context not open");
-		}
-		
-		try
-		{
-			bStartedTrans = _nonsharedContext.beginTrans();
-			sharedAttr = _sharedDigitalSubject.addAttribute( copyFrom);
-		}
-		finally
-		{
-			if (!bStartedTrans)
-			{
-				_nonsharedContext.unlockSharedContext();
-			}
-		}
-		return( sharedAttr == null ? null : new NonsharedAttribute( this, sharedAttr));
-	}
-
-	/**
-	 */
-	public void removeAttribute(
-		java.net.URI	attrID) throws IdASException
-	{
-		boolean	bStartedTrans = false;
-		
-		if (!_nonsharedContext.isOpen())
-		{
-			throw new ContextNotOpenException( "nonsharedDigitalSubject:removeAttribute(attrID): Context not open");
-		}
-		
-		try
-		{
-			bStartedTrans = _nonsharedContext.beginTrans();
-			sync( bStartedTrans);
-			_sharedDigitalSubject.removeAttribute( attrID.toString());
-		}
-		finally
-		{
-			if (!bStartedTrans)
-			{
-				_nonsharedContext.unlockSharedContext();
-			}
-		}
-	}
-
-	/**
-	 */
-	public void removeAttributeValue(
-		java.net.URI	attrID,
-		Object			value) throws IdASException
-	{
-		boolean	bStartedTrans = false;
-		
-		if (!_nonsharedContext.isOpen())
-		{
-			throw new ContextNotOpenException( "nonsharedDigitalSubject:removeAttributeValue(attrID,value): Context not open");
-		}
-		
-		try
-		{
-			bStartedTrans = _nonsharedContext.beginTrans();
-			sync( bStartedTrans);
-			_sharedDigitalSubject.removeAttributeValue( attrID.toString(), value);
-		}
-		finally
-		{
-			if (!bStartedTrans)
-			{
-				_nonsharedContext.unlockSharedContext();
-			}
-		}
-	}
-
-	/**
-	 */
-	public void removeAttributeValue(
-		IAttribute	attr) throws IdASException
-	{
-		boolean	bStartedTrans = false;
-		
-		if (!_nonsharedContext.isOpen())
-		{
-			throw new ContextNotOpenException( "nonsharedDigitalSubject:removeAttributeValue(IAttribute): Context not open");
-		}
-		
-		try
-		{
-			bStartedTrans = _nonsharedContext.beginTrans();
-			sync( bStartedTrans);
-			_sharedDigitalSubject.removeAttributeValue( attr);
-		}
-		finally
-		{
-			if (!bStartedTrans)
-			{
-				_nonsharedContext.unlockSharedContext();
-			}
-		}
-	}
-
-	/**
-	 */
-	public boolean equals(
-		IHasAttributes	attributes) throws IdASException
-	{
-		boolean	bEqual = true;
-		
-		if (!_nonsharedContext.isOpen())
-		{
-			throw new ContextNotOpenException( "nonsharedDigitalSubject:equals(IHasAttributes): Context not open");
-		}
-		
-		try
-		{
-			_nonsharedContext.lockSharedContext();
-			sync( false);
-			bEqual = _sharedDigitalSubject.equals( attributes);
-		}
-		finally
-		{
-			_nonsharedContext.unlockSharedContext();
-		}
-		return( bEqual);
-	}
-	
-	/**
-	 */
-	public java.util.Iterator getMetadataSet() throws IdASException
-	{
-		throw new NotImplementedException( "Not Implemented: nonsharedDigitalSubject:getMetadataSet()");
-	}
-
-	/**
-	 */
-	public IMetadata getMetadata(
-		java.net.URI	metadataID) throws IdASException
-	{
-		throw new NotImplementedException( "Not Implemented: nonsharedDigitalSubject:getMetadata(metadataID)");
-	}
-	
-	/**
-	 */
-	public IMetadata addMetadata(
-		java.net.URI	metadataID) throws IdASException, InvalidTypeException
-	{
-		throw new NotImplementedException( "Not Implemented: nonsharedDigitalSubject:addMetadata(metadataID)");
-	}
-
-	/**
-	 */
-	public IMetadata addMetadata(
-		IMetadata	copyFrom) throws IdASException
-	{
-		throw new NotImplementedException( "Not Implemented: nonsharedDigitalSubject:addMetadata(copyFrom)");
-	}
-	
-	/**
-	 */
-	public boolean equals(
-		IHasMetadata	metadataSet) throws IdASException
-	{
-		throw new NotImplementedException( "Not Implemented: nonsharedDigitalSubject:equals(metadataSet)");
-	}
-}
-
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.xmlfile/src/org/eclipse/higgins/idas/cp/xmlfile/NonsharedNode.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.xmlfile/src/org/eclipse/higgins/idas/cp/xmlfile/NonsharedNode.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.xmlfile/src/org/eclipse/higgins/idas/cp/xmlfile/NonsharedNode.java	(working copy)
@@ -39,7 +39,7 @@
 import org.eclipse.higgins.idas.api.IMetadata;
 import org.eclipse.higgins.idas.api.IHasMetadata;
 import org.eclipse.higgins.idas.api.IHasAttributes;
-import org.eclipse.higgins.idas.api.IDigitalSubject;
+import org.eclipse.higgins.idas.api.INode;
 
 import org.eclipse.higgins.idas.api.IdASException;
 import org.eclipse.higgins.idas.api.ContextNotOpenException;
@@ -46,9 +46,9 @@
 import org.eclipse.higgins.idas.api.InvalidTypeException;
 import org.eclipse.higgins.idas.api.NotImplementedException;
 import org.eclipse.higgins.idas.api.NotSingleValuedAttributeException;
-import org.eclipse.higgins.idas.api.NoSuchSubjectException;
+import org.eclipse.higgins.idas.api.NoSuchNodeException;
 
-import org.eclipse.higgins.idas.api.model.IDigitalSubjectModel;
+import org.eclipse.higgins.idas.api.model.INodeModel;
 
 /**
  * 
@@ -56,20 +56,20 @@
  * 
  */
 
-public class NonsharedDigitalSubject implements IDigitalSubject, NonsharedAttrContainer
+public class NonsharedNode implements INode, NonsharedAttrContainer
 {
-	private Logger						_log = Logger.getLogger( NonsharedDigitalSubject.class.getName());
+	private Logger						_log = Logger.getLogger( NonsharedNode.class.getName());
 	private NonsharedContext		_nonsharedContext;
-	private SharedDigitalSubject	_sharedDigitalSubject;
-	private String						_szSubjectID;
+	private SharedNode	_sharedNode;
+	private String						_szNodeID;
 
-	NonsharedDigitalSubject(
+	NonsharedNode(
 		NonsharedContext		nonsharedCtx,
-		SharedDigitalSubject	sharedDigitalSubject)
+		SharedNode	sharedNode)
 	{
 		_nonsharedContext = nonsharedCtx;
-		_sharedDigitalSubject = sharedDigitalSubject;
-		_szSubjectID = _sharedDigitalSubject.getSubjectID();
+		_sharedNode = sharedNode;
+		_szNodeID = _sharedNode.getNodeID();
 	}
 	
 	// nonsharedAttrContainer methods
@@ -81,7 +81,7 @@
 	
 	public SharedAttrContainer getSharedContainer()
 	{
-		return( _sharedDigitalSubject);
+		return( _sharedNode);
 	}
 	
 	public java.util.ArrayList getAttrList()
@@ -86,7 +86,7 @@
 	
 	public java.util.ArrayList getAttrList()
 	{
-		return( _sharedDigitalSubject.getAttrList());
+		return( _sharedNode.getAttrList());
 	}
 	
 	public java.util.Map getAttrMap()
@@ -91,7 +91,7 @@
 	
 	public java.util.Map getAttrMap()
 	{
-		return( _sharedDigitalSubject.getAttrMap());
+		return( _sharedNode.getAttrMap());
 	}
 	
 	public String getContainerType()
@@ -96,7 +96,7 @@
 	
 	public String getContainerType()
 	{
-		return( "digital subject");
+		return( "Node");
 	}
 	
 	public String getContainerID()
@@ -101,7 +101,7 @@
 	
 	public String getContainerID()
 	{
-		return( _szSubjectID);
+		return( _szNodeID);
 	}
 	
 	public boolean sync(
@@ -115,18 +115,18 @@
 		}
 
 		if (bForceSync ||
-			_sharedDigitalSubject == null ||
-			_sharedDigitalSubject.isDeleted())
+			_sharedNode == null ||
+			_sharedNode.isDeleted())
 		{
-			_sharedDigitalSubject = _nonsharedContext.getSharedContext().getSubject( _szSubjectID);
+			_sharedNode = _nonsharedContext.getSharedContext().getNode( _szNodeID);
 			bSynced = true;
 		}
-		if (_sharedDigitalSubject == null)
+		if (_sharedNode == null)
 		{
-			String	szErrMsg = "Digital subject '" + _szSubjectID + "' no longer exists";
+			String	szErrMsg = "Node '" + _szNodeID + "' no longer exists";
 			
 			_log.debug( szErrMsg);
-			throw new NoSuchSubjectException( szErrMsg);
+			throw new NoSuchNodeException( szErrMsg);
 		}
 		return( bSynced);
 	}
@@ -131,7 +131,7 @@
 		return( bSynced);
 	}
 	
-	// Methods of the IDigitalSubject interface
+	// Methods of the INode interface
 	
 	public IContext getContext() throws IdASException
 	{
@@ -140,9 +140,9 @@
 	
 	/**
 	 */
-	public String getSubjectID() throws IdASException
+	public String getNodeID() throws IdASException
 	{
-		return( _szSubjectID);
+		return( _szNodeID);
 	}
 	
 	/**
@@ -147,13 +147,13 @@
 	
 	/**
 	 */
-	public java.net.URI getSubjectType() throws IdASException
+	public java.net.URI getNodeType() throws IdASException
 	{
-		java.net.URI	subjectType = null;
+		java.net.URI	nodeType = null;
 		
 		if (!_nonsharedContext.isOpen())
 		{
-			throw new ContextNotOpenException( "nonsharedDigitalSubject:getType(): Context not open");
+			throw new ContextNotOpenException( "nonsharedNode:getNodeType(): Context not open");
 		}
 		
 		try
@@ -160,7 +160,7 @@
 		{
 			_nonsharedContext.lockSharedContext();
 			sync( false);
-			subjectType = java.net.URI.create( _sharedDigitalSubject.getSubjectType());
+			nodeType = java.net.URI.create( _sharedNode.getNodeType());
 		}
 		finally
 		{
@@ -167,7 +167,7 @@
 			_nonsharedContext.unlockSharedContext();
 		}
 		
-		return( subjectType);
+		return( nodeType);
 	}
 	
 	/**
@@ -178,7 +178,7 @@
 		
 		if (!_nonsharedContext.isOpen())
 		{
-			throw new ContextNotOpenException( "nonsharedDigitalSubject:getAttributes(): Context not open");
+			throw new ContextNotOpenException( "nonsharedNode:getAttributes(): Context not open");
 		}
 		
 		try
@@ -204,7 +204,7 @@
 		
 		if (!_nonsharedContext.isOpen())
 		{
-			throw new ContextNotOpenException( "nonsharedDigitalSubject:getAttribute(attrID): Context not open");
+			throw new ContextNotOpenException( "nonsharedNode:getAttribute(attrID): Context not open");
 		}
 		
 		try
@@ -211,7 +211,7 @@
 		{
 			_nonsharedContext.lockSharedContext();
 			sync( false);
-			sharedAttr = _sharedDigitalSubject.getAttribute( attrID.toString());
+			sharedAttr = _sharedNode.getAttribute( attrID.toString());
 		}
 		finally
 		{
@@ -222,9 +222,9 @@
 
 	/**
 	 */
-	public IDigitalSubjectModel getModel() throws IdASException
+	public INodeModel getModel() throws IdASException
 	{
-		throw new NotImplementedException( "Not Implemented: nonsharedDigitalSubject:getModel()");
+		throw new NotImplementedException( "Not Implemented: nonsharedNode:getModel()");
 	}
 
 	/**
@@ -235,7 +235,7 @@
 		
 		if (!_nonsharedContext.isOpen())
 		{
-			throw new ContextNotOpenException( "nonsharedDigitalSubject:remove(): Context not open");
+			throw new ContextNotOpenException( "nonsharedNode:remove(): Context not open");
 		}
 		
 		try
@@ -242,8 +242,8 @@
 		{
 			bStartedTrans = _nonsharedContext.beginTrans();
 			sync( bStartedTrans);
-			_sharedDigitalSubject.remove();
-			_sharedDigitalSubject = null;
+			_sharedNode.remove();
+			_sharedNode = null;
 		}
 		finally
 		{
@@ -263,7 +263,7 @@
 		
 		if (!_nonsharedContext.isOpen())
 		{
-			throw new ContextNotOpenException( "nonsharedDigitalSubject:getSingleValuedAttribute(): Context not open");
+			throw new ContextNotOpenException( "nonsharedNode:getSingleValuedAttribute(): Context not open");
 		}
 		
 		try
@@ -270,7 +270,7 @@
 		{
 			_nonsharedContext.lockSharedContext();
 			sync( false);
-			sharedAttr = _sharedDigitalSubject.getSingleValuedAttribute( attrID.toString());
+			sharedAttr = _sharedNode.getSingleValuedAttribute( attrID.toString());
 		}
 		finally
 		{
@@ -289,7 +289,7 @@
 		
 		if (!_nonsharedContext.isOpen())
 		{
-			throw new ContextNotOpenException( "nonsharedDigitalSubject:addAttribute(attrID): Context not open");
+			throw new ContextNotOpenException( "nonsharedNode:addAttribute(attrID): Context not open");
 		}
 		
 		try
@@ -296,7 +296,7 @@
 		{
 			bStartedTrans = _nonsharedContext.beginTrans();
 			sync( bStartedTrans);
-			sharedAttr = _sharedDigitalSubject.addAttribute( attrID.toString());
+			sharedAttr = _sharedNode.addAttribute( attrID.toString());
 		}
 		finally
 		{
@@ -318,7 +318,7 @@
 		
 		if (!_nonsharedContext.isOpen())
 		{
-			throw new ContextNotOpenException( "nonsharedDigitalSubject:addAttribute(copyFrom): Context not open");
+			throw new ContextNotOpenException( "nonsharedNode:addAttribute(copyFrom): Context not open");
 		}
 		
 		try
@@ -324,7 +324,7 @@
 		try
 		{
 			bStartedTrans = _nonsharedContext.beginTrans();
-			sharedAttr = _sharedDigitalSubject.addAttribute( copyFrom);
+			sharedAttr = _sharedNode.addAttribute( copyFrom);
 		}
 		finally
 		{
@@ -345,7 +345,7 @@
 		
 		if (!_nonsharedContext.isOpen())
 		{
-			throw new ContextNotOpenException( "nonsharedDigitalSubject:removeAttribute(attrID): Context not open");
+			throw new ContextNotOpenException( "nonsharedNode:removeAttribute(attrID): Context not open");
 		}
 		
 		try
@@ -352,7 +352,7 @@
 		{
 			bStartedTrans = _nonsharedContext.beginTrans();
 			sync( bStartedTrans);
-			_sharedDigitalSubject.removeAttribute( attrID.toString());
+			_sharedNode.removeAttribute( attrID.toString());
 		}
 		finally
 		{
@@ -373,7 +373,7 @@
 		
 		if (!_nonsharedContext.isOpen())
 		{
-			throw new ContextNotOpenException( "nonsharedDigitalSubject:removeAttributeValue(attrID,value): Context not open");
+			throw new ContextNotOpenException( "nonsharedNode:removeAttributeValue(attrID,value): Context not open");
 		}
 		
 		try
@@ -380,7 +380,7 @@
 		{
 			bStartedTrans = _nonsharedContext.beginTrans();
 			sync( bStartedTrans);
-			_sharedDigitalSubject.removeAttributeValue( attrID.toString(), value);
+			_sharedNode.removeAttributeValue( attrID.toString(), value);
 		}
 		finally
 		{
@@ -400,7 +400,7 @@
 		
 		if (!_nonsharedContext.isOpen())
 		{
-			throw new ContextNotOpenException( "nonsharedDigitalSubject:removeAttributeValue(IAttribute): Context not open");
+			throw new ContextNotOpenException( "nonsharedNode:removeAttributeValue(IAttribute): Context not open");
 		}
 		
 		try
@@ -407,7 +407,7 @@
 		{
 			bStartedTrans = _nonsharedContext.beginTrans();
 			sync( bStartedTrans);
-			_sharedDigitalSubject.removeAttributeValue( attr);
+			_sharedNode.removeAttributeValue( attr);
 		}
 		finally
 		{
@@ -427,7 +427,7 @@
 		
 		if (!_nonsharedContext.isOpen())
 		{
-			throw new ContextNotOpenException( "nonsharedDigitalSubject:equals(IHasAttributes): Context not open");
+			throw new ContextNotOpenException( "nonsharedNode:equals(IHasAttributes): Context not open");
 		}
 		
 		try
@@ -434,7 +434,7 @@
 		{
 			_nonsharedContext.lockSharedContext();
 			sync( false);
-			bEqual = _sharedDigitalSubject.equals( attributes);
+			bEqual = _sharedNode.equals( attributes);
 		}
 		finally
 		{
@@ -447,7 +447,7 @@
 	 */
 	public java.util.Iterator getMetadataSet() throws IdASException
 	{
-		throw new NotImplementedException( "Not Implemented: nonsharedDigitalSubject:getMetadataSet()");
+		throw new NotImplementedException( "Not Implemented: nonsharedNode:getMetadataSet()");
 	}
 
 	/**
@@ -455,7 +455,7 @@
 	public IMetadata getMetadata(
 		java.net.URI	metadataID) throws IdASException
 	{
-		throw new NotImplementedException( "Not Implemented: nonsharedDigitalSubject:getMetadata(metadataID)");
+		throw new NotImplementedException( "Not Implemented: nonsharedNode:getMetadata(metadataID)");
 	}
 	
 	/**
@@ -463,7 +463,7 @@
 	public IMetadata addMetadata(
 		java.net.URI	metadataID) throws IdASException, InvalidTypeException
 	{
-		throw new NotImplementedException( "Not Implemented: nonsharedDigitalSubject:addMetadata(metadataID)");
+		throw new NotImplementedException( "Not Implemented: nonsharedNode:addMetadata(metadataID)");
 	}
 
 	/**
@@ -471,7 +471,7 @@
 	public IMetadata addMetadata(
 		IMetadata	copyFrom) throws IdASException
 	{
-		throw new NotImplementedException( "Not Implemented: nonsharedDigitalSubject:addMetadata(copyFrom)");
+		throw new NotImplementedException( "Not Implemented: nonsharedNode:addMetadata(copyFrom)");
 	}
 	
 	/**
@@ -479,7 +479,7 @@
 	public boolean equals(
 		IHasMetadata	metadataSet) throws IdASException
 	{
-		throw new NotImplementedException( "Not Implemented: nonsharedDigitalSubject:equals(metadataSet)");
+		throw new NotImplementedException( "Not Implemented: nonsharedNode:equals(metadataSet)");
 	}
 }
 
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.xmlfile/src/org/eclipse/higgins/idas/cp/xmlfile/SharedContext.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.xmlfile/src/org/eclipse/higgins/idas/cp/xmlfile/SharedContext.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.xmlfile/src/org/eclipse/higgins/idas/cp/xmlfile/SharedContext.java	(working copy)
@@ -40,7 +40,7 @@
 import org.eclipse.higgins.idas.spi.BasicFilterAttributeAssertion;
 import org.eclipse.higgins.idas.spi.BasicValueBase64Binary;
 
-import org.eclipse.higgins.idas.api.IDigitalSubject;
+import org.eclipse.higgins.idas.api.INode;
 import org.eclipse.higgins.idas.api.IAttribute;
 import org.eclipse.higgins.idas.api.IAttributeValue;
 import org.eclipse.higgins.idas.api.ISimpleAttrValue;
@@ -49,9 +49,9 @@
 import org.eclipse.higgins.idas.api.IFilterAttributeAssertion;
 
 import org.eclipse.higgins.idas.api.IdASException;
-import org.eclipse.higgins.idas.api.NoSuchSubjectException;
+import org.eclipse.higgins.idas.api.NoSuchNodeException;
 import org.eclipse.higgins.idas.api.NotImplementedException;
-import org.eclipse.higgins.idas.api.SubjectExistsException;
+import org.eclipse.higgins.idas.api.NodeExistsException;
 import org.eclipse.higgins.idas.api.AuthenticationException;
 
 import org.eclipse.higgins.idas.common.AuthNNamePasswordMaterials;
@@ -66,7 +66,7 @@
 class SharedContext extends Thread
 {
 	public static final String		XML_CONTEXT_ELEMENT = "Context";
-	public static final String		XML_DIGITAL_SUBJECT_ELEMENT = "DigitalSubject";
+	public static final String		XML_NODE_ELEMENT = "Node";
 	public static final String		XML_ATTRIBUTE_ELEMENT = "Attribute";
 	public static final String		XML_ATTRIBUTE_VALUE_ELEMENT = "AttributeValue";
 	
@@ -71,7 +71,7 @@
 	public static final String		XML_ATTRIBUTE_VALUE_ELEMENT = "AttributeValue";
 	
 	public static final String		XML_ATTR_ID_ATTR = "AttrID";
-	public static final String		XML_SUBJECT_TYPE_ATTR = "SubjectType";
+	public static final String		XML_NODE_TYPE_ATTR = "NodeType";
 	public static final String		XML_DATA_TYPE_ATTR = "DataType";
 	
 	private Logger						_log = Logger.getLogger( SharedContext.class.getName());
@@ -77,8 +77,8 @@
 	private Logger						_log = Logger.getLogger( SharedContext.class.getName());
 	private int							_iOpenCount;
 	private long						_lLastCloseTime;
-	private java.util.HashMap		_digitalSubjectMap;
-	private java.util.ArrayList	_digitalSubjectList;
+	private java.util.HashMap		_nodeMap;
+	private java.util.ArrayList	_nodeList;
 	private String						_szFileName;
 	private long						_lLastModifiedTime;
 	private java.io.File				_file;
@@ -111,8 +111,8 @@
 			throw new IdASException( szErrMsg);
 		}
 		_initPresetAttrs();
-		_digitalSubjectMap = new java.util.HashMap();
-		_digitalSubjectList = new java.util.ArrayList();
+		_nodeMap = new java.util.HashMap();
+		_nodeList = new java.util.ArrayList();
 		
 		if (!_file.exists())
 		{
@@ -141,7 +141,7 @@
 	SharedContext(
 		SharedContext	copyContext) throws IdASException
 	{
-		java.util.ArrayList	copyDigitalSubjectList = copyContext.getDigitalSubjectList();
+		java.util.ArrayList	copyNodeList = copyContext.getNodeList();
 		
 		_bLocked = false;
 		_szFileName = copyContext.getFileName();
@@ -148,28 +148,28 @@
 		_file = new java.io.File( _szFileName);
 		_initPresetAttrs();		
 		_lLastModifiedTime = copyContext.getLastModifiedTime();
-		_digitalSubjectMap = new java.util.HashMap();
-		_digitalSubjectList = new java.util.ArrayList();
+		_nodeMap = new java.util.HashMap();
+		_nodeList = new java.util.ArrayList();
 		
-		for (int iLoop = 0; iLoop < copyDigitalSubjectList.size(); iLoop++)
+		for (int iLoop = 0; iLoop < copyNodeList.size(); iLoop++)
 		{
-			copyDigitalSubject( (SharedDigitalSubject)copyDigitalSubjectList.get( iLoop));
+			copyNode( (SharedNode)copyNodeList.get( iLoop));
 		}
 	}
 	
-	void copyDigitalSubject(
-		SharedDigitalSubject	copyDigitalSubject) throws IdASException
+	void copyNode(
+		SharedNode	copyNode) throws IdASException
 	{
-		SharedDigitalSubject		sharedSubject;
-		java.util.ArrayList		attrList = copyDigitalSubject.getAttrList();
-		String						szSubjectID = copyDigitalSubject.getSubjectID();
+		SharedNode		sharedNode;
+		java.util.ArrayList		attrList = copyNode.getAttrList();
+		String						szNodeID = copyNode.getNodeID();
 		
-		sharedSubject = new SharedDigitalSubject( this, copyDigitalSubject.getSubjectType(), szSubjectID);
-		_digitalSubjectMap.put( szSubjectID, sharedSubject);
-		_digitalSubjectList.add( sharedSubject);
+		sharedNode = new SharedNode( this, copyNode.getNodeType(), szNodeID);
+		_nodeMap.put( szNodeID, sharedNode);
+		_nodeList.add( sharedNode);
 		for (int iLoop = 0; iLoop < attrList.size(); iLoop++)
 		{
-			sharedSubject.copyAttr( (SharedAttribute)attrList.get( iLoop));
+			sharedNode.copyAttr( (SharedAttribute)attrList.get( iLoop));
 		}
 	}
 	
@@ -180,14 +180,14 @@
 		return( _szFileName);
 	}
 	
-	java.util.ArrayList getDigitalSubjectList()
+	java.util.ArrayList getNodeList()
 	{
-		return( _digitalSubjectList);
+		return( _nodeList);
 	}
 	
-	java.util.Map getDigitalSubjectMap()
+	java.util.Map getNodeMap()
 	{
-		return( _digitalSubjectMap);
+		return( _nodeMap);
 	}
 	
 	int getOpenCount()
@@ -232,7 +232,7 @@
 		org.w3c.dom.Document								doc;
 		org.w3c.dom.Element								rootElement;
 		org.w3c.dom.Element								attrElement;
-		org.w3c.dom.Element								subjectElement;
+		org.w3c.dom.Element								nodeElement;
 
 		try
 		{
@@ -525,7 +525,7 @@
 				
 				if (sharedAttr.findAttrValue( sharedAttrValue) != -1)
 				{
-					szErrMsg = "Value for attribute '" + szAttrID + "' defined multiple times on digital subject in file '" + _szFileName + "'";
+					szErrMsg = "Value for attribute '" + szAttrID + "' defined multiple times on Node in file '" + _szFileName + "'";
 					_log.debug( szErrMsg);
 					throw new IdASException( szErrMsg);
 				}
@@ -538,8 +538,8 @@
 	
 	/**
 	 */
-	private SharedDigitalSubject _parseDigitalSubject(
-		org.w3c.dom.Node		digitalSubjectNode,
+	private SharedNode _parseNode(
+		org.w3c.dom.Node		nodeDOMNode,
 		String					szUserNameAttr) throws IdASException
 	{
 		String						szErrMsg;
@@ -544,17 +544,17 @@
 	{
 		String						szErrMsg;
 		org.w3c.dom.Node			attrNode;
-		SharedDigitalSubject		sharedSubject;
+		SharedNode		sharedNode;
 		SharedAttribute			sharedAttr;
-		String						szSubjectID = null;
-		String						szSubjectType;
+		String						szNodeID = null;
+		String						szNodeType;
 		String						szAttrID;
 		
-		// Must have a type attribute on the subject
+		// Must have a type attribute on the node
 		
-		if ((szSubjectType = _getElementAttr( (org.w3c.dom.Element)digitalSubjectNode, XML_SUBJECT_TYPE_ATTR)) == null)
+		if ((szNodeType = _getElementAttr( (org.w3c.dom.Element)nodeDOMNode, XML_NODE_TYPE_ATTR)) == null)
 		{
-			szErrMsg = "Subject type XML attribute '" + XML_SUBJECT_TYPE_ATTR + "' missing on digital subject element file " + _szFileName + "'";
+			szErrMsg = "Node type XML attribute '" + XML_NODE_TYPE_ATTR + "' missing on XML element file " + _szFileName + "'";
 			_log.debug( szErrMsg);
 			throw new IdASException( szErrMsg);
 		}
@@ -559,9 +559,9 @@
 			throw new IdASException( szErrMsg);
 		}
 		
-		sharedSubject = new SharedDigitalSubject( this, szSubjectType, null);		
+		sharedNode = new SharedNode( this, szNodeType, null);		
 		
-		attrNode = digitalSubjectNode.getFirstChild();
+		attrNode = nodeDOMNode.getFirstChild();
 		while (attrNode != null)
 		{
 			if (_isElementNode( attrNode, XML_ATTRIBUTE_ELEMENT))
@@ -566,11 +566,11 @@
 		{
 			if (_isElementNode( attrNode, XML_ATTRIBUTE_ELEMENT))
 			{
-				sharedAttr = _parseAttribute( sharedSubject, attrNode);
-				sharedSubject.addAttr( sharedAttr);
+				sharedAttr = _parseAttribute( sharedNode, attrNode);
+				sharedNode.addAttr( sharedAttr);
 				szAttrID = sharedAttr.getAttrID();
 				
-				// If the attribute is the user name attribute, get its value as the subject ID
+				// If the attribute is the user name attribute, get its value as the node ID
 				
 				if (szAttrID.equals( _szUserNameAttr))
 				{
@@ -578,7 +578,7 @@
 					
 					if (sharedAttr.getAttrDataType() == null || valueList.size() == 0)
 					{
-						szErrMsg = "No value defined for subject ID attribute '" + szAttrID + "' on digital subject in file " + _szFileName + "'";
+						szErrMsg = "No value defined for node ID attribute '" + szAttrID + "' on Node in file " + _szFileName + "'";
 						_log.debug( szErrMsg);
 						throw new IdASException( szErrMsg);
 					}
@@ -584,7 +584,7 @@
 					}
 					if (!sharedAttr.isSimpleDataType())
 					{
-						szErrMsg = "Value for subject ID attribute '" + szAttrID + "' on digital subject in file " + _szFileName + "' is NOT a simple type";
+						szErrMsg = "Value for node ID attribute '" + szAttrID + "' on Node in file " + _szFileName + "' is NOT a simple type";
 						_log.debug( szErrMsg);
 						throw new IdASException( szErrMsg);
 					}
@@ -590,11 +590,11 @@
 					}
 					if (valueList.size() > 1)
 					{
-						szErrMsg = "Multiple value for subject ID attribute '" + szAttrID + "' on digital subject in file " + _szFileName + "'";
+						szErrMsg = "Multiple value for node ID attribute '" + szAttrID + "' on Node in file " + _szFileName + "'";
 						_log.debug( szErrMsg);
 						throw new IdASException( szErrMsg);
 					}
-					szSubjectID = ((SharedSimpleAttrValue)valueList.get( 0)).getCanonical();
+					szNodeID = ((SharedSimpleAttrValue)valueList.get( 0)).getCanonical();
 				}
 			}
 			attrNode = attrNode.getNextSibling();
@@ -600,16 +600,16 @@
 			attrNode = attrNode.getNextSibling();
 		}
 		
-		// Make sure we got a subject ID attribute
+		// Make sure we got a node ID attribute
 		
-		if (szSubjectID == null)
+		if (szNodeID == null)
 		{
-			szErrMsg = "No " + _szUserNameAttr + " defined for digital subject in file " + _szFileName + "'";
+			szErrMsg = "No " + _szUserNameAttr + " defined for Node in file " + _szFileName + "'";
 			_log.debug( szErrMsg);
 			throw new IdASException( szErrMsg);
 		}
-		sharedSubject.setSubjectID( szSubjectID);
-		return( sharedSubject);
+		sharedNode.setNodeID( szNodeID);
+		return( sharedNode);
 	}
 	
 	/**
@@ -623,10 +623,10 @@
 		org.w3c.dom.Document								doc;
 		org.w3c.dom.Element								root;
 		org.w3c.dom.Node									node;
-		java.util.HashMap									digitalSubjectMap = new java.util.HashMap();
-		java.util.ArrayList								digitalSubjectList = new java.util.ArrayList();
-		SharedDigitalSubject								sharedSubject;
-		String												szSubjectID;
+		java.util.HashMap									nodeMap = new java.util.HashMap();
+		java.util.ArrayList								nodeList = new java.util.ArrayList();
+		SharedNode								sharedNode;
+		String												szNodeID;
 		
 		// First, get the document into DOM format
 	
@@ -646,7 +646,7 @@
 			throw new IdASException( szErrMsg);
 		}
 		
-		// Now make a second pass to get the digital subjects
+		// Now make a second pass to get the Nodes
 		
 		node = root.getFirstChild();
 		while (node != null)
@@ -651,21 +651,21 @@
 		node = root.getFirstChild();
 		while (node != null)
 		{
-			if (_isElementNode( node, XML_DIGITAL_SUBJECT_ELEMENT))
+			if (_isElementNode( node, XML_NODE_ELEMENT))
 			{
-				sharedSubject = _parseDigitalSubject( node, _szUserNameAttr);
+				sharedNode = _parseNode( node, _szUserNameAttr);
 				
-				// See if the digital subject is already defined.
+				// See if the Node is already defined.
 				
-				szSubjectID = sharedSubject.getSubjectID();
-				if (digitalSubjectMap.get( szSubjectID) != null)
+				szNodeID = sharedNode.getNodeID();
+				if (nodeMap.get( szNodeID) != null)
 				{
-					szErrMsg = "Digital subject '" + szSubjectID + "' defined multiple times in file '" + _szFileName + "'";
+					szErrMsg = "Node '" + szNodeID + "' defined multiple times in file '" + _szFileName + "'";
 					_log.debug( szErrMsg);
 					throw new IdASException( szErrMsg);
 				}
-				digitalSubjectMap.put( szSubjectID, sharedSubject);
-				digitalSubjectList.add( sharedSubject);
+				nodeMap.put( szNodeID, sharedNode);
+				nodeList.add( sharedNode);
 			}
 			node = node.getNextSibling();
 		}
@@ -672,8 +672,8 @@
 		
 		// If we were successful, save things into the member variables.
 		
-		_digitalSubjectMap = digitalSubjectMap;
-		_digitalSubjectList = digitalSubjectList;
+		_nodeMap = nodeMap;
+		_nodeList = nodeList;
 		_lLastModifiedTime = _file.lastModified();
 	}
 	
@@ -679,8 +679,8 @@
 	
 	public void close()
 	{
-		_digitalSubjectMap = null;
-		_digitalSubjectList = null;
+		_nodeMap = null;
+		_nodeList = null;
 		_szFileName = null;
 		_file = null;
 		_szUserNameAttr = null;
@@ -1498,8 +1498,8 @@
 	
 	/**
 	 */
-	boolean testDigitalSubject(
-		SharedDigitalSubject	sharedSubject,
+	boolean testNode(
+		SharedNode	sharedNode,
 		IFilter					filter) throws IdASException
 	{
 		SharedAttribute					sharedAttr;
@@ -1520,7 +1520,7 @@
 		boolean								bAndOp;
 		boolean								bPassed;
 		
-		// A null filter means that all of the digital subjects should pass.
+		// A null filter means that all of the Nodes should pass.
 		
 		if (filter == null)
 		{
@@ -1537,7 +1537,7 @@
 			filterIter = ((BasicFilter)filter).getFilters();
 			while (filterIter.hasNext())
 			{
-				bPassed = testDigitalSubject( sharedSubject, (IFilter)filterIter.next());
+				bPassed = testNode( sharedNode, (IFilter)filterIter.next());
 				if (!bPassed && bAndOp)
 				{
 					// No need to evaluate anymore if we are AND the filters and one fails.
@@ -1553,7 +1553,7 @@
 		}
 		bNotted = (szOperator != null && szOperator.equals( IFilter.OP_NOT)) ? true : false;
 		szAttrID = assertion.getID().toString();
-		sharedAttr = sharedSubject.getAttribute( szAttrID);
+		sharedAttr = sharedNode.getAttribute( szAttrID);
 		szComparator = assertion.getComparator();
 		
 		if (!(assertion instanceof BasicFilterAttributeAssertion))
@@ -1574,7 +1574,7 @@
 				throw new NotImplementedException( szErrMsg);
 			}
 			
-			// See if the attribute is present on the digital subject.
+			// See if the attribute is present on the Node.
 			
 			if (bNotted)
 			{
@@ -1664,11 +1664,11 @@
 		return( bNotted ? true : false);
 	}
 	
-	private SharedDigitalSubject _findDigitalSubject(
+	private SharedNode _findNode(
 		String	szSimpleValue,
 		String	szAttrID) throws IdASException
 	{
-		SharedDigitalSubject		sharedSubject;
+		SharedNode		sharedNode;
 		SharedAttribute			sharedAttr;
 		java.util.ArrayList		valueList;
 		SharedSimpleAttrValue	simpleValue;
@@ -1673,13 +1673,13 @@
 		java.util.ArrayList		valueList;
 		SharedSimpleAttrValue	simpleValue;
 		
-		for (int iLoop = 0; iLoop < _digitalSubjectList.size(); iLoop++)
+		for (int iLoop = 0; iLoop < _nodeList.size(); iLoop++)
 		{
-			sharedSubject = (SharedDigitalSubject)_digitalSubjectList.get( iLoop);
+			sharedNode = (SharedNode)_nodeList.get( iLoop);
 			
-			// See if the subject has the specified attribute
+			// See if the node has the specified attribute
 			
-			if ((sharedAttr = (SharedAttribute)sharedSubject.getAttrMap().get( szAttrID)) != null)
+			if ((sharedAttr = (SharedAttribute)sharedNode.getAttrMap().get( szAttrID)) != null)
 			{
 				if (sharedAttr.getAttrDataType() != null && sharedAttr.isSimpleDataType())
 				{
@@ -1690,7 +1690,7 @@
 						simpleValue = (SharedSimpleAttrValue)valueList.get( iLoop2);
 						if (simpleValue.getCanonical() != null && szSimpleValue.equals( simpleValue.getCanonical()))
 						{
-							return( sharedSubject);
+							return( sharedNode);
 						}
 					}
 				}
@@ -1704,8 +1704,8 @@
 	String open(
 		Object	identity) throws IdASException
 	{
-		String						szSubjectID;
-		SharedDigitalSubject		sharedSubject;
+		String						szNodeID;
+		SharedNode		sharedNode;
 		String						szErrMsg;
 		SharedAttribute			userNameAttr;
 		SharedAttribute			passwordAttr;
@@ -1714,34 +1714,34 @@
 		
 		if (identity instanceof AuthNAnonymousMaterials)
 		{
-			szSubjectID = "";
+			szNodeID = "";
 		}
 		else if (identity instanceof AuthNNamePasswordMaterials)
 		{
-			szSubjectID = ((AuthNNamePasswordMaterials) identity).getUsername();
-			if ((sharedSubject = (SharedDigitalSubject)_digitalSubjectMap.get( szSubjectID)) == null)
+			szNodeID = ((AuthNNamePasswordMaterials) identity).getUsername();
+			if ((sharedNode = (SharedNode)_nodeMap.get( szNodeID)) == null)
 			{
-				szErrMsg = "Could not authenticate subject '" + szSubjectID + "', subject not found";
+				szErrMsg = "Could not authenticate node '" + szNodeID + "', node not found";
 				_log.debug( szErrMsg);
-				throw new NoSuchSubjectException( "Could not authenticate subject '" + szSubjectID + "'");
+				throw new NoSuchNodeException( "Could not authenticate node '" + szNodeID + "'");
 			}
-			if ((passwordAttr = sharedSubject.getAttribute( _szPasswordAttr)) == null)
+			if ((passwordAttr = sharedNode.getAttribute( _szPasswordAttr)) == null)
 			{
-				szErrMsg = "No password attribute '" + _szPasswordAttr + "' found on digital subject '" + szSubjectID + "'";
+				szErrMsg = "No password attribute '" + _szPasswordAttr + "' found on Node '" + szNodeID + "'";
 				_log.debug( szErrMsg);
-				throw new AuthenticationException( "Could not authenticate subject '" + szSubjectID + "'");
+				throw new AuthenticationException( "Could not authenticate node '" + szNodeID + "'");
 			}
 			if (passwordAttr.getAttrDataType() == null)
 			{
-				szErrMsg = "Type for password attribute '" + _szPasswordAttr + "' on digital subject '" + szSubjectID + "' is not known, attribute has no values";
+				szErrMsg = "Type for password attribute '" + _szPasswordAttr + "' on Node '" + szNodeID + "' is not known, attribute has no values";
 				_log.debug( szErrMsg);
-				throw new AuthenticationException( "Could not authenticate subject '" + szSubjectID + "'");
+				throw new AuthenticationException( "Could not authenticate node '" + szNodeID + "'");
 			}
 			if (!passwordAttr.isSimpleDataType())
 			{
-				szErrMsg = "Password attribute '" + _szPasswordAttr + "' on digital subject '" + szSubjectID + "' is not a simple type";
+				szErrMsg = "Password attribute '" + _szPasswordAttr + "' on Node '" + szNodeID + "' is not a simple type";
 				_log.debug( szErrMsg);
-				throw new AuthenticationException( "Could not authenticate subject '" + szSubjectID + "'");
+				throw new AuthenticationException( "Could not authenticate node '" + szNodeID + "'");
 			}
 			valueList = passwordAttr.getValueList();
 			for (int iLoop = 0; iLoop < valueList.size(); iLoop++)
@@ -1753,9 +1753,9 @@
 				}
 				else if (iLoop == valueList.size() - 1)
 				{
-					szErrMsg = "Password value does not match password on for subject '" + szSubjectID + "'";
+					szErrMsg = "Password value does not match password on for node '" + szNodeID + "'";
 					_log.debug( szErrMsg);
-					throw new AuthenticationException( "Could not authenticate subject '" + szSubjectID + "'");
+					throw new AuthenticationException( "Could not authenticate node '" + szNodeID + "'");
 				}
 			}
 		}
@@ -1779,7 +1779,7 @@
 			}
 			catch (Exception e)
 			{
-				szErrMsg = "Error reading digital subject for card key hash, identity: " + identity.toString() + ", error: " + e.getMessage();
+				szErrMsg = "Error reading Node for card key hash, identity: " + identity.toString() + ", error: " + e.getMessage();
 				_log.debug( szErrMsg);
 				throw new IdASException( szErrMsg);
 			}
@@ -1784,17 +1784,17 @@
 				throw new IdASException( szErrMsg);
 			}
 			
-			if ((sharedSubject = _findDigitalSubject( base64Value.getCanonical(), _szCardKeyHashAttr)) == null)
+			if ((sharedNode = _findNode( base64Value.getCanonical(), _szCardKeyHashAttr)) == null)
 			{
-				szErrMsg = "AuthN materials produced no Digital Subject ID, hash='" + base64Value.getCanonical() + "'";
+				szErrMsg = "AuthN materials produced no Node ID, hash='" + base64Value.getCanonical() + "'";
 				_log.debug( szErrMsg);
-				throw new NoSuchSubjectException( szErrMsg);
+				throw new NoSuchNodeException( szErrMsg);
 			}
 			else
 			{
-				if ((userNameAttr = sharedSubject.getAttribute( _szUserNameAttr)) == null)
+				if ((userNameAttr = sharedNode.getAttribute( _szUserNameAttr)) == null)
 				{
-					szErrMsg = "No user name attribute specified on digital subject that was found, hash='" + base64Value.getCanonical() + "'";
+					szErrMsg = "No user name attribute specified on Node that was found, hash='" + base64Value.getCanonical() + "'";
 					_log.debug( szErrMsg);
 					throw new IdASException( szErrMsg);
 				}
@@ -1801,7 +1801,7 @@
 				
 				if (!userNameAttr.isSimpleDataType())
 				{
-					szErrMsg = "User name attribute on digital subject that was found is not a simple type, hash='" + base64Value.getCanonical() + "'";
+					szErrMsg = "User name attribute on Node that was found is not a simple type, hash='" + base64Value.getCanonical() + "'";
 					_log.debug( szErrMsg);
 					throw new IdASException( szErrMsg);
 				}
@@ -1807,11 +1807,11 @@
 				}
 				if (userNameAttr.getValueList().size() != 1)
 				{
-					szErrMsg = "User name attribute on digital subject that was found is not single valued, hash='" + base64Value.getCanonical() + "'";
+					szErrMsg = "User name attribute on Node that was found is not single valued, hash='" + base64Value.getCanonical() + "'";
 					_log.debug( szErrMsg);
 					throw new IdASException( szErrMsg);
 				}
-				szSubjectID = ((SharedSimpleAttrValue)userNameAttr.getValueList().get( 0)).getCanonical();
+				szNodeID = ((SharedSimpleAttrValue)userNameAttr.getValueList().get( 0)).getCanonical();
 			}
 		}
 		else
@@ -1820,35 +1820,35 @@
 			_log.debug( szErrMsg);
 			throw new NotImplementedException( szErrMsg);
 		}
-		return( szSubjectID);
+		return( szNodeID);
 	}
 	
-	SharedDigitalSubject getSubject(
-		String	szSubjectID) throws IdASException
+	SharedNode getNode(
+		String	szNodeID) throws IdASException
 	{
-		SharedDigitalSubject	sharedSubject = (SharedDigitalSubject)_digitalSubjectMap.get( szSubjectID);
-		if (sharedSubject == null)
+		SharedNode	sharedNode = (SharedNode)_nodeMap.get( szNodeID);
+		if (sharedNode == null)
 		{
-			String	szErrMsg = "sharedContext:getSubject(subjectID): No such subject '" + szSubjectID + "'";
+			String	szErrMsg = "sharedContext:getNode(nodeID): No such node '" + szNodeID + "'";
 			_log.debug( szErrMsg);
-			throw new NoSuchSubjectException( szErrMsg);
+			throw new NoSuchNodeException( szErrMsg);
 		}
-		return( sharedSubject);
+		return( sharedNode);
 	}
 	
-	void removeSubject(
-		String	szSubjectID) throws IdASException
+	void removeNode(
+		String	szNodeID) throws IdASException
 	{
 		String					szErrMsg;
-		SharedDigitalSubject	sharedSubject;
+		SharedNode	sharedNode;
 		
 		try
 		{
-			if ((sharedSubject = (SharedDigitalSubject)_digitalSubjectMap.remove( szSubjectID)) == null)
+			if ((sharedNode = (SharedNode)_nodeMap.remove( szNodeID)) == null)
 			{
-				szErrMsg = "sharedContext:removeSubject(subjectID): No such subject '" + szSubjectID + "'";
+				szErrMsg = "sharedContext:removeNode(nodeID): No such node '" + szNodeID + "'";
 				_log.debug( szErrMsg);
-				throw new NoSuchSubjectException( szErrMsg);
+				throw new NoSuchNodeException( szErrMsg);
 			}
 			else
 			{
@@ -1853,14 +1853,14 @@
 			else
 			{
 				
-				// Find and remove the subject in the list
+				// Find and remove the node in the list
 				
-				sharedSubject.setDeleted();
-				for (int iLoop = 0; iLoop < _digitalSubjectList.size(); iLoop++)
+				sharedNode.setDeleted();
+				for (int iLoop = 0; iLoop < _nodeList.size(); iLoop++)
 				{
-					if (sharedSubject == (SharedDigitalSubject)_digitalSubjectList.get( iLoop))
+					if (sharedNode == (SharedNode)_nodeList.get( iLoop))
 					{
-						_digitalSubjectList.remove( iLoop);
+						_nodeList.remove( iLoop);
 						break;
 					}
 				}
@@ -1868,7 +1868,7 @@
 		}
 		catch (Exception e)
 		{
-			szErrMsg = "sharedContext:removeSubject(subjectID): Error removing digital subject '" + szSubjectID + "': " + e.getMessage();
+			szErrMsg = "sharedContext:removeNode(nodeID): Error removing Node '" + szNodeID + "': " + e.getMessage();
 			_log.debug( szErrMsg);
 			throw new IdASException( szErrMsg);
 		}
@@ -1874,42 +1874,42 @@
 		}
 	}
 	
-	SharedDigitalSubject addSubject(
+	SharedNode addNode(
 		java.net.URI	type,
-		String			szSubjectID) throws IdASException
+		String			szNodeID) throws IdASException
 	{
-		SharedDigitalSubject		sharedSubject;
+		SharedNode		sharedNode;
 		SharedAttribute			sharedAttr;
 		String						szErrMsg;
 		
-		if ((sharedSubject = (SharedDigitalSubject)_digitalSubjectMap.get( szSubjectID)) != null)
+		if ((sharedNode = (SharedNode)_nodeMap.get( szNodeID)) != null)
 		{
-			szErrMsg = "sharedContext:addSubject(type,subjectID): Attempting to add a digital subject '" + szSubjectID + "' that already exists";
+			szErrMsg = "sharedContext:addNode(type,nodeID): Attempting to add a Node '" + szNodeID + "' that already exists";
 			_log.debug( szErrMsg);
-			throw new SubjectExistsException( szErrMsg);
+			throw new NodeExistsException( szErrMsg);
 		}
 		
-		sharedSubject = new SharedDigitalSubject( this, type.toString(), szSubjectID);
+		sharedNode = new SharedNode( this, type.toString(), szNodeID);
 		
-		sharedAttr = new SharedAttribute( sharedSubject, _szUserNameAttr, ITypedValue.STRING_ATTR_VALUE_TYPE_URI_STR, true);
+		sharedAttr = new SharedAttribute( sharedNode, _szUserNameAttr, ITypedValue.STRING_ATTR_VALUE_TYPE_URI_STR, true);
 		
-		sharedAttr.addValueToList( new SharedSimpleAttrValue( sharedAttr, szSubjectID));
+		sharedAttr.addValueToList( new SharedSimpleAttrValue( sharedAttr, szNodeID));
 		
-		sharedSubject.addAttr( sharedAttr);
+		sharedNode.addAttr( sharedAttr);
 		
-		_digitalSubjectMap.put( szSubjectID, sharedSubject);
-		_digitalSubjectList.add( sharedSubject);
-		return( sharedSubject);
+		_nodeMap.put( szNodeID, sharedNode);
+		_nodeList.add( sharedNode);
+		return( sharedNode);
 	}
 
-	SharedDigitalSubject addSubject(
-		IDigitalSubject	copyFrom) throws IdASException, SubjectExistsException
+	SharedNode addNode(
+		INode	copyFrom) throws IdASException, NodeExistsException
 	{
-		SharedDigitalSubject	sharedSubject = null;
+		SharedNode	sharedNode = null;
 		IAttribute				attr;
 		java.util.Iterator	attrIterator;
 		
-		sharedSubject = addSubject( copyFrom.getSubjectType(), copyFrom.getSubjectID());
+		sharedNode = addNode( copyFrom.getNodeType(), copyFrom.getNodeID());
 		
 		// Copy all of the attributes
 		
@@ -1917,9 +1917,9 @@
 		while (attrIterator.hasNext())
 		{
 			attr = (IAttribute)attrIterator.next();
-			sharedSubject.addAttribute( attr);
+			sharedNode.addAttribute( attr);
 		}
-		return( sharedSubject);
+		return( sharedNode);
 	}
 	
 	private org.w3c.dom.Element _createChildElement(
@@ -2006,21 +2006,21 @@
 		}
 	}
 
-	private void _createDigitalSubjectElements(
+	private void _createNodeElements(
 		org.w3c.dom.Document	doc,
 		org.w3c.dom.Element	contextElement) throws IdASException
 	{
-		SharedDigitalSubject	sharedSubject;
-		org.w3c.dom.Element	digitalSubjectElement;
+		SharedNode	sharedNode;
+		org.w3c.dom.Element	NodeElement;
 		
-		for (int iLoop = 0; iLoop < _digitalSubjectList.size(); iLoop++)
+		for (int iLoop = 0; iLoop < _nodeList.size(); iLoop++)
 		{
-			sharedSubject = (SharedDigitalSubject)_digitalSubjectList.get( iLoop);
+			sharedNode = (SharedNode)_nodeList.get( iLoop);
 			
-			digitalSubjectElement = _createChildElement( doc, contextElement, XML_DIGITAL_SUBJECT_ELEMENT,
-				XML_SUBJECT_TYPE_ATTR, sharedSubject.getSubjectType(), null, null, null);
+			NodeElement = _createChildElement( doc, contextElement, XML_NODE_ELEMENT,
+				XML_NODE_TYPE_ATTR, sharedNode.getNodeType(), null, null, null);
 				
-			_createAttributeElements( doc, digitalSubjectElement, sharedSubject);
+			_createAttributeElements( doc, NodeElement, sharedNode);
 		}
 	}
 
@@ -2045,9 +2045,9 @@
 			rootElement = doc.createElement( XML_CONTEXT_ELEMENT);
 			doc.appendChild( rootElement);
 			
-			// Add the digital subjects
+			// Add the Nodes
 			
-			_createDigitalSubjectElements( doc, rootElement);
+			_createNodeElements( doc, rootElement);
 			
 		}
 		catch (IdASException e)
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.xmlfile/src/org/eclipse/higgins/idas/cp/xmlfile/SharedDigitalSubject.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.xmlfile/src/org/eclipse/higgins/idas/cp/xmlfile/SharedDigitalSubject.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.xmlfile/src/org/eclipse/higgins/idas/cp/xmlfile/SharedDigitalSubject.java	(working copy)
@@ -1,110 +0,0 @@
-/**
- * Copyright (c) 2007 Novell, Inc.
- * All Rights Reserved.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; version 2.1 of the license.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this library; if not, contact Novell, Inc.
- *
- * To contact Novell about this file by physical or electronic mail,
- * you may find current contact information at www.novell.com
- */
-
-/*
- * Copyright (c) 2007 Novell, Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *		Daniel Sanders
- */
-
-package org.eclipse.higgins.idas.cp.xmlfile;
-
-import org.apache.log4j.Logger;
-
-import org.eclipse.higgins.idas.api.IdASException;
-
-/**
- * 
- * @author dsanders@xxxxxxxxxx
- * 
- */
-
-public class SharedDigitalSubject extends SharedAttrContainer
-{
-	private Logger				_log = Logger.getLogger( SharedDigitalSubject.class.getName());
-	private SharedContext	_sharedContext;
-	private String				_szSubjectType;
-	private String				_szSubjectID;
-	private boolean			_bDeleted;
-
-	SharedDigitalSubject(
-		SharedContext			sharedCtx,
-		String					szSubjectType,
-		String					szSubjectID) throws IdASException
-	{
-		super();
-		_bDeleted = false;
-		_sharedContext = sharedCtx;
-		_szSubjectType = szSubjectType;
-		_szSubjectID = szSubjectID;
-	}
-	
-	void setDeleted()
-	{
-		_bDeleted = true;
-	}
-	
-	boolean isDeleted()
-	{
-		return( _bDeleted);
-	}
-	
-	String getSubjectType()
-	{
-		return( _szSubjectType);
-	}
-	
-	void setSubjectID(
-		String	szSubjectID)
-	{
-		_szSubjectID = szSubjectID;
-	}
-
-	String getSubjectID()
-	{
-		return( _szSubjectID);
-	}
-
-	String getContainerID()
-	{
-		return( _szSubjectID);
-	}
-	
-	String getContainerType()
-	{
-		return( "digital subject");
-	}
-	
-	Logger getLogger()
-	{
-		return( _log);
-	}
-
-	void remove() throws IdASException
-	{
-		_sharedContext.removeSubject( _szSubjectID);
-	}
-}
-
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.xmlfile/src/org/eclipse/higgins/idas/cp/xmlfile/SharedNode.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.xmlfile/src/org/eclipse/higgins/idas/cp/xmlfile/SharedNode.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.xmlfile/src/org/eclipse/higgins/idas/cp/xmlfile/SharedNode.java	(working copy)
@@ -41,18 +41,18 @@
  * 
  */
 
-public class SharedDigitalSubject extends SharedAttrContainer
+public class SharedNode extends SharedAttrContainer
 {
-	private Logger				_log = Logger.getLogger( SharedDigitalSubject.class.getName());
+	private Logger				_log = Logger.getLogger( SharedNode.class.getName());
 	private SharedContext	_sharedContext;
-	private String				_szSubjectType;
-	private String				_szSubjectID;
+	private String				_szNodeType;
+	private String				_szNodeID;
 	private boolean			_bDeleted;
 
-	SharedDigitalSubject(
+	SharedNode(
 		SharedContext			sharedCtx,
-		String					szSubjectType,
-		String					szSubjectID) throws IdASException
+		String					szNodeType,
+		String					szNodeID) throws IdASException
 	{
 		super();
 		_bDeleted = false;
@@ -57,8 +57,8 @@
 		super();
 		_bDeleted = false;
 		_sharedContext = sharedCtx;
-		_szSubjectType = szSubjectType;
-		_szSubjectID = szSubjectID;
+		_szNodeType = szNodeType;
+		_szNodeID = szNodeID;
 	}
 	
 	void setDeleted()
@@ -71,20 +71,20 @@
 		return( _bDeleted);
 	}
 	
-	String getSubjectType()
+	String getNodeType()
 	{
-		return( _szSubjectType);
+		return( _szNodeType);
 	}
 	
-	void setSubjectID(
-		String	szSubjectID)
+	void setNodeID(
+		String	szNodeID)
 	{
-		_szSubjectID = szSubjectID;
+		_szNodeID = szNodeID;
 	}
 
-	String getSubjectID()
+	String getNodeID()
 	{
-		return( _szSubjectID);
+		return( _szNodeID);
 	}
 
 	String getContainerID()
@@ -89,7 +89,7 @@
 
 	String getContainerID()
 	{
-		return( _szSubjectID);
+		return( _szNodeID);
 	}
 	
 	String getContainerType()
@@ -94,7 +94,7 @@
 	
 	String getContainerType()
 	{
-		return( "digital subject");
+		return( "node");
 	}
 	
 	Logger getLogger()
@@ -104,7 +104,7 @@
 
 	void remove() throws IdASException
 	{
-		_sharedContext.removeSubject( _szSubjectID);
+		_sharedContext.removeNode( _szNodeID);
 	}
 }
 
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jspolicy.test/Configuration.xml
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jspolicy.test/Configuration.xml	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jspolicy.test/Configuration.xml	(working copy)
@@ -142,7 +142,7 @@
 							RESULT = map;
 						]]>
 					</Setting>
-					<Setting Name="consumerDSTypeToProvider" Type="htf:jscriptexec">
+					<Setting Name="consumerNodeTypeToProvider" Type="htf:jscriptexec">
 						<![CDATA[
 							var re = new RegExp("^http://www.eclipse.org/higgins/ontologies/2006/higgins/ldap#class_";, "i");
 							RESULT = String(consumerType.toString()).replace(re, "");
@@ -148,7 +148,7 @@
 							RESULT = String(consumerType.toString()).replace(re, "");
 						]]>
 					</Setting>
-					<Setting Name="providerDSTypeToConsumer" Type="htf:jscriptexec">
+					<Setting Name="providerNodeTypeToConsumer" Type="htf:jscriptexec">
 						<![CDATA[
 							RESULT = "http://www.eclipse.org/higgins/ontologies/2006/higgins/ldap#class_"; + String(providerType.toString());
 						]]>
@@ -153,7 +153,7 @@
 							RESULT = "http://www.eclipse.org/higgins/ontologies/2006/higgins/ldap#class_"; + String(providerType.toString());
 						]]>
 					</Setting>
-					<Setting Name="consumerSubjectIDToProvider" Type="htf:jscriptexec">
+					<Setting Name="consumerNodeIDToProvider" Type="htf:jscriptexec">
 						<![CDATA[
 							RESULT = "cn=" + consumerID + ",ou=people,dc=wag,dc=bandit-project,dc=org"
 						]]>
@@ -158,7 +158,7 @@
 							RESULT = "cn=" + consumerID + ",ou=people,dc=wag,dc=bandit-project,dc=org"
 						]]>
 					</Setting>
-					<Setting Name="providerSubjectIDToConsumer" Type="htf:jscriptexec">
+					<Setting Name="providerNodeIDToConsumer" Type="htf:jscriptexec">
 						<![CDATA[
 							var re = new RegExp("^cn=(.*),ou=people,dc=wag,dc=bandit-project,dc=org$", "i");
 							RESULT = String(providerID.toString()).replace(re, "$1");
@@ -169,7 +169,7 @@
 							importPackage(Packages.org.eclipse.higgins.idas);
 
 							var re = new RegExp("^js", "g");
-							if (consumerType == "SubjectIDSyntax")
+							if (consumerType == "NodeIDSyntax")
 							{
 								RESULT = PARAM.getValue().replace(re, "vc");
 							}
@@ -185,7 +185,7 @@
 							importPackage(Packages.org.eclipse.higgins.idas.impl);
 
 							var re = new RegExp("^vc", "g");
-							if (consumerType == "SubjectIDSyntax")
+							if (consumerType == "NodeIDSyntax")
 							{
 								//TODO how do we detect java types for the correct casts? 
 								RESULT = new Packages.org.eclipse.higgins.idas.impl.BasicValueString(
@@ -267,7 +267,7 @@
 							RESULT = String(providerID.toString()).replace(re, "js");
 						]]>
 					</Setting>
-					<Setting Name="consumerDSTypeToProvider" Type="htf:jscriptexec">
+					<Setting Name="consumerNodeTypeToProvider" Type="htf:jscriptexec">
 						<![CDATA[
 							var re = new RegExp("^js", "g");
 							RESULT = String(consumerType.toString()).replace(re, "inmem");
@@ -273,7 +273,7 @@
 							RESULT = String(consumerType.toString()).replace(re, "inmem");
 						]]>
 					</Setting>
-					<Setting Name="providerDSTypeToConsumer" Type="htf:jscriptexec">
+					<Setting Name="providerNodeTypeToConsumer" Type="htf:jscriptexec">
 						<![CDATA[
 							var re = new RegExp("^inmem", "g");
 							RESULT = String(providerType.toString()).replace(re, "js");
@@ -279,7 +279,7 @@
 							RESULT = String(providerType.toString()).replace(re, "js");
 						]]>
 					</Setting>
-					<Setting Name="consumerSubjectIDToProvider" Type="htf:jscriptexec">
+					<Setting Name="consumerNodeIDToProvider" Type="htf:jscriptexec">
 						<![CDATA[
 							var re = new RegExp("^js", "g");
 							RESULT = consumerID.replace(re, "inmem");
@@ -285,7 +285,7 @@
 							RESULT = consumerID.replace(re, "inmem");
 						]]>
 					</Setting>
-					<Setting Name="providerSubjectIDToConsumer" Type="htf:jscriptexec">
+					<Setting Name="providerNodeIDToConsumer" Type="htf:jscriptexec">
 						<![CDATA[
 							var re = new RegExp("^inmem", "g");
 							RESULT = providerID.replace(re, "js");
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jspolicy.test/src/org/eclipse/higgins/idas/cp/jspolicy/test/JSPolicyCPTest.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jspolicy.test/src/org/eclipse/higgins/idas/cp/jspolicy/test/JSPolicyCPTest.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jspolicy.test/src/org/eclipse/higgins/idas/cp/jspolicy/test/JSPolicyCPTest.java	(working copy)
@@ -24,7 +24,7 @@
 import org.eclipse.higgins.idas.api.IContext;
 import org.eclipse.higgins.idas.api.IContextFactory;
 import org.eclipse.higgins.idas.api.IContextId;
-import org.eclipse.higgins.idas.api.IDigitalSubject;
+import org.eclipse.higgins.idas.api.INode;
 import org.eclipse.higgins.idas.api.ITypedValue;
 import org.eclipse.higgins.idas.api.IdASException;
 import org.eclipse.higgins.idas.common.AuthNSelfIssuedMaterials;
@@ -70,7 +70,7 @@
 		}
 	}
 
-	private IDigitalSubject _setupnewDS(
+	private INode _setupnewDS(
 		IContext context,
 		String testName,
 		String testType,
@@ -80,7 +80,7 @@
 		if (attributeTypes.length != attributeValues.length)
 			throw new IdASException();
 
-		IDigitalSubject ds = context.addSubject(new URI(testType), testName);
+		INode ds = context.addNode(new URI(testType), testName);
 		for (int iLoop = 0; iLoop < attributeTypes.length; iLoop++)
 		{
 			IAttribute attr = ds.addAttribute(new URI(attributeTypes[iLoop]));
@@ -118,18 +118,18 @@
 				String jsAttr = "jsRole";
 				URI inmemAttrURI = new URI(inmemAttr);
 				URI jsAttrURI = new URI(jsAttr);
-				String inmemSubjectType = "inmemTest1Type";
-				String inmemSubjectID = "inmemTest1Name";
-				String jsSubjectID = "jsTest1Name";
+				String inmemNodeType = "inmemTest1Type";
+				String inmemNodeID = "inmemTest1Name";
+				String jsNodeID = "jsTest1Name";
 				inmemContext.open(null);
 
 				// verify that the inmem is setup correctly
-				IDigitalSubject inmemDS = _setupnewDS(inmemContext, inmemSubjectID, inmemSubjectType,
+				INode inmemDS = _setupnewDS(inmemContext, inmemNodeID, inmemNodeType,
 					new String[]
 					{inmemAttr, inmemAttr}, new String[]
 					{"roleValue1", "roleValue2"});
-				assertTrue(inmemDS.getSubjectID().equals(inmemSubjectID));
-				assertTrue(inmemDS.getSubjectType().equals(new URI(inmemSubjectType)));
+				assertTrue(inmemDS.getNodeID().equals(inmemNodeID));
+				assertTrue(inmemDS.getNodeType().equals(new URI(inmemNodeType)));
 				assertTrue(inmemDS.getAttribute(inmemAttrURI) != null);
 
 				Iterator attrItr = inmemDS.getAttributes();
@@ -141,8 +141,8 @@
 
 				// access same object via the policy context use mapped names
 				jsContext.open(inmemContext); // testing hack
-				IDigitalSubject jsDS = jsContext.getSubject(jsSubjectID);
-				assertTrue(jsDS != null && jsDS.getSubjectID().equals(jsSubjectID));
+				INode jsDS = jsContext.getNode(jsNodeID);
+				assertTrue(jsDS != null && jsDS.getNodeID().equals(jsNodeID));
 
 				assertTrue(jsDS.getAttribute(jsAttrURI) != null);
 
@@ -181,11 +181,11 @@
 			AuthNSelfIssuedMaterials selfIssuedAuthNMaterials = new AuthNSelfIssuedMaterials(
 					jsContext, ppid, modulus, exponent);
 
-			String subjectID = jsContext.open(selfIssuedAuthNMaterials);
-			if (subjectID != null)
-				System.out.println("Subject ID from context open: " + subjectID);
+			String nodeID = jsContext.open(selfIssuedAuthNMaterials);
+			if (nodeID != null)
+				System.out.println("Node ID from context open: " + nodeID);
 			else
-				System.out.println("Subject ID not found.");
+				System.out.println("Node ID not found.");
 
 			ArrayList attrSelection = new ArrayList();
 			attrSelection.add(new URI(
@@ -194,11 +194,11 @@
 				"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname";));
 			attrSelection.add(new URI(
 				"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress";));
-			IDigitalSubject subject = jsContext.getSubject(subjectID, attrSelection.iterator());
+			INode node = jsContext.getNode(nodeID, attrSelection.iterator());
 
-			Iterator attrs = subject.getAttributes();
-			System.out.println(subject.getSubjectID());
-			System.out.println(subject.getSubjectType());
+			Iterator attrs = node.getAttributes();
+			System.out.println(node.getNodeID());
+			System.out.println(node.getNodeType());
 
 			while (attrs.hasNext())
 			{
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jspolicy/src/org/eclipse/higgins/idas/cp/jspolicy/JSPolicyContext.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jspolicy/src/org/eclipse/higgins/idas/cp/jspolicy/JSPolicyContext.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jspolicy/src/org/eclipse/higgins/idas/cp/jspolicy/JSPolicyContext.java	(working copy)
@@ -30,14 +30,14 @@
 import org.eclipse.higgins.idas.api.IContext;
 import org.eclipse.higgins.idas.api.IContextFactory;
 import org.eclipse.higgins.idas.api.IContextId;
-import org.eclipse.higgins.idas.api.IDigitalSubject;
+import org.eclipse.higgins.idas.api.INode;
 import org.eclipse.higgins.idas.api.IFilter;
 import org.eclipse.higgins.idas.api.IMetadata;
 import org.eclipse.higgins.idas.api.IdASException;
-import org.eclipse.higgins.idas.api.InvalidSubjectIDException;
+import org.eclipse.higgins.idas.api.InvalidNodeIDException;
 import org.eclipse.higgins.idas.api.InvalidTypeException;
 import org.eclipse.higgins.idas.api.NotImplementedException;
-import org.eclipse.higgins.idas.api.SubjectExistsException;
+import org.eclipse.higgins.idas.api.NodeExistsException;
 import org.eclipse.higgins.idas.registry.IdASRegistry;
 import org.eclipse.higgins.idas.spi.BasicContext;
 import org.eclipse.higgins.idas.api.model.IContextModel;
@@ -55,8 +55,8 @@
  * code currently supports JavaScript PDPs at the following points:
  * 
  * <UL>
- * <li>{@link #getSubject(String subjectID)}, and
- * {@link #getSubject(java.lang.String, java.util.Iterator)} calls allow subject IDs
+ * <li>{@link #getNode(String nodeID)}, and
+ * {@link #getNode(java.lang.String, java.util.Iterator)} calls allow node IDs
  * to be mapped from stored (provider) values to what is presented by consumers of
  * this Context Provider.</li>
  * </UL>
@@ -63,7 +63,7 @@
  * 
  * Additional PDPs found in
  * {@link org.eclipse.higgins.idas.cp.jspolicy.JSPolicyContext},
- * {@link org.eclipse.higgins.idas.cp.jspolicy.JSPolicyDigitalSubject}, and
+ * {@link org.eclipse.higgins.idas.cp.jspolicy.JSPolicyNode}, and
  * 
  * @author dbuss@xxxxxxxxxx
  * @author tdoman@xxxxxxxxxx
@@ -76,19 +76,19 @@
 	/**
 	 * Identifier used in the <code>id</code> attribute of a
 	 * <code>JSPolicyAction</code> element to specify the mapping performed on
-	 * Subject IDs passed to this context provider before being passed to the real
+	 * Node IDs passed to this context provider before being passed to the real
 	 * context provider.
 	 * <p>
-	 * When this PDP is invoked the Subject ID is converted to a string, stored in an
+	 * When this PDP is invoked the Node ID is converted to a string, stored in an
 	 * evaluation specific JavaScript scope using the name
 	 * {@link #consumerIDParamName}. It is presented that either the result of the
 	 * script <b>or</b> a JavaScript variable with the name
-	 * {@link #genericResultName} is the new Subject ID.
+	 * {@link #genericResultName} is the new Node ID.
 	 * <p>
 	 * To avoid problems it is recomended that the reverse mapping also be
-	 * defined using the id {@link #providerSubjectIDToConsumer}
+	 * defined using the id {@link #providerNodeIDToConsumer}
 	 * <p>
-	 * A simple nonsensical sample where the provider subject IDs all start with the
+	 * A simple nonsensical sample where the provider Node IDs all start with the
 	 * letters 'vc' and those are replaced by the letters 'js':
 	 * 
 	 * <pre>
@@ -93,11 +93,11 @@
 	 * 
 	 * <pre>
 	 *  
-	 * 		&lt;JSPolicyAction id=&quot;consumerSubjectIDToProvider&quot; evalType=&quot;javascript&quot;&gt;
+	 * 		&lt;JSPolicyAction id=&quot;consumerNodeIDToProvider&quot; evalType=&quot;javascript&quot;&gt;
 	 * 			var re = new RegExp(&quot;&circ;js&quot;, &quot;g&quot;);
 	 * 			RESULT = consumerID.replace(re, &quot;vc&quot;);
 	 * 		&lt;/JSPolicyAction&gt;
-	 * 		&lt;JSPolicyAction id=&quot;providerSubjectIDToConsumer&quot; evalType=&quot;javascript&quot;&gt;
+	 * 		&lt;JSPolicyAction id=&quot;providerNodeIDToConsumer&quot; evalType=&quot;javascript&quot;&gt;
 	 * 			var re = new RegExp(&quot;&circ;vc&quot;, &quot;g&quot;);
 	 * 			RESULT = consumerID.replace(re, &quot;js&quot;);
 	 * 		&lt;/JSPolicyAction&gt;
@@ -103,7 +103,7 @@
 	 * 		&lt;/JSPolicyAction&gt;
 	 * </pre>
 	 */
-	public static final String consumerSubjectIDToProvider = "consumerSubjectIDToProvider";
+	public static final String consumerNodeIDToProvider = "consumerNodeIDToProvider";
 
 	/**
 	 * Identifier used in the <code>id</code> attribute of a
@@ -108,14 +108,14 @@
 	/**
 	 * Identifier used in the <code>id</code> attribute of a
 	 * <code>JSPolicyAction</code> element to specify the mapping performed on
-	 * Subject IDs as they are returned from the real context provider to this context
-	 * provider. The inverse of this mapping is {@link #consumerSubjectIDToProvider}
+	 * Node IDs as they are returned from the real context provider to this context
+	 * provider. The inverse of this mapping is {@link #consumerNodeIDToProvider}
 	 */
-	public static final String providerSubjectIDToConsumer = "providerSubjectIDToConsumer";
+	public static final String providerNodeIDToConsumer = "providerNodeIDToConsumer";
 
 	/* cached PDP for the above named functions */
-	private JScriptExec _consumerSubjectIDToProviderExec;
-	private JScriptExec _providerSubjectIDToConsumerExec;
+	private JScriptExec _consumerNodeIDToProviderExec;
+	private JScriptExec _providerNodeIDToConsumerExec;
 
 	/**
 	 * Identifier used in the <code>id</code> attribute of a
@@ -121,7 +121,7 @@
 	 * Identifier used in the <code>id</code> attribute of a
 	 * <code>JSPolicyAction</code> element to specify the mapping performed on
 	 * Metadata ID passed to this context provider before being passed to the
-	 * real context provider.  Applies to metadata on Subjects, Attributes, and
+	 * real context provider.  Applies to metadata on Nodes, Attributes, and
 	 * Attribute Values.  
 	 * <p>
 	 * @see org.eclipse.higgins.util.idas.cp.jscript.JScriptCPMetadataPDPs#consumerIDToProvider
@@ -198,20 +198,20 @@
 	/**
 	 * Identifier used in the <code>id</code> attribute of a
 	 * <code>JSPolicyAction</code> element to specify the mapping performed on
-	 * Digital Subject Types passed to this context provider before being passed
+	 * Node Types passed to this context provider before being passed
 	 * to the real context provider.
 	 * <p>
-	 * When this PDP is invoked the Digital Subject Type is stored in an
+	 * When this PDP is invoked the Node Type is stored in an
 	 * evaluation specific JavaScript scope using the name
 	 * {@link #consumerTypeParamName}. It is presented that either the result of the
 	 * script <b>or</b> a JavaScript variable with the name
-	 * {@link #genericResultName} is the new Digital Subject Type.
+	 * {@link #genericResultName} is the new Node Type.
 	 * <p>
 	 * To avoid problems it is recomended that the reverse mapping also be
-	 * defined using the id {@link #providerDSTypeToConsumer}
+	 * defined using the id {@link #providerNodeTypeToConsumer}
 	 * <p>
 	 * 
-	 * A simple nonsensical sample where the provider Digital Subject Type mappings
+	 * A simple nonsensical sample where the provider Node Type mappings
 	 * are stored in a globally scoped attribute multimap, and are referenced
 	 * using JavaScript Associative Arrays.
 	 * 
@@ -217,10 +217,10 @@
 	 * 
 	 * <pre>
 	 *  
-	 * 		&lt;JSPolicyAction id=&quot;consumerDSTypeToProvider&quot; evalType=&quot;javascript&quot;&gt;
+	 * 		&lt;JSPolicyAction id=&quot;consumerNodeTypeToProvider&quot; evalType=&quot;javascript&quot;&gt;
 	 * 			RESULT = multimap.consumer[String(PARAM.toString())];
 	 * 		&lt;/JSPolicyAction&gt;
-	 * 		&lt;JSPolicyAction id=&quot;providerDSTypeToConsumer&quot; evalType=&quot;javascript&quot;&gt;
+	 * 		&lt;JSPolicyAction id=&quot;providerNodeTypeToConsumer&quot; evalType=&quot;javascript&quot;&gt;
 	 * 			RESULT = multimap.provider[String(PARAM.toString())];
 	 * 		&lt;/JSPolicyAction&gt;
 	 * </pre>
@@ -226,7 +226,7 @@
 	 * </pre>
 	 * 
 	 * <p>
-	 * TODO: currently this is for Attribute types, Digital Subject MetaData
+	 * TODO: currently this is for Attribute types, Node MetaData
 	 * Types, and Attribute MetaData Types, should we have seperate PDPs for
 	 * those? The internal code is already fully instrumented for the addtional
 	 * PDPs.
@@ -231,7 +231,7 @@
 	 * those? The internal code is already fully instrumented for the addtional
 	 * PDPs.
 	 */
-	public static final String consumerDSTypeToProvider = "consumerDSTypeToProvider";
+	public static final String consumerNodeTypeToProvider = "consumerNodeTypeToProvider";
 
 	/**
 	 * Identifier used in the <code>id</code> attribute of a
@@ -236,15 +236,15 @@
 	/**
 	 * Identifier used in the <code>id</code> attribute of a
 	 * <code>JSPolicyAction</code> element to specify the mapping performed on
-	 * Digital Subject Types as they are returned from the real context provider
+	 * Node Types as they are returned from the real context provider
 	 * to this context provider. The inverse of this mapping is
-	 * {@link #consumerDSTypeToProvider}
+	 * {@link #consumerNodeTypeToProvider}
 	 */
-	public static final String providerDSTypeToConsumer = "providerDSTypeToConsumer";
+	public static final String providerNodeTypeToConsumer = "providerNodeTypeToConsumer";
 
 	/* cached PDP for the above named functions */
-	private JScriptExec _consumerDSTypeToProviderExec;
-	private JScriptExec _providerDSTypeToConsumerExec;
+	private JScriptExec _consumerNodeTypeToProviderExec;
+	private JScriptExec _providerNodeTypeToConsumerExec;
 
 	/**
 	 * Identifier used in the <code>id</code> attribute of a
@@ -263,13 +263,13 @@
 	 * defined using the id {@link #providerAValueToConsumer}
 	 * <p>
 	 * 
-	 * A simple nonsensical sample where the for anything which is Subject ID the same
+	 * A simple nonsensical sample where the for anything which is Node ID the same
 	 * mappings is preformed as noted in the sample for
-	 * {@link #consumerDSTypeToProvider}
+	 * {@link #consumerNodeTypeToProvider}
 	 * 
 	 * <pre>
 	 *  
-	 * 		&lt;JSPolicyAction id=&quot;consumerDSTypeToProvider&quot; evalType=&quot;javascript&quot;&gt;
+	 * 		&lt;JSPolicyAction id=&quot;consumerNodeTypeToProvider&quot; evalType=&quot;javascript&quot;&gt;
 	 * 			importPackage(Packages.org.eclipse.higgins.idas);
 	 * 			importPackage(Packages.org.eclipse.higgins.idas.impl);
 	 * 
@@ -274,7 +274,7 @@
 	 * 			importPackage(Packages.org.eclipse.higgins.idas.impl);
 	 * 
 	 * 			var re = new RegExp(&quot;&circ;vc&quot;, &quot;g&quot;);
-	 * 			if (consumerType == &quot;SubjectIDSyntax&quot;) {
+	 * 			if (consumerType == &quot;NodeIDSyntax&quot;) {
 	 * 				RESULT = new Packages.org.eclipse.higgins.idas.impl.BasicValueString(
 	 * 				String(PARAM.getData()).replace(re, &quot;js&quot;));
 	 * 			}
@@ -310,9 +310,9 @@
 	 * <p>
 	 * Please note this is a unidirctional mapping, there is no inverse.
 	 * 
-	 * A simple nonsensical sample where the for anything which is Subject ID the same
+	 * A simple nonsensical sample where the for anything which is Node ID the same
 	 * mappings is preformed as noted in the sample for
-	 * {@link #consumerDSTypeToProvider}
+	 * {@link #consumerNodeTypeToProvider}
 	 * 
 	 * <pre>
 	 *  
@@ -321,7 +321,7 @@
 	 * 			importPackage(Packages.org.eclipse.higgins.idas.impl);
 	 * 
 	 * 			var re = new RegExp(&quot;&circ;vc&quot;, &quot;g&quot;);
-	 * 			if (consumerType == &quot;SubjectIDSyntax&quot;) {
+	 * 			if (consumerType == &quot;NodeIDSyntax&quot;) {
 	 * 				RESULT = new Packages.org.eclipse.higgins.idas.impl.BasicValueString(
 	 * 				String(PARAM.getData()).replace(re, &quot;js&quot;));
 	 * 			}
@@ -344,7 +344,7 @@
 	 * <p>
 	 * This is a one way map, no values are returned.
 	 * 
-	 * A simple nonsensical sample where the provider Digital Subject Type mappings
+	 * A simple nonsensical sample where the provider Node Type mappings
 	 * are stored in a globally scoped attribute multimap, and are referenced
 	 * using JavaScript Associative Arrays.
 	 * 
@@ -494,11 +494,11 @@
 		Map jsPolicySettings = (Map)_contextSettings.get("JSPolicyAction");
 		if (jsPolicySettings != null)
 		{
-			_consumerSubjectIDToProviderExec = (JScriptExec)jsPolicySettings.get(consumerSubjectIDToProvider);
-			_providerSubjectIDToConsumerExec = (JScriptExec)jsPolicySettings.get(providerSubjectIDToConsumer);
+			_consumerNodeIDToProviderExec = (JScriptExec)jsPolicySettings.get(consumerNodeIDToProvider);
+			_providerNodeIDToConsumerExec = (JScriptExec)jsPolicySettings.get(providerNodeIDToConsumer);
 
-			_consumerDSTypeToProviderExec = (JScriptExec)jsPolicySettings.get(consumerDSTypeToProvider);
-			_providerDSTypeToConsumerExec = (JScriptExec)jsPolicySettings.get(providerDSTypeToConsumer);
+			_consumerNodeTypeToProviderExec = (JScriptExec)jsPolicySettings.get(consumerNodeTypeToProvider);
+			_providerNodeTypeToConsumerExec = (JScriptExec)jsPolicySettings.get(providerNodeTypeToConsumer);
 
 			_consumerOpenContextRefToProviderExec = (JScriptExec)jsPolicySettings.get(consumerOpenContextRefToProvider);
 			_getSchemaExec = (JScriptExec)jsPolicySettings.get(getSchema);
@@ -542,7 +542,7 @@
 	public String open(
 		Object identity) throws IdASException
 	{
-		String subjectID = null;
+		String nodeID = null;
 
 		if (_bIsOpen)
 			throw new ContextOpenException();
@@ -596,9 +596,9 @@
 				}
 				// open the real Context Provider
 				if (newIdentity != null)
-					subjectID = providerSubjectIDToConsumer(_providerContext.open(newIdentity));
+					nodeID = providerNodeIDToConsumer(_providerContext.open(newIdentity));
 				else
-					subjectID = providerSubjectIDToConsumer(_providerContext.open(identity));
+					nodeID = providerNodeIDToConsumer(_providerContext.open(identity));
 			}
 			catch (Exception e)
 			{
@@ -609,7 +609,7 @@
 
 		_bIsOpen = true;
 
-		return subjectID;
+		return nodeID;
 	}
 
 	/**
@@ -646,8 +646,8 @@
 	 * by inserting JavaScript into the configuration file.
 	 * 
 	 * The PDP described by
-	 * {@link org.eclipse.higgins.idas.cp.jspolicy.JSPolicyContext#consumerDSTypeToProvider}
-	 * contains the type mappings performed on the Subject ID, the PDP described by
+	 * {@link org.eclipse.higgins.idas.cp.jspolicy.JSPolicyContext#consumerNodeTypeToProvider}
+	 * contains the type mappings performed on the Node ID, the PDP described by
 	 * {@link org.eclipse.higgins.idas.cp.jspolicy.JSPolicyContext#consumerMTypeToProvider}
 	 * describes the mappings performed on the attribute types. <p> TODO: Attrs
 	 * are assumed to always map consistiently, but with generated attrs it's
@@ -654,11 +654,11 @@
 	 * possible that both the generated and the real attribute should be returned
 	 * if passed in a selection list.
 	 * 
-	 * @see org.eclipse.higgins.idas.api.IContext#getSubject(java.lang.String,
+	 * @see org.eclipse.higgins.idas.api.IContext#getNode(java.lang.String,
 	 *      java.util.Iterator)
 	 */
-	public IDigitalSubject getSubject(
-		String subjectID,
+	public INode getNode(
+		String nodeID,
 		Iterator consumerSelectionList) throws IdASException
 	{
 		if (!_bIsOpen || _providerContext == null)
@@ -705,22 +705,22 @@
 			}
 		}
 
-		return new JSPolicyDigitalSubject(_dsMetadataPDPs,  _attributePDP, _attributeMetadataPDP,
-				_attributeMetadataPDP, this, _providerContext.getSubject(consumerSubjectIDToProvider(subjectID),
-				(providerSelectionList != null) ? providerSelectionList.iterator() : null), subjectID, null);
+		return new JSPolicyNode(_dsMetadataPDPs,  _attributePDP, _attributeMetadataPDP,
+				_attributeMetadataPDP, this, _providerContext.getNode(consumerNodeIDToProvider(nodeID),
+				(providerSelectionList != null) ? providerSelectionList.iterator() : null), nodeID, null);
 	}
 
 	/**
-	 * @see org.eclipse.higgins.idas.api.IContext#getSubject(java.lang.String)
+	 * @see org.eclipse.higgins.idas.api.IContext#getNode(java.lang.String)
 	 */
-	public IDigitalSubject getSubject(
-		String subjectID) throws IdASException
+	public INode getNode(
+		String nodeID) throws IdASException
 	{
-		return getSubject(subjectID, null);
+		return getNode(nodeID, null);
 	}
 	
 	/**
-	 * This Context Provider allows Digital Subject Types, Subject ID and
+	 * This Context Provider allows Node Types, Node ID and
 	 * Attribute values to be mapped from values passed by consumers of this
 	 * Context Provider to types and values for storage.
 	 * 
@@ -725,14 +725,14 @@
 	 * Context Provider to types and values for storage.
 	 * 
 	 * The PDP described by
-	 * {@link org.eclipse.higgins.idas.cp.jspolicy.JSPolicyContext#consumerDSTypeToProvider}
+	 * {@link org.eclipse.higgins.idas.cp.jspolicy.JSPolicyContext#consumerNodeTypeToProvider}
 	 * contains the type mappings performed on the Subjec type, the PDP described by
-	 * {@link org.eclipse.higgins.idas.cp.jspolicy.JSPolicyContext#consumerSubjectIDToProvider}
-	 * describes the mappings performed on the subject ID.
+	 * {@link org.eclipse.higgins.idas.cp.jspolicy.JSPolicyContext#consumerNodeIDToProvider}
+	 * describes the mappings performed on the Node ID.
 	 * 
 	 */
-	public IDigitalSubject addSubject(URI subjectType, String subjectID) 
-		throws IdASException, InvalidTypeException, InvalidSubjectIDException, SubjectExistsException 
+	public INode addNode(URI nodeType, String nodeID) 
+		throws IdASException, InvalidTypeException, InvalidNodeIDException, NodeExistsException 
 	{
 		if (!_bIsOpen || _providerContext == null)
 			throw new ContextNotOpenException();
@@ -737,12 +737,12 @@
 		if (!_bIsOpen || _providerContext == null)
 			throw new ContextNotOpenException();
 
-		IDigitalSubject providerDS = _providerContext.addSubject(
-				consumerDSTypeToProvider(subjectType), consumerSubjectIDToProvider(subjectID));
+		INode providerDS = _providerContext.addNode(
+				consumerNodeTypeToProvider(nodeType), consumerNodeIDToProvider(nodeID));
 		
-		return new JSPolicyDigitalSubject(	_dsMetadataPDPs,  
+		return new JSPolicyNode(	_dsMetadataPDPs,  
 				_attributePDP, _attributeMetadataPDP, _attributeMetadataPDP,
-				this, providerDS, subjectID, subjectType);
+				this, providerDS, nodeID, nodeType);
 	}
 
 	/**
@@ -748,7 +748,7 @@
 	/**
 	 * TODO implement this function
 	 * 
-	 * This Context Provider allows Digital Subject Types, Subject ID, metadata,
+	 * This Context Provider allows Node Types, Node ID, metadata,
 	 * and attribute values to be mapped from values passed by consumers of this
 	 * Context Provider to types and values for storage.
 	 * 
@@ -753,10 +753,10 @@
 	 * Context Provider to types and values for storage.
 	 * 
 	 * The PDP described by
-	 * {@link org.eclipse.higgins.idas.cp.jspolicy.JSPolicyContext#consumerDSTypeToProvider}
-	 * contains the type mappings performed on the Subject type, the PDP described by
-	 * {@link org.eclipse.higgins.idas.cp.jspolicy.JSPolicyContext#consumerSubjectIDToProvider}
-	 * describes the mappings performed on the subject ID.  the PDP described by
+	 * {@link org.eclipse.higgins.idas.cp.jspolicy.JSPolicyContext#consumerNodeTypeToProvider}
+	 * contains the type mappings performed on the Node type, the PDP described by
+	 * {@link org.eclipse.higgins.idas.cp.jspolicy.JSPolicyContext#consumerNodeIDToProvider}
+	 * describes the mappings performed on the Node ID.  the PDP described by
 	 * {@link org.eclipse.higgins.idas.cp.jspolicy.JSPolicyContext#consumerATypeToProvider}
 	 * describes the mappings performed on the attribute types. The PDP described
 	 * by
@@ -764,10 +764,10 @@
 	 * describes the value mappings which will occur. <p>
 	 * 
 	 */
-	public IDigitalSubject addSubject(IDigitalSubject copyFrom) throws IdASException, SubjectExistsException 
+	public INode addNode(INode copyFrom) throws IdASException, NodeExistsException 
 	{
-		JSPolicyDigitalSubject consumerDS = (JSPolicyDigitalSubject)this.addSubject(
-						copyFrom.getSubjectType(), copyFrom.getSubjectID());
+		JSPolicyNode consumerDS = (JSPolicyNode)this.addNode(
+						copyFrom.getNodeType(), copyFrom.getNodeID());
 
 		/* deep copy of attributes */
 		Iterator itr = copyFrom.getAttributes();
@@ -910,12 +910,12 @@
 	/**
 	 * TODO implement this function
 	 * 
-	 * @see org.eclipse.higgins.idas.api.IContext#getSubjects(org.eclipse.higgins.idas.api.IFilter)
+	 * @see org.eclipse.higgins.idas.api.IContext#getNodes(org.eclipse.higgins.idas.api.IFilter)
 	 */
-	public Iterator getSubjects(
+	public Iterator getNodes(
 		IFilter filter) throws IdASException
 	{
-		return getSubjects(filter, null);
+		return getNodes(filter, null);
 	}
 
 	/**
@@ -921,10 +921,10 @@
 	/**
 	 * TODO implement this function
 	 * 
-	 * @see org.eclipse.higgins.idas.api.IContext#getSubjects(org.eclipse.higgins.idas.api.IFilter,
+	 * @see org.eclipse.higgins.idas.api.IContext#getNodes(org.eclipse.higgins.idas.api.IFilter,
 	 *      java.util.Iterator)
 	 */
-	public Iterator getSubjects(
+	public Iterator getNodes(
 		IFilter filter,
 		Iterator consumerSelectionList) throws IdASException		
 	{
@@ -935,11 +935,11 @@
 	}
 
 	/**
-	 * @see org.eclipse.higgins.idas.api.IContext#verifySubjectAttributes(java.lang.String,
+	 * @see org.eclipse.higgins.idas.api.IContext#verifyNodeAttributes(java.lang.String,
 	 *      java.util.Iterator)
 	 */
-	public boolean verifySubjectAttributes(
-		String subjectID,
+	public boolean verifyNodeAttributes(
+		String nodeID,
 		Iterator attributes) throws IdASException
 	{
 		if (!_bIsOpen)
@@ -945,7 +945,7 @@
 		if (!_bIsOpen)
 			throw new ContextNotOpenException();
 	
-		return _providerContext.verifySubjectAttributes(consumerSubjectIDToProvider(subjectID),
+		return _providerContext.verifyNodeAttributes(consumerNodeIDToProvider(nodeID),
 			new BasicAttributePDPIter(_attributePDP, _attributeMetadataPDP,
 					_attributeValueMetadataPDP, attributes, false));
 	}
@@ -966,13 +966,13 @@
 
 	/**
 	 */
-	protected String consumerSubjectIDToProvider(
-		String subjectID) throws IdASException
+	protected String consumerNodeIDToProvider(
+		String nodeID) throws IdASException
 	{
 		try
 		{
-			return JScriptExecHelper.transformString(_consumerSubjectIDToProviderExec,
-					consumerIDParamName, subjectID);
+			return JScriptExecHelper.transformString(_consumerNodeIDToProviderExec,
+					consumerIDParamName, nodeID);
 		}
 		catch (JScriptException e)
 		{
@@ -982,13 +982,13 @@
 
 	/**
 	 */
-	protected String providerSubjectIDToConsumer(
-		String subjectID) throws IdASException
+	protected String providerNodeIDToConsumer(
+		String nodeID) throws IdASException
 	{
 		try
 		{
-			return JScriptExecHelper.transformString(_providerSubjectIDToConsumerExec,
-					providerIDParamName, subjectID);
+			return JScriptExecHelper.transformString(_providerNodeIDToConsumerExec,
+					providerIDParamName, nodeID);
 		}
 		catch (JScriptException e)
 		{
@@ -998,7 +998,7 @@
 
 	/**
 	 */
-	protected URI consumerDSTypeToProvider(
+	protected URI consumerNodeTypeToProvider(
 		URI type) throws IdASException
 	{
 		try
@@ -1003,7 +1003,7 @@
 	{
 		try
 		{
-			return JScriptExecHelper.transformURI(_consumerDSTypeToProviderExec,
+			return JScriptExecHelper.transformURI(_consumerNodeTypeToProviderExec,
 					consumerTypeParamName, type);
 		}
 		catch (JScriptException e)
@@ -1014,7 +1014,7 @@
 
 	/**
 	 */
-	protected URI providerDSTypeToConsumer(
+	protected URI providerNodeTypeToConsumer(
 		URI type) throws IdASException
 	{
 		try
@@ -1019,7 +1019,7 @@
 	{
 		try
 		{
-			return JScriptExecHelper.transformURI(_providerDSTypeToConsumerExec,
+			return JScriptExecHelper.transformURI(_providerNodeTypeToConsumerExec,
 					providerTypeParamName, type);
 		}
 		catch (JScriptException e)
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jspolicy/src/org/eclipse/higgins/idas/cp/jspolicy/JSPolicyDigitalSubject.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jspolicy/src/org/eclipse/higgins/idas/cp/jspolicy/JSPolicyDigitalSubject.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jspolicy/src/org/eclipse/higgins/idas/cp/jspolicy/JSPolicyDigitalSubject.java	(working copy)
@@ -1,352 +0,0 @@
-/**
- * Copyright (c) 2007-2008 Novell, Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *  	Duane Buss
- *  	Tom Doman
- *		Jim Sermersheim
- */
-
-package org.eclipse.higgins.idas.cp.jspolicy;
-
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.Iterator;
-
-import org.eclipse.higgins.idas.api.IAttribute;
-import org.eclipse.higgins.idas.api.IContext;
-import org.eclipse.higgins.idas.api.IDigitalSubject;
-import org.eclipse.higgins.idas.api.IHasAttributes;
-import org.eclipse.higgins.idas.api.IHasMetadata;
-import org.eclipse.higgins.idas.api.IMetadata;
-import org.eclipse.higgins.idas.api.ISingleValuedAttribute;
-import org.eclipse.higgins.idas.api.IdASException;
-import org.eclipse.higgins.idas.api.InvalidTypeException;
-import org.eclipse.higgins.idas.api.NotImplementedException;
-import org.eclipse.higgins.idas.api.NotSingleValuedAttributeException;
-import org.eclipse.higgins.idas.api.model.IDigitalSubjectModel;
-import org.eclipse.higgins.util.idas.cp.BasicAttributePDP;
-import org.eclipse.higgins.util.idas.cp.BasicAttributePDPIter;
-import org.eclipse.higgins.util.idas.cp.MetadataPDPIter;
-import org.eclipse.higgins.util.idas.cp.jscript.JScriptCPAttributePDPs;
-import org.eclipse.higgins.util.idas.cp.jscript.JScriptCPMetadataPDPs;
-
-/**
- * A <a href="http://www.eclipse.org/higgins/";>Higgins</a> Digital subject
- * implementation allowing for javascript policy at critical points. Utilizing
- * Mozilla's <a href"http://www.mozilla.org/rhino/";>Rhino</a> project, this
- * code currently supports JavaScript PDPs at the following points:
- * 
- * <UL>
- * <li>{@link #getSubjectID()} Subject IDs may be mapped from stored (real) values to
- * what is presented by consumers of this Context Provider.</li>
- * <li>{@link #getSubjectType()} Digital Subject types may be mapped from stored
- * (real) values to what is presented by consumers of this Context Provider.</li>
-  * </UL>
- * 
- * Additional PDPs found in
- * {@link org.eclipse.higgins.idas.cp.jspolicy.JSPolicyContext},
- * {@link org.eclipse.higgins.idas.cp.jspolicy.JSPolicyDigitalSubject}, and
- * TODO add doc
- * 
- * @author dbuss@xxxxxxxxxx
- * @author tdoman@xxxxxxxxxx
- */
-
-public class JSPolicyDigitalSubject implements IDigitalSubject, IHasMetadata
-{
-	private JSPolicyContext _policyContext;
-	private IDigitalSubject _providerDigitalSubject;
-	private String _uniqueID;
-	private URI _type;
-	private JScriptCPMetadataPDPs _dsMetadataPDPs;
-	private JScriptCPMetadataPDPs _attributeValueMetadataPDP;
-	private JScriptCPMetadataPDPs _attributeMetadataPDP;
-	private JScriptCPAttributePDPs _attributePDP;
-	
-	/*
-	 */
-	protected JSPolicyDigitalSubject(
-			JScriptCPMetadataPDPs dsMetadataPDPs,
-			JScriptCPAttributePDPs attributePDP,
-			JScriptCPMetadataPDPs attributeValueMetadataPDP,
-			JScriptCPMetadataPDPs attributeMetadataPDP,
-			JSPolicyContext policyContext,
-			IDigitalSubject providerDigitalSubject,
-			String consumerSubjectID,
-			URI consumerURI) throws IdASException
-	{
-		_policyContext = policyContext;
-		_providerDigitalSubject = providerDigitalSubject;
-		_uniqueID = consumerSubjectID;
-		_type = consumerURI;
-
-		_dsMetadataPDPs = dsMetadataPDPs; 
-		_attributeValueMetadataPDP =  attributeValueMetadataPDP;
-		_attributeMetadataPDP = attributeMetadataPDP;
-		_attributePDP =  attributePDP;
-	}
-
-	/*
-	 * @see org.eclipse.higgins.idas.api.IDigitalSubject#getContext
-	 */
-	public IContext getContext() throws IdASException
-	{
-		return _policyContext;
-	}
-
-	/**
-	 * 
-	 * Returns the Subject ID of this Digital Subject.
-	 * 
-	 * This Context Provider allows Subject IDs to be mapped from stored (real) values
-	 * to what is presented by consumers of this Context Provider.
-	 * <p>
-	 * 
-	 * Please see
-	 * {@link org.eclipse.higgins.idas.cp.jspolicy.JSPolicyContext#consumerSubjectIDToProvider}
-	 * for usage and examples.
-	 * 
-	 * @see org.eclipse.higgins.idas.api.IDigitalSubject#getSubjectID
-	 */
-	public String getSubjectID() throws IdASException
-	{
-		if (_uniqueID == null)
-			_uniqueID = _policyContext.providerSubjectIDToConsumer(_providerDigitalSubject.getSubjectID());
-
-		return _uniqueID;
-	}
-
-	/**
-	 * Returns the type of this Digital Subject.
-	 * 
-	 * This Context Provider allows Digital Subject types to be mapped from
-	 * stored (real) values to what is presented by consumers of this Context
-	 * Provider by inserting JavaScript into the configuration file.
-	 * <p>
-	 * 
-	 * Please see
-	 * {@link org.eclipse.higgins.idas.cp.jspolicy.JSPolicyContext#consumerSubjectIDToProvider}
-	 * 
-	 * 
-	 */
-	public URI getSubjectType() throws IdASException
-	{
-		if (_type == null)
-			_type = _policyContext.providerDSTypeToConsumer(_providerDigitalSubject.getSubjectType());
-		return _type;
-	}
-
-	/**
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.higgins.idas.api.IHasAttributes#getAttributes()
-	 */
-	public Iterator getAttributes() throws IdASException
-	{
-		return new BasicAttributePDPIter( _attributePDP, _attributeMetadataPDP, 
-				_attributeValueMetadataPDP,
-			_providerDigitalSubject.getAttributes(), true);
-	}
-
-	/**
-	 * This Context Provider allows Attribute types to be mapped from stored
-	 * (real) values to what is presented by consumers of this Context Provider
-	 * by inserting JavaScript into the configuration file. Since one consumer
-	 * type may map to more than one virtual type each potential type is examined
-	 * to see if the provider object has values.
-	 * 
-	 * Because of the error prone nature of this call it is recomended that it be
-	 * used with extreme caution.
-	 * 
-	 * The PDP described by
-	 * {@link org.eclipse.higgins.idas.cp.jspolicy.JSPolicyContext#consumerATypeToProvider}
-	 * contains the type mappings.
-	 * <p>
-	 * 
-	 * TODO: Should we have a PDP just for this function which controls the
-	 * behavior of error handling and type mapping?
-	 *
-	 * @see org.eclipse.higgins.idas.api.IHasAttributes#getAttribute(java.net.URI)
-	 */
-	public IAttribute getAttribute(
-		URI attributeID) throws IdASException
-	{
-		if (_attributePDP != null)
-		{
-			IAttribute providerAttr = null;
-			Iterator itr = _attributePDP.consumerIDToProviders(attributeID);
-
-			while (itr.hasNext())
-			{
-				Object obj = itr.next();
-				if (obj instanceof URI)
-				{
-					providerAttr = _providerDigitalSubject.getAttribute((URI) obj);
-				}
-				else if (obj instanceof String)
-				{
-					try
-					{
-						providerAttr = _providerDigitalSubject.getAttribute(new URI(((String) (obj))));
-					}
-					catch (URISyntaxException e)
-					{
-						throw new IdASException(e);
-					}
-				}
-				else
-					throw new IdASException(
-						"Illegal object type returned from mapping, consumer URI, got: "
-							+ obj.getClass().toString());
-				if (providerAttr != null)
-					break;
-			}
-			if (providerAttr != null)
-				return new BasicAttributePDP(_attributePDP, 
-						_attributeMetadataPDP, _attributeValueMetadataPDP,
-						providerAttr,true);
-			else
-				return null;
-		}
-		else
-		{
-			/* no policy */
-			return _providerDigitalSubject.getAttribute(attributeID);
-		}
-	}
-	
-	public ISingleValuedAttribute getSingleValuedAttribute(URI attrType) throws IdASException, NotSingleValuedAttributeException {
-		IAttribute attr = getAttribute(attrType);
-		if (attr.isSingleValued()) {
-			return (ISingleValuedAttribute)attr;
-		}
-		else {
-			throw new NotSingleValuedAttributeException(attrType + "is not a single-valued attribute");
-		}
-	}	
-
-	
-	/**
-	 * TODO: this may return unmapped metadata, this should be fixed.
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.higgins.idas.api.IHasMetadata#getMetadataSet()
-	 */
-	public Iterator getMetadataSet() throws IdASException
-	{
-		if ( _dsMetadataPDPs != null)
-			return  new MetadataPDPIter( _dsMetadataPDPs, 
-					_providerDigitalSubject.getMetadataSet(), true);
-		else
-			return _providerDigitalSubject.getMetadataSet();
-	}
-
-	/**
-	 * 
-	 */
-	public IMetadata getMetadata(URI metadataID) throws IdASException
-	{
-		IMetadata metadataItem = null;
-		Iterator iter = this.getMetadataSet();
-		while (iter.hasNext())
-		{
-			metadataItem = (IMetadata)iter.next();
-			if (metadataID.equals(metadataItem.getModel().getType()))
-				break;
-		}
-		return metadataItem;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.higgins.idas.api.IHasMetadata#addMetadata(java.net.URI)
-	 */
-	public IMetadata addMetadata(URI type) throws IdASException, InvalidTypeException 
-	{
-		throw new NotImplementedException();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.higgins.idas.api.IHasMetadata#addMetadata(org.eclipse.higgins.idas.api.IMetadata)
-	 */
-	public IMetadata addMetadata(IMetadata copyFrom) throws IdASException 
-	{
-		throw new NotImplementedException();
-	}
-
-	/**
-	 * TODO: implement this
-	 */
-	public IDigitalSubjectModel getModel() throws IdASException
-	{
-		throw new NotImplementedException();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.higgins.idas.api.IDigitalSubject#remove()
-	 */
-	public void remove() throws IdASException {
-		_providerDigitalSubject.remove();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.higgins.idas.api.IHasAttributes#addAttribute(java.net.URI)
-	 */
-	public IAttribute addAttribute(URI type) throws IdASException, InvalidTypeException 
-	{
-		return new BasicAttributePDP(_attributePDP, _attributeMetadataPDP, 
-				_attributeValueMetadataPDP,  null, false);
-	}
-
-	/**
-	 * TODO there are three cases we have to deal with 
-	 * 1 - The attribute is a generic IAttribute created from some other iContext
-	 * 2 - The attribute was returned from this Policy Context and the values are already mapped
-	 * 3 - The attribute was created using addAttribute and values need to be mapped. 
-	 * @see org.eclipse.higgins.idas.api.IHasAttributes#addAttribute(org.eclipse.higgins.idas.api.IAttribute)
-	 */
-	public IAttribute addAttribute(IAttribute copyFrom) throws IdASException 
-	{
-		if ( copyFrom instanceof BasicAttributePDP)
-			return new BasicAttributePDP(_attributePDP, _attributeMetadataPDP, 
-					_attributeValueMetadataPDP,  copyFrom,  true);
-		else
-			return new BasicAttributePDP(_attributePDP, _attributeMetadataPDP, 
-					_attributeValueMetadataPDP, copyFrom, true);
-	}
-
-	public boolean equals(IHasMetadata metadataSet) throws IdASException {
-		// TODO Auto-generated method stub
-		return false;
-	}
-
-	public boolean equals(IHasAttributes attributes) throws IdASException {
-		// TODO Auto-generated method stub
-		return false;
-	}
-
-	public void removeAttribute(URI attrType) throws IdASException {
-		// TODO Auto-generated method stub
-		
-	}
-
-	public void removeAttributeValue(URI attrType, Object value)
-			throws IdASException {
-		// TODO Auto-generated method stub
-		
-	}
-
-	public void removeAttributeValue(IAttribute attr) throws IdASException {
-		// TODO Auto-generated method stub
-		
-	}
-
-}
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jspolicy/src/org/eclipse/higgins/idas/cp/jspolicy/JSPolicyNode.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jspolicy/src/org/eclipse/higgins/idas/cp/jspolicy/JSPolicyNode.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jspolicy/src/org/eclipse/higgins/idas/cp/jspolicy/JSPolicyNode.java	(working copy)
@@ -19,7 +19,7 @@
 
 import org.eclipse.higgins.idas.api.IAttribute;
 import org.eclipse.higgins.idas.api.IContext;
-import org.eclipse.higgins.idas.api.IDigitalSubject;
+import org.eclipse.higgins.idas.api.INode;
 import org.eclipse.higgins.idas.api.IHasAttributes;
 import org.eclipse.higgins.idas.api.IHasMetadata;
 import org.eclipse.higgins.idas.api.IMetadata;
@@ -28,7 +28,7 @@
 import org.eclipse.higgins.idas.api.InvalidTypeException;
 import org.eclipse.higgins.idas.api.NotImplementedException;
 import org.eclipse.higgins.idas.api.NotSingleValuedAttributeException;
-import org.eclipse.higgins.idas.api.model.IDigitalSubjectModel;
+import org.eclipse.higgins.idas.api.model.INodeModel;
 import org.eclipse.higgins.util.idas.cp.BasicAttributePDP;
 import org.eclipse.higgins.util.idas.cp.BasicAttributePDPIter;
 import org.eclipse.higgins.util.idas.cp.MetadataPDPIter;
@@ -36,7 +36,7 @@
 import org.eclipse.higgins.util.idas.cp.jscript.JScriptCPMetadataPDPs;
 
 /**
- * A <a href="http://www.eclipse.org/higgins/";>Higgins</a> Digital subject
+ * A <a href="http://www.eclipse.org/higgins/";>Higgins</a> Node
  * implementation allowing for javascript policy at critical points. Utilizing
  * Mozilla's <a href"http://www.mozilla.org/rhino/";>Rhino</a> project, this
  * code currently supports JavaScript PDPs at the following points:
@@ -42,9 +42,9 @@
  * code currently supports JavaScript PDPs at the following points:
  * 
  * <UL>
- * <li>{@link #getSubjectID()} Subject IDs may be mapped from stored (real) values to
+ * <li>{@link #getNodeID()} Node IDs may be mapped from stored (real) values to
  * what is presented by consumers of this Context Provider.</li>
- * <li>{@link #getSubjectType()} Digital Subject types may be mapped from stored
+ * <li>{@link #getNodeType()} Node types may be mapped from stored
  * (real) values to what is presented by consumers of this Context Provider.</li>
   * </UL>
  * 
@@ -50,7 +50,7 @@
  * 
  * Additional PDPs found in
  * {@link org.eclipse.higgins.idas.cp.jspolicy.JSPolicyContext},
- * {@link org.eclipse.higgins.idas.cp.jspolicy.JSPolicyDigitalSubject}, and
+ * {@link org.eclipse.higgins.idas.cp.jspolicy.JSPolicyNode}, and
  * TODO add doc
  * 
  * @author dbuss@xxxxxxxxxx
@@ -57,10 +57,10 @@
  * @author tdoman@xxxxxxxxxx
  */
 
-public class JSPolicyDigitalSubject implements IDigitalSubject, IHasMetadata
+public class JSPolicyNode implements INode, IHasMetadata
 {
 	private JSPolicyContext _policyContext;
-	private IDigitalSubject _providerDigitalSubject;
+	private INode _providerNode;
 	private String _uniqueID;
 	private URI _type;
 	private JScriptCPMetadataPDPs _dsMetadataPDPs;
@@ -70,7 +70,7 @@
 	
 	/*
 	 */
-	protected JSPolicyDigitalSubject(
+	protected JSPolicyNode(
 			JScriptCPMetadataPDPs dsMetadataPDPs,
 			JScriptCPAttributePDPs attributePDP,
 			JScriptCPMetadataPDPs attributeValueMetadataPDP,
@@ -76,13 +76,13 @@
 			JScriptCPMetadataPDPs attributeValueMetadataPDP,
 			JScriptCPMetadataPDPs attributeMetadataPDP,
 			JSPolicyContext policyContext,
-			IDigitalSubject providerDigitalSubject,
-			String consumerSubjectID,
+			INode providerNode,
+			String consumerNodeID,
 			URI consumerURI) throws IdASException
 	{
 		_policyContext = policyContext;
-		_providerDigitalSubject = providerDigitalSubject;
-		_uniqueID = consumerSubjectID;
+		_providerNode = providerNode;
+		_uniqueID = consumerNodeID;
 		_type = consumerURI;
 
 		_dsMetadataPDPs = dsMetadataPDPs; 
@@ -92,7 +92,7 @@
 	}
 
 	/*
-	 * @see org.eclipse.higgins.idas.api.IDigitalSubject#getContext
+	 * @see org.eclipse.higgins.idas.api.INode#getContext
 	 */
 	public IContext getContext() throws IdASException
 	{
@@ -101,9 +101,9 @@
 
 	/**
 	 * 
-	 * Returns the Subject ID of this Digital Subject.
+	 * Returns the Subject ID of this Node.
 	 * 
-	 * This Context Provider allows Subject IDs to be mapped from stored (real) values
+	 * This Context Provider allows Node IDs to be mapped from stored (real) values
 	 * to what is presented by consumers of this Context Provider.
 	 * <p>
 	 * 
@@ -108,15 +108,15 @@
 	 * <p>
 	 * 
 	 * Please see
-	 * {@link org.eclipse.higgins.idas.cp.jspolicy.JSPolicyContext#consumerSubjectIDToProvider}
+	 * {@link org.eclipse.higgins.idas.cp.jspolicy.JSPolicyContext#consumerNodeIDToProvider}
 	 * for usage and examples.
 	 * 
-	 * @see org.eclipse.higgins.idas.api.IDigitalSubject#getSubjectID
+	 * @see org.eclipse.higgins.idas.api.INode#getNodeID
 	 */
-	public String getSubjectID() throws IdASException
+	public String getNodeID() throws IdASException
 	{
 		if (_uniqueID == null)
-			_uniqueID = _policyContext.providerSubjectIDToConsumer(_providerDigitalSubject.getSubjectID());
+			_uniqueID = _policyContext.providerNodeIDToConsumer(_providerNode.getNodeID());
 
 		return _uniqueID;
 	}
@@ -122,9 +122,9 @@
 	}
 
 	/**
-	 * Returns the type of this Digital Subject.
+	 * Returns the type of this Node.
 	 * 
-	 * This Context Provider allows Digital Subject types to be mapped from
+	 * This Context Provider allows Node types to be mapped from
 	 * stored (real) values to what is presented by consumers of this Context
 	 * Provider by inserting JavaScript into the configuration file.
 	 * <p>
@@ -130,14 +130,14 @@
 	 * <p>
 	 * 
 	 * Please see
-	 * {@link org.eclipse.higgins.idas.cp.jspolicy.JSPolicyContext#consumerSubjectIDToProvider}
+	 * {@link org.eclipse.higgins.idas.cp.jspolicy.JSPolicyContext#consumerNodeIDToProvider}
 	 * 
 	 * 
 	 */
-	public URI getSubjectType() throws IdASException
+	public URI getNodeType() throws IdASException
 	{
 		if (_type == null)
-			_type = _policyContext.providerDSTypeToConsumer(_providerDigitalSubject.getSubjectType());
+			_type = _policyContext.providerNodeTypeToConsumer(_providerNode.getNodeType());
 		return _type;
 	}
 
@@ -150,7 +150,7 @@
 	{
 		return new BasicAttributePDPIter( _attributePDP, _attributeMetadataPDP, 
 				_attributeValueMetadataPDP,
-			_providerDigitalSubject.getAttributes(), true);
+			_providerNode.getAttributes(), true);
 	}
 
 	/**
@@ -186,7 +186,7 @@
 				Object obj = itr.next();
 				if (obj instanceof URI)
 				{
-					providerAttr = _providerDigitalSubject.getAttribute((URI) obj);
+					providerAttr = _providerNode.getAttribute((URI) obj);
 				}
 				else if (obj instanceof String)
 				{
@@ -192,7 +192,7 @@
 				{
 					try
 					{
-						providerAttr = _providerDigitalSubject.getAttribute(new URI(((String) (obj))));
+						providerAttr = _providerNode.getAttribute(new URI(((String) (obj))));
 					}
 					catch (URISyntaxException e)
 					{
@@ -216,7 +216,7 @@
 		else
 		{
 			/* no policy */
-			return _providerDigitalSubject.getAttribute(attributeID);
+			return _providerNode.getAttribute(attributeID);
 		}
 	}
 	
@@ -241,9 +241,9 @@
 	{
 		if ( _dsMetadataPDPs != null)
 			return  new MetadataPDPIter( _dsMetadataPDPs, 
-					_providerDigitalSubject.getMetadataSet(), true);
+					_providerNode.getMetadataSet(), true);
 		else
-			return _providerDigitalSubject.getMetadataSet();
+			return _providerNode.getMetadataSet();
 	}
 
 	/**
@@ -283,7 +283,7 @@
 	/**
 	 * TODO: implement this
 	 */
-	public IDigitalSubjectModel getModel() throws IdASException
+	public INodeModel getModel() throws IdASException
 	{
 		throw new NotImplementedException();
 	}
@@ -290,10 +290,10 @@
 
 	/*
 	 * (non-Javadoc)
-	 * @see org.eclipse.higgins.idas.api.IDigitalSubject#remove()
+	 * @see org.eclipse.higgins.idas.api.INode#remove()
 	 */
 	public void remove() throws IdASException {
-		_providerDigitalSubject.remove();
+		_providerNode.remove();
 	}
 
 	/*
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jndi.test/src/org/eclipse/higgins/idas/cp/jndi/test/JNDICPTest.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jndi.test/src/org/eclipse/higgins/idas/cp/jndi/test/JNDICPTest.java	(revision 9292)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jndi.test/src/org/eclipse/higgins/idas/cp/jndi/test/JNDICPTest.java	(working copy)
@@ -25,7 +25,7 @@
 import org.eclipse.higgins.idas.api.IContext;
 import org.eclipse.higgins.idas.api.IContextFactory;
 import org.eclipse.higgins.idas.api.IContextId;
-import org.eclipse.higgins.idas.api.IDigitalSubject;
+import org.eclipse.higgins.idas.api.INode;
 import org.eclipse.higgins.idas.api.IFilter;
 import org.eclipse.higgins.idas.api.IFilterAttributeAssertion;
 import org.eclipse.higgins.idas.api.IAttributeValue;
@@ -82,10 +82,10 @@
 			IContextFactory factory = _registry.getContextFactory(contextId);
 			IContext context = factory.createContext(contextId);
 			assertNotNull(context);
-			String subjectID = context.open(new AuthNNamePasswordMaterials(context,
+			String nodeID = context.open(new AuthNNamePasswordMaterials(context,
 				"cn=admin,o=bandit", "admin"));
 
-			_displaySubjectInfo(context.getSubject(subjectID));
+			_displayNodeInfo(context.getNode(nodeID));
 
 		}
 		catch (Exception e)
@@ -103,15 +103,15 @@
 	}
 
 	/**
-	 * This creates and deletes a subject. In creating, it also adds two
+	 * This creates and deletes a node. In creating, it also adds two
 	 * attributes, one with two values.
 	 * 
 	 */
-	public void testCreateSubject()
+	public void testCreateNode()
 	{
-		String subjectIDIn = "cn=test,o=higgins";
+		String nodeIDIn = "cn=test,o=higgins";
 		IContext context = null;
-		IDigitalSubject ds = null;
+		INode ds = null;
 		try
 		{
 			context = _registry.createContext("testcontext2.xrds");
@@ -119,8 +119,8 @@
 			context.open(new AuthNNamePasswordMaterials(context, "cn=admin,o=bandit",
 				"admin"));
 
-			ds = _createPerson(context, subjectIDIn);
-			assertEquals(subjectIDIn, ds.getSubjectID());
+			ds = _createPerson(context, nodeIDIn);
+			assertEquals(nodeIDIn, ds.getNodeID());
 		}
 		catch (IdASException e)
 		{
@@ -151,14 +151,14 @@
 	}
 
 	/**
-	 * This creates, then updates, then deletes a subject.
+	 * This creates, then updates, then deletes a node.
 	 * 
 	 */
-	public void testUpdateSubject()
+	public void testUpdateNode()
 	{
-		String subjectIDIn = "cn=test,o=higgins";
+		String nodeIDIn = "cn=test,o=higgins";
 		IContext context = null;
-		IDigitalSubject ds = null;
+		INode ds = null;
 		try
 		{
 			context = _registry.createContext("testcontext2.xrds");
@@ -166,7 +166,7 @@
 			context.open(new AuthNNamePasswordMaterials(context, "cn=admin,o=bandit",
 				"admin"));
 
-			ds = _createPerson(context, subjectIDIn);
+			ds = _createPerson(context, nodeIDIn);
 			// TODO - a "replace" operation sure got ugly when we have to explicity
 			// add and remove attributes by removing all old values then adding the
 			// new value.
@@ -266,12 +266,12 @@
 	/**
 	 * test removing a value via a partial attribute we create
 	 */
-	public void testDigitalSubject_removeAttributeValue_IAttribute()
+	public void testNode_removeAttributeValue_IAttribute()
 	{
-		String subjectIDIn = "cn=test,o=higgins";
+		String NodeIDIn = "cn=test,o=higgins";
 		URI descURI = URI.create("description");
 		IContext context = null;
-		IDigitalSubject ds = null;
+		INode ds = null;
 		try
 		{
 			context = _registry.createContext("testcontext2.xrds");
@@ -279,7 +279,7 @@
 			context.open(new AuthNNamePasswordMaterials(context, "cn=admin,o=bandit",
 				"admin"));
 
-			ds = _createPerson(context, subjectIDIn);
+			ds = _createPerson(context, NodeIDIn);
 
 			IAttribute attr = context.buildAttribute(descURI);
 			attr.addSimpleValue(ISimpleAttrValue.STRING_TYPE_URI, "description 1");
@@ -325,12 +325,12 @@
 	/**
 	 * test removing an attribute without first getting it
 	 */
-	public void testDigitalSubject_removeAttributeValue_URI_Object()
+	public void testNode_removeAttributeValue_URI_Object()
 	{
-		String subjectIDIn = "cn=test,o=higgins";
+		String nodeIDIn = "cn=test,o=higgins";
 		URI descURI = URI.create("description");
 		IContext context = null;
-		IDigitalSubject ds = null;
+		INode ds = null;
 		try
 		{
 			context = _registry.createContext("testcontext2.xrds");
@@ -338,7 +338,7 @@
 			context.open(new AuthNNamePasswordMaterials(context, "cn=admin,o=bandit",
 				"admin"));
 
-			ds = _createPerson(context, subjectIDIn);
+			ds = _createPerson(context, nodeIDIn);
 
 			ds.removeAttributeValue(descURI, "description 1");
 			context.applyUpdates();
@@ -385,12 +385,12 @@
 	/**
 	 * test removing an attribute without first getting it
 	 */
-	public void testDigitalSubject_removeAttribute_URI()
+	public void testNode_removeAttribute_URI()
 	{
-		String subjectIDIn = "cn=test,o=higgins";
+		String nodeIDIn = "cn=test,o=higgins";
 		URI descURI = URI.create("description");
 		IContext context = null;
-		IDigitalSubject ds = null;
+		INode ds = null;
 		try
 		{
 			context = _registry.createContext("testcontext2.xrds");
@@ -398,7 +398,7 @@
 			context.open(new AuthNNamePasswordMaterials(context, "cn=admin,o=bandit",
 				"admin"));
 
-			ds = _createPerson(context, subjectIDIn);
+			ds = _createPerson(context, nodeIDIn);
 
 			ds.removeAttribute(descURI);
 			context.applyUpdates();
@@ -440,9 +440,9 @@
 	 */
 	public void testSetPassword()
 	{
-		String testSubject = "cn=testSetPassword,o=higgins";
+		String testNode = "cn=testSetPassword,o=higgins";
 		IContext context = null;
-		IDigitalSubject ds = null;
+		INode ds = null;
 		AuthNNamePasswordMaterials namePW;
 
 		try
@@ -452,8 +452,8 @@
 			namePW = new AuthNNamePasswordMaterials(context, "cn=admin,o=bandit", "admin");
 			context.open(namePW);
 
-			// Create a test subject and authenticate as that subject
-			ds = _createPerson(context, testSubject);
+			// Create a test node and authenticate as that node
+			ds = _createPerson(context, testNode);
 			// Blindly remove old password attribute and add a new value
 			ds.removeAttribute(new URI("userPassword"));
 			IAttribute pwAttr = ds.addAttribute(new URI("userPassword"));
@@ -494,9 +494,9 @@
 	 */
 	public void testChangePassword()
 	{
-		String testSubject = "cn=test,o=higgins";
+		String testNode = "cn=test,o=higgins";
 		IContext context = null;
-		IDigitalSubject ds = null;
+		INode ds = null;
 		AuthNNamePasswordMaterials namePW;
 		try
 		{
@@ -505,10 +505,10 @@
 			namePW = new AuthNNamePasswordMaterials(context, "cn=admin,o=bandit", "admin");
 			context.open(namePW);
 
-			// Create a test subject and authenticate as that subject
-			ds = _createPerson(context, testSubject);
+			// Create a test node and authenticate as that node
+			ds = _createPerson(context, testNode);
 			context.close();
-			namePW = new AuthNNamePasswordMaterials(context, testSubject, "secret");
+			namePW = new AuthNNamePasswordMaterials(context, testNode, "secret");
 			context.open(namePW);
 
 			// Remove old password attribute value and add a new one
@@ -520,11 +520,11 @@
 
 			// Now try to authenticate again, using the new password
 			context.close();
-			namePW = new AuthNNamePasswordMaterials(context, testSubject, "new secret");
+			namePW = new AuthNNamePasswordMaterials(context, testNode, "new secret");
 			context.open(namePW);
 
 			// print out the attr just for fun
-			ds = context.getSubject(testSubject);
+			ds = context.getNode(testNode);
 			pwAttr = ds.getAttribute(namePW.getManagedAttrID());
 			Iterator iter = pwAttr.getValues();
 			while (iter.hasNext())
@@ -585,13 +585,13 @@
 			attrAssertion.setAssertionValue(assertionValue);
 			filter.setAssertion(attrAssertion);
 
-			Iterator subjectIter;
-			subjectIter = context.getSubjects(filter);
-			while (subjectIter.hasNext())
+			Iterator nodeIter;
+			nodeIter = context.getNodes(filter);
+			while (nodeIter.hasNext())
 			{
-				IDigitalSubject subject = (IDigitalSubject) subjectIter.next();
+				INode node = (INode) nodeIter.next();
 				System.out.println("results from testSearchEMail");
-				_displaySubjectInfo(subject);
+				_displayNodeInfo(node);
 			}
 
 		}
@@ -611,7 +611,7 @@
 	 * Helper method to create a person for testing
 	 * 
 	 * @param context
-	 * @param subjectID
+	 * @param nodeID
 	 * @return
 	 * @throws IdASException
 	 * @throws URISyntaxException
@@ -616,12 +616,12 @@
 	 * @throws IdASException
 	 * @throws URISyntaxException
 	 */
-	private IDigitalSubject _createPerson(
+	private INode _createPerson(
 		IContext context,
-		String subjectID) throws IdASException, URISyntaxException
+		String nodeID) throws IdASException, URISyntaxException
 	{
 		IAttribute attr;
-		IDigitalSubject ds = context.addSubject(new URI("person"), subjectID);
+		INode ds = context.addNode(new URI("person"), nodeID);
 		attr = ds.addAttribute(new URI("sn"));
 		attr.addSimpleValue(ISimpleAttrValue.STRING_TYPE_URI, "surname");
 		attr = ds.addAttribute(new URI("cn"));
@@ -710,12 +710,12 @@
 			filter.addFilter(ocFilter);
 			filter.addFilter(cnFilter);
 
-			Iterator subjectIter;
-			subjectIter = context.getSubjects(filter);
-			while (subjectIter.hasNext())
+			Iterator nodeIter;
+			nodeIter = context.getNodes(filter);
+			while (nodeIter.hasNext())
 			{
-				IDigitalSubject subject = (IDigitalSubject) subjectIter.next();
-				_displaySubjectInfo(subject);
+				INode node = (INode) nodeIter.next();
+				_displayNodeInfo(node);
 			}
 
 			Vector attrs = new Vector();
@@ -724,9 +724,9 @@
 			attrs
 				.add(new URI(
 					"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/privatepersonalidentifier";));
-			IDigitalSubject subject = context.getSubject("cn=tdoman,ou=people,o=bandit",
+			INode node = context.getNode("cn=tdoman,ou=people,o=bandit",
 				attrs.iterator());
-			_displaySubjectInfo(subject);
+			_displayNodeInfo(node);
 
 			FileWriter owlFile = new FileWriter("test.owl");
 			owlFile.write(context.getSchema());
@@ -751,12 +751,12 @@
 		}
 	}
 
-	private void _displaySubjectInfo(
-		IDigitalSubject subject) throws IdASException
+	private void _displayNodeInfo(
+		INode node) throws IdASException
 	{
-		Iterator attrIter = subject.getAttributes();
-		System.out.println(subject.getSubjectID());
-		System.out.println(subject.getSubjectType());
+		Iterator attrIter = node.getAttributes();
+		System.out.println(node.getNodeID());
+		System.out.println(node.getNodeType());
 
 		while (attrIter.hasNext())
 		{
@@ -797,12 +797,12 @@
 		{
 			selfIssuedAuthNMaterials = new AuthNSelfIssuedMaterials(context, ppid, modulus,
 				exponent);
-			String subjectID = context.open(selfIssuedAuthNMaterials);
-			if (subjectID != null)
-				System.out.println("Subject ID from context open: " + subjectID);
+			String nodeID = context.open(selfIssuedAuthNMaterials);
+			if (nodeID != null)
+				System.out.println("Node ID from context open: " + nodeID);
 			else
-				System.out.println("Subject ID not found.");
-			assertEquals("dsanders", subjectID);
+				System.out.println("Node ID not found.");
+			assertEquals("dsanders", nodeID);
 		}
 		catch (IdASException e)
 		{
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jndi.test/TestConfiguration1.xml
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jndi.test/TestConfiguration1.xml	(revision 9292)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jndi.test/TestConfiguration1.xml	(working copy)
@@ -135,7 +135,7 @@
 									RESULT = map;
 								]]>
 							</Setting>
-							<Setting Name="consumerDSTypeToProvider" Type="htf:jscriptexec">
+							<Setting Name="consumerNodeTypeToProvider" Type="htf:jscriptexec">
 								<![CDATA[
 									var re = new RegExp("^http://www.eclipse.org/higgins/ontologies/2006/higgins/ldap#class_";, "i");
 									RESULT = String(consumerType.toString()).replace(re, "");
@@ -141,7 +141,7 @@
 									RESULT = String(consumerType.toString()).replace(re, "");
 								]]>
 							</Setting>
-							<Setting Name="providerDSTypeToConsumer" Type="htf:jscriptexec">
+							<Setting Name="providerNodeTypeToConsumer" Type="htf:jscriptexec">
 								<![CDATA[
 									RESULT = "http://www.eclipse.org/higgins/ontologies/2006/higgins/ldap#class_"; + String(providerType.toString());
 								]]>
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jndi.test/testcontext1.xrds
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jndi.test/testcontext1.xrds	(revision 9292)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jndi.test/testcontext1.xrds	(working copy)
@@ -104,7 +104,7 @@
 								}
 							]]>
 						</Setting>
-						<Setting Name="consumerSubjectIDToProvider" Type="htf:jscriptexec">
+						<Setting Name="consumerNodeIDToProvider" Type="htf:jscriptexec">
 							<![CDATA[
 								RESULT = "cn=" + consumerID + ",ou=people,dc=wag,dc=bandit-project,dc=org"
 							]]>
@@ -109,7 +109,7 @@
 								RESULT = "cn=" + consumerID + ",ou=people,dc=wag,dc=bandit-project,dc=org"
 							]]>
 						</Setting>
-						<Setting Name="providerSubjectIDToConsumer" Type="htf:jscriptexec">
+						<Setting Name="providerNodeIDToConsumer" Type="htf:jscriptexec">
 							<![CDATA[
 								var re = new RegExp("^cn=(.*),ou=people,dc=wag,dc=bandit-project,dc=org$", "i");
 								RESULT = String(providerID.toString()).replace(re, "$1");
@@ -134,7 +134,7 @@
 								RESULT = map;
 							]]>
 						</Setting>
-						<Setting Name="consumerDSTypeToProvider" Type="htf:jscriptexec">
+						<Setting Name="consumerNodeTypeToProvider" Type="htf:jscriptexec">
 							<![CDATA[
 								var re = new RegExp("^http://www.eclipse.org/higgins/ontologies/2006/higgins/ldap#class_";, "i");
 								RESULT = String(consumerType.toString()).replace(re, "");
@@ -140,7 +140,7 @@
 								RESULT = String(consumerType.toString()).replace(re, "");
 							]]>
 						</Setting>
-						<Setting Name="providerDSTypeToConsumer" Type="htf:jscriptexec">
+						<Setting Name="providerNodeTypeToConsumer" Type="htf:jscriptexec">
 							<![CDATA[
 								RESULT = "http://www.eclipse.org/higgins/ontologies/2006/higgins/ldap#class_"+String(providerType.toString());
 							]]>
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jndi.test/testcontext2.xrds
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jndi.test/testcontext2.xrds	(revision 9292)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jndi.test/testcontext2.xrds	(working copy)
@@ -120,7 +120,7 @@
 								RESULT = map;
 							]]>
 						</Setting>
-						<Setting Name="consumerDSTypeToProvider" Type="htf:jscriptexec">
+						<Setting Name="consumerNodeTypeToProvider" Type="htf:jscriptexec">
 							<![CDATA[
 								var re = new RegExp("^http://www.eclipse.org/higgins/ontologies/2006/higgins/ldap#class_";, "i");
 								RESULT = String(consumerType.toString()).replace(re, "");
@@ -126,7 +126,7 @@
 								RESULT = String(consumerType.toString()).replace(re, "");
 							]]>
 						</Setting>
-						<Setting Name="providerDSTypeToConsumer" Type="htf:jscriptexec">
+						<Setting Name="providerNodeTypeToConsumer" Type="htf:jscriptexec">
 							<![CDATA[
 								RESULT = "http://www.eclipse.org/higgins/ontologies/2006/higgins/ldap#class_"; + String(providerType.toString());
 							]]>
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jndi/src/org/eclipse/higgins/idas/cp/jndi/JNDIContext.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jndi/src/org/eclipse/higgins/idas/cp/jndi/JNDIContext.java	(revision 9298)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jndi/src/org/eclipse/higgins/idas/cp/jndi/JNDIContext.java	(working copy)
@@ -68,7 +68,7 @@
 import org.eclipse.higgins.idas.api.ContextOpenException;
 import org.eclipse.higgins.idas.api.IAttribute;
 import org.eclipse.higgins.idas.api.IContextId;
-import org.eclipse.higgins.idas.api.IDigitalSubject;
+import org.eclipse.higgins.idas.api.INode;
 import org.eclipse.higgins.idas.api.IFilter;
 import org.eclipse.higgins.idas.api.IFilterAttributeAssertion;
 import org.eclipse.higgins.idas.api.IAttributeValue;
@@ -74,9 +74,9 @@
 import org.eclipse.higgins.idas.api.IAttributeValue;
 import org.eclipse.higgins.idas.api.ISimpleAttrValue;
 import org.eclipse.higgins.idas.api.IdASException;
-import org.eclipse.higgins.idas.api.NoSuchSubjectException;
+import org.eclipse.higgins.idas.api.NoSuchNodeException;
 import org.eclipse.higgins.idas.api.NotImplementedException;
-import org.eclipse.higgins.idas.api.SubjectExistsException;
+import org.eclipse.higgins.idas.api.NodeExistsException;
 import org.eclipse.higgins.idas.api.model.IContextModel;
 import org.eclipse.higgins.idas.spi.BasicContext;
 import org.eclipse.higgins.idas.common.AuthNAnonymousMaterials;
@@ -99,7 +99,7 @@
 import org.eclipse.higgins.idas.spi.BasicValueNormalizedString;
 import org.eclipse.higgins.idas.spi.BasicValueString;
 import org.eclipse.higgins.idas.spi.BasicValueToken;
-import org.eclipse.higgins.idas.spi.SubjectNotification;
+import org.eclipse.higgins.idas.spi.NodeNotification;
 import org.eclipse.higgins.util.idas.cp.jscript.JScriptCPAttributePDPs;
 import org.eclipse.higgins.util.jscript.JScriptException;
 import org.eclipse.higgins.util.jscript.JScriptExec;
@@ -132,7 +132,7 @@
 	private HashMap _syntaxHashMap;
 	private IContextId _contextID;
 	private boolean _bIsOpen = false;
-	private String _currAddr, _subjectID, _contextURIs = "", _contextTypes = "";
+	private String _currAddr, _nodeID, _contextURIs = "", _contextTypes = "";
 	private XDasSession _xdasSession;
 	private Object _identity;
 	private boolean _bStartTLS = false;
@@ -139,10 +139,10 @@
 	private StartTlsResponse _tls;
 //	private ProxiedAuthorizationControl proxyAuthZ;
 
-	public static final String consumerSubjectIDToProvider = "consumerSubjectIDToProvider";
-	public static final String providerSubjectIDToConsumer = "providerSubjectIDToConsumer";
-	public static final String consumerDSTypeToProvider = "consumerDSTypeToProvider";
-	public static final String providerDSTypeToConsumer = "providerDSTypeToConsumer";
+	public static final String consumerNodeIDToProvider = "consumerNodeIDToProvider";
+	public static final String providerNodeIDToConsumer = "providerNodeIDToConsumer";
+	public static final String consumerNodeTypeToProvider = "consumerNodeTypeToProvider";
+	public static final String providerNodeTypeToConsumer = "providerNodeTypeToConsumer";
 	public static final String consumerAIDToProvider = "consumerAIDToProvider";
 	public static final String providerAIDToConsumer = "providerAIDToConsumer";
 	public static final String consumerATypeToProvider = "consumerATypeToProvider";
@@ -150,10 +150,10 @@
 	public static final String consumerAValueToProvider = "consumerAValueToProvider";
 	public static final String providerAValueToConsumer = "providerAValueToConsumer";
 
-	private JScriptExec _consumerSubjectIDToProviderExec;
-	private JScriptExec _providerSubjectIDToConsumerExec;
-	private JScriptExec _consumerDSTypeToProviderExec;
-	private JScriptExec _providerDSTypeToConsumerExec;
+	private JScriptExec _consumerNodeIDToProviderExec;
+	private JScriptExec _providerNodeIDToConsumerExec;
+	private JScriptExec _consumerNodeTypeToProviderExec;
+	private JScriptExec _providerNodeTypeToConsumerExec;
 	private JScriptCPAttributePDPs _attrPDPs;
 	private boolean _bSetupPDPs = true;
 
@@ -353,19 +353,19 @@
 
 	/**
 	 */
-	private String _lookupSubject(
+	private String _lookupNode(
 		IFilter lookupFilter) throws IdASException
 	{
-		String subjectID = null;
+		String nodeID = null;
 
 		if (lookupFilter != null)
 		{
-			Iterator subjects = this.getSubjects(lookupFilter);
-			while (subjects.hasNext())
+			Iterator nodes = this.getNodes(lookupFilter);
+			while (nodes.hasNext())
 			{
-				IDigitalSubject subject = (IDigitalSubject) subjects.next();
-				if (subjectID == null)
-					subjectID = subject.getSubjectID();
+				INode node = (INode) nodes.next();
+				if (nodeID == null)
+					nodeID = node.getNodeID();
 				else
 					throw new IdASException("Non-unique identity from AuthN materials.");
 			}
@@ -371,7 +371,7 @@
 			}
 		}
 
-		return subjectID;
+		return nodeID;
 	}
 
 	/**
@@ -390,11 +390,11 @@
 				Map jsPolicySettings = (Map)_contextSettings.get("JSPolicyAction");
 				if (jsPolicySettings != null)
 				{
-					_consumerSubjectIDToProviderExec = (JScriptExec)jsPolicySettings.get(consumerSubjectIDToProvider);
-					_providerSubjectIDToConsumerExec = (JScriptExec)jsPolicySettings.get(providerSubjectIDToConsumer);
+					_consumerNodeIDToProviderExec = (JScriptExec)jsPolicySettings.get(consumerNodeIDToProvider);
+					_providerNodeIDToConsumerExec = (JScriptExec)jsPolicySettings.get(providerNodeIDToConsumer);
 
-					_consumerDSTypeToProviderExec = (JScriptExec)jsPolicySettings.get(consumerDSTypeToProvider);
-					_providerDSTypeToConsumerExec = (JScriptExec)jsPolicySettings.get(providerDSTypeToConsumer);
+					_consumerNodeTypeToProviderExec = (JScriptExec)jsPolicySettings.get(consumerNodeTypeToProvider);
+					_providerNodeTypeToConsumerExec = (JScriptExec)jsPolicySettings.get(providerNodeTypeToConsumer);
 
 					_attrPDPs = new JScriptCPAttributePDPs(
 							(JScriptExec)jsPolicySettings.get(consumerAIDToProvider),
@@ -428,8 +428,8 @@
 			if (identity instanceof AuthNNamePasswordMaterials)
 			{
 				_env.put(Context.SECURITY_AUTHENTICATION, "simple");
-				_subjectID = ((AuthNNamePasswordMaterials) identity).getUsername();
-				_env.put(Context.SECURITY_PRINCIPAL, consumerSubjectIDToProvider(_subjectID));
+				_nodeID = ((AuthNNamePasswordMaterials) identity).getUsername();
+				_env.put(Context.SECURITY_PRINCIPAL, consumerNodeIDToProvider(_nodeID));
 				_env.put(Context.SECURITY_CREDENTIALS,
 					((AuthNNamePasswordMaterials) identity).getPassword());
 			}
@@ -447,7 +447,7 @@
 			}
 			else if (identity instanceof AuthNLeastPrivilegedUserMaterials)
 			{
-				_subjectID = (String) _env.get(Context.SECURITY_PRINCIPAL);
+				_nodeID = (String) _env.get(Context.SECURITY_PRINCIPAL);
 			}
 			else if (identity instanceof AuthNAnonymousMaterials)
 			{
@@ -516,9 +516,9 @@
 
 			if (lookupFilter != null)
 			{
-				_subjectID = _lookupSubject(lookupFilter);
-				if (_subjectID == null)
-					throw new IdASException("AuthN materials produced no Digital Subject ID: "
+				_nodeID = _lookupNode(lookupFilter);
+				if (_nodeID == null)
+					throw new IdASException("AuthN materials produced no Node ID: "
 						+ identity.toString());
 			}
 		}
@@ -527,7 +527,7 @@
 			/* Context already open for this identity. */
 			_bIsOpen = true;
 		}
-		return _subjectID;
+		return _nodeID;
 	}
 
 	/**
@@ -538,11 +538,11 @@
 		if (e instanceof javax.naming.CommunicationException)
 			_destroyContext();
 		else if (e instanceof javax.naming.NameAlreadyBoundException)
-			throw new SubjectExistsException(e);
+			throw new NodeExistsException(e);
 		else if (e instanceof javax.naming.AuthenticationException)
 			throw new AuthenticationException(e);
 		else if (e instanceof javax.naming.NameNotFoundException)
-			throw new NoSuchSubjectException(e);
+			throw new NoSuchNodeException(e);
 		throw new IdASException(e);
 	}
 
@@ -666,9 +666,9 @@
 	/**
 	 * 
 	 */
-	public String getAuthSubject()
+	public String getAuthNodeID()
 	{
-		return _subjectID;
+		return _nodeID;
 	}
 
 	/**
@@ -809,7 +809,7 @@
 			if (!bFoundSup)
 			{
 				childElem = (DOMElement) classElem.addElement("rdfs:subClassOf");
-				childElem.addAttribute("rdf:resource", "&higgins;DigitalSubject");
+				childElem.addAttribute("rdf:resource", "&higgins;Node");
 			}
 		}
 		catch (NamingException e)
@@ -1081,7 +1081,7 @@
 				try {
 					schemaCtx = _ctx.getSchema("");
 				} catch (NamingException e2)	{
-					schemaCtx = _ctx.getSchema(consumerSubjectIDToProvider(_subjectID));
+					schemaCtx = _ctx.getSchema(consumerNodeIDToProvider(_nodeID));
 				}
 			}
 			// The OWL generator depends on these containers being visited in this
@@ -1133,10 +1133,10 @@
 
 	/**
 	 */
-	public IDigitalSubject getSubject(
-		String subjectID) throws IdASException
+	public INode getNode(
+		String nodeID) throws IdASException
 	{
-		return getSubject(subjectID, null);
+		return getNode(nodeID, null);
 	}
 
 	/**
@@ -1141,8 +1141,8 @@
 
 	/**
 	 */
-	public IDigitalSubject getSubject(
-		String subjectID,
+	public INode getNode(
+		String nodeID,
 		Iterator consumerSelectionList) throws IdASException
 	{
 		if (!_bIsOpen)
@@ -1149,10 +1149,10 @@
 			throw new ContextNotOpenException();
 
 		_emitXDASRecord(XDasEvents.XDAS_AE_QUERY_ACCOUNT, XDasOutcomes.XDAS_OUT_SUCCESS,
-			_getIdentity(), subjectID, null);
-		_log.debug("Searching for Digital Subject: " + subjectID + " as: "
+			_getIdentity(), nodeID, null);
+		_log.debug("Searching for Node: " + nodeID + " as: "
 			+ _getIdentity() + " in context: " + _contextURIs);
-		JNDIDigitalSubject subject = null;
+		JNDINode node = null;
 		NamingEnumeration results;
 		SearchControls controls = new SearchControls();
 		HashSet providerSelectionList = new HashSet();
@@ -1174,8 +1174,8 @@
 
 		try
 		{
-			String realSubjectID = consumerSubjectIDToProvider(subjectID);
-			results = _ctx.search(realSubjectID, "(objectclass=*)",
+			String realNodeID = consumerNodeIDToProvider(nodeID);
+			results = _ctx.search(realNodeID, "(objectclass=*)",
 				controls);
 
 			if (results.hasMore())
@@ -1181,9 +1181,9 @@
 			if (results.hasMore())
 			{
 				SearchResult result = (SearchResult) results.next();
-				subject = new JNDIDigitalSubject(this, result, realSubjectID, _attrPDPs);
+				node = new JNDINode(this, result, realNodeID, _attrPDPs);
 				if (results.hasMore())
-					throw new IdASException("Non-unique Subject ID");
+					throw new IdASException("Non-unique Node ID");
 			}
 		}
 		catch (NamingException e)
@@ -1191,7 +1191,7 @@
 			_handleNamingException(e);
 		}
 
-		return subject;
+		return node;
 	}
 
 	/**
@@ -1418,10 +1418,10 @@
 
 	/**
 	 */
-	public Iterator getSubjects(
+	public Iterator getNodes(
 		IFilter filter) throws IdASException
 	{
-		return getSubjects(filter, null);
+		return getNodes(filter, null);
 	}
 
 	/**
@@ -1426,7 +1426,7 @@
 
 	/**
 	 */
-	public Iterator getSubjects(
+	public Iterator getNodes(
 		IFilter filter,
 		Iterator consumerSelectionList) throws IdASException
 	{
@@ -1435,7 +1435,7 @@
 
 		_emitXDASRecord(XDasEvents.XDAS_AE_QUERY_ACCOUNT, XDasOutcomes.XDAS_OUT_SUCCESS,
 			_getIdentity(), filter == null ? null : filter.toString(), null);
-		_log.debug("Searching for Digital Subjects matching filter: " + filter == null ? null : filter.toString()
+		_log.debug("Searching for Nodes matching filter: " + filter == null ? null : filter.toString()
 			+ " as: " + _getIdentity() + " in context: " + _contextURIs);
 		HashSet subs = new HashSet();
 		String strFilter = "(objectclass=*)";
@@ -1451,7 +1451,7 @@
 		}
 		try
 		{
-			JNDIDigitalSubject subject;
+			JNDINode node;
 			SearchControls controls = new SearchControls();
 			NamingEnumeration results;
 			HashSet providerSelectionList = new HashSet();
@@ -1476,8 +1476,8 @@
 			while (results.hasMore())
 			{
 				SearchResult result = (SearchResult) results.next();
-				subject = new JNDIDigitalSubject(this, result, searchBase, _attrPDPs);
-				subs.add(subject);
+				node = new JNDINode(this, result, searchBase, _attrPDPs);
+				subs.add(node);
 			}
 		}
 		catch (NamingException e)
@@ -1490,8 +1490,8 @@
 
 	/**
 	 */
-	public void removeSubject(
-		String subjectID) throws IdASException
+	public void removeNode(
+		String nodeID) throws IdASException
 	{
 		if (!_bIsOpen)
 			throw new ContextNotOpenException();
@@ -1497,7 +1497,7 @@
 			throw new ContextNotOpenException();
 		try
 		{
-			_ctx.destroySubcontext(subjectID);
+			_ctx.destroySubcontext(nodeID);
 		}
 		catch (NamingException e)
 		{
@@ -1568,7 +1568,7 @@
 			throw new IdASException(e);
 		}
 
-		return providerDSTypeToConsumer(uriType);
+		return providerNodeTypeToConsumer(uriType);
 	}
 
 	/**
@@ -1574,7 +1574,7 @@
 	/**
 	 */
 	private boolean _isStructural(
-		String subjectName,
+		String nodeName,
 		String className,
 		Attribute ocAttr) throws IdASException
 	{
@@ -1706,13 +1706,13 @@
 
 	/**
 	 */
-	protected String consumerSubjectIDToProvider(
-		String subjectID) throws IdASException
+	protected String consumerNodeIDToProvider(
+		String nodeID) throws IdASException
 	{
 		try
 		{
-			return JScriptExecHelper.transformString(_consumerSubjectIDToProviderExec,
-					JScriptCPAttributePDPs.consumerIDParamName, subjectID);
+			return JScriptExecHelper.transformString(_consumerNodeIDToProviderExec,
+					JScriptCPAttributePDPs.consumerIDParamName, nodeID);
 		}
 		catch (JScriptException e)
 		{
@@ -1722,13 +1722,13 @@
 
 	/**
 	 */
-	protected String providerSubjectIDToConsumer(
-		String subjectID) throws IdASException
+	protected String providerNodeIDToConsumer(
+		String nodeID) throws IdASException
 	{
 		try
 		{
-			return JScriptExecHelper.transformString(_providerSubjectIDToConsumerExec,
-					JScriptCPAttributePDPs.providerIDParamName, subjectID);
+			return JScriptExecHelper.transformString(_providerNodeIDToConsumerExec,
+					JScriptCPAttributePDPs.providerIDParamName, nodeID);
 		}
 		catch (JScriptException e)
 		{
@@ -1738,7 +1738,7 @@
 
 	/**
 	 */
-	protected URI consumerDSTypeToProvider(
+	protected URI consumerNodeTypeToProvider(
 		URI type) throws IdASException
 	{
 		try
@@ -1743,7 +1743,7 @@
 	{
 		try
 		{
-			return JScriptExecHelper.transformURI(_consumerDSTypeToProviderExec,
+			return JScriptExecHelper.transformURI(_consumerNodeTypeToProviderExec,
 					JScriptCPAttributePDPs.consumerTypeParamName, type);
 		}
 		catch (JScriptException e)
@@ -1754,7 +1754,7 @@
 
 	/**
 	 */
-	protected URI providerDSTypeToConsumer(
+	protected URI providerNodeTypeToConsumer(
 		URI type) throws IdASException
 	{
 		try
@@ -1759,7 +1759,7 @@
 	{
 		try
 		{
-			return JScriptExecHelper.transformURI(_providerDSTypeToConsumerExec,
+			return JScriptExecHelper.transformURI(_providerNodeTypeToConsumerExec,
 					JScriptCPAttributePDPs.providerTypeParamName, type);
 		}
 		catch (JScriptException e)
@@ -1771,15 +1771,15 @@
 	/**
 	 * 
 	 */
-	public IDigitalSubject addSubject(
+	public INode addNode(
 		URI type,
-		String subjectID) throws IdASException
+		String nodeID) throws IdASException
 	{
-		JNDIDigitalSubject subject = new JNDIDigitalSubject(this, consumerDSTypeToProvider(type),
-			subjectID, _attrPDPs);
-		this.updateNotification(new SubjectNotification(subject,
-			SubjectNotification.UPDATE_ADD, null, null));
-		return subject;
+		JNDINode node = new JNDINode(this, consumerNodeTypeToProvider(type),
+			nodeID, _attrPDPs);
+		this.updateNotification(new NodeNotification(node,
+			NodeNotification.UPDATE_ADD, null, null));
+		return node;
 	}
 
 	/**
@@ -1803,13 +1803,13 @@
 
 	/**
 	 */
-	public IDigitalSubject addSubject(
-		IDigitalSubject copyFrom) throws IdASException, SubjectExistsException
+	public INode addNode(
+		INode copyFrom) throws IdASException, NodeExistsException
 	{
-		JNDIDigitalSubject subject = new JNDIDigitalSubject(this, copyFrom, _attrPDPs);
-		this.updateNotification(new SubjectNotification(subject,
-			SubjectNotification.UPDATE_ADD, null, null));
-		return subject;
+		JNDINode node = new JNDINode(this, copyFrom, _attrPDPs);
+		this.updateNotification(new NodeNotification(node,
+			NodeNotification.UPDATE_ADD, null, null));
+		return node;
 	}
 
 	public void applyUpdates() throws IdASException
@@ -1822,8 +1822,8 @@
 			Iterator keyIter = updateList.keySet().iterator();
 			while (keyIter.hasNext())
 			{
-				String subjectID = (String)keyIter.next();
-				_updateEntry(subjectID, (Vector)updateList.get(subjectID));
+				String nodeID = (String)keyIter.next();
+				_updateEntry(nodeID, (Vector)updateList.get(nodeID));
 				iCount++;
 			}
 			_log.debug(iCount + ((iCount == 1) ? " change " : " changes ") + "applied");
@@ -1839,26 +1839,26 @@
 	}
 
 	private void _updateEntry(
-		String subjectID,
-		Vector subjectNotifs) throws IdASException
+		String nodeID,
+		Vector nodeNotifs) throws IdASException
 	{
 		try
 		{
-			SubjectNotification [] aSubjectNotifs = (SubjectNotification []) subjectNotifs.toArray(new SubjectNotification[subjectNotifs.size()]);
-			_log.debug("Updating entry [" + subjectID + "], " + aSubjectNotifs[0].getAction());
-			if (aSubjectNotifs[0].getAction().compareTo(SubjectNotification.UPDATE_ADD) == 0)
+			NodeNotification [] aNodeNotifs = (NodeNotification []) nodeNotifs.toArray(new NodeNotification[nodeNotifs.size()]);
+			_log.debug("Updating entry [" + nodeID + "], " + aNodeNotifs[0].getAction());
+			if (aNodeNotifs[0].getAction().compareTo(NodeNotification.UPDATE_ADD) == 0)
 			{
-				BasicAttributes jndiAttrs = _subjectNotificationToBasicAttributes(aSubjectNotifs);
-				_ctx.createSubcontext(consumerSubjectIDToProvider(subjectID), jndiAttrs);
+				BasicAttributes jndiAttrs = _nodeNotificationToBasicAttributes(aNodeNotifs);
+				_ctx.createSubcontext(consumerNodeIDToProvider(nodeID), jndiAttrs);
 			}
-			else if (aSubjectNotifs[0].getAction().compareTo(SubjectNotification.UPDATE_REMOVE) == 0)
+			else if (aNodeNotifs[0].getAction().compareTo(NodeNotification.UPDATE_REMOVE) == 0)
 			{
-				_ctx.destroySubcontext(consumerSubjectIDToProvider(aSubjectNotifs[0].getSubject().getSubjectID()));
+				_ctx.destroySubcontext(consumerNodeIDToProvider(aNodeNotifs[0].getNode().getNodeID()));
 			}
-			else if (aSubjectNotifs[0].getAction().compareTo(SubjectNotification.UPDATE_ATTR_NOTIFY) == 0)
+			else if (aNodeNotifs[0].getAction().compareTo(NodeNotification.UPDATE_ATTR_NOTIFY) == 0)
 			{
-				Vector jndiMods = _subjectNotificationToModificationItems(aSubjectNotifs);
-				_ctx.modifyAttributes(consumerSubjectIDToProvider(subjectID),
+				Vector jndiMods = _nodeNotificationToModificationItems(aNodeNotifs);
+				_ctx.modifyAttributes(consumerNodeIDToProvider(nodeID),
 					(ModificationItem [])jndiMods.toArray(new ModificationItem[jndiMods.size()]));
 			}
 			else
@@ -1863,7 +1863,7 @@
 			}
 			else
 			{
-				throw new NotImplementedException(aSubjectNotifs[0].getAction());
+				throw new NotImplementedException(aNodeNotifs[0].getAction());
 			}
 		}
 		catch (NamingException e)
@@ -1872,17 +1872,17 @@
 		}
 	}
 
-	private BasicAttributes _subjectNotificationToBasicAttributes(
-		SubjectNotification[] subjectNotifs) throws IdASException
+	private BasicAttributes _nodeNotificationToBasicAttributes(
+		NodeNotification[] nodeNotifs) throws IdASException
 	{
 		BasicAttributes jndiAttrs = new BasicAttributes();
-		jndiAttrs.put(new BasicAttribute("objectClass", subjectNotifs[0].getSubject().getSubjectType().toString()));
+		jndiAttrs.put(new BasicAttribute("objectClass", nodeNotifs[0].getNode().getNodeType().toString()));
 
-		for (int iLoop = 0; iLoop < subjectNotifs.length; ++iLoop)
+		for (int iLoop = 0; iLoop < nodeNotifs.length; ++iLoop)
 		{
-			if (subjectNotifs[iLoop].getAction().compareTo(SubjectNotification.UPDATE_ATTR_NOTIFY) == 0)
+			if (nodeNotifs[iLoop].getAction().compareTo(NodeNotification.UPDATE_ATTR_NOTIFY) == 0)
 			{
-				AttributeNotification attrNotif = subjectNotifs[iLoop].getAttributeNotification();
+				AttributeNotification attrNotif = nodeNotifs[iLoop].getAttributeNotification();
 				if (attrNotif.getAction().compareTo(AttributeNotification.UPDATE_VALUE_NOTIFY) == 0)
 				{
 					AttributeValueNotification attrValNotif = attrNotif.getAttributeValueNotification();
@@ -1887,7 +1887,7 @@
 				{
 					AttributeValueNotification attrValNotif = attrNotif.getAttributeValueNotification();
 					if (attrValNotif.getAction().compareTo(AttributeValueNotification.UPDATE_ADD) != 0)
-						throw new IdASException("Unallowed attribute value notification type during subject creation: "
+						throw new IdASException("Unallowed attribute value notification type during node creation: "
 							+ attrValNotif.getAction());
 
 					/* If we got one attribute value added, we got them all. */
@@ -1902,15 +1902,15 @@
 				}
 				else
 				{
-					/* Any other kind of attribute notification should not occur during subject creation. */ 
-					throw new IdASException("Unallowed attribute notification type during subject creation: "
+					/* Any other kind of attribute notification should not occur during node creation. */ 
+					throw new IdASException("Unallowed attribute notification type during node creation: "
 						+ attrNotif.getAction());
 				}
 			}
-			else if (subjectNotifs[iLoop].getAction().compareTo(SubjectNotification.UPDATE_ADD) != 0)
+			else if (nodeNotifs[iLoop].getAction().compareTo(NodeNotification.UPDATE_ADD) != 0)
 			{
-				throw new IdASException("Unallowed subject notification type during subject creation: "
-					+ subjectNotifs[iLoop].getAction());
+				throw new IdASException("Unallowed node notification type during node creation: "
+					+ nodeNotifs[iLoop].getAction());
 			}
 		}
 		return jndiAttrs;
@@ -1916,13 +1916,13 @@
 		return jndiAttrs;
 	}
 
-	private Vector _subjectNotificationToModificationItems(
-		SubjectNotification[] subjectNotifs) throws IdASException
+	private Vector _nodeNotificationToModificationItems(
+		NodeNotification[] nodeNotifs) throws IdASException
 	{
 		Vector jndiMods = new Vector();
-		for (int iLoop = 0; iLoop < subjectNotifs.length; ++iLoop)
+		for (int iLoop = 0; iLoop < nodeNotifs.length; ++iLoop)
 		{
-			AttributeNotification attrNotif = subjectNotifs[iLoop].getAttributeNotification();
+			AttributeNotification attrNotif = nodeNotifs[iLoop].getAttributeNotification();
 			if (attrNotif.getAction().compareTo(AttributeNotification.UPDATE_VALUE_NOTIFY) == 0)
 			{
 				jndiMods.add(_attributeValueNotificationToModificationItem(attrNotif));
@@ -1931,10 +1931,10 @@
 			{
 				AttributeNotification addNotif = null, addValueNotif = null;
 
-				if (iLoop + 2 < subjectNotifs.length)
+				if (iLoop + 2 < nodeNotifs.length)
 				{
-					addNotif = subjectNotifs[iLoop + 1].getAttributeNotification();
-					addValueNotif = subjectNotifs[iLoop + 2].getAttributeNotification();
+					addNotif = nodeNotifs[iLoop + 1].getAttributeNotification();
+					addValueNotif = nodeNotifs[iLoop + 2].getAttributeNotification();
 				}
 
 				if ((addNotif != null) && (addValueNotif != null)
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jndi/src/org/eclipse/higgins/idas/cp/jndi/JNDIContextModel.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jndi/src/org/eclipse/higgins/idas/cp/jndi/JNDIContextModel.java	(revision 9298)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jndi/src/org/eclipse/higgins/idas/cp/jndi/JNDIContextModel.java	(working copy)
@@ -19,7 +19,7 @@
 
 import org.eclipse.higgins.idas.api.IdASException;
 import org.eclipse.higgins.idas.api.model.IContextModel;
-import org.eclipse.higgins.idas.api.model.IDigitalSubjectModel;
+import org.eclipse.higgins.idas.api.model.INodeModel;
 import org.eclipse.higgins.idas.api.model.IDisplayData;
 import org.eclipse.higgins.idas.api.model.IModel;
 
@@ -53,7 +53,7 @@
 			{
 				try
 				{
-					schemaCtx = _context.getDirContext().getSchema(_context.consumerSubjectIDToProvider(_context.getAuthSubject()));
+					schemaCtx = _context.getDirContext().getSchema(_context.consumerNodeIDToProvider(_context.getAuthNodeID()));
 				}
 				catch (NamingException e2)
 				{
@@ -69,8 +69,8 @@
 		return model;
 	}
 
-	public IDigitalSubjectModel getSubjectModel(
-		URI subjectType)
+	public INodeModel getNodeModel(
+		URI nodeType)
 	{
 		// TODO Auto-generated method stub
 		return null;
@@ -76,7 +76,7 @@
 		return null;
 	}
 
-	public Iterator getSubjectModels()
+	public Iterator getNodeModels()
 	{
 		// TODO Auto-generated method stub
 		return null;
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jndi/src/org/eclipse/higgins/idas/cp/jndi/JNDIDigitalSubject.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jndi/src/org/eclipse/higgins/idas/cp/jndi/JNDIDigitalSubject.java	(revision 9298)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jndi/src/org/eclipse/higgins/idas/cp/jndi/JNDIDigitalSubject.java	(working copy)
@@ -1,448 +0,0 @@
-/**
- * Copyright (c) 2006-2007 Novell, Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *		Tom Doman
- *		Jim Sermersheim
- */
-
-package org.eclipse.higgins.idas.cp.jndi;
-
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.Iterator;
-import java.util.Vector;
-
-import javax.naming.NamingEnumeration;
-import javax.naming.NamingException;
-import javax.naming.directory.Attribute;
-import javax.naming.directory.Attributes;
-import javax.naming.directory.SearchResult;
-
-import org.apache.log4j.Logger;
-import org.eclipse.higgins.idas.api.IAttribute;
-import org.eclipse.higgins.idas.api.IDigitalSubject;
-import org.eclipse.higgins.idas.api.ISimpleAttrValue;
-import org.eclipse.higgins.idas.api.IdASException;
-import org.eclipse.higgins.idas.api.InvalidTypeException;
-import org.eclipse.higgins.idas.api.NotImplementedException;
-import org.eclipse.higgins.idas.spi.AttributeNotification;
-import org.eclipse.higgins.idas.spi.BasicDigitalSubject;
-import org.eclipse.higgins.idas.spi.ISubjectContainer;
-import org.eclipse.higgins.idas.spi.MetadataNotification;
-import org.eclipse.higgins.idas.spi.BasicAttribute;
-import org.eclipse.higgins.idas.spi.BasicAttributeSet;
-import org.eclipse.higgins.idas.spi.BasicSimpleValue;
-import org.eclipse.higgins.idas.spi.SubjectNotification;
-import org.eclipse.higgins.idas.api.model.IDigitalSubjectModel;
-import org.eclipse.higgins.util.idas.cp.BasicAttributePDP;
-import org.eclipse.higgins.util.idas.cp.BasicAttributePDPIter;
-import org.eclipse.higgins.util.idas.cp.IAttributePDPs;
-
-/**
- * 
- * @author tdoman@xxxxxxxxxx
- * @author jimse@xxxxxxxxxx
- * 
- */
-
-public class JNDIDigitalSubject extends BasicDigitalSubject implements IDigitalSubject
-{
-	private Logger _log = Logger.getLogger(JNDIDigitalSubject.class.getName());
-	private JNDIContext _context;
-	private SearchResult _jndiResult;
-	private IAttributePDPs _attrPDPs;
-	private String _subjectID;
-	private URI _type;
-	private ISubjectContainer _container;
-	private Vector _readListJNDI = new Vector();
-	private boolean _bReadAllJNDI = false;
-	private String _searchBase;
-
-	/**
-	 * 
-	 * @param jndiContext
-	 * @param jndiResult
-	 * @param attrPDPs
-	 * @throws IdASException
-	 */
-	public JNDIDigitalSubject(
-		JNDIContext jndiContext,
-		SearchResult jndiResult,
-		String searchBase,
-		IAttributePDPs attrPDPs) throws IdASException
-	{
-		super(jndiContext);
-		_context = jndiContext;
-		_container = jndiContext;
-		_jndiResult = jndiResult;
-		_searchBase = searchBase;
-		_attrPDPs = attrPDPs;
-	}
-
-	/**
-	 * 
-	 * @param jndiContext
-	 * @param type
-	 * @param subjectID
-	 * @param attrPDPs
-	 * @throws IdASException
-	 */
-	public JNDIDigitalSubject(
-		JNDIContext jndiContext,
-		URI type,
-		String subjectID,
-		IAttributePDPs attrPDPs) throws IdASException
-	{
-		super(jndiContext, type, subjectID);
-		_context = jndiContext;
-		_container = jndiContext;
-		_subjectID = _context.consumerSubjectIDToProvider(subjectID);
-		_type = type;
-		_attrPDPs = attrPDPs;
-	}
-
-	/**
-	 * 
-	 * @param jndiContext
-	 * @param copyFrom
-	 * @param attrPDPs
-	 * @throws IdASException
-	 */
-	public JNDIDigitalSubject(
-		JNDIContext jndiContext,
-		IDigitalSubject copyFrom,
-		IAttributePDPs attrPDPs) throws IdASException
-	{
-		super(jndiContext, copyFrom.getSubjectType(), copyFrom.getSubjectID());
-		_context = jndiContext;
-		_container = jndiContext;
-		_subjectID = _context.consumerSubjectIDToProvider(copyFrom.getSubjectID());
-		_type = copyFrom.getSubjectType();
-		_attrPDPs = attrPDPs;
-	}
-
-	/**
-	 * 
-	 */
-	private String _getNameInNamespace(
-		SearchResult jndiResult) // throws IdASException
-	{
-		String retStr;
-//		try
-//		{
-			retStr = _jndiResult.getName();
-			if (retStr.length() == 0)
-				retStr = _searchBase;
-			else if (_searchBase.length() > 0)
-				retStr = retStr + "," + _searchBase;
-			// HACK: composeName does not work to create full names in 1.4 for some reason and
-			//		 getNameInNamespace is only in Java 1.5.  LDAP specific hack coded above.
-			// retStr = _context.getDirContext().composeName(_jndiResult.getName(), _searchBase);
-			
-			/* Here's something we should try
-			 * NameParser parser = _context.getDirContext().getNameParser(_jndiResult.getName());
-			 * parser.add(_searchBase);
-			 * return parser.toString();
- 			 */
-//		}
-//		catch (NamingException e)
-//		{
-//			throw new IdASException(e);
-//		}
-		return retStr;
-	}
-
-	/**
-	 */
-	public String getSubjectID() throws IdASException
-	{
-		if (_subjectID == null)
-		{
-			if (_jndiResult != null)
-				_subjectID = _context.providerSubjectIDToConsumer(_getNameInNamespace(_jndiResult));
-			else
-				throw new IdASException("No subject ID is set.");
-		}
-		return _subjectID;
-	}
-
-	/**
-	 */
-	public URI getSubjectType() throws IdASException
-	{
-		if (_type == null)
-		{
-			if (_jndiResult != null)
-				_type = _context.getSearchResultType(_jndiResult);
-			else
-				throw new IdASException("No subject type set.");
-		}
-		return _type; 
-	}
-
-	/**
-	 */
-	public Iterator getAttributes() throws IdASException
-	{
-		BasicAttributeSet attrSet = this.getBasicAttributeSet();		
-		boolean bHasItems = attrSet.getAttributes().hasNext();
-
-		if (!_bReadAllJNDI  && (_jndiResult != null))
-		{
-			NamingEnumeration jndiEnum;
-			Attributes jndiAttrs = _jndiResult.getAttributes();
-			jndiEnum = jndiAttrs.getAll();
-			try
-			{
-				while (jndiEnum.hasMore())
-				{
-					Attribute jndiAttr = (Attribute) jndiEnum.next();
-					NamingEnumeration jndiAttrValEnum = jndiAttr.getAll();
-					URI attrURI = new URI(jndiAttr.getID());
-					BasicAttribute attr = null;
-	
-					if (!bHasItems || (attrSet.getAttribute(attrURI) == null))
-					{
-						// TODO: Map based on syntaxes.
-						attr = attrSet.addUnnotifiedAttribute(attrURI);
-						while (jndiAttrValEnum.hasMore())
-						{
-							Object jndiValue = jndiAttrValEnum.next();
-							if (jndiValue instanceof String)
-							{
-								_log.debug("Attr: " + jndiAttr.getID() + " is a String");
-								attr.addSimpleValue(ISimpleAttrValue.STRING_TYPE_URI, (String) jndiValue);
-							}
-							else if (jndiValue instanceof byte[])
-							{
-								_log.debug("Attr: " + jndiAttr.getID() + " is a byte[]");
-								attr.addSimpleValue(ISimpleAttrValue.BASE64BINARY_TYPE_URI,
-									(byte[]) jndiValue);
-							}
-							else
-							{
-								_log.debug(jndiValue.getClass().toString());
-								attr.addSimpleValue(new URI(BasicSimpleValue.ATTR_VALUE_TYPE_URI_STR), jndiValue);
-							}
-						}
-						attr.setContainer(attrSet);
-						_readListJNDI.add(attrURI);
-					}
-				}
-				_bReadAllJNDI = true;
-			}
-			catch (NamingException e)
-			{
-				throw new IdASException(e);
-			}
-			catch (URISyntaxException e)
-			{
-				throw new IdASException(e);
-			}
-		}
-
-		/* No support for metadata PDPs. */
-		return new BasicAttributePDPIter(_attrPDPs, null, null, attrSet.getAttributes(), true);
-	}
-
-	/**
-	 */
-	public IAttribute getAttribute(
-		URI consumerAttrName) throws IdASException
-	{
-		IAttribute retAttr = null;
-		BasicAttributeSet attrSet = this.getBasicAttributeSet();
-
-		out: try
-		{
-			Iterator itr = _attrPDPs.consumerIDToProviders(consumerAttrName);
-			URI providerAttrName = null;
-
-			while (itr.hasNext())
-			{
-				providerAttrName = (URI) itr.next();
-				if (_readListJNDI.contains(providerAttrName))
-				{
-					retAttr = attrSet.getAttribute(providerAttrName);
-					_log.debug(providerAttrName + " already placed attrSet, container: " + ((BasicAttribute)retAttr).getContainer());
-					break out;
-				}
-				else if ((retAttr = attrSet.getAttribute(providerAttrName)) != null)
-				{
-					_log.debug(providerAttrName + " already added attrSet, container: " + ((BasicAttribute)retAttr).getContainer());
-					break out;
-				}
-				else if (_jndiResult != null)
-				{
-					BasicAttribute attr = null;
-					Attributes jndiAttrs = _jndiResult.getAttributes();
-					NamingEnumeration jndiEnum = jndiAttrs.getAll();
-					while (jndiEnum.hasMore())
-					{
-						Attribute jndiAttr = (Attribute) jndiEnum.next();
-						URI attrURI = new URI(jndiAttr.getID());
-
-						if (providerAttrName.compareTo(attrURI) == 0)
-						{
-							NamingEnumeration jndiAttrValEnum = jndiAttr.getAll();
-							attr = attrSet.addUnnotifiedAttribute(attrURI);
-							while (jndiAttrValEnum.hasMore())
-							{
-								Object jndiValue = jndiAttrValEnum.next();
-								if (jndiValue instanceof String)
-								{
-									_log.debug("Attr: " + jndiAttr.getID() + " is a String");
-									attr.addSimpleValue(ISimpleAttrValue.STRING_TYPE_URI,
-										(String) jndiValue);
-								}
-								else if (jndiValue instanceof byte[])
-								{
-									_log.debug("Attr: " + jndiAttr.getID() + " is a byte[]");
-									attr.addSimpleValue(ISimpleAttrValue.BASE64BINARY_TYPE_URI,
-										(byte[]) jndiValue);
-								}
-								else
-								{
-									_log.debug(jndiValue.getClass().toString());
-									attr.addSimpleValue(new URI(BasicSimpleValue.ATTR_VALUE_TYPE_URI_STR), jndiValue);
-								}
-							}
-							attr.setContainer(attrSet);
-							retAttr = attr;
-							_readListJNDI.add(attrURI);
-							_log.debug("Placed [" + attr.getAttrID().toString() + "] into attrSet, container: " + ((BasicAttribute)retAttr).getContainer());
-							break out;
-						}
-					}
-				}
-			}
-		}
-		catch (NamingException e)
-		{
-			throw new IdASException(e);
-		}
-		catch (URISyntaxException e)
-		{
-			throw new IdASException(e);
-		}
-
-		if (retAttr != null)
-			return new BasicAttributePDP(_attrPDPs, null, null, retAttr, true);
-		else
-			return retAttr;
-	}
-
-	/*
-	 * @see org.eclipse.higgins.idas.api.IHasAttributes#addAttribute(org.eclipse.higgins.idas.api.IAttribute)
-	 */
-	public IAttribute addAttribute(
-		IAttribute copyFrom) throws IdASException
-	{
-		BasicAttributeSet attrSet = this.getBasicAttributeSet();
-		BasicAttributePDP attrPDP = new BasicAttributePDP(_attrPDPs, null, null, copyFrom, false);
-		IAttribute attr = attrSet.getAttribute(attrPDP.getAttrID()); 
-			
-		if (attr != null)
-			return attr;
-		else
-			return super.addAttribute(attrPDP);
-	}
-
-	/*
-	 * @see org.eclipse.higgins.idas.api.IHasAttributes#addAttribute(java.net.URI)
-	 */
-	public IAttribute addAttribute(
-		URI type) throws IdASException, InvalidTypeException
-	{
-		Iterator itr = _attrPDPs.consumerIDToProviders(type);
-		BasicAttributeSet attrSet = this.getBasicAttributeSet();
-		URI providerType = (URI)itr.next();
-		IAttribute attr = attrSet.getAttribute(providerType);
-
-		if (attr != null)
-			return attr;
-		else
-			return super.addAttribute(providerType);
-	}
-
-	/**
-	 * @see org.eclipse.higgins.idas.api.IHasAttributes#removeAttribute(java.net.URI)
-	 */
-	public void removeAttribute(URI attrID) throws IdASException {
-		Iterator itr = _attrPDPs.consumerIDToProviders(attrID);
-		if (itr != null) {
-			URI providerType = (URI)itr.next();
-			super.removeAttribute(providerType);
-		} else {
-			super.removeAttribute(attrID);
-		}
-	}
-
-	/**
-	 * @see org.eclipse.higgins.idas.api.IHasAttributes#removeAttributeValue(IAttribute)
-	 */
-	public void removeAttributeValue(IAttribute attr) throws IdASException {
-		BasicAttributePDP attrPDP = new BasicAttributePDP(_attrPDPs, null, null, attr, false);
-		super.removeAttributeValue(attrPDP);
-	}
-
-	/**
-	 * @see org.eclipse.higgins.idas.api.IHasAttributes#removeAttributeValue(URI, Object)
-	 */
-	public void removeAttributeValue(URI attrID, Object value) throws IdASException {
-		Iterator itr = _attrPDPs.consumerIDToProviders(attrID);
-		if (itr != null) {
-			URI providerType = (URI)itr.next();
-			super.removeAttributeValue(providerType, value);
-		} else {
-			super.removeAttributeValue(attrID, value);
-		}
-	}
-
-
-	
-
-	/**
-	 */
-	public IDigitalSubjectModel getModel() throws IdASException
-	{
-		throw new NotImplementedException();
-	}
-
-	public void remove() throws IdASException
-	{
-		if (_container != null)
-		{
-			_container.updateNotification(new SubjectNotification(this, SubjectNotification.UPDATE_REMOVE,
-				null, null));
-		}
-	}
-
-	public void updateNotification(
-		AttributeNotification attrNotif) throws IdASException
-	{
-		_log.debug("Received attribute update notification - " + attrNotif.getAction() + ", " + attrNotif.getAttr().getAttrID().toString());
-		_log.debug("_containter " + ((_container != null) ? _container.toString() : "null"));		
-		if (_container != null)
-		{
-			_container.updateNotification(new SubjectNotification(this, SubjectNotification.UPDATE_ATTR_NOTIFY,
-				attrNotif, null));
-		}
-	}
-
-	public void updateNotification(
-		MetadataNotification metaNotif) throws IdASException
-	{
-		if (_container != null)
-		{
-			_container.updateNotification(new SubjectNotification(this, SubjectNotification.UPDATE_METADATA_NOTIFY,
-				null, metaNotif));
-		}
-	}
-
-}
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jndi/src/org/eclipse/higgins/idas/cp/jndi/JNDINode.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jndi/src/org/eclipse/higgins/idas/cp/jndi/JNDINode.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jndi/src/org/eclipse/higgins/idas/cp/jndi/JNDINode.java	(working copy)
@@ -25,7 +25,7 @@
 
 import org.apache.log4j.Logger;
 import org.eclipse.higgins.idas.api.IAttribute;
-import org.eclipse.higgins.idas.api.IDigitalSubject;
+import org.eclipse.higgins.idas.api.INode;
 import org.eclipse.higgins.idas.api.ISimpleAttrValue;
 import org.eclipse.higgins.idas.api.IdASException;
 import org.eclipse.higgins.idas.api.InvalidTypeException;
@@ -31,8 +31,8 @@
 import org.eclipse.higgins.idas.api.InvalidTypeException;
 import org.eclipse.higgins.idas.api.NotImplementedException;
 import org.eclipse.higgins.idas.spi.AttributeNotification;
-import org.eclipse.higgins.idas.spi.BasicDigitalSubject;
-import org.eclipse.higgins.idas.spi.ISubjectContainer;
+import org.eclipse.higgins.idas.spi.BasicNode;
+import org.eclipse.higgins.idas.spi.INodeContainer;
 import org.eclipse.higgins.idas.spi.MetadataNotification;
 import org.eclipse.higgins.idas.spi.BasicAttribute;
 import org.eclipse.higgins.idas.spi.BasicAttributeSet;
@@ -37,8 +37,8 @@
 import org.eclipse.higgins.idas.spi.BasicAttribute;
 import org.eclipse.higgins.idas.spi.BasicAttributeSet;
 import org.eclipse.higgins.idas.spi.BasicSimpleValue;
-import org.eclipse.higgins.idas.spi.SubjectNotification;
-import org.eclipse.higgins.idas.api.model.IDigitalSubjectModel;
+import org.eclipse.higgins.idas.spi.NodeNotification;
+import org.eclipse.higgins.idas.api.model.INodeModel;
 import org.eclipse.higgins.util.idas.cp.BasicAttributePDP;
 import org.eclipse.higgins.util.idas.cp.BasicAttributePDPIter;
 import org.eclipse.higgins.util.idas.cp.IAttributePDPs;
@@ -50,15 +50,15 @@
  * 
  */
 
-public class JNDIDigitalSubject extends BasicDigitalSubject implements IDigitalSubject
+public class JNDINode extends BasicNode implements INode
 {
-	private Logger _log = Logger.getLogger(JNDIDigitalSubject.class.getName());
+	private Logger _log = Logger.getLogger(JNDINode.class.getName());
 	private JNDIContext _context;
 	private SearchResult _jndiResult;
 	private IAttributePDPs _attrPDPs;
-	private String _subjectID;
+	private String _nodeID;
 	private URI _type;
-	private ISubjectContainer _container;
+	private INodeContainer _container;
 	private Vector _readListJNDI = new Vector();
 	private boolean _bReadAllJNDI = false;
 	private String _searchBase;
@@ -70,7 +70,7 @@
 	 * @param attrPDPs
 	 * @throws IdASException
 	 */
-	public JNDIDigitalSubject(
+	public JNDINode(
 		JNDIContext jndiContext,
 		SearchResult jndiResult,
 		String searchBase,
@@ -88,20 +88,20 @@
 	 * 
 	 * @param jndiContext
 	 * @param type
-	 * @param subjectID
+	 * @param nodeID
 	 * @param attrPDPs
 	 * @throws IdASException
 	 */
-	public JNDIDigitalSubject(
+	public JNDINode(
 		JNDIContext jndiContext,
 		URI type,
-		String subjectID,
+		String nodeID,
 		IAttributePDPs attrPDPs) throws IdASException
 	{
-		super(jndiContext, type, subjectID);
+		super(jndiContext, type, nodeID);
 		_context = jndiContext;
 		_container = jndiContext;
-		_subjectID = _context.consumerSubjectIDToProvider(subjectID);
+		_nodeID = _context.consumerNodeIDToProvider(nodeID);
 		_type = type;
 		_attrPDPs = attrPDPs;
 	}
@@ -113,16 +113,16 @@
 	 * @param attrPDPs
 	 * @throws IdASException
 	 */
-	public JNDIDigitalSubject(
+	public JNDINode(
 		JNDIContext jndiContext,
-		IDigitalSubject copyFrom,
+		INode copyFrom,
 		IAttributePDPs attrPDPs) throws IdASException
 	{
-		super(jndiContext, copyFrom.getSubjectType(), copyFrom.getSubjectID());
+		super(jndiContext, copyFrom.getNodeType(), copyFrom.getNodeID());
 		_context = jndiContext;
 		_container = jndiContext;
-		_subjectID = _context.consumerSubjectIDToProvider(copyFrom.getSubjectID());
-		_type = copyFrom.getSubjectType();
+		_nodeID = _context.consumerNodeIDToProvider(copyFrom.getNodeID());
+		_type = copyFrom.getNodeType();
 		_attrPDPs = attrPDPs;
 	}
 
@@ -159,16 +159,16 @@
 
 	/**
 	 */
-	public String getSubjectID() throws IdASException
+	public String getNodeID() throws IdASException
 	{
-		if (_subjectID == null)
+		if (_nodeID == null)
 		{
 			if (_jndiResult != null)
-				_subjectID = _context.providerSubjectIDToConsumer(_getNameInNamespace(_jndiResult));
+				_nodeID = _context.providerNodeIDToConsumer(_getNameInNamespace(_jndiResult));
 			else
-				throw new IdASException("No subject ID is set.");
+				throw new IdASException("No node ID is set.");
 		}
-		return _subjectID;
+		return _nodeID;
 	}
 
 	/**
@@ -173,7 +173,7 @@
 
 	/**
 	 */
-	public URI getSubjectType() throws IdASException
+	public URI getNodeType() throws IdASException
 	{
 		if (_type == null)
 		{
@@ -180,7 +180,7 @@
 			if (_jndiResult != null)
 				_type = _context.getSearchResultType(_jndiResult);
 			else
-				throw new IdASException("No subject type set.");
+				throw new IdASException("No node type set.");
 		}
 		return _type; 
 	}
@@ -409,7 +409,7 @@
 
 	/**
 	 */
-	public IDigitalSubjectModel getModel() throws IdASException
+	public INodeModel getModel() throws IdASException
 	{
 		throw new NotImplementedException();
 	}
@@ -418,7 +418,7 @@
 	{
 		if (_container != null)
 		{
-			_container.updateNotification(new SubjectNotification(this, SubjectNotification.UPDATE_REMOVE,
+			_container.updateNotification(new NodeNotification(this, NodeNotification.UPDATE_REMOVE,
 				null, null));
 		}
 	}
@@ -430,7 +430,7 @@
 		_log.debug("_containter " + ((_container != null) ? _container.toString() : "null"));		
 		if (_container != null)
 		{
-			_container.updateNotification(new SubjectNotification(this, SubjectNotification.UPDATE_ATTR_NOTIFY,
+			_container.updateNotification(new NodeNotification(this, NodeNotification.UPDATE_ATTR_NOTIFY,
 				attrNotif, null));
 		}
 	}
@@ -440,7 +440,7 @@
 	{
 		if (_container != null)
 		{
-			_container.updateNotification(new SubjectNotification(this, SubjectNotification.UPDATE_METADATA_NOTIFY,
+			_container.updateNotification(new NodeNotification(this, NodeNotification.UPDATE_METADATA_NOTIFY,
 				null, metaNotif));
 		}
 	}
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jena2.test/src/org/eclipse/higgins/idas/cp/jena2/test/TestJenaContext.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jena2.test/src/org/eclipse/higgins/idas/cp/jena2/test/TestJenaContext.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jena2.test/src/org/eclipse/higgins/idas/cp/jena2/test/TestJenaContext.java	(working copy)
@@ -12,12 +12,12 @@
 import org.eclipse.higgins.idas.api.IAttribute;
 import org.eclipse.higgins.idas.api.IAttributeValue;
 import org.eclipse.higgins.idas.api.IComplexAttrValue;
-import org.eclipse.higgins.idas.api.IDigitalSubject;
+import org.eclipse.higgins.idas.api.INode;
 import org.eclipse.higgins.idas.api.ISimpleAttrValue;
 import org.eclipse.higgins.idas.api.ISingleValuedAttribute;
 import org.eclipse.higgins.idas.api.IdASException;
-import org.eclipse.higgins.idas.api.NoSuchSubjectException;
-import org.eclipse.higgins.idas.api.SubjectExistsException;
+import org.eclipse.higgins.idas.api.NoSuchNodeException;
+import org.eclipse.higgins.idas.api.NodeExistsException;
 import org.eclipse.higgins.idas.common.AuthNNamePasswordMaterials;
 import org.eclipse.higgins.idas.common.AuthNSelfIssuedMaterials;
 import org.eclipse.higgins.idas.cp.jena2.impl.Context;
@@ -56,31 +56,31 @@
 	}
 
 	public void testSubject() throws Exception {
-		IDigitalSubject subj;
+		INode subj;
 		openContextByUsername();
 		String id1 = String.valueOf(System.currentTimeMillis());
-		subj = context_.addSubject(TestSchemaVocabulary.SimplePersonNOSV, id1);
+		subj = context_.addNode(TestSchemaVocabulary.SimplePersonNOSV, id1);
 		context_.applyUpdates();
 		try {
-			context_.addSubject(TestSchemaVocabulary.SimplePersonNOSV, id1);
+			context_.addNode(TestSchemaVocabulary.SimplePersonNOSV, id1);
 		}
-		catch(SubjectExistsException e) {
+		catch(NodeExistsException e) {
 		}
-		subj = context_.getSubject(id1);
+		subj = context_.getNode(id1);
 		assertNotNull(subj);
 		subj.remove();
 		try {
-			context_.getSubject(id1);
+			context_.getNode(id1);
 		}
-		catch(NoSuchSubjectException e) {
+		catch(NoSuchNodeException e) {
 		}
 		context_.applyUpdates();
 		try {
-			context_.getSubject(id1);
+			context_.getNode(id1);
 		}
-		catch(NoSuchSubjectException e) {
+		catch(NoSuchNodeException e) {
 		}
-		subj = context_.addSubject(TestSchemaVocabulary.SimplePersonNOSV, null);
+		subj = context_.addNode(TestSchemaVocabulary.SimplePersonNOSV, null);
 		assertNotNull(subj);
 		assertNotNull(getSimpleValueData(subj.getSingleValuedAttribute(HigginsVocabulary.uniqueIdentifierURI)));
 	}
@@ -88,7 +88,7 @@
 	public void testSimpleSingleValuedAttribute() throws Exception {
 		Object value;
 		openContextByUsername();
-		IDigitalSubject subj = context_.addSubject(TestSchemaVocabulary.SimplePersonNOSV, null);
+		INode subj = context_.addNode(TestSchemaVocabulary.SimplePersonNOSV, null);
 		String name1 = "name1";
 		String name2 = "name2";
 		subj.getAttribute(TestSchemaVocabulary.firstname).addSimpleValue(null, name1);
@@ -110,7 +110,7 @@
 	public void testSimpleMultiValuedAttribute() throws Exception {
 		ArrayList values;
 		openContextByUsername();
-		IDigitalSubject subj = context_.addSubject(TestSchemaVocabulary.SimplePersonNOMV, null);
+		INode subj = context_.addNode(TestSchemaVocabulary.SimplePersonNOMV, null);
 		subj.getAttribute(TestSchemaVocabulary.email).addSimpleValue(null, EMAIL_1);
 		values = getSimpleValuesData(subj.getAttribute(TestSchemaVocabulary.email));
 		assertTrue(values.contains(EMAIL_1));
@@ -136,7 +136,7 @@
 
 	public void testComplexAttribute() throws Exception {
 		openContextByUsername();
-		IDigitalSubject subj = context_.addSubject(TestSchemaVocabulary.ComplexPersonNOMV, null);
+		INode subj = context_.addNode(TestSchemaVocabulary.ComplexPersonNOMV, null);
 		IComplexAttrValue cv = subj.getAttribute(TestSchemaVocabulary.postalAddress).addComplexValue(null);
 		checkCardinalityValidation(false);
 		cv.getSingleValuedAttribute(TestSchemaVocabulary.city).addSimpleValue(null, CITY);
@@ -158,7 +158,7 @@
 
 	public void testSimpleSingleValuedAttributeCardinality() throws Exception {
 		openContextByUsername();
-		IDigitalSubject subj = context_.addSubject(TestSchemaVocabulary.SimplePersonOSV, null);
+		INode subj = context_.addNode(TestSchemaVocabulary.SimplePersonOSV, null);
 		checkCardinalityValidation(false);
 		subj.getAttribute(TestSchemaVocabulary.firstname).addSimpleValue(null, FIRST_NAME);
 		checkCardinalityValidation(false);
@@ -170,7 +170,7 @@
 
 	public void testSimpleMultiValuedAttributeCardinality() throws Exception {
 		openContextByUsername();
-		IDigitalSubject subj = context_.addSubject(TestSchemaVocabulary.SimplePersonOMV, null);
+		INode subj = context_.addNode(TestSchemaVocabulary.SimplePersonOMV, null);
 		checkCardinalityValidation(false);
 		subj.getAttribute(TestSchemaVocabulary.email).addSimpleValue(null, EMAIL_1);
 		checkCardinalityValidation(false);
@@ -195,7 +195,7 @@
 		String strCardKeyHash = Base64.encode(ppidHash).trim();
 		openContextByUsername();
 		
-		IDigitalSubject subj = context_.addSubject(TestSchemaVocabulary.SimplePersonNOSV, null);
+		INode subj = context_.addNode(TestSchemaVocabulary.SimplePersonNOSV, null);
 		String id = (String)getSimpleValueData(subj.getSingleValuedAttribute(HigginsVocabulary.uniqueIdentifierURI));
 		subj.getAttribute(URI.create("http://www.eclipse.org/higgins/authentication#PPID";)).addSimpleValue(null, strCardKeyHash);
 		context_.applyUpdates();
@@ -202,7 +202,7 @@
 		context_.close();
 		AuthNSelfIssuedMaterials credential = new AuthNSelfIssuedMaterials(context_, ppid, modulus, exponent);
 		context_.open(credential);
-		assertNotNull(context_.getSubject(id));
+		assertNotNull(context_.getNode(id));
 	}
 
 	protected void tearDown() throws Exception {
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jena2/src/org/eclipse/higgins/idas/cp/jena2/impl/authentication/AuthConstants.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jena2/src/org/eclipse/higgins/idas/cp/jena2/impl/authentication/AuthConstants.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jena2/src/org/eclipse/higgins/idas/cp/jena2/impl/authentication/AuthConstants.java	(working copy)
@@ -29,8 +29,8 @@
 	/**
 	 * 1. Individual of user's account can have this property. 2. If
 	 * individual of account has such not-null property, the user can only
-	 * operate with DigitalSubjects marked with this token (in this case an
-	 * individual of DigitalSubject has "$userToken" with this value).
+	 * operate with Nodes marked with this token (in this case an
+	 * individual of Nodes has "$userToken" with this value).
 	 */
 	final public static String USER_TOKEN_PROPERTY = NS + "#userToken";
 
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jena2/src/org/eclipse/higgins/idas/cp/jena2/impl/authentication/AuthenticationModule.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jena2/src/org/eclipse/higgins/idas/cp/jena2/impl/authentication/AuthenticationModule.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jena2/src/org/eclipse/higgins/idas/cp/jena2/impl/authentication/AuthenticationModule.java	(working copy)
@@ -124,7 +124,7 @@
 	}
 
 	/**
-	 * Find DigitalSubject with simple attribute <code>AuthConstants.USER_PPID_PROPERTY</code>
+	 * Find Nodes with simple attribute <code>AuthConstants.USER_PPID_PROPERTY</code>
 	 * @param ppid
 	 * @return
 	 * @throws IdASException
@@ -129,7 +129,7 @@
 	 * @return
 	 * @throws IdASException
 	 */
-	private Individual getSubjectByPPIDAttribute(String ppid) throws IdASException {
+	private Individual getNodeByPPIDAttribute(String ppid) throws IdASException {
 		if (ppid == null)
 			return null;
 		ISimpleAttrValue sv = context_.buildSimpleAttrValue(ISimpleAttrValue.STRING_TYPE_URI, ppid);
@@ -141,11 +141,11 @@
 		fas.setAssertionValue(sv);
 		fas.setID(URI.create(AuthConstants.USER_PPID_PROPERTY));
 		f.addFilter(fas);
-		ArrayList lst = context_.getSubjectIndividuals(f, true);
+		ArrayList lst = context_.getNodeIndividuals(f, true);
 		if (lst.size() == 0)
 			return null;
 		if (lst.size() > 1)
-			throw new AuthenticationException("There are more then one DigitalSubject with the same value of " + AuthConstants.USER_PPID_PROPERTY + " attribute" );
+			throw new AuthenticationException("There are more than one Nodes with the same value of " + AuthConstants.USER_PPID_PROPERTY + " attribute" );
 		return (Individual)lst.get(0);
 	}
 
@@ -150,19 +150,19 @@
 	}
 
 	/**
-	 * @param subj
+	 * @param ctxNode
 	 * @return
 	 * @throws IdASException
 	 */
-	private String getUserTokenByDigitalSubject(Individual subj) throws IdASException {
-		if (subj == null)
-			throw new IdASException("Parameter \"subj\" is null.");
+	private String getUserTokenByNode(Individual ctxNode) throws IdASException {
+		if (ctxNode == null)
+			throw new IdASException("Parameter \"node\" is null.");
 		DatatypeProperty dp = context_.getModelNoException().getDatatypeProperty(AuthConstants.USER_TOKEN_PROPERTY);
 		if (dp == null)
 			throw new IdASException("Can not get datatype property by uri = " + AuthConstants.USER_TOKEN_PROPERTY);
-		RDFNode node = subj.getPropertyValue(dp);
+		RDFNode node = ctxNode.getPropertyValue(dp);
 		if (node == null)
-			throw new IdASException("Individual of DigitalSubject does not have user token property value.");
+			throw new IdASException("Individual of Node does not have user token property value.");
 		if (node.isLiteral()) {
 			Literal lt = (Literal)node.as(Literal.class);
 			return lt.getString();
@@ -236,8 +236,8 @@
 			log.error(e);
 			throw new IdASException(e);
 		}
-		Individual ds = getSubjectByPPIDAttribute(ppid);
-		String userToken = getUserTokenByDigitalSubject(ds);
+		Individual ds = getNodeByPPIDAttribute(ppid);
+		String userToken = getUserTokenByNode(ds);
 		Individual ind = getUserAccountByToken(userToken);
 		if (ind == null)
 			return null;
@@ -403,7 +403,7 @@
 	 * @throws IdASException
 	 */
 	public ArrayList getAccountIndividuals(String userName) throws IdASException {
-		log.trace("org.eclipse.higgins.idas.cp.jena2.impl.authentication.AuthenticationModule::getSubjectIndividuals");
+		log.trace("org.eclipse.higgins.idas.cp.jena2.impl.authentication.AuthenticationModule::getAccountIndividuals");
 		String query =
 				"SELECT ?ind \n" +
 				"WHERE { \n" +
@@ -419,8 +419,8 @@
 			while (results.hasNext()) {
 				QuerySolution soln = results.nextSolution();
 				RDFNode a = soln.get("ind");
-				Individual digitalSubject = (Individual) a.as(Individual.class);
-				list.add(digitalSubject);
+				Individual node = (Individual) a.as(Individual.class);
+				list.add(node);
 			}
 		} catch (Exception e) {
 			log.error(e);
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jena2/src/org/eclipse/higgins/idas/cp/jena2/impl/Context.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jena2/src/org/eclipse/higgins/idas/cp/jena2/impl/Context.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jena2/src/org/eclipse/higgins/idas/cp/jena2/impl/Context.java	(working copy)
@@ -35,21 +35,21 @@
 import org.eclipse.higgins.idas.api.IAttribute;
 import org.eclipse.higgins.idas.api.IAuthNAttributesMaterials;
 import org.eclipse.higgins.idas.api.IComplexAttrValue;
-import org.eclipse.higgins.idas.api.IContextRelationship;
-import org.eclipse.higgins.idas.api.IDigitalSubject;
+import org.eclipse.higgins.idas.api.IContextRelation;
+import org.eclipse.higgins.idas.api.INode;
 import org.eclipse.higgins.idas.api.IFilter;
 import org.eclipse.higgins.idas.api.IFilterAttributeAssertion;
-import org.eclipse.higgins.idas.api.IFilterSubjectIDAssertion;
+import org.eclipse.higgins.idas.api.IFilterNodeIDAssertion;
 import org.eclipse.higgins.idas.api.IFilterMetadataAssertion;
-import org.eclipse.higgins.idas.api.IFilterSubjectTypeAssertion;
+import org.eclipse.higgins.idas.api.IFilterNodeTypeAssertion;
 import org.eclipse.higgins.idas.api.IMetadata;
 import org.eclipse.higgins.idas.api.ISimpleAttrValue;
 import org.eclipse.higgins.idas.api.IdASException;
-import org.eclipse.higgins.idas.api.InvalidSubjectIDException;
+import org.eclipse.higgins.idas.api.InvalidNodeIDException;
 import org.eclipse.higgins.idas.api.InvalidTypeException;
-import org.eclipse.higgins.idas.api.NoSuchSubjectException;
+import org.eclipse.higgins.idas.api.NoSuchNodeException;
 import org.eclipse.higgins.idas.api.NotImplementedException;
-import org.eclipse.higgins.idas.api.SubjectExistsException;
+import org.eclipse.higgins.idas.api.NodeExistsException;
 import org.eclipse.higgins.idas.cp.jena2.IJenaContext;
 import org.eclipse.higgins.idas.cp.jena2.IUserAccount;
 import org.eclipse.higgins.idas.cp.jena2.impl.authentication.AuthenticationModule;
@@ -55,7 +55,7 @@
 import org.eclipse.higgins.idas.cp.jena2.impl.authentication.AuthenticationModule;
 import org.eclipse.higgins.idas.cp.jena2.impl.filter.Filter;
 import org.eclipse.higgins.idas.cp.jena2.impl.filter.FilterAttributeAssertion;
-import org.eclipse.higgins.idas.cp.jena2.impl.filter.FilterSubjectIDAssertion;
+import org.eclipse.higgins.idas.cp.jena2.impl.filter.FilterNodeIDAssertion;
 import org.eclipse.higgins.idas.cp.jena2.impl.filter.FilterContext;
 import org.eclipse.higgins.idas.cp.jena2.impl.filter.FilterMetadataAssertion;
 import org.eclipse.higgins.idas.cp.jena2.impl.filter.FilterTypeAssertion;
@@ -124,7 +124,7 @@
 		log.trace("org.eclipse.higgins.idas.cp.jena2.impl.Context::save");
 	}
 
-	public void addRelationship(IContextRelationship relationship) throws IdASException {
+	public void addRelationship(IContextRelation relationship) throws IdASException {
 		log.trace("org.eclipse.higgins.idas.cp.jena2.impl.Context::addRelationship");
 		throw new NotImplementedException("");
 	}
@@ -129,7 +129,7 @@
 		throw new NotImplementedException("");
 	}
 
-	public IDigitalSubject addSubject(URI type, String subjectID) throws IdASException, InvalidTypeException, InvalidSubjectIDException, SubjectExistsException {
+	public INode addNode(URI type, String nodeID) throws IdASException, InvalidTypeException, InvalidNodeIDException, NodeExistsException {
 		log.trace("org.eclipse.higgins.idas.cp.jena2.impl.Context::addSubject");
 		if (userAccount_ == null)
 			throw new ContextNotOpenException("");
@@ -135,8 +135,8 @@
 			throw new ContextNotOpenException("");
 		if (type == null)
 			throw new IdASException("Parameter \"type\" is null");
-		if (subjectID != null && ModelUtils.getSubjectByID(this, subjectID) != null)
-			throw new SubjectExistsException("Subject with ID = " + subjectID + " already exists");
+		if (nodeID != null && ModelUtils.getSubjectByID(this, nodeID) != null)
+			throw new NodeExistsException("Subject with ID = " + nodeID + " already exists");
 		String uri = type.toString();
 		OntClass ontClass = getOntClass(uri);
 		String uriDS = HigginsVocabulary.DigitalSubject;
@@ -148,7 +148,7 @@
 		if (userToken != null && userToken.length() > 0)
 			ModelUtils.setUserToken(this, ind, userToken);
 		DigitalSubject subj = new DigitalSubject(this, ind);
-		String newSubjID = (subjectID != null) ? subjectID : ModelUtils.generateUniqueID(this);
+		String newSubjID = (nodeID != null) ? nodeID : ModelUtils.generateUniqueID(this);
 		subj.getAttribute(HigginsVocabulary.uniqueIdentifierURI).addSimpleValue(null, newSubjID);
 		
 		return subj;
@@ -154,7 +154,7 @@
 		return subj;
 	}
 
-	public IDigitalSubject addSubject(IDigitalSubject copyFrom) throws IdASException, SubjectExistsException {
+	public INode addNode(INode copyFrom) throws IdASException, NodeExistsException {
 		log.trace("org.eclipse.higgins.idas.cp.jena2.impl.Context::addSubject");
 		if (userAccount_ == null)
 			throw new ContextNotOpenException("");
@@ -160,7 +160,7 @@
 			throw new ContextNotOpenException("");
 		if (copyFrom == null)
 			throw new IdASException("Parameter \"copyFrom\" is null");
-		String uri = copyFrom.getSubjectType().toString();
+		String uri = copyFrom.getNodeType().toString();
 		OntClass ontClass = getOntClass(uri);
 		String uriDS = HigginsVocabulary.DigitalSubject;
 		OntClass higginsDigitalSubject_ = getOntClass(uriDS);
@@ -203,9 +203,9 @@
 		return new BasicAuthNAttributesMaterials(null, this);
 	}
 
-	public IFilterSubjectIDAssertion buildSubjectIDAssertion() throws IdASException {
-		log.trace("org.eclipse.higgins.idas.cp.jena2.impl.Context::buildSubjectIDAssertion");
-		return new FilterSubjectIDAssertion(this);
+	public IFilterNodeIDAssertion buildNodeIDAssertion() throws IdASException {
+		log.trace("org.eclipse.higgins.idas.cp.jena2.impl.Context::buildNodeIDAssertion");
+		return new FilterNodeIDAssertion(this);
 	}
 
 	public IComplexAttrValue buildComplexAttrValue(URI type) throws IdASException, InvalidTypeException {
@@ -223,7 +223,7 @@
 		return new FilterMetadataAssertion(this);
 	}
 
-	public IContextRelationship buildRelationship(URI type) throws IdASException {
+	public IContextRelation buildRelationship(URI type) throws IdASException {
 		log.trace("org.eclipse.higgins.idas.cp.jena2.impl.Context::buildRelationship");
 		throw new NotImplementedException("");
 	}
@@ -233,7 +233,7 @@
 		return new BasicSimpleValue(type, value);
 	}
 
-	public IFilterSubjectTypeAssertion buildSubjectTypeAssertion() throws IdASException {
+	public IFilterNodeTypeAssertion buildNodeTypeAssertion() throws IdASException {
 		log.trace("org.eclipse.higgins.idas.cp.jena2.impl.Context::buildTypeAssertion");
 		return new FilterTypeAssertion(this);
 	}
@@ -325,7 +325,7 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.higgins.idas.api.IContext#getSubject(java.lang.String)
 	 */
-	public IDigitalSubject getSubject(String cuid) throws IdASException {
+	public INode getNode(String cuid) throws IdASException {
 		log.trace("org.eclipse.higgins.idas.cp.jena2.impl.Context::getSubject");
 		if (userAccount_ == null)
 			throw new ContextNotOpenException("");
@@ -330,10 +330,10 @@
 		if (userAccount_ == null)
 			throw new ContextNotOpenException("");
 		if (cuid == null)
-			throw new NoSuchSubjectException("Couldn't get DigitalSubject with null cuid");
+			throw new NoSuchNodeException("Couldn't get DigitalSubject with null cuid");
 		Individual subj = ModelUtils.getSubjectByID(this, cuid);
 		if (subj == null)
-			throw new NoSuchSubjectException("Couldn't find DigitalSubject with cuid : " + cuid);
+			throw new NoSuchNodeException("Couldn't find DigitalSubject with cuid : " + cuid);
 		else {
 			if (hasUserPermissions(subj))
 				return new DigitalSubject(this, subj);
@@ -355,12 +355,12 @@
 		return true;
 	}
 
-	public IDigitalSubject getSubject(String cuid, Iterator attrSelectionList) throws IdASException {
+	public INode getNode(String cuid, Iterator attrSelectionList) throws IdASException {
 		log.trace("org.eclipse.higgins.idas.cp.jena2.impl.Context::getSubject");
-		return getSubject(cuid);
+		return getNode(cuid);
 	}
 
-	public Iterator getSubjects(IFilter filter) throws IdASException {
+	public Iterator getNodes(IFilter filter) throws IdASException {
 		log.trace("org.eclipse.higgins.idas.cp.jena2.impl.Context::getSubjects");
 		if (userAccount_ == null)
 			throw new ContextNotOpenException("");
@@ -381,7 +381,7 @@
 		return result.iterator();
 	}
 
-	public ArrayList getSubjectIndividuals(IFilter filter, boolean ignoreUserToken) throws IdASException {
+	public ArrayList getNodeIndividuals(IFilter filter, boolean ignoreUserToken) throws IdASException {
 		log.trace("org.eclipse.higgins.idas.cp.jena2.impl.Context::getSubjects");
 		if (filter == null)
 			throw new IdASException("Parameter \"filter\" is null.");
@@ -399,9 +399,9 @@
 		return result;
 	}
 
-	public Iterator getSubjects(IFilter filter, Iterator attrSelectionList) throws IdASException {
+	public Iterator getNodes(IFilter filter, Iterator attrSelectionList) throws IdASException {
 		log.trace("org.eclipse.higgins.idas.cp.jena2.impl.Context::getSubjects");
-		return getSubjects(filter);
+		return getNodes(filter);
 	}
 
 	public void importData(String filter, String representationFormat) throws IdASException {
@@ -424,7 +424,7 @@
 		return null;
 	}
 
-	public void removeRelationship(IContextRelationship relationship) throws IdASException {
+	public void removeRelationship(IContextRelation relationship) throws IdASException {
 		log.trace("org.eclipse.higgins.idas.cp.jena2.impl.Context::removeRelationship");
 		throw new NotImplementedException("");
 	}
@@ -442,7 +442,7 @@
 		if (subjInd != null)
 			ModelUtils.removeIndividual(this, subjInd);
 		else
-			throw new NoSuchSubjectException("Couldn't find DigitalSubject with cuid : " + cuid);
+			throw new NoSuchNodeException("Couldn't find DigitalSubject with cuid : " + cuid);
 	}
 
 	public void setSchema(String schema) throws IdASException {
@@ -450,7 +450,7 @@
 		schemaURL_ = schema;
 	}
 
-	public boolean verifySubjectAttributes(String subjectID, Iterator attributes) throws IdASException {
+	public boolean verifyNodeAttributes(String subjectID, Iterator attributes) throws IdASException {
 		log.trace("org.eclipse.higgins.idas.cp.jena2.impl.Context::verifySubjectAttributes");
 		throw new NotImplementedException("");
 	}
@@ -682,7 +682,7 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.higgins.idas.api.IContext#addRelationship(java.net.URI)
 	 */
-	public IContextRelationship addRelationship(URI relationshipType) throws IdASException {
+	public IContextRelation addRelationship(URI relationshipType) throws IdASException {
 		log.trace("org.eclipse.higgins.idas.cp.jena2.impl.Context::addRelationship");
 		throw new NotImplementedException("");
 	}
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jena2/src/org/eclipse/higgins/idas/cp/jena2/impl/ContextRelationship.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jena2/src/org/eclipse/higgins/idas/cp/jena2/impl/ContextRelationship.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jena2/src/org/eclipse/higgins/idas/cp/jena2/impl/ContextRelationship.java	(working copy)
@@ -16,7 +16,7 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.eclipse.higgins.idas.api.IContextRelationship;
+import org.eclipse.higgins.idas.api.IContextRelation;
 import org.eclipse.higgins.idas.api.IHasMetadata;
 import org.eclipse.higgins.idas.api.IMetadata;
 import org.eclipse.higgins.idas.api.IdASException;
@@ -22,7 +22,7 @@
 import org.eclipse.higgins.idas.api.IdASException;
 import org.eclipse.higgins.idas.api.InvalidTypeException;
 
-public class ContextRelationship implements IContextRelationship {
+public class ContextRelationship implements IContextRelation {
 	private Log log = LogFactory.getLog(ContextRelationship.class);
 
 	public Iterator getRelatedObjects() throws IdASException {
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jena2/src/org/eclipse/higgins/idas/cp/jena2/impl/DigitalSubject.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jena2/src/org/eclipse/higgins/idas/cp/jena2/impl/DigitalSubject.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jena2/src/org/eclipse/higgins/idas/cp/jena2/impl/DigitalSubject.java	(working copy)
@@ -22,7 +22,7 @@
 import org.eclipse.higgins.idas.api.IAttribute;
 import org.eclipse.higgins.idas.api.IAttributeValue;
 import org.eclipse.higgins.idas.api.IContext;
-import org.eclipse.higgins.idas.api.IDigitalSubject;
+import org.eclipse.higgins.idas.api.INode;
 import org.eclipse.higgins.idas.api.IHasAttributes;
 import org.eclipse.higgins.idas.api.IHasMetadata;
 import org.eclipse.higgins.idas.api.IMetadata;
@@ -34,7 +34,7 @@
 import org.eclipse.higgins.idas.cp.jena2.util.HigginsVocabulary;
 import org.eclipse.higgins.idas.cp.jena2.util.ModelUtils;
 import org.eclipse.higgins.idas.model.impl.AttributeModel;
-import org.eclipse.higgins.idas.api.model.IDigitalSubjectModel;
+import org.eclipse.higgins.idas.api.model.INodeModel;
 
 import com.hp.hpl.jena.ontology.DatatypeProperty;
 import com.hp.hpl.jena.ontology.Individual;
@@ -45,7 +45,7 @@
 import com.hp.hpl.jena.rdf.model.Statement;
 import com.hp.hpl.jena.rdf.model.StmtIterator;
 
-public class DigitalSubject implements IDigitalSubject {
+public class DigitalSubject implements INode {
 	private Log log = LogFactory.getLog(DigitalSubject.class);
 
 	protected Context context_ = null;
@@ -50,7 +50,7 @@
 
 	protected Context context_ = null;
 
-	protected IDigitalSubjectModel model_ = null;
+	protected INodeModel model_ = null;
 
 	protected Individual subject_ = null;
 
@@ -76,10 +76,10 @@
 		context_ = context;
 		subject_ = subject;
 		ontClass_ = context.getOntClass(subject.getRDFType().getURI());
-		URI type = getSubjectType();
-		model_ = context_.getContextModel().getSubjectModel(type);
+		URI type = getNodeType();
+		model_ = context_.getContextModel().getNodeModel(type);
 		if (model_ == null)
-			throw new IdASException("Can not get subject model for DS URI " + type.toString());
+			throw new IdASException("Can not get node model for Node URI " + type.toString());
 		userToken_ = ModelUtils.getUserToken(context_, subject_);
 	}
 
@@ -98,7 +98,7 @@
 		return subject_;
 	}
 
-	public IDigitalSubjectModel getModel() throws IdASException {
+	public INodeModel getModel() throws IdASException {
 		log.trace("org.eclipse.higgins.idas.cp.jena2.impl.DigitalSubject::getModel");
 		return model_;
 	}
@@ -103,8 +103,8 @@
 		return model_;
 	}
 
-	public String getSubjectID() throws IdASException {
-		log.trace("org.eclipse.higgins.idas.cp.jena2.impl.DigitalSubject::getSubjectID");
+	public String getNodeID() throws IdASException {
+		log.trace("org.eclipse.higgins.idas.cp.jena2.impl.DigitalSubject::getNodeID");
 		IAttribute sAttr = getAttribute(HigginsVocabulary.uniqueIdentifierURI);
 		if (sAttr == null)
 			throw new IdASException("Attribute" + HigginsVocabulary.uniqueIdentifier + " was not found");
@@ -125,10 +125,10 @@
 	/*
 	 * (non-Javadoc)
 	 * 
-	 * @see org.eclipse.higgins.idas.IDigitalSubject#getSubjectType()
+	 * @see org.eclipse.higgins.idas.IDigitalSubject#getNodeType()
 	 */
-	public URI getSubjectType() throws IdASException {
-		log.trace("org.eclipse.higgins.idas.cp.jena2.impl.DigitalSubject::getSubjectType");
+	public URI getNodeType() throws IdASException {
+		log.trace("org.eclipse.higgins.idas.cp.jena2.impl.DigitalSubject::getNodeType");
 		if (type_ == null)
 			type_ = URI.create(ontClass_.getURI());
 		return type_;
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jena2/src/org/eclipse/higgins/idas/cp/jena2/impl/filter/Filter.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jena2/src/org/eclipse/higgins/idas/cp/jena2/impl/filter/Filter.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jena2/src/org/eclipse/higgins/idas/cp/jena2/impl/filter/Filter.java	(working copy)
@@ -19,9 +19,9 @@
 import org.eclipse.higgins.idas.api.IFilter;
 import org.eclipse.higgins.idas.api.IFilterAssertion;
 import org.eclipse.higgins.idas.api.IFilterAttributeAssertion;
-import org.eclipse.higgins.idas.api.IFilterSubjectIDAssertion;
+import org.eclipse.higgins.idas.api.IFilterNodeIDAssertion;
 import org.eclipse.higgins.idas.api.IFilterMetadataAssertion;
-import org.eclipse.higgins.idas.api.IFilterSubjectTypeAssertion;
+import org.eclipse.higgins.idas.api.IFilterNodeTypeAssertion;
 import org.eclipse.higgins.idas.api.IdASException;
 import org.eclipse.higgins.idas.cp.jena2.impl.Context;
 
@@ -154,11 +154,11 @@
 	/*
 	 * (non-Javadoc)
 	 * 
-	 * @see org.eclipse.higgins.idas.IFilter#createSubjectIDAssertion()
+	 * @see org.eclipse.higgins.idas.IFilter#createNodeIDAssertion()
 	 */
-	public IFilterSubjectIDAssertion createSubjectIDAssertion() throws IdASException {
-		log.trace("org.eclipse.higgins.idas.cp.jena2.impl.filter.Filter::createSubjectIDAssertion");
-		return new FilterSubjectIDAssertion(idasContext_);
+	public IFilterNodeIDAssertion createNodeIDAssertion() throws IdASException {
+		log.trace("org.eclipse.higgins.idas.cp.jena2.impl.filter.Filter::createNodeIDAssertion");
+		return new FilterNodeIDAssertion(idasContext_);
 	}
 
 	/*
@@ -176,7 +176,7 @@
 	 * 
 	 * @see org.eclipse.higgins.idas.IFilter#createTypeAssertion()
 	 */
-	public IFilterSubjectTypeAssertion createTypeAssertion() throws IdASException {
+	public IFilterNodeTypeAssertion createTypeAssertion() throws IdASException {
 		log.trace("org.eclipse.higgins.idas.cp.jena2.impl.filter.Filter::createTypeAssertion");
 
 		// / Uncomment
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jena2/src/org/eclipse/higgins/idas/cp/jena2/impl/filter/FilterContext.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jena2/src/org/eclipse/higgins/idas/cp/jena2/impl/filter/FilterContext.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jena2/src/org/eclipse/higgins/idas/cp/jena2/impl/filter/FilterContext.java	(working copy)
@@ -212,7 +212,7 @@
 		} finally {
 			qexec.close();
 		}
-		log.debug("Number of selected digital subject individuals by query : " + list.size());	
+		log.debug("Number of selected Node individuals by query : " + list.size());	
 		return list;
 	}
 
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jena2/src/org/eclipse/higgins/idas/cp/jena2/impl/filter/FilterNodeIDAssertion.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jena2/src/org/eclipse/higgins/idas/cp/jena2/impl/filter/FilterNodeIDAssertion.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jena2/src/org/eclipse/higgins/idas/cp/jena2/impl/filter/FilterNodeIDAssertion.java	(working copy)
@@ -16,7 +16,7 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.eclipse.higgins.idas.api.IFilterAttributeAssertion;
-import org.eclipse.higgins.idas.api.IFilterSubjectIDAssertion;
+import org.eclipse.higgins.idas.api.IFilterNodeIDAssertion;
 import org.eclipse.higgins.idas.api.ISimpleAttrValue;
 import org.eclipse.higgins.idas.api.IdASException;
 import org.eclipse.higgins.idas.cp.jena2.impl.Context;
@@ -22,8 +22,8 @@
 import org.eclipse.higgins.idas.cp.jena2.impl.Context;
 import org.eclipse.higgins.idas.cp.jena2.util.HigginsVocabulary;
 
-public class FilterSubjectIDAssertion extends FilterAssertion implements IFilterSubjectIDAssertion {
-	private Log log = LogFactory.getLog(FilterSubjectIDAssertion.class);
+public class FilterNodeIDAssertion extends FilterAssertion implements IFilterNodeIDAssertion {
+	private Log log = LogFactory.getLog(FilterNodeIDAssertion.class);
 
 	private String subjID_ = null;
 
@@ -34,8 +34,8 @@
 	/**
 	 * @param idasContext
 	 */
-	public FilterSubjectIDAssertion(Context idasContext) {
-		log.trace("org.eclipse.higgins.idas.cp.jena2.impl.filter.FilterSubjectIDAssertion::FilterSubjectIDAssertion");
+	public FilterNodeIDAssertion(Context idasContext) {
+		log.trace("org.eclipse.higgins.idas.cp.jena2.impl.filter.FilterNodeIDAssertion::FilterNodeIDAssertion");
 		idasContext_ = idasContext;
 	}
 
@@ -42,10 +42,10 @@
 	/*
 	 * (non-Javadoc)
 	 * 
-	 * @see org.eclipse.higgins.idas.api.IFilterSubjectIDAssertion#setAssertionValue(java.lang.String)
+	 * @see org.eclipse.higgins.idas.api.IFilterNodeIDAssertion#setAssertionValue(java.lang.String)
 	 */
 	public void setAssertionValue(String subjID) throws IdASException {
-		log.trace("org.eclipse.higgins.idas.cp.jena2.impl.filter.FilterSubjectIDAssertion::setAssertionValue");
+		log.trace("org.eclipse.higgins.idas.cp.jena2.impl.filter.FilterNodeIDAssertion::setAssertionValue");
 		if (subjID == null)
 			throw new IdASException("Unable to set \"null\" assertion value");
 		subjID_ = subjID;
@@ -56,7 +56,7 @@
 	 * @throws IdASException
 	 */
 	public String getAssertionValue() throws IdASException {
-		log.trace("org.eclipse.higgins.idas.cp.jena2.impl.filter.FilterSubjectIDAssertion::getAssertionValue");
+		log.trace("org.eclipse.higgins.idas.cp.jena2.impl.filter.FilterNodeIDAssertion::getAssertionValue");
 		return subjID_;
 	}
 
@@ -65,9 +65,9 @@
 	 * @throws IdASException
 	 */
 	public FilterAttributeAssertion getAttributeAssertion() throws IdASException {
-		log.trace("org.eclipse.higgins.idas.cp.jena2.impl.filter.FilterSubjectIDAssertion::getAttributeAssertion");
+		log.trace("org.eclipse.higgins.idas.cp.jena2.impl.filter.FilterNodeIDAssertion::getAttributeAssertion");
 		if (subjID_ == null)
-			throw new IdASException("FilterSubjectIDAssertion contains \"null\" assertion value");
+			throw new IdASException("FilterNodeIDAssertion contains \"null\" assertion value");
 		if (assertion_ == null) {
 			assertion_ = new FilterAttributeAssertion(idasContext_);
 			assertion_.setComparator(IFilterAttributeAssertion.COMP_ATTR_EQ);
@@ -85,8 +85,8 @@
 	 * @see org.eclipse.higgins.idas.cp.jena2.impl.filter.FilterAssertion#setID(java.net.URI)
 	 */
 	public void setID(URI id) throws IdASException {
-		log.trace("org.eclipse.higgins.idas.cp.jena2.impl.filter.FilterSubjectIDAssertion::setID");
-		throw new IdASException("The type of FilterSubjectIDAssertion is predefined and couldn't be changed.");
+		log.trace("org.eclipse.higgins.idas.cp.jena2.impl.filter.FilterNodeIDAssertion::setID");
+		throw new IdASException("The type of FilterNodeIDAssertion is predefined and couldn't be changed.");
 	}
 
 	/*
@@ -95,7 +95,7 @@
 	 * @see org.eclipse.higgins.idas.cp.jena2.impl.filter.FilterAssertion#getCondition()
 	 */
 	public ICondition getCondition() throws IdASException {
-		log.trace("org.eclipse.higgins.idas.cp.jena2.impl.filter.FilterSubjectIDAssertion::getCondition");
+		log.trace("org.eclipse.higgins.idas.cp.jena2.impl.filter.FilterNodeIDAssertion::getCondition");
 		return assertion_.getCondition();
 	}
 
@@ -105,7 +105,7 @@
 	 * @see org.eclipse.higgins.idas.cp.jena2.impl.filter.FilterAssertion#init(org.eclipse.higgins.idas.cp.jena2.impl.filter.FilterContext)
 	 */
 	public void init(FilterContext filterContext) throws IdASException {
-		log.trace("org.eclipse.higgins.idas.cp.jena2.impl.filter.FilterSubjectIDAssertion::init");
+		log.trace("org.eclipse.higgins.idas.cp.jena2.impl.filter.FilterNodeIDAssertion::init");
 		assertion_.init(filterContext);
 	}
 
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jena2/src/org/eclipse/higgins/idas/cp/jena2/impl/filter/FilterSubjectIDAssertion.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jena2/src/org/eclipse/higgins/idas/cp/jena2/impl/filter/FilterSubjectIDAssertion.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jena2/src/org/eclipse/higgins/idas/cp/jena2/impl/filter/FilterSubjectIDAssertion.java	(working copy)
@@ -1,112 +0,0 @@
-/**
- * Copyright (c) 2007 Parity Communications, Inc. 
- * All rights reserved. This program and the accompanying materials 
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     Sergey Lyakhov - initial API and implementation
- */
-
-package org.eclipse.higgins.idas.cp.jena2.impl.filter;
-
-import java.net.URI;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.eclipse.higgins.idas.api.IFilterAttributeAssertion;
-import org.eclipse.higgins.idas.api.IFilterSubjectIDAssertion;
-import org.eclipse.higgins.idas.api.ISimpleAttrValue;
-import org.eclipse.higgins.idas.api.IdASException;
-import org.eclipse.higgins.idas.cp.jena2.impl.Context;
-import org.eclipse.higgins.idas.cp.jena2.util.HigginsVocabulary;
-
-public class FilterSubjectIDAssertion extends FilterAssertion implements IFilterSubjectIDAssertion {
-	private Log log = LogFactory.getLog(FilterSubjectIDAssertion.class);
-
-	private String subjID_ = null;
-
-	private FilterAttributeAssertion assertion_ = null;
-
-	private Context idasContext_ = null;
-
-	/**
-	 * @param idasContext
-	 */
-	public FilterSubjectIDAssertion(Context idasContext) {
-		log.trace("org.eclipse.higgins.idas.cp.jena2.impl.filter.FilterSubjectIDAssertion::FilterSubjectIDAssertion");
-		idasContext_ = idasContext;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.higgins.idas.api.IFilterSubjectIDAssertion#setAssertionValue(java.lang.String)
-	 */
-	public void setAssertionValue(String subjID) throws IdASException {
-		log.trace("org.eclipse.higgins.idas.cp.jena2.impl.filter.FilterSubjectIDAssertion::setAssertionValue");
-		if (subjID == null)
-			throw new IdASException("Unable to set \"null\" assertion value");
-		subjID_ = subjID;
-	}
-
-	/**
-	 * @return
-	 * @throws IdASException
-	 */
-	public String getAssertionValue() throws IdASException {
-		log.trace("org.eclipse.higgins.idas.cp.jena2.impl.filter.FilterSubjectIDAssertion::getAssertionValue");
-		return subjID_;
-	}
-
-	/**
-	 * @return
-	 * @throws IdASException
-	 */
-	public FilterAttributeAssertion getAttributeAssertion() throws IdASException {
-		log.trace("org.eclipse.higgins.idas.cp.jena2.impl.filter.FilterSubjectIDAssertion::getAttributeAssertion");
-		if (subjID_ == null)
-			throw new IdASException("FilterSubjectIDAssertion contains \"null\" assertion value");
-		if (assertion_ == null) {
-			assertion_ = new FilterAttributeAssertion(idasContext_);
-			assertion_.setComparator(IFilterAttributeAssertion.COMP_ATTR_EQ);
-			assertion_.setID(URI.create(HigginsVocabulary.uniqueIdentifier));
-		}
-		assertion_.setAssertionValue(idasContext_.buildSimpleAttrValue(ISimpleAttrValue.NORMALIZEDSTRING_TYPE_URI, subjID_));
-		assertion_.includeSubtypes(includeSubtypes_);
-		assertion_.setComparator(comparator_);
-		return assertion_;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.higgins.idas.cp.jena2.impl.filter.FilterAssertion#setID(java.net.URI)
-	 */
-	public void setID(URI id) throws IdASException {
-		log.trace("org.eclipse.higgins.idas.cp.jena2.impl.filter.FilterSubjectIDAssertion::setID");
-		throw new IdASException("The type of FilterSubjectIDAssertion is predefined and couldn't be changed.");
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.higgins.idas.cp.jena2.impl.filter.FilterAssertion#getCondition()
-	 */
-	public ICondition getCondition() throws IdASException {
-		log.trace("org.eclipse.higgins.idas.cp.jena2.impl.filter.FilterSubjectIDAssertion::getCondition");
-		return assertion_.getCondition();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.higgins.idas.cp.jena2.impl.filter.FilterAssertion#init(org.eclipse.higgins.idas.cp.jena2.impl.filter.FilterContext)
-	 */
-	public void init(FilterContext filterContext) throws IdASException {
-		log.trace("org.eclipse.higgins.idas.cp.jena2.impl.filter.FilterSubjectIDAssertion::init");
-		assertion_.init(filterContext);
-	}
-
-}
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jena2/src/org/eclipse/higgins/idas/cp/jena2/impl/filter/FilterTypeAssertion.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jena2/src/org/eclipse/higgins/idas/cp/jena2/impl/filter/FilterTypeAssertion.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jena2/src/org/eclipse/higgins/idas/cp/jena2/impl/filter/FilterTypeAssertion.java	(working copy)
@@ -16,7 +16,7 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.eclipse.higgins.idas.api.IFilterSubjectTypeAssertion;
+import org.eclipse.higgins.idas.api.IFilterNodeTypeAssertion;
 import org.eclipse.higgins.idas.api.IdASException;
 import org.eclipse.higgins.idas.cp.jena2.impl.Context;
 
@@ -23,7 +23,7 @@
 import com.hp.hpl.jena.ontology.OntProperty;
 import com.hp.hpl.jena.util.iterator.ExtendedIterator;
 
-public class FilterTypeAssertion extends FilterAssertion implements IFilterSubjectTypeAssertion {
+public class FilterTypeAssertion extends FilterAssertion implements IFilterNodeTypeAssertion {
 	private Log log = LogFactory.getLog(FilterTypeAssertion.class);
 
 	private static final PropertyNode typeProperty_ = new PropertyNode("http://www.w3.org/1999/02/22-rdf-syntax-ns#type";);
@@ -40,7 +40,7 @@
 	}
 
 	/* (non-Javadoc)
-	 * @see org.eclipse.higgins.idas.api.IFilterSubjectTypeAssertion#setAssertionValue(java.net.URI)
+	 * @see org.eclipse.higgins.idas.api.IFilterNodeTypeAssertion#setAssertionValue(java.net.URI)
 	 */
 	public void setAssertionValue(URI assertion) throws IdASException {
 		log.trace("org.eclipse.higgins.idas.cp.jena2.impl.filter.FilterTypeAssertion::setAssertionValue");
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jena2/src/org/eclipse/higgins/idas/cp/jena2/util/ModelUtils.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jena2/src/org/eclipse/higgins/idas/cp/jena2/util/ModelUtils.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jena2/src/org/eclipse/higgins/idas/cp/jena2/util/ModelUtils.java	(working copy)
@@ -20,7 +20,7 @@
 import org.apache.commons.logging.LogFactory;
 import org.eclipse.higgins.idas.api.IdASException;
 import org.eclipse.higgins.idas.api.model.IAttributeComplexValueModel;
-import org.eclipse.higgins.idas.api.model.IDigitalSubjectModel;
+import org.eclipse.higgins.idas.api.model.INodeModel;
 import org.eclipse.higgins.idas.cp.jena2.IJenaContext;
 import org.eclipse.higgins.idas.cp.jena2.impl.Attribute;
 import org.eclipse.higgins.idas.cp.jena2.impl.ComplexValue;
@@ -481,11 +481,11 @@
 	 */
 	public static void validateSubject(Context context, DigitalSubject subj) throws IdASException {
 		log.trace("org.eclipse.higgins.idas.cp.jena2.util.ModelUtils::validateSubject");
-		log.debug("ContextURI = " + context.getNS() + ", subject type = " + subj.getSubjectType());
+		log.debug("ContextURI = " + context.getNS() + ", subject type = " + subj.getNodeType());
 		if (subj == null)
 			throw new IdASException("Parameter \"subj\" is null.");
 		Iterator attributeModels = null;
-		IDigitalSubjectModel subjModel = subj.getModel();
+		INodeModel subjModel = subj.getModel();
 		if (subjModel != null)
 			attributeModels = subjModel.getAttributeModels();
 		Iterator itrAttr = subj.getAttributes();
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jena2/src/org/eclipse/higgins/idas/model/impl/ContextModel.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jena2/src/org/eclipse/higgins/idas/model/impl/ContextModel.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jena2/src/org/eclipse/higgins/idas/model/impl/ContextModel.java	(working copy)
@@ -20,7 +20,7 @@
 import org.eclipse.higgins.idas.api.model.IAttributeModel;
 import org.eclipse.higgins.idas.api.model.IAttributeValueModel;
 import org.eclipse.higgins.idas.api.model.IContextModel;
-import org.eclipse.higgins.idas.api.model.IDigitalSubjectModel;
+import org.eclipse.higgins.idas.api.model.INodeModel;
 import org.eclipse.higgins.idas.api.model.IDisplayData;
 import org.eclipse.higgins.idas.api.model.IModel;
 import org.eclipse.higgins.idas.api.model.IdASModelException;
@@ -110,10 +110,10 @@
 			try {
 				IContextModel model = create(args[0]);
 				System.out.println(model.getType());
-				Iterator subjects = model.getSubjectModels();
+				Iterator subjects = model.getNodeModels();
 				if (subjects != null) {
 					while(subjects.hasNext()) {
-						showSubject((IDigitalSubjectModel)subjects.next(), "");
+						showSubject((INodeModel)subjects.next(), "");
 					}
 				}
 			} catch (IdASException e) {
@@ -122,7 +122,7 @@
 		}
 	}
 
-	private static void showSubject(IDigitalSubjectModel sm, String prefix) {
+	private static void showSubject(INodeModel sm, String prefix) {
 		System.out.println(prefix + "DS: " + sm.getType());
 		showDisplayData(sm.getDisplayData(), prefix + "\t");
 		Iterator attributes = sm.getAttributeModels();
@@ -377,7 +377,7 @@
 				String ns = c.getNameSpace();
 				if (ns.startsWith(getType().toString())) {
 					if (ModelUtils.isClassRelative(c_ds, c)) {
-						IDigitalSubjectModel dsm = new DigitalSubjectModel(this, c);
+						INodeModel dsm = new DigitalSubjectModel(this, c);
 						log.debug("Created SubjectModel for class " + c.getURI());
 						subjects.add(dsm);
 						subjectMap.put(dsm.getType(), dsm);
@@ -429,7 +429,7 @@
 			return null;
 	}
 
-	public Iterator getSubjectModels() {
+	public Iterator getNodeModels() {
 		log.trace("org.eclipse.higgins.idas.model.impl.ContextModel::getSubjectModels");
 		if (subjects != null)
 			return subjects.iterator();
@@ -437,10 +437,10 @@
 			return null;
 	}
 
-	public IDigitalSubjectModel getSubjectModel(URI type) {
+	public INodeModel getNodeModel(URI type) {
 		log.trace("org.eclipse.higgins.idas.model.impl.ContextModel::getSubjectModel");
 		if (type != null)
-			return (IDigitalSubjectModel)subjectMap.get(type);
+			return (INodeModel)subjectMap.get(type);
 		else
 			return null;
 	}
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jena2/src/org/eclipse/higgins/idas/model/impl/DigitalSubjectModel.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jena2/src/org/eclipse/higgins/idas/model/impl/DigitalSubjectModel.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.jena2/src/org/eclipse/higgins/idas/model/impl/DigitalSubjectModel.java	(working copy)
@@ -12,7 +12,7 @@
 import org.eclipse.higgins.idas.api.IdASException;
 import org.eclipse.higgins.idas.cp.jena2.util.ModelUtils;
 import org.eclipse.higgins.idas.api.model.IAttributeModel;
-import org.eclipse.higgins.idas.api.model.IDigitalSubjectModel;
+import org.eclipse.higgins.idas.api.model.INodeModel;
 import org.eclipse.higgins.idas.api.model.IDisplayData;
 import org.eclipse.higgins.idas.api.model.IMetadataModel;
 import org.eclipse.higgins.idas.api.model.IdASModelException;
@@ -23,7 +23,7 @@
 import com.hp.hpl.jena.rdf.model.RDFNode;
 import com.hp.hpl.jena.rdf.model.Resource;
 
-public class DigitalSubjectModel implements IDigitalSubjectModel {
+public class DigitalSubjectModel implements INodeModel {
 	private Log log = LogFactory.getLog(DigitalSubjectModel.class);
 
 	protected ContextModel ctx = null;
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.inmem.test/src/org/eclipse/higgins/idas/cp/inmem/test/InMemoryCPTest.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.inmem.test/src/org/eclipse/higgins/idas/cp/inmem/test/InMemoryCPTest.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.inmem.test/src/org/eclipse/higgins/idas/cp/inmem/test/InMemoryCPTest.java	(working copy)
@@ -21,7 +21,7 @@
 import org.eclipse.higgins.idas.api.IAttributeValue;
 import org.eclipse.higgins.idas.api.IContext;
 import org.eclipse.higgins.idas.api.IContextFactory;
-import org.eclipse.higgins.idas.api.IDigitalSubject;
+import org.eclipse.higgins.idas.api.INode;
 import org.eclipse.higgins.idas.api.ITypedValue;
 import org.eclipse.higgins.idas.api.IdASException;
 import org.eclipse.higgins.idas.cp.inmem.InMemoryContextFactory;
@@ -51,7 +51,7 @@
 		_runContextTest();
 	}
 
-	private IDigitalSubject _setupnewDS(
+	private INode _setupnewDS(
 		IContext context,
 		String testName,
 		String attributeTypes[],
@@ -60,7 +60,7 @@
 		if (attributeTypes.length != attributeValues.length)
 			throw new IdASException();
 
-		IDigitalSubject ds = context.addSubject(new URI(testName), testName);
+		INode ds = context.addNode(new URI(testName), testName);
 		
 		for (int iLoop = 0; iLoop < attributeTypes.length; iLoop++)
 		{
@@ -83,9 +83,9 @@
 			if (context != null)
 			{
 				context.open(null);
-				IDigitalSubject ds = _setupnewDS(context, "test1", new String[] {"role", "role"},
+				INode ds = _setupnewDS(context, "test1", new String[] {"role", "role"},
 					new String[] {"roleValue1", "roleValue2"});
-				_displaySubjectInfo(ds);
+				_displayNodeInfo(ds);
 
 //				IAttribute attr = ds.getAttribute(new URI("role"), null);
 				Iterator attrListItr = ds.getAttributes();
@@ -108,12 +108,12 @@
 		}
 	}
 
-	private void _displaySubjectInfo(
-		IDigitalSubject subject) throws IdASException
+	private void _displayNodeInfo(
+		INode node) throws IdASException
 	{
-		Iterator attrIter = subject.getAttributes();
-		System.out.println(subject.getSubjectID());
-		System.out.println(subject.getSubjectType());
+		Iterator attrIter = node.getAttributes();
+		System.out.println(node.getNodeID());
+		System.out.println(node.getNodeType());
 
 		while (attrIter.hasNext())
 		{
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.inmem/src/org/eclipse/higgins/idas/cp/inmem/InMemoryContext.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.inmem/src/org/eclipse/higgins/idas/cp/inmem/InMemoryContext.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.inmem/src/org/eclipse/higgins/idas/cp/inmem/InMemoryContext.java	(working copy)
@@ -24,26 +24,26 @@
 import org.eclipse.higgins.idas.api.ContextNotOpenException;
 import org.eclipse.higgins.idas.api.ContextOpenException;
 import org.eclipse.higgins.idas.api.IContextId;
-import org.eclipse.higgins.idas.api.IDigitalSubject;
+import org.eclipse.higgins.idas.api.INode;
 import org.eclipse.higgins.idas.api.IFilter;
 import org.eclipse.higgins.idas.api.IdASException;
-import org.eclipse.higgins.idas.api.InvalidSubjectIDException;
+import org.eclipse.higgins.idas.api.InvalidNodeIDException;
 import org.eclipse.higgins.idas.api.InvalidTypeException;
-import org.eclipse.higgins.idas.api.NoSuchSubjectException;
+import org.eclipse.higgins.idas.api.NoSuchNodeException;
 import org.eclipse.higgins.idas.api.NotImplementedException;
-import org.eclipse.higgins.idas.api.SubjectExistsException;
+import org.eclipse.higgins.idas.api.NodeExistsException;
 import org.eclipse.higgins.idas.spi.BasicContext;
-import org.eclipse.higgins.idas.spi.ISubjectContainer;
-import org.eclipse.higgins.idas.spi.SubjectNotification;
+import org.eclipse.higgins.idas.spi.INodeContainer;
+import org.eclipse.higgins.idas.spi.NodeNotification;
 
 /**
  * An implementation of a <a href="http://www.eclipse.org/higgins/";>Higgins</a>.
- * Context Provider which is intended for use when Digital Subjects are being
+ * Context Provider which is intended for use when Nodes are being
  * manufactored on the fly or need to be cached privatly.
  * 
- * Please see the Samples section for one usage of creating Digital Subjects
- * from SAML assertions, then allowing interfaces which require Digital Subjects
- * to manipulate the InMemory Digital Subject.
+ * Please see the Samples section for one usage of creating Nodes
+ * from SAML assertions, then allowing interfaces which require Nodes
+ * to manipulate the InMemory Node.
  * 
  * @author jimse@xxxxxxxxxx
  * @author tdoman@xxxxxxxxxx
@@ -50,7 +50,7 @@
  * @author dbuss@xxxxxxxxxx
  */
 
-public class InMemoryContext extends BasicContext implements ISubjectContainer
+public class InMemoryContext extends BasicContext implements INodeContainer
 {
 	// private Logger _log = Logger.getLogger(InMemoryContext.class.getName());
 	// private Hashtable<String, Object> _env;
@@ -83,7 +83,7 @@
 
 		_bIsOpen = true;
 
-		// TODO: return subjectID
+		// TODO: return nodeID
 		return null;
 	}
 
@@ -156,12 +156,12 @@
 	/*
 	 * (non-Javadoc)
 	 * 
-	 * @see org.eclipse.higgins.idas.api.IContext#getSubject(java.lang.String)
+	 * @see org.eclipse.higgins.idas.api.IContext#getNode(java.lang.String)
 	 */
-	public IDigitalSubject getSubject(
-		String subjectID) throws IdASException
+	public INode getNode(
+		String nodeID) throws IdASException
 	{
-		return getSubject(subjectID, null);
+		return getNode(nodeID, null);
 	}
 
 	/*
@@ -167,11 +167,11 @@
 	/*
 	 * (non-Javadoc)
 	 * 
-	 * @see org.eclipse.higgins.idas.api.IContext#getSubject(java.lang.String,
+	 * @see org.eclipse.higgins.idas.api.IContext#getNode(java.lang.String,
 	 *      java.util.Iterator)
 	 */
-	public IDigitalSubject getSubject(
-		String subjectID,
+	public INode getNode(
+		String nodeID,
 		Iterator attrSelectionList) throws IdASException
 	{
 		if (!_bIsOpen)
@@ -177,15 +177,15 @@
 		if (!_bIsOpen)
 			throw new ContextNotOpenException();
 
-		CIStringKey idKey = new CIStringKey(subjectID);
+		CIStringKey idKey = new CIStringKey(nodeID);
 
 		// TODO: filter things not in attrSelectionList
 		if (_idHashMap == null)
-			throw new NoSuchSubjectException("No such subject: " + idKey);
+			throw new NoSuchNodeException("No such node: " + idKey);
 
-		IDigitalSubject ds = (IDigitalSubject) _idHashMap.get(idKey);
+		INode ds = (INode) _idHashMap.get(idKey);
 		if (ds == null)
-			throw new NoSuchSubjectException("No such subject: " + idKey);
+			throw new NoSuchNodeException("No such node: " + idKey);
 		return ds;
 	}
 
@@ -192,12 +192,12 @@
 	/*
 	 * (non-Javadoc)
 	 * 
-	 * @see org.eclipse.higgins.idas.api.IContext#getSubjects(org.eclipse.higgins.idas.api.IFilter)
+	 * @see org.eclipse.higgins.idas.api.IContext#getNodes(org.eclipse.higgins.idas.api.IFilter)
 	 */
-	public Iterator getSubjects(
+	public Iterator getNodes(
 		IFilter filter) throws IdASException
 	{
-		return getSubjects(filter, null);
+		return getNodes(filter, null);
 	}
 
 	/**
@@ -202,7 +202,7 @@
 
 	/**
 	 */
-	public Iterator getSubjects(
+	public Iterator getNodes(
 		IFilter filter,
 		Iterator attrSelectionList) throws IdASException
 	{
@@ -215,12 +215,12 @@
 	/*
 	 * 
 	 */
-	private void _addSubject(
-		String subjectID,
-		IDigitalSubject ds)
+	private void _addNode(
+		String nodeID,
+		INode ds)
 	{
 
-		CIStringKey idKey = new CIStringKey(subjectID);
+		CIStringKey idKey = new CIStringKey(nodeID);
 		if (_idHashMap == null)
 			_idHashMap = new HashMap();
 		_idHashMap.put(idKey, ds);
@@ -228,9 +228,9 @@
 
 	/*
 	 * (non-Javadoc)
-	 * @see org.eclipse.higgins.idas.spi.BasicContext#addSubject(java.net.URI, java.lang.String)
+	 * @see org.eclipse.higgins.idas.spi.BasicContext# addNode(java.net.URI, java.lang.String)
 	 */
-	public IDigitalSubject addSubject(URI type, String subjectID) throws IdASException, InvalidTypeException, InvalidSubjectIDException, SubjectExistsException 
+	public INode addNode(URI type, String nodeID) throws IdASException, InvalidTypeException, InvalidNodeIDException, NodeExistsException 
 	{
 		if (!_bIsOpen)
 			throw new ContextNotOpenException();
@@ -235,9 +235,9 @@
 		if (!_bIsOpen)
 			throw new ContextNotOpenException();
 		
-		IDigitalSubject ds = new InMemoryDigitalSubject(this, type, subjectID);
+		INode ds = new InMemoryNode(this, type, nodeID);
 
-		_addSubject(subjectID, ds);
+		_addNode(nodeID, ds);
 		return ds;
 	}
 
@@ -243,9 +243,9 @@
 
 	/*
 	 * (non-Javadoc)
-	 * @see org.eclipse.higgins.idas.spi.BasicContext#addSubject(org.eclipse.higgins.idas.api.IDigitalSubject)
+	 * @see org.eclipse.higgins.idas.spi.BasicContext#addNode(org.eclipse.higgins.idas.api.INode)
 	 */
-	public IDigitalSubject addSubject(IDigitalSubject copyFrom) throws IdASException, SubjectExistsException 
+	public INode addNode(INode copyFrom) throws IdASException, NodeExistsException 
 	{
 		if (!_bIsOpen)
 			throw new ContextNotOpenException();
@@ -261,10 +261,10 @@
 	/*
 	 * (non-Javadoc)
 	 * 
-	 * @see org.eclipse.higgins.idas.api.IContext#verifySubjectAttributes(java.lang.String,
+	 * @see org.eclipse.higgins.idas.api.IContext#verifyNodeAttributes(java.lang.String,
 	 *      java.util.Iterator)
 	 */
-	public boolean verifySubjectAttributes(
+	public boolean verifyNodeAttributes(
 		String arg0,
 		Iterator arg1) throws IdASException
 	{
@@ -274,9 +274,9 @@
 		throw new NotImplementedException();
 	}
 
-	public void updateNotification(SubjectNotification subjectNotif) throws IdASException {
-		if (subjectNotif.getAction().equals(SubjectNotification.UPDATE_REMOVE)) {
-			CIStringKey idKey = new CIStringKey(subjectNotif.getSubject().getSubjectID());
+	public void updateNotification(NodeNotification nodeNotif) throws IdASException {
+		if (nodeNotif.getAction().equals(NodeNotification.UPDATE_REMOVE)) {
+			CIStringKey idKey = new CIStringKey(nodeNotif.getNode().getNodeID());
 			if (_idHashMap != null)
 				_idHashMap.remove(idKey);
 		}
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.inmem/src/org/eclipse/higgins/idas/cp/inmem/InMemoryContextFactory.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.inmem/src/org/eclipse/higgins/idas/cp/inmem/InMemoryContextFactory.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.inmem/src/org/eclipse/higgins/idas/cp/inmem/InMemoryContextFactory.java	(working copy)
@@ -29,12 +29,12 @@
 * An implementation of a 
 * <a href="http://www.eclipse.org/higgins/";>Higgins</a>.
 *  Context Factory for the InMemory/Mapping Context Provider
-*  which is intended for use when Digital Subjects 
+*  which is intended for use when Nodes 
 *  are being manufactored on the fly or need to be cached privatly.  
 *  
-* Please see the Samples section for one usage of creating Digital
-* Subjects from SAML assertions, then allowing interfaces which require 
-* Digital Subjects to manipulate the InMemory Digital Subject.
+* Please see the Samples section for one usage of creating Nodes 
+* from SAML assertions, then allowing interfaces which require 
+* Nodes to manipulate the InMemory Node.
 
 * @author jimse@xxxxxxxxxx
 * @author tdoman@xxxxxxxxxx
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.inmem/src/org/eclipse/higgins/idas/cp/inmem/InMemoryDigitalSubject.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.inmem/src/org/eclipse/higgins/idas/cp/inmem/InMemoryDigitalSubject.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.inmem/src/org/eclipse/higgins/idas/cp/inmem/InMemoryDigitalSubject.java	(working copy)
@@ -1,83 +0,0 @@
-/**
- * Copyright (c) 2006-2007 Novell, Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *		Tom Doman
- *		Jim Sermersheim
- *		Duane Buss
- */
-
-package org.eclipse.higgins.idas.cp.inmem;
-
-import java.net.URI;
-import java.util.Iterator;
-
-import org.eclipse.higgins.idas.api.IDigitalSubject;
-import org.eclipse.higgins.idas.api.IdASException;
-import org.eclipse.higgins.idas.spi.AttributeNotification;
-import org.eclipse.higgins.idas.spi.BasicDigitalSubject;
-import org.eclipse.higgins.idas.spi.ISubjectContainer;
-import org.eclipse.higgins.idas.spi.MetadataNotification;
-import org.eclipse.higgins.idas.spi.SubjectNotification;
-
-/**
-* An implementation of a 
-* <a href="http://www.eclipse.org/higgins/";>Higgins</a>.
-*  Digital Subject for the InMemory/Mapping Context Provider
-*  which is intended for use when Digital Subjects 
-*  are being manufactored on the fly or need to be cached privatly.  
-*  
-* Please see the Samples section for one usage of creating Digital
-* Subjects from SAML assertions, then allowing interfaces which require 
-* Digital Subjects to manipulate the InMemory Digital Subject.
-
-* @author jimse@xxxxxxxxxx
-* @author tdoman@xxxxxxxxxx
-* @author dbuss@xxxxxxxxxx
-*/
-
-public class InMemoryDigitalSubject extends BasicDigitalSubject implements IDigitalSubject
-{
-	private ISubjectContainer _container;
-	
-	public InMemoryDigitalSubject(
-			InMemoryContext container,
-			URI type,
-			String subjectId
-		) throws IdASException
-	{
-		super(container, type, subjectId);
-		_container = container;
-	}
-	
-	/**
-	 */
-	public InMemoryDigitalSubject(
-		InMemoryContext container,
-		URI type,
-		String subjectID,
-		Iterator attributes,
-		Iterator metadata) throws IdASException
-	{
-		super(container, type, subjectID, attributes, metadata);
-		_container = container;
-	}
-
-	public void remove() throws IdASException {
-		SubjectNotification subjectNotif = new SubjectNotification(this, SubjectNotification.UPDATE_REMOVE, null, null);
-		_container.updateNotification(subjectNotif);
-	}
-
-	public void updateNotification(AttributeNotification attrNotif) throws IdASException {
-		// AFAIK, everything is happening in memoery, so no notifications need to happen
-	}
-
-	public void updateNotification(MetadataNotification metaNotif) throws IdASException {
-		// AFAIK, everything is happening in memoery, so no notifications need to happen
-	}
-
-}
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.inmem/src/org/eclipse/higgins/idas/cp/inmem/InMemoryNode.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.inmem/src/org/eclipse/higgins/idas/cp/inmem/InMemoryNode.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.cp.inmem/src/org/eclipse/higgins/idas/cp/inmem/InMemoryNode.java	(working copy)
@@ -16,13 +16,15 @@
 import java.net.URI;
 import java.util.Iterator;
 
-import org.eclipse.higgins.idas.api.IDigitalSubject;
+import org.eclipse.higgins.idas.api.INode;
 import org.eclipse.higgins.idas.api.IdASException;
+import org.eclipse.higgins.idas.api.NotImplementedException;
+import org.eclipse.higgins.idas.api.model.INodeModel;
 import org.eclipse.higgins.idas.spi.AttributeNotification;
-import org.eclipse.higgins.idas.spi.BasicDigitalSubject;
-import org.eclipse.higgins.idas.spi.ISubjectContainer;
+import org.eclipse.higgins.idas.spi.BasicNode;
+import org.eclipse.higgins.idas.spi.INodeContainer;
 import org.eclipse.higgins.idas.spi.MetadataNotification;
-import org.eclipse.higgins.idas.spi.SubjectNotification;
+import org.eclipse.higgins.idas.spi.NodeNotification;
 
 /**
 * An implementation of a 
@@ -27,13 +29,13 @@
 /**
 * An implementation of a 
 * <a href="http://www.eclipse.org/higgins/";>Higgins</a>.
-*  Digital Subject for the InMemory/Mapping Context Provider
-*  which is intended for use when Digital Subjects 
-*  are being manufactored on the fly or need to be cached privatly.  
+*  Node for the InMemory/Mapping Context Provider
+*  which is intended for use when Nodes 
+*  are being manufactured on the fly or need to be cached privately.  
 *  
-* Please see the Samples section for one usage of creating Digital
-* Subjects from SAML assertions, then allowing interfaces which require 
-* Digital Subjects to manipulate the InMemory Digital Subject.
+* Please see the Samples section for one usage of creating Nodes 
+* from SAML assertions, then allowing interfaces which require 
+* Nodes to manipulate the InMemory Node.
 
 * @author jimse@xxxxxxxxxx
 * @author tdoman@xxxxxxxxxx
@@ -40,17 +42,17 @@
 * @author dbuss@xxxxxxxxxx
 */
 
-public class InMemoryDigitalSubject extends BasicDigitalSubject implements IDigitalSubject
+public class InMemoryNode extends BasicNode implements INode
 {
-	private ISubjectContainer _container;
+	private INodeContainer _container;
 	
-	public InMemoryDigitalSubject(
+	public InMemoryNode(
 			InMemoryContext container,
 			URI type,
-			String subjectId
+			String nodeId
 		) throws IdASException
 	{
-		super(container, type, subjectId);
+		super(container, type, nodeId);
 		_container = container;
 	}
 	
@@ -56,14 +58,14 @@
 	
 	/**
 	 */
-	public InMemoryDigitalSubject(
+	public InMemoryNode(
 		InMemoryContext container,
 		URI type,
-		String subjectID,
+		String nodeID,
 		Iterator attributes,
 		Iterator metadata) throws IdASException
 	{
-		super(container, type, subjectID, attributes, metadata);
+		super(container, type, nodeID, attributes, metadata);
 		_container = container;
 	}
 
@@ -68,16 +70,16 @@
 	}
 
 	public void remove() throws IdASException {
-		SubjectNotification subjectNotif = new SubjectNotification(this, SubjectNotification.UPDATE_REMOVE, null, null);
-		_container.updateNotification(subjectNotif);
+		NodeNotification nodeNotif = new NodeNotification(this, NodeNotification.UPDATE_REMOVE, null, null);
+		_container.updateNotification(nodeNotif);
 	}
 
 	public void updateNotification(AttributeNotification attrNotif) throws IdASException {
-		// AFAIK, everything is happening in memoery, so no notifications need to happen
+		// AFAIK, everything is happening in memory, so no notifications need to happen
 	}
 
 	public void updateNotification(MetadataNotification metaNotif) throws IdASException {
-		// AFAIK, everything is happening in memoery, so no notifications need to happen
+		// AFAIK, everything is happening in memory, so no notifications need to happen
 	}
 
 }
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/IAttribute.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/IAttribute.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/IAttribute.java	(working copy)
@@ -17,7 +17,7 @@
 import org.eclipse.higgins.idas.api.model.IAttributeModel;
 
 /**
- * As defined at (TODO (Doc): add reference), This interface represents an attribute of a DigitalSubject.<p>
+ * As defined at (TODO (Doc): add reference), This interface represents an attribute of a Node.<p>
  * An attribute is a typed set of values. 
  * When the attribute's model dictates that it is single-valued {@link #isSingleValued()}
  * then this object may be cast to an {@link ISingleValuedAttribute}<p>
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/IAttributeValue.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/IAttributeValue.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/IAttributeValue.java	(working copy)
@@ -36,7 +36,7 @@
 	/**
 	 * Returns this value's data type (like string, int, address)
 	 * TODO (Doc): refer to an example like those found at <a href="http://wiki.eclipse.org/index.php/Person-with-address_Example_Context_Ontology";>http://wiki.eclipse.org/index.php/Person-with-address_Example_Context_Ontology</a>
-	 * @return The OWL type for this attribute's value (i.e. http://www.w3.org/2001/XMLSchema/string or http://www.eclipse.org/higgins/ontologies/2006/higgins#SubjectRelation).
+	 * @return The OWL type for this attribute's value (i.e. http://www.w3.org/2001/XMLSchema/string or http://www.eclipse.org/higgins/ontologies/2006/higgins#NodeRelation).
 	 * @throws IdASException
 	 * @deprecated Instead, call {@link IAttributeValue#getModel()} and from that call {@link IModel#getType()}.  
 	 * Doing this is equivalent to calling this method.
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/IContext.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/IContext.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/IContext.java	(working copy)
@@ -17,7 +17,7 @@
 import org.eclipse.higgins.idas.api.model.IContextModel;
 
 /**
- * As defined at <a href="http://spwiki.editme.com/Context";>http://spwiki.editme.com/Context</a> and <a href="http://spwiki.editme.com/ContextProvider";>http://spwiki.editme.com/ContextProvider</a>, This interface holds a set of {@link IDigitalSubject} objects.<p>
+ * As defined at <a href="http://spwiki.editme.com/Context";>http://spwiki.editme.com/Context</a> and <a href="http://spwiki.editme.com/ContextProvider";>http://spwiki.editme.com/ContextProvider</a>, This interface holds a set of {@link INode} objects.<p>
  * 
  */
 public interface IContext
@@ -31,15 +31,15 @@
 	 * Upon success (return with no exception), this Context is in an "open" state 
 	 * and is available to have other methods called (such as 
 	 * {@link #addRelationship(URI)}, 
-	 * {@link #addSubject(URI, String)}, 
+	 * {@link #addNode(URI, String)}, 
 	 * {@link #exportData(String, String)}, 
 	 * {@link #getRelationships()}, 
-	 * {@link #getSubject(String)}, 
-	 * {@link #getSubject(String, Iterator)}, 
-	 * {@link #getSubjects(IFilter)},
-	 * {@link #getSubjects(IFilter, Iterator)},
+	 * {@link #getNode(String)}, 
+	 * {@link #getNode(String, Iterator)}, 
+	 * {@link #getNodes(IFilter)},
+	 * {@link #getNodes(IFilter, Iterator)},
 	 * {@link #importData(String, String)},
-	 * {@link #verifySubjectAttributes(String, Iterator)}}
+	 * {@link #verifyNodeAttributes(String, Iterator)}}
 	 * ). 
 	 * Methods requiring the context to be open throw {@link ContextNotOpenException} 
 	 * when in an un-open state.<p>
@@ -48,7 +48,7 @@
 	 * The antithesis of this method is close().
 	 *
 	 * @param authentication AuthN object used to open the context.  This may be an instance of {@link IAuthNAttributesMaterials} or some other object used to authenticate. 
-	 * @return Subject ID of the DigitalSubject representing the identity used to open the context.  May be null.
+	 * @return Node ID of the Node representing the identity used to open the context.  May be null.
 	 * @throws IdASException
 	 * @throws ContextOpenException, AuthenticationException
 	 * @see #close() 
@@ -99,7 +99,7 @@
 	/**
 	 * Returns a model of the context object as it defined in the context's
 	 * schema. Returned model could be used to analyze context's schema and
-	 * discover what types of Digital Subjects are defined.
+	 * discover what types of Nodes are defined.
 	 * 
 	 * @return the model of this Context.
 	 * @throws IdASException
@@ -117,7 +117,7 @@
 	/**
 	 * Exports this Context.<p>
 	 * TODO (Arch): filter format TBD<p>
-	 * TODO (Arch): Does this export only Digital Subjects, or the entire Context (Metadata, Schema, DS, Relationships)?
+	 * TODO (Arch): Does this export only Nodes, or the entire Context (Metadata, Schema, Nodes, Relationships)?
 	 * @param filter May be {@code null}. Used to select a subset of this Context to be exported.
 	 * @param representationFormat Indicates the format of the string to be returned. TODO (Arch)(Doc): Specify format type. Give example
 	 * @return String in the form of representationFormat containing the exported Context.
@@ -128,7 +128,7 @@
 	/**
 	 * Imports this Context.<p>
 	 * TODO (Arch): filter format TBD<p>
-	 * TODO (Arch): Does this import only Digital Subjects, or the entire Context (Metadata, Schema, DS, Relationships)?
+	 * TODO (Arch): Does this import only Nodes, or the entire Context (Metadata, Schema, Nodes, Relationships)?
 	 * TODO (Arch)(Doc): Discuss collisions.
 	 * @param filter May be {@code null}. Used to select a subset of the external data set to be imported.
 	 * @param representationFormat Indicates the format of the external data string being specified in external. TODO (Arch)(Doc): Specify format type. Give example
@@ -146,7 +146,7 @@
 	public IAuthNAttributesMaterials buildAuthNAttributesMaterials() throws IdASException;
 	
 	/**
-	 * Builds an IAttribute (unassociated with any digital subject).
+	 * Builds an IAttribute (unassociated with any node).
 	 * This is used to build up {@link IAuthNAttributesMaterials}
 	 * @param attrID
 	 * @return An {@link IAttribute}
@@ -155,7 +155,7 @@
 	public IAttribute buildAttribute(URI attrID) throws IdASException;
 	
 	/**
-	 * Builds an IFilter instance that may be used when calling {@link #getSubjects(IFilter)}
+	 * Builds an IFilter instance that may be used when calling {@link #getNodes(IFilter)}
 	 */
 	public IFilter buildFilter() throws IdASException;
 	
@@ -160,8 +160,8 @@
 	public IFilter buildFilter() throws IdASException;
 	
 	/**
-	 * Builds an assertion for Digital Subject Attributes 
-	 * (see {@link IDigitalSubject#getAttributes()} and {@link IDigitalSubject#getAttribute(URI)}) 
+	 * Builds an assertion for Node Attributes 
+	 * (see {@link INode#getAttributes()} and {@link INode#getAttribute(URI)}) 
 	 * which can be passed to {@link IFilter#setAssertion(IFilterAssertion)}
 	 */
 	public IFilterAttributeAssertion buildAttributeAssertion() throws IdASException;
@@ -167,8 +167,8 @@
 	public IFilterAttributeAssertion buildAttributeAssertion() throws IdASException;
 
 	/**
-	 * Builds an assertion for Digital Subject IDs 
-	 * (see {@link IDigitalSubject#getSubjectID()}) 
+	 * Builds an assertion for Node IDs 
+	 * (see {@link INode#getNodeID()}) 
 	 * which can be passed to {@link IFilter#setAssertion(IFilterAssertion)}
 	 * Note that this is simply a convenience method equivalent to creating an
 	 * IFilterAttributeAssertion for the 
@@ -174,11 +174,11 @@
 	 * IFilterAttributeAssertion for the 
 	 * http://www.eclipse.org/higgins/ontologies/2006/higgins#uniqueIdentifier attribute
 	 */
-	public IFilterSubjectIDAssertion buildSubjectIDAssertion() throws IdASException;
+	public IFilterNodeIDAssertion buildNodeIDAssertion() throws IdASException;
 
 	/**
-	 * Builds an assertion for Digital Subject Metadata 
-	 * (see {@link IDigitalSubject#getMetadataSet()}) 
+	 * Builds an assertion for Node Metadata 
+	 * (see {@link INode#getMetadataSet()}) 
 	 * which can be passed to {@link IFilter#setAssertion(IFilterAssertion)}
 	 */
 	public IFilterMetadataAssertion buildMetadataAssertion() throws IdASException;
@@ -184,11 +184,11 @@
 	public IFilterMetadataAssertion buildMetadataAssertion() throws IdASException;
 
 	/**
-	 * Builds an assertion for Digital Subject Types 
-	 * (see {@link IDigitalSubject#getSubjectType()}) 
+	 * Builds an assertion for Node Types 
+	 * (see {@link INode#getNodeType()}) 
 	 * which can be passed to {@link IFilter#setAssertion(IFilterAssertion)}
 	 */
-	public IFilterSubjectTypeAssertion buildSubjectTypeAssertion() throws IdASException;
+	public IFilterNodeTypeAssertion buildNodeTypeAssertion() throws IdASException;
 
 	/**
 	 * Builds a simple attribute value to be passed to {@link IFilterAttributeAssertion#setAssertionValue(IAttributeValue)}.<p>
@@ -223,58 +223,58 @@
 	 * @return The resulting Relationship.
 	 * @throws IdASException
 	 */
-	public IContextRelationship buildRelationship(URI relationshipType) throws IdASException;
+	public IContextRelation buildRelationship(URI relationshipType) throws IdASException;
 
 
 	/*
-	 * Methods relating to Digital Subjects
+	 * Methods relating to Nodes
 	 */
 
 	/**
-	 * Creates a new Digital Subject for this Context.<br>
+	 * Creates a new Node for this Context.<br>
 	 * This call is typically followed by one or more calls to 
-	 * {@link IDigitalSubject#addAttribute}, {@link IDigitalSubject#addMetadata}
-	 * on the returned IDigitalSubject
+	 * {@link INode#addAttribute}, {@link INode#addMetadata}
+	 * on the returned INode
 	 * Note: This operation is only applied to any backing data 
 	 * store after {@link IContext#applyUpdates()}
-	 * @param subjectType The URI specifying the type of Digital Subject being created
-	 * @param subjectID May be null.  When specified, uniquely names the subject within
+	 * @param nodeType The URI specifying the type of Node being created
+	 * @param nodeID May be null.  When specified, uniquely names the node within
 	 * this Context.  When null, indicates that the caller plans to later add an 
-	 * attribute or attributes which will be used to construct the unique subject ID
-	 * @return The resulting IDigitalSubject.  This is only applied to any backing data 
+	 * attribute or attributes which will be used to construct the unique node ID
+	 * @return The resulting INode.  This is only applied to any backing data 
 	 * store after {@link IContext#applyUpdates()}
-	 * @throws InvalidTypeException when the subjectType is invalid
-	 * @throws InvalidSubjectIDException when the subjectID is invalid
-	 * @throws SubjectExistsException when the subjectID is known to already exist
+	 * @throws InvalidTypeException when the nodeType is invalid
+	 * @throws InvalidNodeIDException when the nodeID is invalid
+	 * @throws NodeExistsException when the nodeID is known to already exist
 	 * @throws IdASException
 	 */
-	IDigitalSubject addSubject(URI subjectType, String subjectID) throws IdASException, InvalidTypeException, InvalidSubjectIDException, SubjectExistsException;
+	INode addNode(URI nodeType, String nodeID) throws IdASException, InvalidTypeException, InvalidNodeIDException, NodeExistsException;
 
 	/**
-	 * Creates a new Digital Subject for this Context by copying the data from the passed subject<br>
+	 * Creates a new Node for this Context by copying the data from the passed node<br>
 	 * Note: This operation is only applied to any backing data 
 	 * store after {@link IContext#applyUpdates()} is called.
-	 * @param copyFrom an {@link IDigitalSubject} from which data is copied to construct a new 
-	 * Digital Subject
-	 * @return The resulting IDigitalSubject.  This is only applied to any backing data 
+	 * @param copyFrom an {@link INode} from which data is copied to construct a new 
+	 * Node
+	 * @return The resulting INode.  This is only applied to any backing data 
 	 * store after {@link IContext#applyUpdates()} is called.
-	 * @throws SubjectExistsException when Subject is known to already exist
+	 * @throws NodeExistsException when copyFrom is known to already exist
 	 * @throws IdASException
 	 */
-	IDigitalSubject addSubject(IDigitalSubject copyFrom) throws IdASException, SubjectExistsException;
+	INode addNode(INode copyFrom) throws IdASException, NodeExistsException;
 
 	/**
-	 * This is the same as passing null as the attrSelectionList in {@link #getSubject(String, Iterator)}
-	 *	@see #getSubject(String, Iterator)
+	 * This is the same as passing null as the attrSelectionList in {@link #getNode(String, Iterator)}
+	 *	@see #getNode(String, Iterator)
 	 *	 
 	 */
-	public IDigitalSubject getSubject(String subjectID) throws IdASException;
+	public INode getNode(String nodeID) throws IdASException;
 	/**
-	 * Returns the Digital Subject matching the specified subjectID.
-	 * This is effectively the same as calling {@link #getSubjects} with
-	 * the filter set to {@literal <appropriate filter for subjectID=name>}<p>
+	 * Returns the Node matching the specified nodeID.
+	 * This is effectively the same as calling {@link #getNodes} with
+	 * the filter set to {@literal <appropriate filter for nodeID=name>}<p>
 	 * 
-	 * @param subjectID Contextually unique ID of Digital Subject to return.
+	 * @param nodeID Contextually unique ID of Node to return.
 	 * @param attrSelectionList Iterator holding the {@link URI}s of IAttribute types 
 	 * 							that the caller expects to access.  
 	 * 							A {@code null}indicates that the caller expects to read all attributes.  
@@ -283,47 +283,47 @@
 	 *                          The caller may eventually end up reading more or less.  The purpose of this 
 	 *                          parameter is so that a context provider which gathers data across a network 
 	 *                          connection can optimize based on the callers intended usage. 
-	 * @return IDigitalSubject.
+	 * @return INode.
 	 * @throws IdASException (typically a subclass of. See below).
-	 * @throws NoSuchSubjectException when subject specified by subjectID is not found.
+	 * @throws NoSuchNodeException when node specified by nodeID is not found.
 	 *
 	 */
-	public IDigitalSubject getSubject(String subjectID, Iterator attrSelectionList) throws IdASException;
+	public INode getNode(String nodeID, Iterator attrSelectionList) throws IdASException;
 	
 	/**
-	 * @see #getSubjects(IFilter, Iterator)
-	 * This is the same as passing null as the attrSelectionList in {@link #getSubjects(IFilter, Iterator)}
-	 * @return an Iterator of {@link IDigitalSubject}s that match the filter 
+	 * @see #getNodes(IFilter, Iterator)
+	 * This is the same as passing null as the attrSelectionList in {@link #getNodes(IFilter, Iterator)}
+	 * @return an Iterator of {@link INode}s that match the filter 
 	 */
-	public Iterator getSubjects(IFilter filter) throws IdASException;
+	public Iterator getNodes(IFilter filter) throws IdASException;
 	
 	/**
-	 * From this context, return {@link IDigitalSubject}s that match the specified filter <p>
-	 * @param filter 	Filter used to constrain the set of {@link IDigitalSubject}s returned.
-	 * 					A {@code null} or empty filter causes all {@link IDigitalSubject}s to be returned.
+	 * From this context, return {@link INode}s that match the specified filter <p>
+	 * @param filter 	Filter used to constrain the set of {@link INode}s returned.
+	 * 					A {@code null} or empty filter causes all {@link INode}s to be returned.
 	 * @param attrSelectionList Iterator of {@link URI}s of IAttribute types that the caller expects to access.  A {@code null} indicates that all attributes will be read.  An empty set indicates that no attributes will be read.
-	 * @return an Iterator of {@link IDigitalSubject}s that match the filter 
+	 * @return an Iterator of {@link INode}s that match the filter 
 	 * @throws IdASException
 	 *
 	 */
-	public Iterator getSubjects(IFilter filter, Iterator attrSelectionList) throws IdASException;
+	public Iterator getNodes(IFilter filter, Iterator attrSelectionList) throws IdASException;
 	
 	/**
-	 * Simple method for comparing a set of attribute assertions against a Digital Subject.<p>
-	 * TODO (Arch): This doesn't leave a way to verify that a DS representing a group contains a specific member in its member value.
+	 * Simple method for comparing a set of attribute assertions against a Node.<p>
+	 * TODO (Arch): This doesn't leave a way to verify that a Node representing a group contains a specific member in its member value.
 	 * 		We may want to consider allowing a filter to be passed here, or at least a partial attribute.
 	 * 
-	 * @param subjectID Contextually unique ID of Digital Subject being verified.
-	 * @param attributes Iterator of {@link IAttribute} to be compared to the Digital Subject specified by subjectID. 
-	 * @return {@code true} if all attribute assertions in attributes are found to be equal to those attributes in the Digital Subject specified by subjectID. {@code false} otherwise. 
+	 * @param nodeID Contextually unique ID of Node being verified.
+	 * @param attributes Iterator of {@link IAttribute} to be compared to the Node specified by nodeID. 
+	 * @return {@code true} if all attribute assertions in attributes are found to be equal to those attributes in the Node specified by nodeID. {@code false} otherwise. 
 	 * @throws IdASException (typically a subclass of. See below).
-	 * @throws NoSuchSubjectException when subject specified by subjectID is not found.
+	 * @throws NoSuchNodeException when node specified by nodeID is not found.
 	 */
-	public boolean verifySubjectAttributes(String subjectID, Iterator attributes) throws IdASException;
+	public boolean verifyNodeAttributes(String nodeID, Iterator attributes) throws IdASException;
 
 	/**
 	 * Returns the relationships this Object has to others.
-	 * @return Iterator of IContextRelationship objects. The set of Relationships this Object has.
+	 * @return Iterator of IContextRelation objects. The set of Relationships this Object has.
 	 * @throws IdASException
 	 */
 	public Iterator getRelationships() throws IdASException;
@@ -330,7 +330,7 @@
 
 	/**
 	 * Adds a context relationship to this context. 
-	 * This call is typically followed by a call to {@link IContextRelationship#addRelatedContext(URI)}
+	 * This call is typically followed by a call to {@link IContextRelation#addRelatedContext(URI)}
 	 * Note: This operation is only applied to any backing data 
 	 * store after {@link IContext#applyUpdates()} is called.
 	 * @param relationshipType The type of relationship to add.
@@ -336,7 +336,7 @@
 	 * @param relationshipType The type of relationship to add.
 	 * @throws IdASException
 	 */
-	public IContextRelationship addRelationship(URI relationshipType) throws IdASException;
+	public IContextRelation addRelationship(URI relationshipType) throws IdASException;
 
 	/**
 	 * Applies all update operations which have been called on this Context 
@@ -341,7 +341,7 @@
 	/**
 	 * Applies all update operations which have been called on this Context 
 	 * and called on any element held by this Context 
-	 * (including digital subjects, metadata, attributes, attribute metadata and it's value(s), and attribute values) 
+	 * (including nodess, metadata, attributes, attribute metadata and it's value(s), and attribute values) 
 	 * to a backing data store.  These updates are applied atomically when possible, but may not be 
 	 * applied atomically by Context Providers which do not support this.
 	 * Update operations which will be applied are any of the following:<br>
@@ -346,9 +346,9 @@
 	 * applied atomically by Context Providers which do not support this.
 	 * Update operations which will be applied are any of the following:<br>
 	 * {@link IContext#addRelationship(URI)}<br>
-	 * {@link IContext#addSubject(URI, String)}<br>
-	 * {@link IContext#addSubject(IDigitalSubject)}<br>
-	 * {@link IDigitalSubject#remove()}<br>
+	 * {@link IContext#addNode(URI, String)}<br>
+	 * {@link IContext#addNode(INode)}<br>
+	 * {@link INode#remove()}<br>
 	 * {@link IHasAttributes#addAttribute(IAttribute)}<br>
 	 * {@link IHasAttributes#addAttribute(URI)}<br>
 	 * {@link IHasAttributes#removeAttribute(URI)}<br>
@@ -378,7 +378,7 @@
 	/**
 	 * Cancels all update operations which have been called on this Context 
 	 * and called on any element held by this Context 
-	 * (including digital subjects, metadata, attributes, 
+	 * (including nodes, metadata, attributes, 
 	 * attribute metadata and it's value(s), and attribute values).
 	 * Any updates which have already been applied (by calling {@link #applyUpdates()}) are not canceled.   
 	 * @throws IdASException
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/IContextRelation.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/IContextRelation.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/IContextRelation.java	(working copy)
@@ -19,7 +19,7 @@
  * TODO (Doc): add javadoc to methods. 
  *
  */
-public interface IContextRelationship extends IHasMetadata {
+public interface IContextRelation extends IHasMetadata {
 
 	/**
 	 * Adds the specified context ID as a related context 
@@ -38,7 +38,7 @@
 	public void removeRelatedContext(URI contextID) throws IdASException;
 
 	/**
-	 * Removes this entire IContextRelationship from its containing IContext
+	 * Removes this entire IContextRelation from its containing IContext
 	 * Note: This operation is only applied to any backing data store after
 	 * {@link IContext#applyUpdates()} is called.
 	 * @throws {@link IdASException}
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/IContextRelationship.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/IContextRelationship.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/IContextRelationship.java	(working copy)
@@ -1,63 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 Novell, Inc..
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Jim Sermersheim - Initial cut of interfaces agreed upon 20060707
- *******************************************************************************/
-
-package org.eclipse.higgins.idas.api;
-
-import java.net.URI;
-import java.util.Iterator;
-
-/**
- * Represents a relationship to another {@link IContext}.<p>
- * TODO (Doc): add javadoc to methods. 
- *
- */
-public interface IContextRelationship extends IHasMetadata {
-
-	/**
-	 * Adds the specified context ID as a related context 
-	 * Note: This operation is only applied to any backing data 
-	 * store after {@link IContext#applyUpdates()} is called.
-	 * @param contextID the context ID of the specified related context to be added
-	 */
-	public void addRelatedContext(URI contextID) throws IdASException;
-
-	/**
-	 * Removes the specified context ID as a related context 
-	 * Note: This operation is only applied to any backing data 
-	 * store after {@link IContext#applyUpdates()} is called.
-	 * @param contextID the context ID of the specified related context to be removed
-	 */
-	public void removeRelatedContext(URI contextID) throws IdASException;
-
-	/**
-	 * Removes this entire IContextRelationship from its containing IContext
-	 * Note: This operation is only applied to any backing data store after
-	 * {@link IContext#applyUpdates()} is called.
-	 * @throws {@link IdASException}
-	 */
-	public void remove();
-	
-	/**
-	 * Returns this relationship's type.<p>
-	 * TODO (Doc): Add (or point at) doc which explains relationship types.
-	 * TODO (Doc): Add example types. Possibly some that denote hierarchy (parent, child, sibling). 
-	 * @return A {@link URI} representing this relationship's type.
-	 * @throws IdASException
-	 */
-	public URI getType() throws IdASException;
-	
-	/**
-	 * 
-	 * @return Iterator of {@link URI}. Each representing a related context ID
-	 * @throws IdASException
-	 */
-	public Iterator getRelatedObjects() throws IdASException;
-}
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/IDigitalSubject.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/IDigitalSubject.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/IDigitalSubject.java	(working copy)
@@ -1,79 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 Novell, Inc..
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Jim Sermersheim - Initial cut of interfaces agreed upon 20060707
- *******************************************************************************/
-
-package org.eclipse.higgins.idas.api;
-
-import java.net.URI;
-
-import org.eclipse.higgins.idas.api.model.IDigitalSubjectModel;
-import org.eclipse.higgins.idas.api.model.IModel;
-
-/**
- * As defined at 
- * <a href="http://spwiki.editme.com/DigitalSubjectM4";>http://spwiki.editme.com/DigitalSubjectM4</a> 
- * and <a href="http://spwiki.editme.com/ContextProvider";>http://spwiki.editme.com/ContextProvider</a>, 
- * This interface holds a set of {@link IDigitalSubject} objects.<p>
- * All Digital Subjects follow the http://www.eclipse.org/higgins/ontologies/2006/higgins ontology
- * as a base. As such, each Digital Subject has the attribute 
- * http://www.eclipse.org/higgins/ontologies/2006/higgins#uniqueIdentifier. {@link #getSubjectID()}
- * provides a shortcut to access the value of this attribute.
- * TODO (Doc): Finish javadoc on methods   
- */
-public interface IDigitalSubject extends IHasMetadata, IHasAttributes
-{
-	/**
-	 * @return The Context holding this Digital Subject.
-	 * @throws IdASException
-	 */
-	public IContext	getContext() throws IdASException;
-
-	/**
-	 * Returns the Contextually unique identifier of this Digital Subject. 
-	 * This is a convenience method equivalent to reading the subject's 
-	 * http://www.eclipse.org/higgins/ontologies/2006/higgins#uniqueIdentifier attribute.
-	 * 
-	 * @return Contextually unique identifier of this Digital Subject
-	 * @throws IdASException
-	 */
-	public String getSubjectID() throws IdASException;
-	
-	/**
-	 * Returns the type of this Digital Subject.  For example: http://www.eclipse.org/higgins/ontologies/2006/person#Person<p>
-	 * @return This Digital Subject's type
-	 * @throws IdASException
-	 * @deprecated Instead, call {@link IDigitalSubject#getModel()} and from that call {@link IModel#getType()}.  
-	 * Doing this is equivalent to calling this method.
-	 */
-	public URI getSubjectType() throws IdASException;
-
-	/**
-	 * Removes this Digital Subject from its Context.
-	 * Note: This operation is only applied to any backing data store after
-	 * {@link IContext#applyUpdates()} is called. <br>
-	 * Note: It is invalid to call subsequent update operations on this 
-	 * IDigitalSubject instance or on any elements held by this Digital 
-	 * Subject or by any of its sub-elements.
-	 * 
-	 * @throws IdASException
-	 */
-	void remove() throws IdASException;	
-	
-	/**
-	 * Returns a model of this type of Digital Subjects as it defined in the
-	 * context's schema. Returned model could be used to discover what
-	 * attributes are defined in the context's schema for this type of Digital
-	 * Subjects.
-	 * 
-	 * @return the model of this Digital Subject
-	 * @throws IdASException
-	 */
-	public IDigitalSubjectModel getModel() throws IdASException;
-}
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/IFilterAssertion.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/IFilterAssertion.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/IFilterAssertion.java	(working copy)
@@ -17,7 +17,7 @@
 
 /**
  * Represents a filter assertion. 
- * Sub-interfaces of this are defined for specific aspects of an IDigitalSubject.
+ * Sub-interfaces of this are defined for specific aspects of an INode.
  * An assertion is made up of at least a comparator (operator), 
  * and often an identifier and assertion value.<p>
  * TODO Methods here should be get*, not set* to match other interfaces.
@@ -39,9 +39,9 @@
 
 	/**
 	 * Identifies the component to be compared.<br>
-	 * For Digital Subject attribute assertions, this would be the type of the attribute (see {@link IAttribute#getAttrID()})<br>
-	 * For Digital Subject ID and Digital Subject type assertions, the type is not set.<br>
-	 * For Digital Subject metadata assertions, this would be the type of the metadata (see {@link IMetadata#getID()})<br>
+	 * For Node attribute assertions, this would be the type of the attribute (see {@link IAttribute#getAttrID()})<br>
+	 * For Node ID and Node type assertions, the type is not set.<br>
+	 * For Node metadata assertions, this would be the type of the metadata (see {@link IMetadata#getID()})<br>
 	 * @param id The type of the component
 	 * @param bIncludeSubtypes A value of true means that subtypes of the specified type are also to be included.
 	 */
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/IFilterAttributeAssertion.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/IFilterAttributeAssertion.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/IFilterAttributeAssertion.java	(working copy)
@@ -16,8 +16,8 @@
 import org.eclipse.higgins.idas.api.IdASException;
 
 /**
- * Represents a filter assertion about a Digital Subject's Attributes 
- * ({@link org.eclipse.higgins.idas.api.IDigitalSubject#getAttribute(URI)} and {@link org.eclipse.higgins.idas.api.IDigitalSubject#getAttributes()}).<p>
+ * Represents a filter assertion about a Node's Attributes 
+ * ({@link org.eclipse.higgins.idas.api.INode#getAttribute(URI)} and {@link org.eclipse.higgins.idas.api.INode#getAttributes()}).<p>
  *
  * This assertion is made up of a comparator (operator), attribute type and assertion value.<p>
  *  
@@ -28,7 +28,7 @@
 public interface IFilterAttributeAssertion extends IFilterAssertion {
 
 	/**
-	 * Compares true when the specified attribute type is present in a tested Digital Subject.<p>
+	 * Compares true when the specified attribute type is present in a tested Node.<p>
 	 * An assertion value is not specified.<P>
 	 * Value: {@value}
 	 */
@@ -35,7 +35,7 @@
 	public static final String COMP_ATTR_PRESENT = "urn:org.eclipse.higgins.idas.api.comparator.attribute.present";
 
 	/**
-	 * Compares true when a tested Digital Subject has a attribute of the specified type which contains at least one value equal to the specified assertion value.<P> 
+	 * Compares true when a tested Node has a attribute of the specified type which contains at least one value equal to the specified assertion value.<P> 
 	 * Value: {@value}
 	 */
 	public static final String COMP_ATTR_EQ = "urn:org.eclipse.higgins.idas.api.comparator.attribute.equality";
@@ -41,7 +41,7 @@
 	public static final String COMP_ATTR_EQ = "urn:org.eclipse.higgins.idas.api.comparator.attribute.equality";
 
 	/**
-	 * Compares true when a tested Digital Subject has a attribute of the specified type which contains at least one value greater or equal to the specified assertion value.<P> 
+	 * Compares true when a tested Node has a attribute of the specified type which contains at least one value greater or equal to the specified assertion value.<P> 
 	 * Value: {@value}
 	 */
 	public static final String COMP_ATTR_GE = "urn:org.eclipse.higgins.idas.api.comparator.attribute.greaterOrEqual";
@@ -47,7 +47,7 @@
 	public static final String COMP_ATTR_GE = "urn:org.eclipse.higgins.idas.api.comparator.attribute.greaterOrEqual";
 
 	/**
-	 * Compares true when a tested Digital Subject has a attribute of the specified type which contains at least one value less or equal to the specified assertion value.<P>
+	 * Compares true when a tested Node has a attribute of the specified type which contains at least one value less or equal to the specified assertion value.<P>
 	 * Value: {@value}
 	 */
 	public static final String COMP_ATTR_LE = "urn:org.eclipse.higgins.idas.api.comparator.attribute.lessOrEqual";
@@ -53,7 +53,7 @@
 	public static final String COMP_ATTR_LE = "urn:org.eclipse.higgins.idas.api.comparator.attribute.lessOrEqual";
 
 	/**
-	 * Compares true when a tested Digital Subject has a attribute of the specified type which contains at least one value containing the substring specified by the assertion value.<P>
+	 * Compares true when a tested Node has a attribute of the specified type which contains at least one value containing the substring specified by the assertion value.<P>
 	 * TODO: need to handle initial, any, final substrings. 
 	 * Value: {@value}
 	 */
@@ -60,14 +60,14 @@
 	public static final String COMP_ATTR_SUBSTR = "urn:org.eclipse.higgins.idas.api.comparator.attribute.substring";
 
 	/**
-	 * This Comparator is used for assertions of type SubjectRelationship (and sub-types). 
-	 * Compares true when a tested Digital Subject has the asserted relationship (of the asserted type) 
+	 * This Comparator is used for assertions of type NodeRelationship (and sub-types). 
+	 * Compares true when a tested Node has the asserted relationship (of the asserted type) 
 	 * whether that relationship is implied or explicit.<p>
 	 * For example, if the assertion specified a type of "urn:parentOf" and reference of 
 	 * {"someContext", "urn:Mary"} it could result in a match because either:<br>
-	 * A subject has a relationship attribute of type "urn:parentOf" and reference of 
+	 * A node has a relationship attribute of type "urn:parentOf" and reference of 
 	 * {"someContext", "urn:Mary"), or<br>
-	 * A subject is referenced by the subject "urn:Mary" in the context "someContext" 
+	 * A node is referenced by the node "urn:Mary" in the context "someContext" 
 	 * where the referencing relationship attribute is of type "urn:childOf" 
 	 * (assuming the model backing the context provides the proper inferences between 
 	 * parentOf and childOf)<p>  
@@ -76,7 +76,7 @@
 	public static final String COMP_ATTR_INFERRED_REL_EQ = "urn:org.eclipse.higgins.idas.api.comparator.attribute.inferred.relationship.equality";
 	
 	/**
-	 * Specifies the assertion data to be tested against values of a Digital Subject's attribute.
+	 * Specifies the assertion data to be tested against values of a Node's attribute.
 	 * 
 	 * To specify an assertion value nested in a complex type (like a postalAddress.city of "Provo"), 
 	 * one would pass in an IComplexAttrValue with the attribute(ies) containing 
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/IFilterMetadataAssertion.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/IFilterMetadataAssertion.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/IFilterMetadataAssertion.java	(working copy)
@@ -28,7 +28,7 @@
 	public static final String COMP_META_PRESENT = "urn:org.eclipse.higgins.idas.api.comparator.metadata.present";
 
 	/**
-	 * Compares true when a tested Digital Subject has a metadata of the specified type which contains a value equal to the specified assertion value.<P> 
+	 * Compares true when a tested Node has a metadata of the specified type which contains a value equal to the specified assertion value.<P> 
 	 * Value: {@value}
 	 */
 	public static final String COMP_META_EQ = "urn:org.eclipse.higgins.idas.api.comparator.metadata.equality";
@@ -34,7 +34,7 @@
 	public static final String COMP_META_EQ = "urn:org.eclipse.higgins.idas.api.comparator.metadata.equality";
 
 	/**
-	 * Compares true when a tested Digital Subject has a metadata of the specified type which contains a value greater or equal to the specified assertion value.<P> 
+	 * Compares true when a tested Node has a metadata of the specified type which contains a value greater or equal to the specified assertion value.<P> 
 	 * Value: {@value}
 	 */
 	public static final String COMP_PROP_GE = "urn:org.eclipse.higgins.idas.api.comparator.metadata.greaterOrEqual";
@@ -40,7 +40,7 @@
 	public static final String COMP_PROP_GE = "urn:org.eclipse.higgins.idas.api.comparator.metadata.greaterOrEqual";
 
 	/**
-	 * Compares true when a tested Digital Subject has a metadata of the specified type which contains a value less or equal to the specified assertion value.<P>
+	 * Compares true when a tested Node has a metadata of the specified type which contains a value less or equal to the specified assertion value.<P>
 	 * Value: {@value}
 	 */
 	public static final String COMP_PROP_LE = "urn:org.eclipse.higgins.idas.api.comparator.metadata.lessOrEqual";
@@ -46,7 +46,7 @@
 	public static final String COMP_PROP_LE = "urn:org.eclipse.higgins.idas.api.comparator.metadata.lessOrEqual";
 
 	/**
-	 * Compares true when a tested Digital Subject has a metadata of the specified type which contains a value containing the substring specified by the assertion value.<P>
+	 * Compares true when a tested Node has a metadata of the specified type which contains a value containing the substring specified by the assertion value.<P>
 	 * TODO: need to handle initial, any, final substrings. 
 	 * Value: {@value}
 	 */
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/IFilterNodeIDAssertion.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/IFilterNodeIDAssertion.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/IFilterNodeIDAssertion.java	(working copy)
@@ -12,10 +12,10 @@
 package org.eclipse.higgins.idas.api;
 
 /**
- * Represents a filter assertion about a Digital Subject's ID 
- * (see {@link org.eclipse.higgins.idas.api.IDigitalSubject#getSubjectID()}).<p>
+ * Represents a filter assertion about a Node's ID 
+ * (see {@link org.eclipse.higgins.idas.api.INode#getNodeID()}).<p>
  * This assertion is made up of a comparator (operator), and assertion value.<p>
- * The filter assertion is true for a Digital Subject when: <p>
+ * The filter assertion is true for a Node when: <p>
  * TODO (Doc): add assertion rules <p>
  *  
  * The particular form of the String used as an assertion is dictated by the comparator.
@@ -20,16 +20,16 @@
  *  
  * The particular form of the String used as an assertion is dictated by the comparator.
  */
-public interface IFilterSubjectIDAssertion extends IFilterAssertion {
+public interface IFilterNodeIDAssertion extends IFilterAssertion {
 
 	/**
-	 * Compares true when a tested Digital Subject has a unique ID equal to the specified assertion value.<P> 
+	 * Compares true when a tested Node has a unique ID equal to the specified assertion value.<P> 
 	 * Value: {@value}
 	 */
-	public static final String COMP_SUBJECTID_EQ = "urn:org.eclipse.higgins.idas.api.comparator.subjectid.equality";
+	public static final String COMP_NODEID_EQ = "urn:org.eclipse.higgins.idas.api.comparator.nodeid.equality";
 
 	/**
-	 * Specifies the assertion data to be tested against an IDigitalSubject's unique ID.
+	 * Specifies the assertion data to be tested against an INode's unique ID.
 	 * 
 	 */
 	public void setAssertionValue(String assertion) throws IdASException;
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/IFilterNodeTypeAssertion.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/IFilterNodeTypeAssertion.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/IFilterNodeTypeAssertion.java	(working copy)
@@ -14,10 +14,10 @@
 import java.net.URI;
 
 /**
- * Represents a filter assertion about a Digital Subject's Type 
- * (see {@link org.eclipse.higgins.idas.api.IDigitalSubject#getSubjectType()}).<p>
+ * Represents a filter assertion about a Node's Type 
+ * (see {@link org.eclipse.higgins.idas.api.INode#getNodeType()}).<p>
  * This assertion is made up of a comparator (operator), and assertion value.<p>
- * The filter assertion is true for a Digital Subject when: <p>
+ * The filter assertion is true for a Node when: <p>
  * TODO (Doc): add assertion rules <p>
  *  
  * The particular form of the String used as an assertion is dictated by the comparator.
@@ -22,10 +22,10 @@
  *  
  * The particular form of the String used as an assertion is dictated by the comparator.
  */
-public interface IFilterSubjectTypeAssertion extends IFilterAssertion {
+public interface IFilterNodeTypeAssertion extends IFilterAssertion {
 
 	/**
-	 * Compares true when a tested Digital Subject has a type equal to the specified assertion value.<p>
+	 * Compares true when a tested Node has a type equal to the specified assertion value.<p>
 	 * Value: {@value}
 	 */
 	public static final String COMP_TYPE_EQ = "urn:org.eclipse.higgins.idas.api.comparator.type.equality";
@@ -31,7 +31,7 @@
 	public static final String COMP_TYPE_EQ = "urn:org.eclipse.higgins.idas.api.comparator.type.equality";
 
 	/**
-	 * Specifies the assertion data to be tested against an IDigitalSubject's type.
+	 * Specifies the assertion data to be tested against an INode's type.
 	 * 
 	 */
 	public void setAssertionValue(URI assertion) throws IdASException;
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/IFilterSubjectIDAssertion.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/IFilterSubjectIDAssertion.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/IFilterSubjectIDAssertion.java	(working copy)
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 Novell, Inc..
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Jim Sermersheim - Initial cut
- *******************************************************************************/
-
-package org.eclipse.higgins.idas.api;
-
-/**
- * Represents a filter assertion about a Digital Subject's ID 
- * (see {@link org.eclipse.higgins.idas.api.IDigitalSubject#getSubjectID()}).<p>
- * This assertion is made up of a comparator (operator), and assertion value.<p>
- * The filter assertion is true for a Digital Subject when: <p>
- * TODO (Doc): add assertion rules <p>
- *  
- * The particular form of the String used as an assertion is dictated by the comparator.
- */
-public interface IFilterSubjectIDAssertion extends IFilterAssertion {
-
-	/**
-	 * Compares true when a tested Digital Subject has a unique ID equal to the specified assertion value.<P> 
-	 * Value: {@value}
-	 */
-	public static final String COMP_SUBJECTID_EQ = "urn:org.eclipse.higgins.idas.api.comparator.subjectid.equality";
-
-	/**
-	 * Specifies the assertion data to be tested against an IDigitalSubject's unique ID.
-	 * 
-	 */
-	public void setAssertionValue(String assertion) throws IdASException;
-	
-}
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/IFilterSubjectTypeAssertion.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/IFilterSubjectTypeAssertion.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/IFilterSubjectTypeAssertion.java	(working copy)
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 Novell, Inc..
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Jim Sermersheim - Initial cut
- *******************************************************************************/
-
-package org.eclipse.higgins.idas.api;
-
-import java.net.URI;
-
-/**
- * Represents a filter assertion about a Digital Subject's Type 
- * (see {@link org.eclipse.higgins.idas.api.IDigitalSubject#getSubjectType()}).<p>
- * This assertion is made up of a comparator (operator), and assertion value.<p>
- * The filter assertion is true for a Digital Subject when: <p>
- * TODO (Doc): add assertion rules <p>
- *  
- * The particular form of the String used as an assertion is dictated by the comparator.
- */
-public interface IFilterSubjectTypeAssertion extends IFilterAssertion {
-
-	/**
-	 * Compares true when a tested Digital Subject has a type equal to the specified assertion value.<p>
-	 * Value: {@value}
-	 */
-	public static final String COMP_TYPE_EQ = "urn:org.eclipse.higgins.idas.api.comparator.type.equality";
-
-	/**
-	 * Specifies the assertion data to be tested against an IDigitalSubject's type.
-	 * 
-	 */
-	public void setAssertionValue(URI assertion) throws IdASException;
-
-}
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/IHasAttributes.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/IHasAttributes.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/IHasAttributes.java	(working copy)
@@ -48,7 +48,7 @@
 	public ISingleValuedAttribute getSingleValuedAttribute(URI attrID) throws IdASException, NotSingleValuedAttributeException;
 
 	/**
-	 * Creates a new Attribute for this container of attributes (typically {@link IDigitalSubject}).
+	 * Creates a new Attribute for this container of attributes (typically {@link INode}).
 	 * This call is typically followed by one or more calls to 
 	 * {@link IAttribute#addValue}, {@link IAttribute#addSimpleValue}, 
 	 * {@link IAttribute#addComplexValue}, (@link IHasMetadata#addMetadata} on
@@ -54,7 +54,7 @@
 	 * {@link IAttribute#addComplexValue}, (@link IHasMetadata#addMetadata} on
 	 * the returned IAttribute
 	 * Note: If the specified attribute already exists, the subsequently added 
-	 * values are added to the subject, adding to the existing values of that attribute
+	 * values are added to the node, adding to the existing values of that attribute
 	 * (subject to any model restrictions).
 	 * Note: This operation is only applied to any backing data store after
 	 * {@link IContext#applyUpdates()} is called.
@@ -66,7 +66,7 @@
 	
 	/**
 	 * Creates a new Attribute for this container of 
-	 * attributes (typically {@link IDigitalSubject}) by copying the data from
+	 * attributes (typically {@link INode}) by copying the data from
 	 * the passed IAttribute.
 	 * Note: This operation is only applied to any backing data store after
 	 * IContext.applyUpdates() is called.
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/INode.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/INode.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/INode.java	(working copy)
@@ -13,7 +13,7 @@
 
 import java.net.URI;
 
-import org.eclipse.higgins.idas.api.model.IDigitalSubjectModel;
+import org.eclipse.higgins.idas.api.model.INodeModel;
 import org.eclipse.higgins.idas.api.model.IModel;
 
 /**
@@ -18,19 +18,19 @@
 
 /**
  * As defined at 
- * <a href="http://spwiki.editme.com/DigitalSubjectM4";>http://spwiki.editme.com/DigitalSubjectM4</a> 
- * and <a href="http://spwiki.editme.com/ContextProvider";>http://spwiki.editme.com/ContextProvider</a>, 
- * This interface holds a set of {@link IDigitalSubject} objects.<p>
- * All Digital Subjects follow the http://www.eclipse.org/higgins/ontologies/2006/higgins ontology
- * as a base. As such, each Digital Subject has the attribute 
- * http://www.eclipse.org/higgins/ontologies/2006/higgins#uniqueIdentifier. {@link #getSubjectID()}
+ * <a href="http://wiki.eclipse.org/Node";>http://wiki.eclipse.org/Node</a> 
+ * and <a href="http://wiki.eclipse.org/Context";>http://wiki.eclipse.org/Context</a>, 
+ * This interface holds a set of {@link INode} objects.<p>
+ * All Nodes follow the http://www.eclipse.org/higgins/ontologies/2006/higgins ontology
+ * as a base. As such, each Node has the attribute 
+ * http://www.eclipse.org/higgins/ontologies/2006/higgins#uniqueIdentifier. {@link #getNodeID()}
  * provides a shortcut to access the value of this attribute.
  * TODO (Doc): Finish javadoc on methods   
  */
-public interface IDigitalSubject extends IHasMetadata, IHasAttributes
+public interface INode extends IHasMetadata, IHasAttributes
 {
 	/**
-	 * @return The Context holding this Digital Subject.
+	 * @return The Context holding this Node.
 	 * @throws IdASException
 	 */
 	public IContext	getContext() throws IdASException;
@@ -36,31 +36,31 @@
 	public IContext	getContext() throws IdASException;
 
 	/**
-	 * Returns the Contextually unique identifier of this Digital Subject. 
-	 * This is a convenience method equivalent to reading the subject's 
+	 * Returns the Contextually unique identifier of this Node. 
+	 * This is a convenience method equivalent to reading the node's 
 	 * http://www.eclipse.org/higgins/ontologies/2006/higgins#uniqueIdentifier attribute.
 	 * 
-	 * @return Contextually unique identifier of this Digital Subject
+	 * @return Contextually unique identifier of this Node
 	 * @throws IdASException
 	 */
-	public String getSubjectID() throws IdASException;
+	public String getNodeID() throws IdASException;
 	
 	/**
-	 * Returns the type of this Digital Subject.  For example: http://www.eclipse.org/higgins/ontologies/2006/person#Person<p>
-	 * @return This Digital Subject's type
+	 * Returns the type of this Node.  For example: http://www.eclipse.org/higgins/ontologies/2006/person#Person<p>
+	 * @return This Node's type
 	 * @throws IdASException
-	 * @deprecated Instead, call {@link IDigitalSubject#getModel()} and from that call {@link IModel#getType()}.  
+	 * @deprecated Instead, call {@link INode#getModel()} and from that call {@link IModel#getType()}.  
 	 * Doing this is equivalent to calling this method.
 	 */
-	public URI getSubjectType() throws IdASException;
+	public URI getNodeType() throws IdASException;
 
 	/**
-	 * Removes this Digital Subject from its Context.
+	 * Removes this Node from its Context.
 	 * Note: This operation is only applied to any backing data store after
 	 * {@link IContext#applyUpdates()} is called. <br>
 	 * Note: It is invalid to call subsequent update operations on this 
-	 * IDigitalSubject instance or on any elements held by this Digital 
-	 * Subject or by any of its sub-elements.
+	 * INode instance or on any elements held by this Node 
+	 * or by any of its sub-elements.
 	 * 
 	 * @throws IdASException
 	 */
@@ -67,13 +67,12 @@
 	void remove() throws IdASException;	
 	
 	/**
-	 * Returns a model of this type of Digital Subjects as it defined in the
+	 * Returns a model of this type of Nodes as it defined in the
 	 * context's schema. Returned model could be used to discover what
-	 * attributes are defined in the context's schema for this type of Digital
-	 * Subjects.
+	 * attributes are defined in the context's schema for this type of Nodes.
 	 * 
-	 * @return the model of this Digital Subject
+	 * @return the model of this Node
 	 * @throws IdASException
 	 */
-	public IDigitalSubjectModel getModel() throws IdASException;
+	public INodeModel getModel() throws IdASException;
 }
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/InvalidNodeIDException.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/InvalidNodeIDException.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/InvalidNodeIDException.java	(working copy)
@@ -13,7 +13,7 @@
 /**
  * Thrown when a specified Type is invalid.
  */
-public class InvalidSubjectIDException extends IdASException {
+public class InvalidNodeIDException extends IdASException {
 
 	/**
 	 * 
@@ -23,7 +23,7 @@
 	/**
 	 * @see IdASException#IdASException()
 	 */
-	public InvalidSubjectIDException() {
+	public InvalidNodeIDException() {
 		super();
 	}
 
@@ -31,7 +31,7 @@
 	 * @param message
 	 * @see IdASException#IdASException(String)
 	 */
-	public InvalidSubjectIDException(String message) {
+	public InvalidNodeIDException(String message) {
 		super(message);
 	}
 
@@ -40,7 +40,7 @@
 	 * @param cause
 	 * @see IdASException#IdASException(String, Throwable)
 	 */
-	public InvalidSubjectIDException(String message, Throwable cause) {
+	public InvalidNodeIDException(String message, Throwable cause) {
 		super(message, cause);
 	}
 
@@ -48,7 +48,7 @@
 	 * @param cause
 	 * @see IdASException#IdASException(Throwable)
 	 */
-	public InvalidSubjectIDException(Throwable cause) {
+	public InvalidNodeIDException(Throwable cause) {
 		super(cause);
 	}
 
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/InvalidSubjectIDException.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/InvalidSubjectIDException.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/InvalidSubjectIDException.java	(working copy)
@@ -1,55 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Novell, Inc..
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Jim Sermersheim - Initial cut
- *******************************************************************************/
-package org.eclipse.higgins.idas.api;
-
-/**
- * Thrown when a specified Type is invalid.
- */
-public class InvalidSubjectIDException extends IdASException {
-
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = -2061692182356732973L;
-
-	/**
-	 * @see IdASException#IdASException()
-	 */
-	public InvalidSubjectIDException() {
-		super();
-	}
-
-	/**
-	 * @param message
-	 * @see IdASException#IdASException(String)
-	 */
-	public InvalidSubjectIDException(String message) {
-		super(message);
-	}
-
-	/**
-	 * @param message
-	 * @param cause
-	 * @see IdASException#IdASException(String, Throwable)
-	 */
-	public InvalidSubjectIDException(String message, Throwable cause) {
-		super(message, cause);
-	}
-
-	/**
-	 * @param cause
-	 * @see IdASException#IdASException(Throwable)
-	 */
-	public InvalidSubjectIDException(Throwable cause) {
-		super(cause);
-	}
-
-}
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/model/IAttributeModel.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/model/IAttributeModel.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/model/IAttributeModel.java	(working copy)
@@ -46,9 +46,9 @@
 	 * Returns the maximum number of values required by occurrences of this
 	 * attribute.
 	 * When this IAttributeModel is returned from 
-	 * {@link IDigitalSubjectModel#getAttributeModel(URI)} or 
-	 * {@link IDigitalSubjectModel#getAttributeModels()}, the maximum cardinality 
-	 * refers to occurrences of this attribute in relationship to that Digital Subject
+	 * {@link INodeModel#getAttributeModel(URI)} or 
+	 * {@link INodeModel#getAttributeModels()}, the maximum cardinality 
+	 * refers to occurrences of this attribute in relationship to that Node
 	 * type.
 	 * When this IAttributeModel is returned from {@link IContextModel#getModel(URI)},
 	 * the minimum cardinality refers to the default
@@ -53,9 +53,9 @@
 	 * When this IAttributeModel is returned from {@link IContextModel#getModel(URI)},
 	 * the minimum cardinality refers to the default
 	 * behavior of occurrences of this attribute, but the cardinality may be overridden
-	 * as the attribute is applied to any given Digital Subject type.  Therefore,
+	 * as the attribute is applied to any given Node type.  Therefore,
 	 * it's best to query an attribute's cardinality as it applies to a particular 
-	 * Digital Subject.
+	 * Node.
 	 * @return A positive number indicates the maximum number of values that may 
 	 * be present. The value -1 indicates that there is no limit to the number of values that may 
 	 * be present. The value 0 has no meaning and should not be returned. 
@@ -67,9 +67,9 @@
 	 * Returns the minimum number of values required by occurrences of this
 	 * attribute.
 	 * When this IAttributeModel is returned from 
-	 * {@link IDigitalSubjectModel#getAttributeModel(URI)} or 
-	 * {@link IDigitalSubjectModel#getAttributeModels()}, the minimum cardinality 
-	 * refers to occurrences of this attribute in relationship to that Digital Subject
+	 * {@link INodeModel#getAttributeModel(URI)} or 
+	 * {@link INodeModel#getAttributeModels()}, the minimum cardinality 
+	 * refers to occurrences of this attribute in relationship to that Node
 	 * type.
 	 * When this IAttributeModel is returned from {@link IContextModel#getModel(URI)}, 
 	 * the minimum cardinality refers to the default
@@ -74,9 +74,9 @@
 	 * When this IAttributeModel is returned from {@link IContextModel#getModel(URI)}, 
 	 * the minimum cardinality refers to the default
 	 * behavior of occurrences of this attribute, but the cardinality may be overridden
-	 * as the attribute is applied to any given Digital Subject type.  Therefore,
+	 * as the attribute is applied to any given Node type.  Therefore,
 	 * it's best to query an attribute's cardinality as it applies to a particular 
-	 * Digital Subject.
+	 * Node.
 	 * @return 0 if no values are required to be present. This of course also means the 
 	 * attribute itself is optional. A positive number indicates the minimum number of values that must 
 	 * be present. The value -1 has no meaning and should not be returned. 
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/model/IContextModel.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/model/IContextModel.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/model/IContextModel.java	(working copy)
@@ -34,10 +34,10 @@
 
 	/**
 	 * Generic method to query context model for any kind of element matching the 
-	 * specified <code>type</code>.  This could be the type of a subject,
+	 * specified <code>type</code>.  This could be the type of a node,
 	 * attribute, metadata, etc.
 	 * 
-	 * @param type the type of the subject for which to retrieve the model.
+	 * @param type the type of the node for which to retrieve the model.
 	 * @return the model of the element specified by <code>type</code>
 	 * or <code>null</code> if no element corresponding to that type is defined 
 	 * in this context model.
@@ -45,20 +45,18 @@
 	public IModel getModel(URI type);
 
 	/**
-	 * Returns IDigitalSubjectModels for the digital subjects 
+	 * Returns {@link INodeModel}s for the nodes 
 	 * which are defined (allowed) in this context model.
-	 * @return Iterator of {@link IDigitalSubjectModel}
-	 * @see org.eclipse.higgins.idas.api.IContext#getSubject(String)
-	 *      IContext#getSubject(String)
-	 * @see org.eclipse.higgins.idas.api.IContext#getSubjects(IFilter)
-	 *      IContext#getSubjects(IFilter)
+	 * @return Iterator of {@link INodeModel}
+	 * @see org.eclipse.higgins.idas.api.IContext#getNode(String)
+	 * @see org.eclipse.higgins.idas.api.IContext#getNodes(IFilter)
 	 */
-	public Iterator getSubjectModels();
+	public Iterator getNodeModels();
 	
 	/**
-	 * Returns the IDigitalSubjectModel for the specified subject type
-	 * @param subjectType
-	 * @return {@link IDigitalSubjectModel} for the specified subject type 
+	 * Returns the INodeModel for the specified node type
+	 * @param nodeType
+	 * @return {@link INodeModel} for the specified node type 
 	 */	
-	public IDigitalSubjectModel getSubjectModel(URI subjectType);
+	public INodeModel getNodeModel(URI nodeType);
 }
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/model/IDigitalSubjectModel.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/model/IDigitalSubjectModel.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/model/IDigitalSubjectModel.java	(working copy)
@@ -1,67 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 Parity Communications, Inc.
- * Copyright (c) 2007 Novell, Inc.
- * All rights reserved. This program and the accompanying materials 
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     Valery Kokhan - Initial cut of interfaces
- *     Jim Sermersheim (Novell) Update to 20070319 interfaces
- *******************************************************************************/
-
-package org.eclipse.higgins.idas.api.model;
-
-import java.net.URI;
-import java.util.Iterator;
-
-/**
- * Represents a model of digital subject as it defined in the context's ontology model.
- * <p>
- * The type returned by
- * {@link org.eclipse.higgins.idas.api.model.IModel#getType()}
- * could be used in
- * {@link org.eclipse.higgins.idas.api.IContext#addSubject(URI, String)} to
- * create an {@link org.eclipse.higgins.idas.api.IDigitalSubject} of the represented
- * type.
- * 
- * @see org.eclipse.higgins.idas.api.IDigitalSubject#getModel()
- */
-public interface IDigitalSubjectModel extends IModel {
-	/**
-	 * Returns IAttributeModels for the attributes
-	 * which are defined (allowed) in this subject model.
-	 * @return Iterator of {@link IAttributeModel}
-	 * @see org.eclipse.higgins.idas.api.IHasAttributes#getAttributes()
-	 *      IDigitalSubject.getAttributes()
-	 */
-	public Iterator getAttributeModels();
-
-	/**
-	 * Returns IAttributeModel for the specified attribute ID
-	 * 
-	 * @param attrID the ID of attribute.
-	 * @return attribute's model of requested ID or <code>null</code> if
-	 *         the specified attrID is not defined or not valid for this
-	 *         subject model.
-	 */
-	public IAttributeModel getAttributeModel(URI attrID);
-	
-	/**
-	 * Returns IMetadataModels for the metadata elements
-	 * which are defined (allowed) in this subject model.
-	 * @return Iterator of {@link IMetadataModel}
-	 */
-	public Iterator getMetadataModels(); 
-	
-	/**
-	 * Returns IMetadataModel for the specified metadata ID
-	 * 
-	 * @param metadataType the type of metadata.
-	 * @return metadata's model of requested type or <code>null</code> if
-	 *         the specified metadataID is not defined or not valid for this
-	 *         subject model.
-	 */
-	public IMetadataModel getMetadataModel(URI metadataType);	
-}
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/model/IDisplayData.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/model/IDisplayData.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/model/IDisplayData.java	(working copy)
@@ -14,7 +14,7 @@
 
 /**
  * Represents an information which could be used for visual representation of
- * subject.
+ * node.
  * 
  * @see <a
  *      href="http://www.eclipse.org/higgins/ontologies/2006/display-data";>http://www.eclipse.org/higgins/ontologies/2006/display-data</a>
@@ -21,9 +21,9 @@
  */
 public interface IDisplayData {
 	/**
-	 * Returns display label of subject.
+	 * Returns display label of node.
 	 * 
-	 * @return <code>String</code> containing display label of subject.
+	 * @return <code>String</code> containing display label of node.
 	 */
 	public String getLabel();
 
@@ -28,9 +28,9 @@
 	public String getLabel();
 
 	/**
-	 * Returns extended description of the subject.
+	 * Returns extended description of the node.
 	 * 
-	 * @return <code>String</code> containing extended description of subject
+	 * @return <code>String</code> containing extended description of node
 	 *         or <code>null</code> if not available.
 	 */
 	public String getDescription();
@@ -37,7 +37,7 @@
 
 	/**
 	 * Returns an {@link URL} of the image which could be used for visual
-	 * representation of subject or <code>null</code> if not available.
+	 * representation of node or <code>null</code> if not available.
 	 */
 	public URL getImage();
 
@@ -42,11 +42,11 @@
 	public URL getImage();
 
 	/**
-	 * Returns an information on display order of subjectwhich could be used for
-	 * visual representation of subject.
+	 * Returns an information on display order of node which could be used for
+	 * visual representation of node.
 	 * 
 	 * @return positive <code>int</code> value which represents display order
-	 *         of subject or <code>0</code> if not availabe.
+	 *         of node or <code>0</code> if not availabe.
 	 */
 	public int getOrder();
 }
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/model/IModel.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/model/IModel.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/model/IModel.java	(working copy)
@@ -29,7 +29,7 @@
 	/**
 	 * Returns display data information for this model.
 	 * 
-	 * @return display data of represented subject or <code>null</code> if not
+	 * @return display data of represented node or <code>null</code> if not
 	 *         available.
 	 * @see <a
 	 *      href="http://www.eclipse.org/higgins/ontologies/2006/display-data#displayData";>http://www.eclipse.org/higgins/ontologies/2006/display-data#displayData</a>
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/model/INodeModel.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/model/INodeModel.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/model/INodeModel.java	(working copy)
@@ -17,7 +17,7 @@
 import java.util.Iterator;
 
 /**
- * Represents a model of digital subject as it defined in the context's ontology model.
+ * Represents a model of a node as it defined in the context's ontology model.
  * <p>
  * The type returned by
  * {@link org.eclipse.higgins.idas.api.model.IModel#getType()}
@@ -22,19 +22,19 @@
  * The type returned by
  * {@link org.eclipse.higgins.idas.api.model.IModel#getType()}
  * could be used in
- * {@link org.eclipse.higgins.idas.api.IContext#addSubject(URI, String)} to
- * create an {@link org.eclipse.higgins.idas.api.IDigitalSubject} of the represented
+ * {@link org.eclipse.higgins.idas.api.IContext#addNode(URI, String)} to
+ * create an {@link org.eclipse.higgins.idas.api.INode} of the represented
  * type.
  * 
- * @see org.eclipse.higgins.idas.api.IDigitalSubject#getModel()
+ * @see org.eclipse.higgins.idas.api.INode#getModel()
  */
-public interface IDigitalSubjectModel extends IModel {
+public interface INodeModel extends IModel {
 	/**
 	 * Returns IAttributeModels for the attributes
-	 * which are defined (allowed) in this subject model.
+	 * which are defined (allowed) in this node model.
 	 * @return Iterator of {@link IAttributeModel}
 	 * @see org.eclipse.higgins.idas.api.IHasAttributes#getAttributes()
-	 *      IDigitalSubject.getAttributes()
+	 *      INode.getAttributes()
 	 */
 	public Iterator getAttributeModels();
 
@@ -44,7 +44,7 @@
 	 * @param attrID the ID of attribute.
 	 * @return attribute's model of requested ID or <code>null</code> if
 	 *         the specified attrID is not defined or not valid for this
-	 *         subject model.
+	 *         node model.
 	 */
 	public IAttributeModel getAttributeModel(URI attrID);
 	
@@ -50,7 +50,7 @@
 	
 	/**
 	 * Returns IMetadataModels for the metadata elements
-	 * which are defined (allowed) in this subject model.
+	 * which are defined (allowed) in this node model.
 	 * @return Iterator of {@link IMetadataModel}
 	 */
 	public Iterator getMetadataModels(); 
@@ -61,7 +61,7 @@
 	 * @param metadataType the type of metadata.
 	 * @return metadata's model of requested type or <code>null</code> if
 	 *         the specified metadataID is not defined or not valid for this
-	 *         subject model.
+	 *         node model.
 	 */
 	public IMetadataModel getMetadataModel(URI metadataType);	
 }
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/NodeExistsException.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/NodeExistsException.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/NodeExistsException.java	(working copy)
@@ -14,7 +14,7 @@
  * @author jimse@xxxxxxxxxx
  *
  */
-public class SubjectExistsException extends IdASException {
+public class NodeExistsException extends IdASException {
 
 
 	/**
@@ -25,7 +25,7 @@
 	/**
 	 * 
 	 */
-	public SubjectExistsException() {
+	public NodeExistsException() {
 		// TODO Auto-generated constructor stub
 	}
 
@@ -32,7 +32,7 @@
 	/**
 	 * @param message
 	 */
-	public SubjectExistsException(String message) {
+	public NodeExistsException(String message) {
 		super(message);
 		// TODO Auto-generated constructor stub
 	}
@@ -41,7 +41,7 @@
 	 * @param message
 	 * @param cause
 	 */
-	public SubjectExistsException(String message, Throwable cause) {
+	public NodeExistsException(String message, Throwable cause) {
 		super(message, cause);
 		// TODO Auto-generated constructor stub
 	}
@@ -49,7 +49,7 @@
 	/**
 	 * @param cause
 	 */
-	public SubjectExistsException(Throwable cause) {
+	public NodeExistsException(Throwable cause) {
 		super(cause);
 		// TODO Auto-generated constructor stub
 	}
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/NoSuchNodeException.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/NoSuchNodeException.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/NoSuchNodeException.java	(working copy)
@@ -11,9 +11,9 @@
 package org.eclipse.higgins.idas.api;
 
 /**
- * Thrown when a specified Digital Subject is not found in the Context.
+ * Thrown when a specified Node is not found in the Context.
  */
-public class NoSuchSubjectException extends IdASException {
+public class NoSuchNodeException extends IdASException {
 
 	/**
 	 * 
@@ -23,7 +23,7 @@
 	/**
 	 * @see IdASException#IdASException()
 	 */
-	public NoSuchSubjectException() {
+	public NoSuchNodeException() {
 		super();
 	}
 
@@ -31,7 +31,7 @@
 	 * @param message
 	 * @see IdASException#IdASException(String)
 	 */
-	public NoSuchSubjectException(String message) {
+	public NoSuchNodeException(String message) {
 		super(message);
 	}
 
@@ -40,7 +40,7 @@
 	 * @param cause
 	 * @see IdASException#IdASException(String, Throwable)
 	 */
-	public NoSuchSubjectException(String message, Throwable cause) {
+	public NoSuchNodeException(String message, Throwable cause) {
 		super(message, cause);
 	}
 
@@ -48,7 +48,7 @@
 	 * @param cause
 	 * @see IdASException#IdASException(Throwable)
 	 */
-	public NoSuchSubjectException(Throwable cause) {
+	public NoSuchNodeException(Throwable cause) {
 		super(cause);
 	}
 
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/NoSuchSubjectException.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/NoSuchSubjectException.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/NoSuchSubjectException.java	(working copy)
@@ -1,55 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 Novell, Inc..
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Jim Sermersheim - Initial cut
- *******************************************************************************/
-package org.eclipse.higgins.idas.api;
-
-/**
- * Thrown when a specified Digital Subject is not found in the Context.
- */
-public class NoSuchSubjectException extends IdASException {
-
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = -2061692182356732973L;
-
-	/**
-	 * @see IdASException#IdASException()
-	 */
-	public NoSuchSubjectException() {
-		super();
-	}
-
-	/**
-	 * @param message
-	 * @see IdASException#IdASException(String)
-	 */
-	public NoSuchSubjectException(String message) {
-		super(message);
-	}
-
-	/**
-	 * @param message
-	 * @param cause
-	 * @see IdASException#IdASException(String, Throwable)
-	 */
-	public NoSuchSubjectException(String message, Throwable cause) {
-		super(message, cause);
-	}
-
-	/**
-	 * @param cause
-	 * @see IdASException#IdASException(Throwable)
-	 */
-	public NoSuchSubjectException(Throwable cause) {
-		super(cause);
-	}
-
-}
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/SubjectExistsException.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/SubjectExistsException.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/org/eclipse/higgins/idas/api/SubjectExistsException.java	(working copy)
@@ -1,57 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Novell, Inc..
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Jim Sermersheim - Initial cut
- *******************************************************************************/
-package org.eclipse.higgins.idas.api;
-
-/**
- * @author jimse@xxxxxxxxxx
- *
- */
-public class SubjectExistsException extends IdASException {
-
-
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 4214113640980791252L;
-
-	/**
-	 * 
-	 */
-	public SubjectExistsException() {
-		// TODO Auto-generated constructor stub
-	}
-
-	/**
-	 * @param message
-	 */
-	public SubjectExistsException(String message) {
-		super(message);
-		// TODO Auto-generated constructor stub
-	}
-
-	/**
-	 * @param message
-	 * @param cause
-	 */
-	public SubjectExistsException(String message, Throwable cause) {
-		super(message, cause);
-		// TODO Auto-generated constructor stub
-	}
-
-	/**
-	 * @param cause
-	 */
-	public SubjectExistsException(Throwable cause) {
-		super(cause);
-		// TODO Auto-generated constructor stub
-	}
-
-}
Index: /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/overview.html
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/overview.html	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.idas.api/src/overview.html	(working copy)
@@ -26,13 +26,11 @@
 		<LI><P>Implementation of a specific type of <A HREF="http://wiki.eclipse.org/index.php/Context";>Context</A>.</P>
 		<LI><P>A user must &quot;open&quot; a context, which involves
 		authenticating to the data source, before accessing its data.</P>
-		<LI><P>Includes methods to search for <A HREF="http://wiki.eclipse.org/index.php/Digital_Subject";>Digital
-		Subjects</A> using context-specific attributes.</P>
+		<LI><P>Includes methods to search for <A HREF="http://wiki.eclipse.org/Node";>Node</A> using context-specific attributes.</P>
 	</UL>
-	<LI><P>{@link org.eclipse.higgins.idas.api.IDigitalSubject}</P>
+	<LI><P>{@link org.eclipse.higgins.idas.api.INode}</P>
 	<UL>
-		<LI><P>Implementation of a specific type of <A HREF="http://wiki.eclipse.org/index.php/Digital_Subject";>Digital
-		Subject</A>. 
+		<LI><P>Implementation of a specific type of <A HREF="http://wiki.eclipse.org/Node";>Node</A>. 
 		</P>
 	</UL>
 </UL>
@@ -38,7 +36,7 @@
 </UL>
 <P STYLE="margin-top: 0.17in; margin-bottom: 0.2in; page-break-after: avoid">
 <FONT FACE="Albany, sans-serif"><FONT SIZE=4>IdAS Architecture</FONT></FONT></P>
-<P STYLE="page-break-before: always">See the <A HREF="http://wiki.eclipse.org/index.php/Identity_Attribute_Service_(IdAS)">Wiki</A></P>
+<P STYLE="page-break-before: always">See the <A HREF="http://wiki.eclipse.org/Identity_Attribute_Service";>Wiki</A></P>
 <P><FONT FACE="Albany, sans-serif"><FONT SIZE=4>IdAS Policy</FONT></FONT></P>
 <P><BR><BR>
 </P>
Index: /home/jimse/dev/higgins/org.eclipse.higgins.icard.registry/src/org/eclipse/higgins/icard/registry/IdasBasedUserProfileService.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.icard.registry/src/org/eclipse/higgins/icard/registry/IdasBasedUserProfileService.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.icard.registry/src/org/eclipse/higgins/icard/registry/IdasBasedUserProfileService.java	(working copy)
@@ -28,7 +28,7 @@
 import org.eclipse.higgins.idas.api.IAttributeValue;
 import org.eclipse.higgins.idas.api.IComplexAttrValue;
 import org.eclipse.higgins.idas.api.IContext;
-import org.eclipse.higgins.idas.api.IDigitalSubject;
+import org.eclipse.higgins.idas.api.INode;
 import org.eclipse.higgins.idas.api.IFilter;
 import org.eclipse.higgins.idas.api.IFilterAttributeAssertion;
 import org.eclipse.higgins.idas.api.ISimpleAttrValue;
@@ -104,7 +104,7 @@
 	}
 	
 	private class CardInformationBinding {
-		private IDigitalSubject dsUser_ = null;
+		private INode dsUser_ = null;
 		private IComplexAttrValue valCardInfo = null;		
 		private CardInformation cardInfo = null;
 		private boolean byUrl = false;
@@ -109,7 +109,7 @@
 		private CardInformation cardInfo = null;
 		private boolean byUrl = false;
 		
-		public CardInformationBinding(IDigitalSubject dsUserProfile, CUID cuid) throws Exception {
+		public CardInformationBinding(INode dsUserProfile, CUID cuid) throws Exception {
 			this.cardInfo = new CardInformation();
 			this.dsUser_ = dsUserProfile;
 			
@@ -146,7 +146,7 @@
 				throw e;
 			}
 		}
-		public CardInformationBinding(IDigitalSubject dsUserProfile, URL url) throws Exception {
+		public CardInformationBinding(INode dsUserProfile, URL url) throws Exception {
 			this.cardInfo = new CardInformation();
 			this.dsUser_ = dsUserProfile;
 			//TODO - make another methods for init by Url or Cuid, not constructors
@@ -328,9 +328,9 @@
 		return ctx;
 	}
 	
-	private IDigitalSubject authenticate(CallbackHandler handler) throws UserProfileException, IdASException {
+	private INode authenticate(CallbackHandler handler) throws UserProfileException, IdASException {
 		UserCreds uc = new UserCreds(handler);
-		IDigitalSubject dsUser = getContext().getSubject(uc.getName());
+		INode dsUser = getContext().getNode(uc.getName());
 		if (dsUser == null)
 			throw new UserProfileException("User Profile " + uc.getName() + " not found!");
 		uc.checkPasswordHash((byte[])getSimpleValueData(dsUser, IdasCtxUris.UP_authPasswordHash));
@@ -337,7 +337,7 @@
 		return dsUser;
 	}
 
-	private Object getSimpleValueData(IDigitalSubject subj, URI attribure) throws IdASException, UserProfileException {
+	private Object getSimpleValueData(INode subj, URI attribure) throws IdASException, UserProfileException {
 		ISingleValuedAttribute attr = subj.getSingleValuedAttribute(attribure);
 		if (attr != null) {
 			IAttributeValue v = attr.getValue();
@@ -367,7 +367,7 @@
 		return null;
 	}	
 	
-	private void saveToDS_UP(UserProfile up, IDigitalSubject ds) throws Exception {
+	private void saveToDS_UP(UserProfile up, INode ds) throws Exception {
 		//ds.getAttribute(new URI ("http://www.eclipse.org/higgins/ontologies/2006/userMetaInformation.owl#identifier";)).addSimpleValue(ISimpleAttrValue.STRING_TYPE_URI, "User no 2");
 		//IAttribute attr = _dsUserProfile.getSingleValuedAttribute(UserIdasContext.UP_firstName);
 		//attr.addSimpleValue(null, up.getFirstName());
@@ -389,7 +389,7 @@
 			throw e;
 		}
 	}
-	private UserProfile initFromDS_UP(IDigitalSubject ds) throws UserProfileException, IdASException {
+	private UserProfile initFromDS_UP(INode ds) throws UserProfileException, IdASException {
 		UserProfile up = new UserProfile();
 
 		//up.setIdentifier((String)getSimpleValueData(ds, IdasCtxUris.UP_identifier));
@@ -408,10 +408,10 @@
 	}
 	
 	
-	private void saveToDS_cat(Category cat, IDigitalSubject ds) throws Exception {
+	private void saveToDS_cat(Category cat, INode ds) throws Exception {
 		try {
-			//changed to manage ID inside idas - Subject ID
-			cat.setId(ds.getSubjectID());
+			//changed to manage ID inside idas - Node ID
+			cat.setId(ds.getNodeID());
 			//ds.getAttribute(IdasCtxUris.CC_id).addSimpleValue(ISimpleAttrValue.STRING_TYPE_URI, cat.getId());
 			ds.getAttribute(IdasCtxUris.CC_parentId).addSimpleValue(ITypedValue.STRING_TYPE_URI, cat.getParentId());
 			ds.getAttribute(IdasCtxUris.CC_name).addSimpleValue(ITypedValue.STRING_TYPE_URI, cat.getName());
@@ -436,10 +436,10 @@
 			throw e;
 		}
 	}
-	private Category initFromDS_cat(IDigitalSubject ds) throws UserProfileException, IdASException {
+	private Category initFromDS_cat(INode ds) throws UserProfileException, IdASException {
 		Category cat = new Category();
 
-		cat.setId(ds.getSubjectID()); //cat.setId((String)getSimpleValueData(ds, IdasCtxUris.CC_id)); //changed for managing ID in idas
+		cat.setId(ds.getNodeID()); //cat.setId((String)getSimpleValueData(ds, IdasCtxUris.CC_id)); //changed for managing ID in idas
 		cat.setParentId((String)getSimpleValueData(ds, IdasCtxUris.CC_parentId));
 		cat.setName((String)getSimpleValueData(ds, IdasCtxUris.CC_name));
 		cat.setIcon((String)getSimpleValueData(ds, IdasCtxUris.CC_icon));
@@ -467,7 +467,7 @@
 		return cat;
 	}
 	
-	private CardUsage saveToDS_cardHistory(CardUsage cardUsage, IDigitalSubject dsUser) throws Exception {
+	private CardUsage saveToDS_cardHistory(CardUsage cardUsage, INode dsUser) throws Exception {
 		try {
 			CardUsage cuAdded = new CardUsage();
 			cuAdded.setCuid(cardUsage.getCuid());
@@ -510,7 +510,7 @@
 			throw e;
 		}
 	}
-	private List initFromDS_cardHistory(IDigitalSubject dsUser, String cuid) throws UserProfileException, IdASException, CardException, MalformedURLException {
+	private List initFromDS_cardHistory(INode dsUser, String cuid) throws UserProfileException, IdASException, CardException, MalformedURLException {
 		IAttribute attCCI = dsUser.getAttribute(IdasCtxUris.UP_cardInformation);
 		Iterator valsCCI = attCCI.getValues();
 		IComplexAttrValue valCCI = null;
@@ -561,7 +561,7 @@
 			if (userProfile == null)
 				throw new IllegalArgumentException("Parameter \"userProfile\" is null");
 
-			IDigitalSubject ds = getContext().addSubject(IdasCtxUris.UP_UserProfile, uc.getName());
+			INode ds = getContext().addNode(IdasCtxUris.UP_UserProfile, uc.getName());
 			if (ds == null)
 				throw new UserProfileException("UserProfile not added.");
 
@@ -579,7 +579,7 @@
 
 	public void deleteUserProfile(CallbackHandler handler) throws UserProfileException {
 		try {
-			IDigitalSubject dsUser = authenticate(handler);
+			INode dsUser = authenticate(handler);
 			deleteAllCards(handler);
 			deleteAllCategories(dsUser);			
 			dsUser.remove();
@@ -611,7 +611,7 @@
 		}
 	}	
 
-	private void deleteAllCategories(IDigitalSubject dsUser) throws IdASException, UserProfileException
+	private void deleteAllCategories(INode dsUser) throws IdASException, UserProfileException
 	{		
 		IFilter filter = getContext().buildFilter();
 		filter.setOperator(IFilter.OP_AND);
@@ -619,7 +619,7 @@
 		fas.includeSubtypes(true);
 		fas.setComparator(IFilterAttributeAssertion.COMP_ATTR_EQ);
 
-		ISimpleAttrValue val = getContext().buildSimpleAttrValue(ITypedValue.STRING_TYPE_URI, dsUser.getSubjectID());
+		ISimpleAttrValue val = getContext().buildSimpleAttrValue(ITypedValue.STRING_TYPE_URI, dsUser.getNodeID());
 		//BasicValueString bs = new BasicValueString(uc.getName(), null);
 
 		fas.setAssertionValue(val);
@@ -626,9 +626,9 @@
 		fas.setID(IdasCtxUris.CC_userIdentifier);
 		filter.addFilter(fas);
 
-		Iterator subjList = getContext().getSubjects(filter);
+		Iterator subjList = getContext().getNodes(filter);
 		while (subjList.hasNext()) {
-			IDigitalSubject subj = (IDigitalSubject) subjList.next();
+			INode subj = (INode) subjList.next();
 			subj.remove();
 		}
 	}
@@ -636,7 +636,7 @@
 	
 	public UserProfile getUserProfile(CallbackHandler handler) throws UserProfileException {
 		try {
-			IDigitalSubject ds = authenticate(handler);
+			INode ds = authenticate(handler);
 			
 			return initFromDS_UP(ds);
 		} catch (Exception e) {
@@ -647,7 +647,7 @@
 
 	public UserProfile modifyUserProfile(CallbackHandler handler, UserProfile userProfile) throws UserProfileException {
 		try {
-			IDigitalSubject ds = authenticate(handler);
+			INode ds = authenticate(handler);
 			
 			if (userProfile == null)
 				throw new IllegalArgumentException("Parameter \"userProfile\" can not be null");
@@ -663,7 +663,7 @@
 	
 	public boolean userIdentifierExists(String userIdentifier) throws UserProfileException {
 		try {
-			IDigitalSubject ds = getContext().getSubject(userIdentifier);
+			INode ds = getContext().getNode(userIdentifier);
 			if (ds != null)
 				return true;
 			else 
@@ -668,7 +668,7 @@
 				return true;
 			else 
 				return false;
-		} catch (org.eclipse.higgins.idas.api.NoSuchSubjectException e) {
+		} catch (org.eclipse.higgins.idas.api.NoSuchNodeException e) {
 			//log.info(e);
 			return false;
 		} catch (Exception e) {
@@ -681,7 +681,7 @@
 		//TODO imlement resetPassword!!! 
 		//TODO needs password generating algorithm so as policy (letters and chars)
 		/*try {
-			IDigitalSubject ds = _ctx.getSubject(userIdentifier);
+			INode ds = _ctx.getSubject(userIdentifier);
 			if (ds == null)
 				throw new UserMetaInfoException("User Profile " + userIdentifier + " not found!");
 			
@@ -701,7 +701,7 @@
 
 	public Category addCategory(CallbackHandler handler, Category category) throws UserProfileException {
 		try {
-			IDigitalSubject dsUser = authenticate(handler);
+			INode dsUser = authenticate(handler);
 
 			if (category == null)
 				throw new IllegalArgumentException("Parameter \"category\" is null");
@@ -706,12 +706,12 @@
 			if (category == null)
 				throw new IllegalArgumentException("Parameter \"category\" is null");
 			
-			//IDigitalSubject ds = ctx.addSubject(IdasCtxUris.CC_CardCategory, uc.getName() + "/" + category.getId()); //unique in meta info context category identifier
-			IDigitalSubject ds = getContext().addSubject(IdasCtxUris.CC_CardCategory, null); //changed to manage ID inside Idas - Subject ID
+			//INode ds = ctx.addSubject(IdasCtxUris.CC_CardCategory, uc.getName() + "/" + category.getId()); //unique in meta info context category identifier
+			INode ds = getContext().addNode(IdasCtxUris.CC_CardCategory, null); //changed to manage ID inside Idas - Node ID
 			if (ds == null)
 				throw new UserProfileException("Category " + category.getId() + " not added.");
 			
-			ds.getAttribute(IdasCtxUris.CC_userIdentifier).addSimpleValue(ITypedValue.STRING_TYPE_URI, dsUser.getSubjectID());
+			ds.getAttribute(IdasCtxUris.CC_userIdentifier).addSimpleValue(ITypedValue.STRING_TYPE_URI, dsUser.getNodeID());
 			saveToDS_cat(category, ds);
 			
 		} catch (Exception e) {
@@ -724,7 +724,7 @@
 
 	public void deleteCategory(CallbackHandler handler, String categoryId) throws UserProfileException {
 		try {
-			//IDigitalSubject dsUser = 
+			//INode dsUser = 
 			authenticate(handler);
 			
 			if (categoryId == null || categoryId.trim().length() == 0)
@@ -730,7 +730,7 @@
 			if (categoryId == null || categoryId.trim().length() == 0)
 				throw new IllegalArgumentException("Parameter \"categoryId\" is null");
 			
-			IDigitalSubject ds = getContext().getSubject(categoryId);
+			INode ds = getContext().getNode(categoryId);
 			if (ds == null) {
 				throw new UserProfileException("Category \"" + categoryId + "\" not found");
 			}
@@ -749,7 +749,7 @@
 
 	public List getCategories(CallbackHandler handler) throws UserProfileException {
 		try {
-			IDigitalSubject dsUser = authenticate(handler);
+			INode dsUser = authenticate(handler);
 			
 			IFilter filter = getContext().buildFilter();
 			filter.setOperator(IFilter.OP_AND);
@@ -756,7 +756,7 @@
 			IFilterAttributeAssertion fas = getContext().buildAttributeAssertion();
 			fas.includeSubtypes(true);
 			fas.setComparator(IFilterAttributeAssertion.COMP_ATTR_EQ);
-			ISimpleAttrValue val = getContext().buildSimpleAttrValue(ITypedValue.STRING_TYPE_URI, dsUser.getSubjectID());
+			ISimpleAttrValue val = getContext().buildSimpleAttrValue(ITypedValue.STRING_TYPE_URI, dsUser.getNodeID());
 			//BasicValueString bs = new BasicValueString(uc.getName(), null);
 			fas.setAssertionValue(val);
 			fas.setID(IdasCtxUris.CC_userIdentifier);
@@ -762,10 +762,10 @@
 			fas.setID(IdasCtxUris.CC_userIdentifier);
 			filter.addFilter(fas);
 
-			Iterator subjList = getContext().getSubjects(filter);
+			Iterator subjList = getContext().getNodes(filter);
 			List categories = new ArrayList();
 			while (subjList.hasNext()) {
-				IDigitalSubject subj = (IDigitalSubject) subjList.next();
+				INode subj = (INode) subjList.next();
 				if (IdasCtxUris.CC_CardCategory.equals(subj.getModel().getType())) {
 					Category category = initFromDS_cat(subj);
 					categories.add(category);
@@ -781,7 +781,7 @@
 
 	public Category modifyCategory(CallbackHandler handler, Category category) throws UserProfileException {
 		try {
-			//IDigitalSubject dsUser = 
+			//INode dsUser = 
 			authenticate(handler);
 			
 			if (category == null)
@@ -789,7 +789,7 @@
 			if (category.getId()== null || category.getId().trim().length() == 0)
 				throw new IllegalArgumentException("Category ID can not be null");
 			
-			IDigitalSubject ds = getContext().getSubject(category.getId());
+			INode ds = getContext().getNode(category.getId());
 			if (ds == null)
 				throw new UserProfileException("Category \"" + category.getId() + "\" not found!");
 			
@@ -804,7 +804,7 @@
 
 	public CardUsage addCardHistory(CallbackHandler handler, CardUsage cardUsage) throws UserProfileException {
 		try {
-			IDigitalSubject dsUser = authenticate(handler);
+			INode dsUser = authenticate(handler);
 			
 			if (cardUsage == null)
 				throw new IllegalArgumentException("Parameter \"cardUsage\" is null");
@@ -820,7 +820,7 @@
 	
 	public List getCardHistory(CallbackHandler handler, CUID cuid) throws UserProfileException {
 		try {
-			IDigitalSubject dsUser = authenticate(handler);
+			INode dsUser = authenticate(handler);
 			
 			if (cuid == null)
 				throw new IllegalArgumentException("Parameter \"cuid\" is null");
@@ -834,7 +834,7 @@
 
 	public void clearCardHistory(CallbackHandler handler, CUID cuid) throws UserProfileException {
 		try {
-			IDigitalSubject dsUser = authenticate(handler);
+			INode dsUser = authenticate(handler);
 			
 			if (cuid == null || cuid.toString().length() == 0)
 				throw new IllegalArgumentException("Card ID can not be null");
@@ -867,7 +867,7 @@
 
 	public CardInformation addCardUrlRelation(CallbackHandler handler, CUID cuid, URL url) throws UserProfileException {
 		try {
-			IDigitalSubject dsUser = authenticate(handler);
+			INode dsUser = authenticate(handler);
 			
 			if (cuid == null)
 				throw new IllegalArgumentException("Parameter \"cardCredentialInfo\" is null");
@@ -891,7 +891,7 @@
 	
 	public CardInformation deleteCardUrlRelation(CallbackHandler handler, CUID cuid, URL url) throws UserProfileException {
 		try {
-			IDigitalSubject dsUser = authenticate(handler);
+			INode dsUser = authenticate(handler);
 			
 			if (cuid == null)
 				throw new IllegalArgumentException("Parameter \"cardCredentialInfo\" is null");
@@ -920,7 +920,7 @@
 
 	public CardInformation setCardCredential(CallbackHandler handler, CUID cuid, CardCredential cardCredential) throws UserProfileException {
 		try {
-			IDigitalSubject dsUser = authenticate(handler);
+			INode dsUser = authenticate(handler);
 			
 			if (cuid == null)
 				throw new IllegalArgumentException("Parameter \"cuid\" is null");
@@ -947,7 +947,7 @@
 	
 	public CardInformation clearCardCredential(CallbackHandler handler, CUID cuid)  throws UserProfileException {
 		try {
-			IDigitalSubject dsUser = authenticate(handler);
+			INode dsUser = authenticate(handler);
 			
 			if (cuid == null)
 				throw new IllegalArgumentException("Parameter \"cuid\" is null");
@@ -969,7 +969,7 @@
 	
 	public CardInformation getCardInformation(CallbackHandler handler, URL url) throws UserProfileException {
 		try {
-			IDigitalSubject dsUser = authenticate(handler);
+			INode dsUser = authenticate(handler);
 
 			if (url == null)
 				throw new IllegalArgumentException("URL can not be null");
@@ -990,7 +990,7 @@
 
 	public CardInformation getCardInformation(CallbackHandler handler, CUID cuid) throws UserProfileException {
 		try {
-			IDigitalSubject dsUser = authenticate(handler);
+			INode dsUser = authenticate(handler);
 			
 			if (cuid == null || cuid.toString().length() == 0)
 				throw new IllegalArgumentException("Card ID can not be null");
@@ -1011,7 +1011,7 @@
 
 	public CardInformation setUrls(CallbackHandler handler, CUID cuid, URL[] urls) throws UserProfileException {
 		try {
-			IDigitalSubject dsUser = authenticate(handler);
+			INode dsUser = authenticate(handler);
 			
 			if (cuid == null)
 				throw new IllegalArgumentException("Parameter \"cuid\" is null");
@@ -1032,7 +1032,7 @@
 	}
 	public CardInformation deleteUrls(CallbackHandler handler, CUID cuid, URL[] urls) throws UserProfileException {
 		try {
-			IDigitalSubject dsUser = authenticate(handler);
+			INode dsUser = authenticate(handler);
 			
 			if (cuid == null)
 				throw new IllegalArgumentException("Parameter \"cuid\" is null");
Index: /home/jimse/dev/higgins/org.eclipse.higgins.icard.provider.cardspace.personal/src/org/eclipse/higgins/icard/provider/cardspace/personal/IdASBasedPersonalCard.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.icard.provider.cardspace.personal/src/org/eclipse/higgins/icard/provider/cardspace/personal/IdASBasedPersonalCard.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.icard.provider.cardspace.personal/src/org/eclipse/higgins/icard/provider/cardspace/personal/IdASBasedPersonalCard.java	(working copy)
@@ -54,11 +54,11 @@
 import org.eclipse.higgins.idas.api.IAttributeValue;
 import org.eclipse.higgins.idas.api.IComplexAttrValue;
 import org.eclipse.higgins.idas.api.IContext;
-import org.eclipse.higgins.idas.api.IDigitalSubject;
+import org.eclipse.higgins.idas.api.INode;
 import org.eclipse.higgins.idas.api.ISimpleAttrValue;
 import org.eclipse.higgins.idas.api.ISingleValuedAttribute;
 import org.eclipse.higgins.idas.api.IdASException;
-import org.eclipse.higgins.idas.api.NoSuchSubjectException;
+import org.eclipse.higgins.idas.api.NoSuchNodeException;
 import org.w3c.dom.Element;
 
 /**
@@ -69,9 +69,9 @@
 
 	private Log log = LogFactory.getLog(IdASBasedPersonalCard.class);
 
-	private IDigitalSubject card_ = null;
+	private INode card_ = null;
 
-	private IDigitalSubject claimList_ = null;
+	private INode claimList_ = null;
 
 	private boolean editMode = false;
 
@@ -123,10 +123,10 @@
 			tmpClaimValueList_ = new ArrayList();
 		try {
 			try {
-				card_ = ctx.getSubject(id_.toString());
+				card_ = ctx.getNode(id_.toString());
 				throw new CardException("Couldn't create card. Card with id = " + cardId + " already exists.");
-			} catch (NoSuchSubjectException e) {
-				card_ = ctx.addSubject(IdASContext.ICARD_PersonalInformationCard, id_.toString());
+			} catch (NoSuchNodeException e) {
+				card_ = ctx.addNode(IdASContext.ICARD_PersonalInformationCard, id_.toString());
 				//saveClaimTypes();
 			}
 			initClaimListSubject(true);
@@ -149,7 +149,7 @@
 	 * @param card
 	 * @throws Exception
 	 */
-	public IdASBasedPersonalCard(IdASBasedPersonalCardProvider provider, IDigitalSubject card) throws Exception {
+	public IdASBasedPersonalCard(IdASBasedPersonalCardProvider provider, INode card) throws Exception {
 		if (provider == null)
 			throw new CardException("Parameter \"provider\" is null");
 		if (card == null)
@@ -180,9 +180,9 @@
 		initFromXML(card);
 		try {
 			try {
-				card_ = ctx.getSubject(id_.toString());
-			} catch (NoSuchSubjectException e) {
-				card_ = ctx.addSubject(IdASContext.ICARD_PersonalInformationCard, id_.toString());
+				card_ = ctx.getNode(id_.toString());
+			} catch (NoSuchNodeException e) {
+				card_ = ctx.addNode(IdASContext.ICARD_PersonalInformationCard, id_.toString());
 				//saveClaimTypes();
 			}
 			initClaimListSubject(true);
@@ -205,7 +205,7 @@
 	 * @throws IdASException
 	 * @throws CardException
 	 */
-	private IDigitalSubject createClaimListSubject() throws IdASException, CardException {
+	private INode createClaimListSubject() throws IdASException, CardException {
 		if (card_ == null)
 			throw new CardException("Variable \"card_\" is null.");
 		IContext ctx = card_.getContext();
@@ -213,9 +213,9 @@
 		// / TODO add subject ID generation
 		String clamListSubjectID = String.valueOf(System.currentTimeMillis());
 		// /
-		IDigitalSubject claimList = ctx.addSubject(IdASContext.ICARD_ClaimList, clamListSubjectID);
+		INode claimList = ctx.addNode(IdASContext.ICARD_ClaimList, clamListSubjectID);
 		IComplexAttrValue cv = claimList.getSingleValuedAttribute(IdASContext.ICARD_cardReference).addComplexValue(null);
-		cv.getSingleValuedAttribute(IdASContext.ICARD_subjectCardReference).addSimpleValue(null, card_.getSubjectID());
+		cv.getSingleValuedAttribute(IdASContext.ICARD_subjectCardReference).addSimpleValue(null, card_.getNodeID());
 		cv.getSingleValuedAttribute(IdASContext.ICARD_contextCardReference).addSimpleValue(null, ctx.getContextID());
 		return claimList;
 	}
@@ -222,8 +222,8 @@
 
 	/**
 	 * @param createNew
-	 *            if true and card does not contain a reference to the digital
-	 *            subject with claim values than new claim list subject will be
+	 *            if true and card does not contain a reference to the node
+	 *            with claim values than new claim list subject will be
 	 *            created
 	 * @throws IdASException
 	 * @throws CardException
@@ -243,9 +243,9 @@
 				// IdASContext.ICARD_claimValueListContext);
 				// if (context != null)
 				// contextID = context.toString();
-				IDigitalSubject claimList = card_.getContext().getSubject(subjID);
+				INode claimList = card_.getContext().getNode(subjID);
 				if (claimList == null)
-					throw new CardException("Couldn't get the claim list subject reference for card with ID = " + card_.getSubjectID() + " .");
+					throw new CardException("Couldn't get the claim list subject reference for card with ID = " + card_.getNodeID() + " .");
 				claimList_ = claimList;
 			} else
 				throw new CardException("Attribute " + IdASContext.ICARD_claimValueListRef + " should be complex");
@@ -251,11 +251,11 @@
 				throw new CardException("Attribute " + IdASContext.ICARD_claimValueListRef + " should be complex");
 		} else {
 			if (createNew == false)
-				throw new CardException("Couldn't get the claim list reference for card with ID = " + card_.getSubjectID()
+				throw new CardException("Couldn't get the claim list reference for card with ID = " + card_.getNodeID()
 						+ ". This card doesn't have any value with type" + IdASContext.ICARD_claimValueListRef + ".");
 			claimList_ = createClaimListSubject();
 			IComplexAttrValue cv = attr.addComplexValue(null);
-			cv.getSingleValuedAttribute(IdASContext.ICARD_claimValueListSubject).addSimpleValue(null, claimList_.getSubjectID());
+			cv.getSingleValuedAttribute(IdASContext.ICARD_claimValueListSubject).addSimpleValue(null, claimList_.getNodeID());
 			cv.getSingleValuedAttribute(IdASContext.ICARD_claimValueListContext).addSimpleValue(null, claimList_.getContext().getContextID().toString());
 		}
 	}
@@ -265,7 +265,7 @@
 	 * @param claimList
 	 * @throws Exception
 	 */
-	public void initFromDS(IDigitalSubject card, IDigitalSubject claimList) throws Exception {
+	public void initFromDS(INode card, INode claimList) throws Exception {
 		initIsSelfIssued(card);
 		initLanguage(card);
 		initCardId(card);
@@ -289,11 +289,11 @@
 	 * @throws CardException
 	 * @throws ClassCastException
 	 */
-	private void initIsSelfIssued(IDigitalSubject card) throws IdASException, CardException, ClassCastException {
+	private void initIsSelfIssued(INode card) throws IdASException, CardException, ClassCastException {
 		isSelfIssued_ = true;
 		Boolean issi = (Boolean) getSimpleValueData(card, IdASContext.ICARD_isSelfIssued);
 		if (issi != null && issi.booleanValue() == false)
-			throw new CardException("Can not init managed card with DigitalSubject storing data of self-issued (Personal) card");
+			throw new CardException("Can not init managed card with Node storing data of self-issued (Personal) card");
 	}
 
 	/**
@@ -302,7 +302,7 @@
 	 * @throws CardException
 	 * @throws ClassCastException
 	 */
-	private void initLanguage(IDigitalSubject card) throws IdASException, CardException, ClassCastException {
+	private void initLanguage(INode card) throws IdASException, CardException, ClassCastException {
 		language_ = (String) getSimpleValueData(card, IdASContext.ICARD_language);
 	}
 
@@ -312,7 +312,7 @@
 	 * @throws CardException
 	 * @throws ClassCastException
 	 */
-	private void initCardId(IDigitalSubject card) throws IdASException, CardException, ClassCastException {
+	private void initCardId(INode card) throws IdASException, CardException, ClassCastException {
 		String id = (String) getSimpleValueData(card, IdASContext.HIGGINS_uniqueIdentifier);
 		try {
 			id_ = new URI(id);
@@ -328,7 +328,7 @@
 	 * @throws CardException
 	 * @throws ClassCastException
 	 */
-	private void initCardVersion(IDigitalSubject card) throws IdASException, CardException, ClassCastException {
+	private void initCardVersion(INode card) throws IdASException, CardException, ClassCastException {
 		version_ = (String) getSimpleValueData(card, IdASContext.ICARD_version);
 	}
 
@@ -338,7 +338,7 @@
 	 * @throws CardException
 	 * @throws ClassCastException
 	 */
-	private void initCardName(IDigitalSubject card) throws IdASException, CardException, ClassCastException {
+	private void initCardName(INode card) throws IdASException, CardException, ClassCastException {
 		name_ = (String) getSimpleValueData(card, IdASContext.ICARD_name);
 	}
 
@@ -348,7 +348,7 @@
 	 * @throws CardException
 	 * @throws ClassCastException
 	 */
-	private void initCardImage(IDigitalSubject card) throws IdASException, CardException, ClassCastException {
+	private void initCardImage(INode card) throws IdASException, CardException, ClassCastException {
 		image_ = (byte[]) getSimpleValueData(card, IdASContext.ICARD_image);
 	}
 
@@ -358,7 +358,7 @@
 	 * @throws CardException
 	 * @throws ClassCastException
 	 */
-	private void initCardImageType(IDigitalSubject card) throws IdASException, CardException, ClassCastException {
+	private void initCardImageType(INode card) throws IdASException, CardException, ClassCastException {
 		imageMimeType_ = (String) getSimpleValueData(card, IdASContext.ICARD_imageMimeType);
 	}
 
@@ -367,7 +367,7 @@
 	 * @throws IdASException
 	 * @throws CardException
 	 */
-	private void initTimeIssued(IDigitalSubject card) throws IdASException, CardException {
+	private void initTimeIssued(INode card) throws IdASException, CardException {
 		timeIssued_ = null;
 		Object obj = getSimpleValueData(card, IdASContext.ICARD_timeIssued);
 		if (obj != null) {
@@ -383,7 +383,7 @@
 	 * @throws IdASException
 	 * @throws CardException
 	 */
-	private void initTimeExpires(IDigitalSubject card) throws IdASException, CardException {
+	private void initTimeExpires(INode card) throws IdASException, CardException {
 		timeExpires_ = null;
 		Object obj = getSimpleValueData(card, IdASContext.ICARD_expiredTime);
 		if (obj != null) {
@@ -399,7 +399,7 @@
 	 * @throws IdASException
 	 * @throws CardException
 	 */
-	private void initSupportedTokenTypes(IDigitalSubject card) throws IdASException, CardException {
+	private void initSupportedTokenTypes(INode card) throws IdASException, CardException {
 		supportedTokenTypes_ = new ArrayList();
 		IAttribute attr = card.getAttribute(IdASContext.ICARD_supportedTokenType);
 		Iterator itr = attr.getValues();
@@ -432,7 +432,7 @@
 	 * @throws IdASException
 	 * @throws CardException
 	 */
-	private void initClaimTypes(IDigitalSubject card) throws IdASException, CardException {
+	private void initClaimTypes(INode card) throws IdASException, CardException {
 		claimTypes_ = SelfIssuedCardClaims.getSupportedClaimTypeList();
 /*
 		IAttribute attr = card.getAttribute(IdASContext.ICARD_supportedClaimType);
@@ -458,7 +458,7 @@
 	 * @throws CardException
 	 * @throws ClassCastException
 	 */
-	private void initHashSalt(IDigitalSubject card) throws IdASException, CardException, ClassCastException {
+	private void initHashSalt(INode card) throws IdASException, CardException, ClassCastException {
 		hashSalt_ = (byte[]) getSimpleValueData(card, IdASContext.ICARD_hashSalt);
 	}
 
@@ -467,7 +467,7 @@
 	 * @throws IdASException
 	 * @throws CardException
 	 */
-	private void initTimeLastUpdated(IDigitalSubject card) throws IdASException, CardException {
+	private void initTimeLastUpdated(INode card) throws IdASException, CardException {
 		timeLastUpdated_ = null;
 		Object obj = getSimpleValueData(card, IdASContext.ICARD_timeLastUpdated);
 		if (obj != null) {
@@ -484,7 +484,7 @@
 	 * @throws CardException
 	 * @throws ClassCastException
 	 */
-	private void initMasterKey(IDigitalSubject card) throws IdASException, CardException, ClassCastException {
+	private void initMasterKey(INode card) throws IdASException, CardException, ClassCastException {
 		masterKey_ = (byte[]) getSimpleValueData(card, IdASContext.ICARD_masterKey);
 	}
 
@@ -494,7 +494,7 @@
 	 * @throws CardException
 	 * @throws ClassCastException
 	 */
-	private void initPinDigest(IDigitalSubject card) throws IdASException, CardException, ClassCastException {
+	private void initPinDigest(INode card) throws IdASException, CardException, ClassCastException {
 		pinDigest_ = (byte[]) getSimpleValueData(card, IdASContext.ICARD_pinDigest);
 	}
 
@@ -816,7 +816,7 @@
 	 * @return
 	 * @throws CardException
 	 */
-	public IDigitalSubject getCardSubject() throws CardException {
+	public INode getCardSubject() throws CardException {
 		return card_;
 	}
 
@@ -824,7 +824,7 @@
 	 * @return
 	 * @throws CardException
 	 */
-	public IDigitalSubject getClaimListSubject() throws CardException {
+	public INode getClaimListSubject() throws CardException {
 		return claimList_;
 	}
 
@@ -918,7 +918,7 @@
 	 * @return
 	 * @throws CardException
 	 */
-	private Object getSimpleValueData(IDigitalSubject subj, URI attribure) throws CardException {
+	private Object getSimpleValueData(INode subj, URI attribure) throws CardException {
 		try {
 			ISingleValuedAttribute attr = subj.getSingleValuedAttribute(attribure);
 			return getSimpleValueData(attr);
Index: /home/jimse/dev/higgins/org.eclipse.higgins.icard.provider.cardspace.personal/src/org/eclipse/higgins/icard/provider/cardspace/personal/IdASBasedPersonalCardProvider.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.icard.provider.cardspace.personal/src/org/eclipse/higgins/icard/provider/cardspace/personal/IdASBasedPersonalCardProvider.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.icard.provider.cardspace.personal/src/org/eclipse/higgins/icard/provider/cardspace/personal/IdASBasedPersonalCardProvider.java	(working copy)
@@ -43,11 +43,11 @@
 import org.eclipse.higgins.icard.provider.cardspace.common.utils.IdASContext;
 import org.eclipse.higgins.icard.provider.cardspace.common.utils.PersonalCardTemplateHelper;
 import org.eclipse.higgins.idas.api.IContext;
-import org.eclipse.higgins.idas.api.IDigitalSubject;
+import org.eclipse.higgins.idas.api.INode;
 import org.eclipse.higgins.idas.api.IFilter;
-import org.eclipse.higgins.idas.api.IFilterSubjectTypeAssertion;
+import org.eclipse.higgins.idas.api.IFilterNodeTypeAssertion;
 import org.eclipse.higgins.idas.api.IdASException;
-import org.eclipse.higgins.idas.api.NoSuchSubjectException;
+import org.eclipse.higgins.idas.api.NoSuchNodeException;
 import org.eclipse.higgins.idas.common.AuthNNamePasswordMaterials;
 import org.eclipse.higgins.idas.registry.IdASRegistry;
 import org.eclipse.higgins.idas.registry.discovery.FileDiscovery;
@@ -169,13 +169,13 @@
 				try {
 					IFilter filter = ctx.buildFilter();
 					filter.setOperator(IFilter.OP_AND);
-					IFilterSubjectTypeAssertion typeAssertion = ctx.buildSubjectTypeAssertion();
+					IFilterNodeTypeAssertion typeAssertion = ctx.buildNodeTypeAssertion();
 					typeAssertion.setAssertionValue(IdASContext.ICARD_PersonalInformationCard);
 					filter.addFilter(typeAssertion);
-					Iterator subjList = ctx.getSubjects(filter);
+					Iterator subjList = ctx.getNodes(filter);
 					while (subjList.hasNext()) {
-						IDigitalSubject subj = (IDigitalSubject) subjList.next();
-						if (IdASContext.ICARD_PersonalInformationCard.equals(subj.getSubjectType())) {
+						INode subj = (INode) subjList.next();
+						if (IdASContext.ICARD_PersonalInformationCard.equals(subj.getNodeType())) {
 							IdASBasedPersonalCard card = new IdASBasedPersonalCard(this, subj);
 							if (policy == null) {
 								cards.add(card);
@@ -304,11 +304,11 @@
 				if (card instanceof IdASBasedPersonalCard) {
 					try {
 						IdASBasedPersonalCard crd = (IdASBasedPersonalCard) card;
-						String subjId = crd.getCardSubject().getSubjectID();
-						IDigitalSubject subj = ctx.getSubject(subjId);
+						String subjId = crd.getCardSubject().getNodeID();
+						INode subj = ctx.getNode(subjId);
 						subj.remove();
-						String claimId = crd.getClaimListSubject().getSubjectID();
-						IDigitalSubject claimList = ctx.getSubject(claimId);
+						String claimId = crd.getClaimListSubject().getNodeID();
+						INode claimList = ctx.getNode(claimId);
 						claimList.remove();
 						ctx.applyUpdates();
 					} catch (Exception e) {
@@ -356,10 +356,10 @@
 			IContext ctx = getContext(userCrds);
 			if (ctx != null) {
 				try {
-					ctx.getSubject(id);
+					ctx.getNode(id);
 					log.info("Can not create card. Card with ID = " + id + " already exists.");
 					return false;
-				} catch (NoSuchSubjectException e) {
+				} catch (NoSuchNodeException e) {
 					return true;
 				}
 				finally {
@@ -479,7 +479,7 @@
 			IContext ctx = getContext(userCrds);
 			if (ctx != null) {
 				try {
-					IDigitalSubject subj = ctx.getSubject(CUID);
+					INode subj = ctx.getNode(CUID);
 					IdASBasedPersonalCard card = new IdASBasedPersonalCard(this, subj);
 					return card;
 				}
Index: /home/jimse/dev/higgins/org.eclipse.higgins.icard.provider.cardspace.managed/src/org/eclipse/higgins/icard/provider/cardspace/managed/IdASBasedManagedCard.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.icard.provider.cardspace.managed/src/org/eclipse/higgins/icard/provider/cardspace/managed/IdASBasedManagedCard.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.icard.provider.cardspace.managed/src/org/eclipse/higgins/icard/provider/cardspace/managed/IdASBasedManagedCard.java	(working copy)
@@ -48,11 +48,11 @@
 import org.eclipse.higgins.idas.api.IAttributeValue;
 import org.eclipse.higgins.idas.api.IComplexAttrValue;
 import org.eclipse.higgins.idas.api.IContext;
-import org.eclipse.higgins.idas.api.IDigitalSubject;
+import org.eclipse.higgins.idas.api.INode;
 import org.eclipse.higgins.idas.api.ISimpleAttrValue;
 import org.eclipse.higgins.idas.api.ISingleValuedAttribute;
 import org.eclipse.higgins.idas.api.IdASException;
-import org.eclipse.higgins.idas.api.NoSuchSubjectException;
+import org.eclipse.higgins.idas.api.NoSuchNodeException;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.xml.sax.InputSource;
@@ -65,7 +65,7 @@
 public class IdASBasedManagedCard extends ManagedCard {
 	private Log log = LogFactory.getLog(IdASBasedManagedCard.class);
 
-	IDigitalSubject card_ = null;
+	INode card_ = null;
 	
 	private boolean editMode = false;;
 
@@ -77,7 +77,7 @@
 	 * @param card
 	 * @throws Exception
 	 */
-	public IdASBasedManagedCard(IdASBasedManagedCardProvider provider, IDigitalSubject card) throws Exception {
+	public IdASBasedManagedCard(IdASBasedManagedCardProvider provider, INode card) throws Exception {
 		if (provider == null)
 			throw new IllegalArgumentException("Parameter \"provider\" is null");
 		if (card == null)
@@ -103,9 +103,9 @@
 		initFromXML(card);
 		try {
 			try {
-				card_ = context.getSubject(id_.toString());
-			} catch (NoSuchSubjectException e) {
-				card_ = context.addSubject(IdASContext.ICARD_ManagedInformationCard, id_.toString());
+				card_ = context.getNode(id_.toString());
+			} catch (NoSuchNodeException e) {
+				card_ = context.addNode(IdASContext.ICARD_ManagedInformationCard, id_.toString());
 			}
 			saveCard();
 			context.applyUpdates();
@@ -126,7 +126,7 @@
 	 * @param card
 	 * @throws Exception
 	 */
-	public void initFromDS(IDigitalSubject card) throws Exception {
+	public void initFromDS(INode card) throws Exception {
 		initIsSelfIssued(card);
 		initLanguage(card);
 		initCardId(card);
@@ -154,11 +154,11 @@
 	 * @throws CardException
 	 * @throws ClassCastException
 	 */
-	private void initIsSelfIssued(IDigitalSubject card) throws IdASException, CardException, ClassCastException {
+	private void initIsSelfIssued(INode card) throws IdASException, CardException, ClassCastException {
 		isSelfIssued_ = false;
 		Boolean issi = (Boolean) getSimpleValueData(card, IdASContext.ICARD_isSelfIssued);
 		if (issi != null && issi.booleanValue() == true)
-			throw new CardException("Can not init managed card with DigitalSubject storing data of self-issued (Personal) card");
+			throw new CardException("Can not init managed card with Node storing data of self-issued (Personal) card");
 	}
 
 	/**
@@ -167,7 +167,7 @@
 	 * @throws CardException
 	 * @throws ClassCastException
 	 */
-	private void initLanguage(IDigitalSubject card) throws IdASException, CardException, ClassCastException {
+	private void initLanguage(INode card) throws IdASException, CardException, ClassCastException {
 		language_ = (String) getSimpleValueData(card, IdASContext.ICARD_language);
 	}
 
@@ -177,7 +177,7 @@
 	 * @throws CardException
 	 * @throws ClassCastException
 	 */
-	private void initCardId(IDigitalSubject card) throws IdASException, CardException, ClassCastException {
+	private void initCardId(INode card) throws IdASException, CardException, ClassCastException {
 		String id = (String)getSimpleValueData(card, IdASContext.HIGGINS_uniqueIdentifier);
 		try {
 			id_ = new URI(id);
@@ -193,7 +193,7 @@
 	 * @throws CardException
 	 * @throws ClassCastException
 	 */
-	private void initCardVersion(IDigitalSubject card) throws IdASException, CardException, ClassCastException {
+	private void initCardVersion(INode card) throws IdASException, CardException, ClassCastException {
 		version_ = (String) getSimpleValueData(card, IdASContext.ICARD_version);
 	}
 
@@ -203,7 +203,7 @@
 	 * @throws CardException
 	 * @throws ClassCastException
 	 */
-	private void initCardName(IDigitalSubject card) throws IdASException, CardException, ClassCastException {
+	private void initCardName(INode card) throws IdASException, CardException, ClassCastException {
 		name_ = (String) getSimpleValueData(card, IdASContext.ICARD_name);
 	}
 
@@ -213,7 +213,7 @@
 	 * @throws CardException
 	 * @throws ClassCastException
 	 */
-	private void initCardImage(IDigitalSubject card) throws IdASException, CardException, ClassCastException {
+	private void initCardImage(INode card) throws IdASException, CardException, ClassCastException {
 		image_ = (byte[]) getSimpleValueData(card, IdASContext.ICARD_image);
 	}
 
@@ -223,7 +223,7 @@
 	 * @throws CardException
 	 * @throws ClassCastException
 	 */
-	private void initCardImageType(IDigitalSubject card) throws IdASException, CardException, ClassCastException {
+	private void initCardImageType(INode card) throws IdASException, CardException, ClassCastException {
 		imageMimeType_ = (String) getSimpleValueData(card, IdASContext.ICARD_imageMimeType);
 	}
 
@@ -233,7 +233,7 @@
 	 * @throws CardException
 	 * @throws ClassCastException
 	 */
-	private void initIssuer(IDigitalSubject card) throws IdASException, CardException, ClassCastException {
+	private void initIssuer(INode card) throws IdASException, CardException, ClassCastException {
 		issuer_ = (String) getSimpleValueData(card, IdASContext.ICARD_issuer);
 	}
 
@@ -243,7 +243,7 @@
 	 * @throws CardException
 	 * @throws ClassCastException
 	 */
-	private void initIssuerName(IDigitalSubject card) throws IdASException, CardException, ClassCastException {
+	private void initIssuerName(INode card) throws IdASException, CardException, ClassCastException {
 		issuerName_ = (String) getSimpleValueData(card, IdASContext.ICARD_issuerName);
 	}
 
@@ -252,7 +252,7 @@
 	 * @throws IdASException
 	 * @throws CardException
 	 */
-	private void initTimeIssued(IDigitalSubject card) throws IdASException, CardException {
+	private void initTimeIssued(INode card) throws IdASException, CardException {
 		timeIssued_ = null;
 		Object obj = getSimpleValueData(card, IdASContext.ICARD_timeIssued);
 		if (obj != null) {
@@ -268,7 +268,7 @@
 	 * @throws IdASException
 	 * @throws CardException
 	 */
-	private void initTimeExpires(IDigitalSubject card) throws IdASException, CardException {
+	private void initTimeExpires(INode card) throws IdASException, CardException {
 		timeExpires_ = null;
 		Object obj = getSimpleValueData(card, IdASContext.ICARD_expiredTime);
 		if (obj != null) {
@@ -284,7 +284,7 @@
 	 * @throws IdASException
 	 * @throws CardException
 	 */
-	private void initSupportedTokenTypes(IDigitalSubject card) throws IdASException, CardException {
+	private void initSupportedTokenTypes(INode card) throws IdASException, CardException {
 		supportedTokenTypes_ = new ArrayList();
 		IAttribute attr = card.getAttribute(IdASContext.ICARD_supportedTokenType);
 		Iterator itr = attr.getValues();
@@ -317,7 +317,7 @@
 	 * @throws IdASException
 	 * @throws CardException
 	 */
-	private void initClaimTypes(IDigitalSubject card) throws IdASException, CardException {
+	private void initClaimTypes(INode card) throws IdASException, CardException {
 		claimTypes_ = new ArrayList();
 		IAttribute attr = card.getAttribute(IdASContext.ICARD_supportedClaimType);
 		Iterator itr = attr.getValues();
@@ -346,7 +346,7 @@
 	 * @throws SAXException
 	 * @throws IOException
 	 */
-	private void initTokenServiceList(IDigitalSubject card) throws ClassCastException, IdASException, CardException, IllegalArgumentException,
+	private void initTokenServiceList(INode card) throws ClassCastException, IdASException, CardException, IllegalArgumentException,
 			ParserConfigurationException, SAXException, IOException {
 		tokenServices_ = new ArrayList();
 		IAttribute attr = card.getAttribute(IdASContext.ICARD_tokenService);
@@ -373,7 +373,7 @@
 	 * @throws IdASException
 	 * @throws CardException
 	 */
-	private void initRequireAppliesTo(IDigitalSubject card) throws IdASException, CardException {
+	private void initRequireAppliesTo(INode card) throws IdASException, CardException {
 		requireAppliesTo_ = null;
 		Object obj = getSimpleValueData(card, IdASContext.ICARD_requireAppliesTo);
 		if (obj != null) {
@@ -393,7 +393,7 @@
 	 * @throws IOException
 	 * @throws ClassCastException
 	 */
-	private void initPrivacyNotice(IDigitalSubject card) throws IdASException, CardException, ParserConfigurationException, SAXException, IOException,
+	private void initPrivacyNotice(INode card) throws IdASException, CardException, ParserConfigurationException, SAXException, IOException,
 			ClassCastException {
 		privacyNotice_ = null;
 		String obj = (String) getSimpleValueData(card, IdASContext.ICARD_privacyNotice);
@@ -417,7 +417,7 @@
 	 * @throws CardException
 	 * @throws ClassCastException
 	 */
-	private void initHashSalt(IDigitalSubject card) throws IdASException, CardException, ClassCastException {
+	private void initHashSalt(INode card) throws IdASException, CardException, ClassCastException {
 		hashSalt_ = (byte[]) getSimpleValueData(card, IdASContext.ICARD_hashSalt);
 	}
 
@@ -426,7 +426,7 @@
 	 * @throws IdASException
 	 * @throws CardException
 	 */
-	private void initTimeLastUpdated(IDigitalSubject card) throws IdASException, CardException {
+	private void initTimeLastUpdated(INode card) throws IdASException, CardException {
 		timeLastUpdated_ = null;
 		Object obj = getSimpleValueData(card, IdASContext.ICARD_timeLastUpdated);
 		if (obj != null) {
@@ -443,7 +443,7 @@
 	 * @throws CardException
 	 * @throws ClassCastException
 	 */
-	private void initMasterKey(IDigitalSubject card) throws IdASException, CardException, ClassCastException {
+	private void initMasterKey(INode card) throws IdASException, CardException, ClassCastException {
 		masterKey_ = (byte[]) getSimpleValueData(card, IdASContext.ICARD_masterKey);
 	}
 
@@ -791,7 +791,7 @@
 	 * @return
 	 * @throws CardException
 	 */
-	private Object getSimpleValueData(IDigitalSubject subj, URI attribure) throws CardException {
+	private Object getSimpleValueData(INode subj, URI attribure) throws CardException {
 		try {
 			ISingleValuedAttribute attr = subj.getSingleValuedAttribute(attribure);
 			return getSimpleValueData(attr);
@@ -825,7 +825,7 @@
 	 * @return
 	 * @throws IdASException
 	 */
-	public IDigitalSubject getCardSubject() {
+	public INode getCardSubject() {
 		return card_;
 	}
 
Index: /home/jimse/dev/higgins/org.eclipse.higgins.icard.provider.cardspace.managed/src/org/eclipse/higgins/icard/provider/cardspace/managed/IdASBasedManagedCardProvider.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.icard.provider.cardspace.managed/src/org/eclipse/higgins/icard/provider/cardspace/managed/IdASBasedManagedCardProvider.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.icard.provider.cardspace.managed/src/org/eclipse/higgins/icard/provider/cardspace/managed/IdASBasedManagedCardProvider.java	(working copy)
@@ -38,9 +38,9 @@
 import org.eclipse.higgins.icard.provider.cardspace.common.utils.CardCryptography;
 import org.eclipse.higgins.icard.provider.cardspace.common.utils.IdASContext;
 import org.eclipse.higgins.idas.api.IContext;
-import org.eclipse.higgins.idas.api.IDigitalSubject;
+import org.eclipse.higgins.idas.api.INode;
 import org.eclipse.higgins.idas.api.IFilter;
-import org.eclipse.higgins.idas.api.IFilterSubjectTypeAssertion;
+import org.eclipse.higgins.idas.api.IFilterNodeTypeAssertion;
 import org.eclipse.higgins.idas.api.IdASException;
 import org.eclipse.higgins.idas.common.AuthNNamePasswordMaterials;
 import org.eclipse.higgins.idas.registry.IdASRegistry;
@@ -159,13 +159,13 @@
 				try {
 					IFilter filter = ctx.buildFilter();
 					filter.setOperator(IFilter.OP_AND);
-					IFilterSubjectTypeAssertion typeAssertion = ctx.buildSubjectTypeAssertion();
+					IFilterNodeTypeAssertion typeAssertion = ctx.buildNodeTypeAssertion();
 					typeAssertion.setAssertionValue(IdASContext.ICARD_ManagedInformationCard);
 					filter.addFilter(typeAssertion);
-					Iterator subjList = ctx.getSubjects(filter);
+					Iterator subjList = ctx.getNodes(filter);
 					while (subjList.hasNext()) {
-						IDigitalSubject subj = (IDigitalSubject) subjList.next();
-						if (IdASContext.ICARD_ManagedInformationCard.equals(subj.getSubjectType())) {
+						INode subj = (INode) subjList.next();
+						if (IdASContext.ICARD_ManagedInformationCard.equals(subj.getNodeType())) {
 							IdASBasedManagedCard card = new IdASBasedManagedCard(this, subj);
 							if (policy == null) {
 								cards.add(card);
@@ -295,8 +295,8 @@
 				if (card instanceof IdASBasedManagedCard) {
 					try {
 						IdASBasedManagedCard crd = (IdASBasedManagedCard) card;
-						String subjId = crd.getCardSubject().getSubjectID();
-						IDigitalSubject subj = ctx.getSubject(subjId);
+						String subjId = crd.getCardSubject().getNodeID();
+						INode subj = ctx.getNode(subjId);
 						subj.remove();
 						ctx.applyUpdates();
 					} catch (Exception e) {
@@ -429,7 +429,7 @@
 			IContext ctx = getContext(userCrds);
 			if (ctx != null) {
 				try {
-					IDigitalSubject subj = ctx.getSubject(CUID);
+					INode subj = ctx.getNode(CUID);
 					IdASBasedManagedCard card = new IdASBasedManagedCard(this, subj);
 					return card;
 				}
Index: /home/jimse/dev/higgins/org.eclipse.higgins.icard.provider.cardspace.common/src/org/eclipse/higgins/icard/provider/cardspace/common/PersonalCard.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.icard.provider.cardspace.common/src/org/eclipse/higgins/icard/provider/cardspace/common/PersonalCard.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.icard.provider.cardspace.common/src/org/eclipse/higgins/icard/provider/cardspace/common/PersonalCard.java	(working copy)
@@ -52,7 +52,7 @@
 
 	protected URI claimListContextID_ = null;
 
-	protected String claimListSubjectID_ = null;
+	protected String claimListNodeID_ = null;
 
 	protected byte[] pinDigest_ = null;
 
@@ -318,8 +318,8 @@
 		return claimListContextID_;
 	}
 
-	public String getClaimListSubjectID() {
-		return claimListSubjectID_;
+	public String getClaimListNodeID() {
+		return claimListNodeID_;
 	}
 
 	public Element toXML(Document doc) throws CardException {
Index: /home/jimse/dev/higgins/org.eclipse.higgins.icard/src/org/eclipse/higgins/icard/IClaim.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.icard/src/org/eclipse/higgins/icard/IClaim.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.icard/src/org/eclipse/higgins/icard/IClaim.java	(working copy)
@@ -13,7 +13,7 @@
 
 /**
  * The <code>IClaim</code> interface defines a set of methods to make an
- * assertion of a specific type about an implicit subject.
+ * assertion of a specific type about an implicit node.
  */
 public interface IClaim {
 	/**
Index: /home/jimse/dev/higgins/org.eclipse.higgins.icard/src/org/eclipse/higgins/icard/IClaimContainer.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.icard/src/org/eclipse/higgins/icard/IClaimContainer.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.icard/src/org/eclipse/higgins/icard/IClaimContainer.java	(working copy)
@@ -59,7 +59,7 @@
 	 *             if this object can't contains a claim with the specified
 	 *             type.
 	 * @throws ReadOnlyObjectException
-	 *             if implicit subject doesn't support modifications of its
+	 *             if implicit node doesn't support modifications of its
 	 *             claims.
 	 * @throws CardException
 	 *             in case of some unexpected error. 
@@ -79,7 +79,7 @@
 	 *             if this object can't contains a claim with the specified
 	 *             type.
 	 * @throws ReadOnlyObjectException
-	 *             if implicit subject doesn't support modifications of its
+	 *             if implicit node doesn't support modifications of its
 	 *             claims.
 	 * @throws CardException
 	 *             in case of some unexpected error. 
Index: /home/jimse/dev/higgins/org.eclipse.higgins.icard/src/org/eclipse/higgins/icard/IPersonalInformationCard.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.icard/src/org/eclipse/higgins/icard/IPersonalInformationCard.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.icard/src/org/eclipse/higgins/icard/IPersonalInformationCard.java	(working copy)
@@ -36,7 +36,7 @@
 	public void setPinCode(IPinCodeCredential pinCodeCredential) throws CardException;
 
 	/**
-	 * URI of the context where DigitalSubject with claim values of the card is
+	 * URI of the context where Node with claim values of the card is
 	 * stored
 	 */
 	public URI getClaimListContextID();
@@ -42,8 +42,8 @@
 	public URI getClaimListContextID();
 
 	/**
-	 * ID of DigitalSubject which holds claim values of the card
+	 * ID of Node which holds claim values of the card
 	 */
-	public String getClaimListSubjectID();
+	public String getClaimListNodeID();
 
 }
Index: /home/jimse/dev/higgins/org.eclipse.higgins.deployment.idas.basic/conf/Higgins-LDAP-Server.xrds
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.deployment.idas.basic/conf/Higgins-LDAP-Server.xrds	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.deployment.idas.basic/conf/Higgins-LDAP-Server.xrds	(working copy)
@@ -61,7 +61,7 @@
 								RESULT = "http://www.eclipse.org/higgins/ontologies/deployment/idas/basic/ldap#attr_"; + providerID.toString();
 							]]>
 						</Setting>
-						<Setting Name="consumerDSTypeToProvider" Type="htf:jscriptexec">
+						<Setting Name="consumerNodeTypeToProvider" Type="htf:jscriptexec">
 							<![CDATA[
 								var re = new RegExp("^http://www.eclipse.org/higgins/ontologies/deployment/idas/basic/ldap#class_";, "i");
 								RESULT = String(consumerType.toString()).replace(re, "");
@@ -67,7 +67,7 @@
 								RESULT = String(consumerType.toString()).replace(re, "");
 							]]>
 						</Setting>
-						<Setting Name="providerDSTypeToConsumer" Type="htf:jscriptexec">
+						<Setting Name="providerNodeTypeToConsumer" Type="htf:jscriptexec">
 							<![CDATA[
 								RESULT = "http://www.eclipse.org/higgins/ontologies/deployment/idas/basic/ldap#class_"; + String(providerType.toString());
 							]]>
Index: /home/jimse/dev/higgins/org.eclipse.higgins.deployment.idas.basic/conf/IdASConfiguration1.xml
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.deployment.idas.basic/conf/IdASConfiguration1.xml	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.deployment.idas.basic/conf/IdASConfiguration1.xml	(working copy)
@@ -82,7 +82,7 @@
 									RESULT = "http://www.eclipse.org/higgins/ontologies/deployment/idas/basic/ldap#attr_"; + providerID.toString();
 								]]>
 							</Setting>
-							<Setting Name="consumerDSTypeToProvider" Type="htf:jscriptexec">
+							<Setting Name="consumerNodeTypeToProvider" Type="htf:jscriptexec">
 								<![CDATA[
 									var re = new RegExp("^http://www.eclipse.org/higgins/ontologies/deployment/idas/basic/ldap#class_";, "i");
 									RESULT = String(consumerType.toString()).replace(re, "");
@@ -88,7 +88,7 @@
 									RESULT = String(consumerType.toString()).replace(re, "");
 								]]>
 							</Setting>
-							<Setting Name="providerDSTypeToConsumer" Type="htf:jscriptexec">
+							<Setting Name="providerNodeTypeToConsumer" Type="htf:jscriptexec">
 								<![CDATA[
 									RESULT = "http://www.eclipse.org/higgins/ontologies/deployment/idas/basic/ldap#class_"; + String(providerType.toString());
 								]]>
Index: /home/jimse/dev/higgins/org.eclipse.higgins.deployment.idas.basic/src/org/eclipse/higgins/deployment/idas/basic/BasicIdAS.java
===================================================================
--- /home/jimse/dev/higgins/org.eclipse.higgins.deployment.idas.basic/src/org/eclipse/higgins/deployment/idas/basic/BasicIdAS.java	(revision 9288)
+++ /home/jimse/dev/higgins/org.eclipse.higgins.deployment.idas.basic/src/org/eclipse/higgins/deployment/idas/basic/BasicIdAS.java	(working copy)
@@ -21,7 +21,7 @@
 import org.eclipse.higgins.idas.api.IAttribute;
 import org.eclipse.higgins.idas.api.IAttributeValue;
 import org.eclipse.higgins.idas.api.IContext;
-import org.eclipse.higgins.idas.api.IDigitalSubject;
+import org.eclipse.higgins.idas.api.INode;
 import org.eclipse.higgins.idas.api.ISimpleAttrValue;
 import org.eclipse.higgins.idas.api.IdASException;
 import org.eclipse.higgins.idas.common.AuthNNamePasswordMaterials;
@@ -33,10 +33,10 @@
 	public static void main(String[] args) {
 		org.apache.log4j.PropertyConfigurator.configure("conf/log4j.properties");
 		BasicIdAS basicIdAS = new BasicIdAS();
-		basicIdAS.readSubject();
+		basicIdAS.readNode();
 	}
 
-	private void readSubject() {
+	private void readNode() {
 		IContext context;
 		
 		try {
@@ -46,10 +46,10 @@
 			// Alt: get a context using the "local xrds" method
 			context = contextFromXRDS("./conf/Higgins-LDAP-Server.xrds");
 		
-			// Open the context, get the authenticated subject, and read its attributes
-			String subjectID = context.open(new AuthNNamePasswordMaterials(context, "cn=admin,o=bandit", "admin"));
-			IDigitalSubject subject = context.getSubject(subjectID); 
-			displaySubjectInfo(subject);
+			// Open the context, get the authenticated node, and read its attributes
+			String nodeID = context.open(new AuthNNamePasswordMaterials(context, "cn=admin,o=bandit", "admin"));
+			INode node = context.getNode(nodeID); 
+			displayNodeInfo(node);
 			
 		} catch (ContextOpenException e) {
 			// TODO Auto-generated catch block
@@ -63,12 +63,12 @@
 		}
 	}
 
-	private void displaySubjectInfo(
-			IDigitalSubject subject) throws IdASException {
-		Iterator attrIter = subject.getAttributes();
-		System.out.println("subject ID = " + subject.getSubjectID());
-		System.out.println("subject's type = " + subject.getSubjectType());
-		System.out.println("subject's attributes:");
+	private void displayNodeInfo(
+			INode node) throws IdASException {
+		Iterator attrIter = node.getAttributes();
+		System.out.println("node ID = " + node.getNodeID());
+		System.out.println("node's type = " + node.getNodeType());
+		System.out.println("node's attributes:");
 
 		while (attrIter.hasNext()) {
 			IAttribute attr = (IAttribute) attrIter.next();

Back to the top