public void Merge(ResourceStatementCollection statements, ResourceMap map) { IEnumerator statementEnumerator = statements.GetStatementEnumerator(); while (statementEnumerator.MoveNext()) { ResourceStatement resStatement = (ResourceStatement)statementEnumerator.Current; Node theSubject = (Node)map.GetBestDenotingNode(resStatement.GetSubject()); Arc thePredicate = (Arc)map.GetBestDenotingNode(resStatement.GetPredicate()); Node theObject = (Node)map.GetBestDenotingNode(resStatement.GetObject()); Statement statement = new Statement(theSubject, thePredicate, theObject); Add(statement); } }
public void Merge(ResourceStatementCollection statements, ResourceMap map) { if (this == statements) { return; } Hashtable equivalentResources = new Hashtable(); foreach (Resource resource in statements.ReferencedResources) { Resource internalResource = resource; foreach (GraphMember member in map.GetNodesDenoting(resource)) { if (HasResourceDenotedBy(member)) { internalResource = GetResourceDenotedBy(member); equivalentResources[resource] = internalResource; break; } // Must be a new resource // Remember this for when we're Adding statements // TODO: move this outside the loop equivalentResources[resource] = resource; } foreach (GraphMember member in map.GetNodesDenoting(resource)) { AddDenotation(member, internalResource); } } IEnumerator statementEnumerator = statements.GetStatementEnumerator(); while (statementEnumerator.MoveNext()) { ResourceStatement statement = (ResourceStatement)statementEnumerator.Current; ResourceStatement internalStatement = new ResourceStatement((Resource)equivalentResources[statement.GetSubject()], (Resource)equivalentResources[statement.GetPredicate()], (Resource)equivalentResources[statement.GetObject()]); Add(internalStatement); } }
public void Merge(ResourceStatementCollection statements, ResourceMap map) { }