Index: metacat-index/src/main/java/edu/ucsb/nceas/metacat/index/annotation/MetacatRdfXmlSubprocessor.java
===================================================================
--- metacat-index/src/main/java/edu/ucsb/nceas/metacat/index/annotation/MetacatRdfXmlSubprocessor.java	(nonexistent)
+++ metacat-index/src/main/java/edu/ucsb/nceas/metacat/index/annotation/MetacatRdfXmlSubprocessor.java	(revision 10062)
@@ -0,0 +1,363 @@
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+package edu.ucsb.nceas.metacat.index.annotation;
+
+import edu.ucsb.nceas.metacat.index.resourcemap.ResourceMapSubprocessor;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.xml.xpath.XPathExpressionException;
+
+import org.apache.commons.codec.EncoderException;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.dataone.cn.index.util.PerformanceLogger;
+import org.dataone.cn.indexer.annotation.SparqlField;
+import org.dataone.cn.indexer.annotation.TripleStoreService;
+import org.dataone.cn.indexer.parser.IDocumentSubprocessor;
+import org.dataone.cn.indexer.parser.ISolrDataField;
+import org.dataone.cn.indexer.parser.SubprocessorUtility;
+import org.dataone.cn.indexer.solrhttp.HTTPService;
+import org.dataone.cn.indexer.solrhttp.SolrDoc;
+import org.dataone.cn.indexer.solrhttp.SolrElementField;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import com.hp.hpl.jena.ontology.OntModel;
+import com.hp.hpl.jena.query.Dataset;
+import com.hp.hpl.jena.query.Query;
+import com.hp.hpl.jena.query.QueryExecution;
+import com.hp.hpl.jena.query.QueryExecutionFactory;
+import com.hp.hpl.jena.query.QueryFactory;
+import com.hp.hpl.jena.query.QuerySolution;
+import com.hp.hpl.jena.query.ResultSet;
+import com.hp.hpl.jena.rdf.model.ModelFactory;
+import com.hp.hpl.jena.tdb.TDBFactory;
+
+/**
+ * A solr index parser for an RDF/XML file.
+ * The solr doc of the RDF/XML object only has the system metadata information.
+ * The solr docs of the science metadata doc and data file have the annotation information.
+ */
+public class MetacatRdfXmlSubprocessor implements IDocumentSubprocessor {
+
+    private static Log log = LogFactory.getLog(MetacatRdfXmlSubprocessor.class);
+    private static PerformanceLogger perfLog = PerformanceLogger.getInstance();
+    /**
+     * If xpath returns true execute the processDocument Method
+     */
+    private List<String> matchDocuments = null;
+
+    private List<ISolrDataField> fieldList = new ArrayList<ISolrDataField>();
+
+    private List<String> fieldsToMerge = new ArrayList<String>();
+
+    @Autowired
+    private HTTPService httpService = null;
+
+    @Autowired
+    private String solrQueryUri = null;
+
+    @Autowired
+    private SubprocessorUtility processorUtility;
+
+    /**
+     * Returns true if subprocessor should be run against object
+     * 
+     * @param formatId the the document to be processed
+     * @return true if this processor can parse the formatId
+     */
+    public boolean canProcess(String formatId) {
+        return matchDocuments.contains(formatId);
+    }
+
+    public List<String> getMatchDocuments() {
+        return matchDocuments;
+    }
+
+    public void setMatchDocuments(List<String> matchDocuments) {
+        this.matchDocuments = matchDocuments;
+    }
+
+    public List<ISolrDataField> getFieldList() {
+        return fieldList;
+    }
+
+    public void setFieldList(List<ISolrDataField> fieldList) {
+        this.fieldList = fieldList;
+    }
+
+    @Override
+    public Map<String, SolrDoc> processDocument(String identifier, Map<String, SolrDoc> docs,
+            InputStream is) throws Exception {
+
+        if (log.isTraceEnabled()) {
+            log.trace("INCOMING DOCS to processDocument(): ");
+            serializeDocuments(docs);
+        }
+
+        SolrDoc resourceMapDoc = docs.get(identifier);
+        List<SolrDoc> processedDocs = process(resourceMapDoc, is);
+        Map<String, SolrDoc> processedDocsMap = new HashMap<String, SolrDoc>();
+        for (SolrDoc processedDoc : processedDocs) {
+            processedDocsMap.put(processedDoc.getIdentifier(), processedDoc);
+        }
+
+        if (log.isTraceEnabled()) {
+            log.trace("PREMERGED DOCS from processDocument(): ");
+            serializeDocuments(processedDocsMap);
+        }
+
+        // Merge previously processed (but yet to be indexed) documents
+        Map<String, SolrDoc> mergedDocs = mergeDocs(docs, processedDocsMap);
+
+        if (log.isTraceEnabled()) {
+            log.trace("OUTGOING DOCS from processDocument(): ");
+            serializeDocuments(mergedDocs);
+        }
+
+        return mergedDocs;
+    }
+
+    /**
+     * Serialize documents to be indexed for debugging
+     * 
+     * @param docs
+     * @throws IOException
+     */
+    private void serializeDocuments(Map<String, SolrDoc> docs) {
+        StringBuilder documents = new StringBuilder();
+        documents.append("<docs>");
+
+        for (SolrDoc doc : docs.values()) {
+            ByteArrayOutputStream baos = new ByteArrayOutputStream();
+            try {
+                doc.serialize(baos, "UTF-8");
+
+            } catch (IOException e) {
+                log.trace("Couldn't serialize documents: " + e.getMessage());
+            }
+            
+            try {
+                documents.append(baos.toString());
+            } finally {
+                IOUtils.closeQuietly(baos);
+            }
+        }
+        documents.append("</docs>");
+        log.trace(documents.toString());
+    }
+
+    private List<SolrDoc> process(SolrDoc indexDocument, InputStream is) throws Exception {
+        
+        // get the triplestore dataset
+        long start = System.currentTimeMillis();
+        Dataset dataset = TripleStoreService.getInstance().getDataset();
+        perfLog.log("RdfXmlSubprocess.process gets a dataset from tripe store service ", System.currentTimeMillis() - start);
+        
+        // read the annotation
+        String indexDocId = indexDocument.getIdentifier();
+        String name = indexDocId;
+
+        //Check if the identifier is a valid URI and if not, make it one by prepending "http://"
+        URI nameURI;
+        String scheme = null;
+        try {
+            nameURI = new URI(indexDocId);
+            scheme = nameURI.getScheme();
+            
+        } catch (URISyntaxException use) {
+            // The identifier can't be parsed due to offending characters. It's not a URL
+            
+            name = "https://cn.dataone.org/cn/v1/resolve/"+indexDocId;
+        }
+        
+        // The had no scheme prefix. It's not a URL
+        if ((scheme == null) || (scheme.isEmpty())) {
+            name = "https://cn.dataone.org/cn/v1/resolve/"+indexDocId;
+            
+        }
+        
+        long startOntModel = System.currentTimeMillis();
+        boolean loaded = dataset.containsNamedModel(name);
+        if (!loaded) {
+            OntModel ontModel = ModelFactory.createOntologyModel();
+            ontModel.read(is, name);
+            dataset.addNamedModel(name, ontModel);
+        }
+        perfLog.log("RdfXmlSubprocess.process adds ont-model ", System.currentTimeMillis() - startOntModel);
+        //dataset.getDefaultModel().add(ontModel);
+
+        // process each field query
+        Map<String, SolrDoc> documentsToIndex = new HashMap<String, SolrDoc>();
+        long startField = System.currentTimeMillis();
+        for (ISolrDataField field : this.fieldList) {
+            long filed = System.currentTimeMillis();
+            String q = null;
+            if (field instanceof SparqlField) {
+                q = ((SparqlField) field).getQuery();
+                q = q.replaceAll("\\$GRAPH_NAME", name);
+                Query query = QueryFactory.create(q);
+                log.trace("Executing SPARQL query:\n" + query.toString());
+                QueryExecution qexec = QueryExecutionFactory.create(query, dataset);
+                ResultSet results = qexec.execSelect();
+                while (results.hasNext()) {
+                    SolrDoc solrDoc = null;
+                    QuerySolution solution = results.next();
+                    log.trace(solution.toString());
+
+                    // find the index document we are trying to augment with the annotation
+                    if (solution.contains("pid")) {
+                        String id = solution.getLiteral("pid").getString();
+
+                        // TODO: check if anyone with permissions on the annotation document has write permission on the document we are annotating
+                        boolean statementAuthorized = true;
+                        if (!statementAuthorized) {
+                            continue;
+                        }
+
+                        // otherwise carry on with the indexing
+                        solrDoc = documentsToIndex.get(id);
+                        if (solrDoc == null) {
+                            solrDoc = new SolrDoc();
+                            solrDoc.addField(new SolrElementField(SolrElementField.FIELD_ID, id));
+                            documentsToIndex.put(id, solrDoc);
+                        }
+                    }
+
+                    // add the field to the index document
+                    if (solution.contains(field.getName())) {
+                        String value = solution.get(field.getName()).toString();
+                        SolrElementField f = new SolrElementField(field.getName(), value);
+                        if (!solrDoc.hasFieldWithValue(f.getName(), f.getValue())) {
+                            solrDoc.addField(f);
+                        }
+                    }
+                }
+            }
+            perfLog.log("RdfXmlSubprocess.process process the field "+field.getName(), System.currentTimeMillis() - filed);
+        }
+        perfLog.log("RdfXmlSubprocess.process process the fields total ", System.currentTimeMillis() - startField);
+        // clean up the triple store
+        TDBFactory.release(dataset);
+
+        // merge the existing index with the new[er] values
+        long getStart = System.currentTimeMillis();
+        Map<String, SolrDoc> existingDocuments = getSolrDocs(documentsToIndex.keySet());
+        perfLog.log("RdfXmlSubprocess.process get existing solr docs ", System.currentTimeMillis() - getStart);
+        Map<String, SolrDoc> mergedDocuments = mergeDocs(documentsToIndex, existingDocuments);
+        mergedDocuments.put(indexDocument.getIdentifier(), indexDocument);
+
+        perfLog.log("RdfXmlSubprocess.process() total take ", System.currentTimeMillis() - start);
+        return new ArrayList<SolrDoc>(mergedDocuments.values());
+    }
+
+    private Map<String, SolrDoc> getSolrDocs(Set<String> ids) throws Exception {
+        Map<String, SolrDoc> list = new HashMap<String, SolrDoc>();
+        if (ids != null) {
+            for (String id : ids) {
+                //SolrDoc doc = httpService.retrieveDocumentFromSolrServer(id, solrQueryUri);
+                SolrDoc doc = ResourceMapSubprocessor.getSolrDoc(id);;
+                if (doc != null) {
+                    list.put(id, doc);
+                }
+            }
+        }
+        return list;
+    }
+
+    /*
+     * Merge existing documents from the Solr index with pending documents
+     */
+    private Map<String, SolrDoc> mergeDocs(Map<String, SolrDoc> pending,
+            Map<String, SolrDoc> existing) throws Exception {
+        long start = System.currentTimeMillis();
+        Map<String, SolrDoc> merged = new HashMap<String, SolrDoc>();
+
+        Iterator<String> pendingIter = pending.keySet().iterator();
+        while (pendingIter.hasNext()) {
+            String id = pendingIter.next();
+            SolrDoc pendingDoc = pending.get(id);
+            SolrDoc existingDoc = existing.get(id);
+            SolrDoc mergedDoc = new SolrDoc();
+            if (existingDoc != null) {
+                // merge the existing fields
+                for (SolrElementField field : existingDoc.getFieldList()) {
+                    mergedDoc.addField(field);
+
+                }
+            }
+            // add the pending
+            for (SolrElementField field : pendingDoc.getFieldList()) {
+                if (field.getName().equals(SolrElementField.FIELD_ID)
+                        && mergedDoc.hasField(SolrElementField.FIELD_ID)) {
+                    continue;
+                }
+
+                // only add if we don't already have it
+                if (!mergedDoc.hasFieldWithValue(field.getName(), field.getValue())) {
+                    mergedDoc.addField(field);
+                }
+            }
+
+            // include in results
+            merged.put(id, mergedDoc);
+        }
+
+        // add existing if not yet merged (needed if existing map size > pending map size)
+        Iterator<String> existingIter = existing.keySet().iterator();
+
+        while (existingIter.hasNext()) {
+            String existingId = existingIter.next();
+
+            if (!merged.containsKey(existingId)) {
+                merged.put(existingId, existing.get(existingId));
+
+            }
+        }
+
+        if (log.isTraceEnabled()) {
+            log.trace("MERGED DOCS with existing from the Solr index: ");
+            serializeDocuments(merged);
+        }
+        perfLog.log("RdfXmlSubprocess.merge total ", System.currentTimeMillis() - start);
+        return merged;
+    }
+
+    @Override
+    public SolrDoc mergeWithIndexedDocument(SolrDoc indexDocument) throws IOException,
+            EncoderException, XPathExpressionException {
+        return processorUtility.mergeWithIndexedDocument(indexDocument, fieldsToMerge);
+    }
+
+    public List<String> getFieldsToMerge() {
+        return fieldsToMerge;
+    }
+
+    public void setFieldsToMerge(List<String> fieldsToMerge) {
+        this.fieldsToMerge = fieldsToMerge;
+    }
+}
Index: metacat-index/src/main/resources/application-context-oa.xml
===================================================================
--- metacat-index/src/main/resources/application-context-oa.xml	(revision 10061)
+++ metacat-index/src/main/resources/application-context-oa.xml	(revision 10062)
@@ -3,7 +3,7 @@
 	xmlns:p="http://www.springframework.org/schema/p"
 	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
 
-	<bean id="rdfXmlSubprocessor" class="org.dataone.cn.indexer.annotation.RdfXmlSubprocessor">
+	<bean id="rdfXmlSubprocessor" class="edu.ucsb.nceas.metacat.index.annotation.MetacatRdfXmlSubprocessor">
 		<property name="matchDocuments">
 			<list>
 				<value>http://www.w3.org/TR/rdf-syntax-grammar</value>
Index: metacat-index/src/test/java/edu/ucsb/nceas/metacat/index/annotation/MetacatRdfXmlSubprocessorTest.java
===================================================================
--- metacat-index/src/test/java/edu/ucsb/nceas/metacat/index/annotation/MetacatRdfXmlSubprocessorTest.java	(nonexistent)
+++ metacat-index/src/test/java/edu/ucsb/nceas/metacat/index/annotation/MetacatRdfXmlSubprocessorTest.java	(revision 10062)
@@ -0,0 +1,113 @@
+package edu.ucsb.nceas.metacat.index.annotation;
+
+import static org.junit.Assert.assertTrue;
+
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.dataone.cn.indexer.parser.IDocumentSubprocessor;
+import org.dataone.cn.indexer.solrhttp.SolrDoc;
+import org.dataone.cn.indexer.solrhttp.SolrElementField;
+import org.junit.Test;
+import org.dataone.cn.indexer.annotation.RdfXmlSubprocessor;
+
+import edu.ucsb.nceas.metacat.index.SolrIndex;
+import edu.ucsb.nceas.metacat.index.SolrIndexIT;
+
+public class MetacatRdfXmlSubprocessorTest {
+    
+    /**
+     * Test the case that the resource map contains a component which is not int the solr index server.
+     * @throws Exception
+     */
+    @Test
+    public void testProcessDocument() throws Exception {
+        //Settings.getConfiguration().setProperty("dataone.hazelcast.configFilePath", "../lib/hazelcast.xml");
+        String id = "resourceMap_urn:uuid:04780847-6082-455b-9831-22269c9ec0a6";
+        InputStream is = getResourceMapDoc();
+        List<SolrElementField> sysSolrFields = new ArrayList<SolrElementField>();
+        SolrElementField idField = new SolrElementField();
+        idField.setName("id");
+        idField.setValue(id);
+        sysSolrFields.add(idField);
+        SolrDoc indexDocument = new SolrDoc(sysSolrFields);
+        Map<String, SolrDoc> docs = new HashMap<String, SolrDoc>();
+        docs.put(id, indexDocument);
+        MetacatRdfXmlSubprocessor processor = getMetacatRdfXmlSubprocessor();
+        
+        try {
+            Map<String, SolrDoc> result = processor.processDocument(id, docs, is);
+            Set<String> ids = result.keySet();
+            for(String newId: ids) {
+                SolrDoc resultSolrDoc = result.get(newId);
+                if(newId.equals("urn:uuid:2c20432e-116a-4085-b8d6-abfc4b2dada2")){
+                    SolrElementField field1 = resultSolrDoc.getField("wasDerivedFrom");
+                    assertTrue(" the wasDerivedFrom value should be urn:uuid:621a115f-f1ed-4bef-bca5-f8741793a540. But the real value is "+field1.getValue(), field1.getValue().equals("urn:uuid:621a115f-f1ed-4bef-bca5-f8741793a540"));
+                    SolrElementField field2 = resultSolrDoc.getField("wasGeneratedBy");
+                    assertTrue("the wasGeneratedBy value should be urn:uuid:9ceeaeb3-6ef3-4b1e-bc4d-96e299fab3a4. But the real value is"+field2.getValue(), field2.getValue().equals("urn:uuid:9ceeaeb3-6ef3-4b1e-bc4d-96e299fab3a4"));
+                } else if (newId.equals("urn:uuid:9ceeaeb3-6ef3-4b1e-bc4d-96e299fab3a4")) {
+                    SolrElementField field1 = resultSolrDoc.getField("used");
+                    assertTrue(" the used value should be urn:uuid:621a115f-f1ed-4bef-bca5-f8741793a540. But the real value is "+field1.getValue(), field1.getValue().equals("urn:uuid:621a115f-f1ed-4bef-bca5-f8741793a540"));
+                   
+                } else if (newId.equals("urn:uuid:621a115f-f1ed-4bef-bca5-f8741793a540")) {
+                    List<String>list = resultSolrDoc.getAllFieldValues("wasDerivedFrom");
+                    assertTrue("The list must contain urn:uuid:ee635a61-c930-444d-8214-db65178a1a47", list.contains("urn:uuid:ee635a61-c930-444d-8214-db65178a1a47"));
+                    assertTrue("The list must contain urn:uuid:23495598-d50b-4317-b0e1-05a9d9e52632", list.contains("urn:uuid:23495598-d50b-4317-b0e1-05a9d9e52632"));
+                    assertTrue("The list must contain urn:uuid:urn:uuid:672ba6c5-8812-4c05-a324-246af172c67a", list.contains("urn:uuid:672ba6c5-8812-4c05-a324-246af172c67a"));
+                    assertTrue("The list must contain urn:uuid:e534b2ab-3a1b-44ed-8a99-ce54a0487aea", list.contains("urn:uuid:e534b2ab-3a1b-44ed-8a99-ce54a0487aea"));
+                    list = resultSolrDoc.getAllFieldValues("wasGeneratedBy");
+                    assertTrue("The list must contain urn:uuid:d8e46217-2650-42b2-896f-0f006b1a2d3b", list.contains("urn:uuid:d8e46217-2650-42b2-896f-0f006b1a2d3b"));
+                } else if (newId.equals("urn:uuid:a0e104da-c925-4765-af60-29310de1b99a")) {
+                    List<String>list = resultSolrDoc.getAllFieldValues("wasGeneratedBy");
+                    assertTrue("The list must contain urn:uuid:9ceeaeb3-6ef3-4b1e-bc4d-96e299fab3a4", list.contains("urn:uuid:9ceeaeb3-6ef3-4b1e-bc4d-96e299fab3a4"));
+                }  else if (newId.equals("urn:uuid:d8e46217-2650-42b2-896f-0f006b1a2d3b")) {
+                    List<String>list = resultSolrDoc.getAllFieldValues("used");
+                    assertTrue("The list must contain urn:uuid:ee635a61-c930-444d-8214-db65178a1a47", list.contains("urn:uuid:ee635a61-c930-444d-8214-db65178a1a47"));
+                    assertTrue("The list must contain urn:uuid:23495598-d50b-4317-b0e1-05a9d9e52632", list.contains("urn:uuid:23495598-d50b-4317-b0e1-05a9d9e52632"));
+                    assertTrue("The list must contain urn:uuid:672ba6c5-8812-4c05-a324-246af172c67a", list.contains("urn:uuid:672ba6c5-8812-4c05-a324-246af172c67a"));
+                    assertTrue("The list must contain urn:uuid:e534b2ab-3a1b-44ed-8a99-ce54a0487aea", list.contains("urn:uuid:e534b2ab-3a1b-44ed-8a99-ce54a0487aea"));
+                }
+                /*ByteArrayOutputStream baos = new ByteArrayOutputStream();
+                resultSolrDoc.serialize(baos, "UTF-8");
+                System.out.println("after process, the solr doc is \n"+baos.toString());*/
+            }
+            
+        } catch (Exception e) {
+            e.printStackTrace();
+            assertTrue("It shouldn't throw an exception.", false);
+        }
+    }
+    
+    /*
+     * Get the document format of the test resource map file 
+     */
+    private InputStream getResourceMapDoc() throws Exception{
+    	File file = new File("src/test/resources/rdfxml-example.xml");
+        InputStream is = new FileInputStream(file);
+        return is;
+    }
+    
+    /*
+     * Get the ResourceMapSubprocessor
+     */
+    private MetacatRdfXmlSubprocessor getMetacatRdfXmlSubprocessor() throws Exception {
+        MetacatRdfXmlSubprocessor resorceMapprocessor = null;
+        SolrIndex solrIndex = SolrIndexIT.generateSolrIndex();
+        List<IDocumentSubprocessor> processors = solrIndex.getSubprocessors();
+        for(IDocumentSubprocessor processor : processors) {
+            if(processor instanceof MetacatRdfXmlSubprocessor) {
+                resorceMapprocessor = (MetacatRdfXmlSubprocessor) processor;
+            }
+        }
+        return resorceMapprocessor;
+    }
+    
+   
+}
Index: metacat-index/src/test/resources/rdfxml-example.xml
===================================================================
--- metacat-index/src/test/resources/rdfxml-example.xml	(nonexistent)
+++ metacat-index/src/test/resources/rdfxml-example.xml	(revision 10062)
@@ -0,0 +1,279 @@
+<?xml version="1.0" encoding="utf-8"?>
+<rdf:RDF xmlns:cito="http://purl.org/spar/cito/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:ore="http://www.openarchives.org/ore/terms/" xmlns:prov="http://www.w3.org/ns/prov#" xmlns:provone="http://purl.dataone.org/provone/2015/01/15/ontology#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#">
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A2c20432e-116a-4085-b8d6-abfc4b2dada2">
+    <prov:wasGeneratedBy rdf:resource="https://cn.dataone.org/cn/v2/resolve/urn%3Auuid%3A9ceeaeb3-6ef3-4b1e-bc4d-96e299fab3a4"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A621a115f-f1ed-4bef-bca5-f8741793a540">
+    <dcterms:identifier rdf:datatype="http://www.w3.org/2001/XMLSchema#string">urn:uuid:621a115f-f1ed-4bef-bca5-f8741793a540</dcterms:identifier>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A672ba6c5-8812-4c05-a324-246af172c67a">
+    <rdf:type rdf:resource="http://purl.dataone.org/provone/2015/01/15/ontology#Data"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A21edffcf-70e9-43fb-829d-b5f8644f1a11">
+    <dcterms:identifier rdf:datatype="http://www.w3.org/2001/XMLSchema#string">urn:uuid:21edffcf-70e9-43fb-829d-b5f8644f1a11</dcterms:identifier>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn.dataone.org/cn/v2/resolve/urn%3Auuid%3A9ceeaeb3-6ef3-4b1e-bc4d-96e299fab3a4">
+    <prov:used rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A621a115f-f1ed-4bef-bca5-f8741793a540"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A621a115f-f1ed-4bef-bca5-f8741793a540">
+    <prov:wasDerivedFrom rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Aee635a61-c930-444d-8214-db65178a1a47"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A621a115f-f1ed-4bef-bca5-f8741793a540">
+    <prov:wasDerivedFrom rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Ae534b2ab-3a1b-44ed-8a99-ce54a0487aea"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A621a115f-f1ed-4bef-bca5-f8741793a540">
+    <prov:wasDerivedFrom rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A672ba6c5-8812-4c05-a324-246af172c67a"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A621a115f-f1ed-4bef-bca5-f8741793a540">
+    <prov:wasDerivedFrom rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A23495598-d50b-4317-b0e1-05a9d9e52632"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Ae534b2ab-3a1b-44ed-8a99-ce54a0487aea">
+    <ore:isAggregatedBy rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Ae029b6e4-be07-442b-a54e-2d0aca657294#aggregation"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn.dataone.org/cn/v2/resolve/urn%3Auuid%3Ad8e46217-2650-42b2-896f-0f006b1a2d3b">
+    <dcterms:identifier rdf:datatype="http://www.w3.org/2001/XMLSchema#string">urn:uuid:d8e46217-2650-42b2-896f-0f006b1a2d3b</dcterms:identifier>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Aee635a61-c930-444d-8214-db65178a1a47">
+    <cito:isDocumentedBy rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A21edffcf-70e9-43fb-829d-b5f8644f1a11"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Aee635a61-c930-444d-8214-db65178a1a47">
+    <dcterms:identifier rdf:datatype="http://www.w3.org/2001/XMLSchema#string">urn:uuid:ee635a61-c930-444d-8214-db65178a1a47</dcterms:identifier>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn.dataone.org/cn/v2/resolve/urn%3Auuid%3A9ceeaeb3-6ef3-4b1e-bc4d-96e299fab3a4">
+    <prov:qualifiedAssociation rdf:nodeID="_:1f552b34-893e-4b1d-8aaf-e6293c997ff4"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Ae029b6e4-be07-442b-a54e-2d0aca657294">
+    <ore:describes rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Ae029b6e4-be07-442b-a54e-2d0aca657294#aggregation"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Ae534b2ab-3a1b-44ed-8a99-ce54a0487aea">
+    <rdf:type rdf:resource="http://purl.dataone.org/provone/2015/01/15/ontology#Data"/>
+  </rdf:Description>
+  <rdf:Description rdf:nodeID="_:1f552b34-893e-4b1d-8aaf-e6293c997ff4">
+    <prov:hadPlan rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A4c9d9509-4772-4131-9aec-9a9d5ccd8f8a"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn.dataone.org/cn/v2/resolve/urn%3Auuid%3Ad8e46217-2650-42b2-896f-0f006b1a2d3b">
+    <prov:qualifiedAssociation rdf:nodeID="_:5787d51f-f7ae-4dcd-9cce-107c55a17b10"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn.dataone.org/cn/v2/resolve/urn%3Auuid%3A9ceeaeb3-6ef3-4b1e-bc4d-96e299fab3a4">
+    <rdf:type rdf:resource="http://purl.dataone.org/provone/2015/01/15/ontology#Execution"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Ad2fcd5c0-2755-411e-b969-0b5f8eb47d75">
+    <cito:isDocumentedBy rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A21edffcf-70e9-43fb-829d-b5f8644f1a11"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Aa0e104da-c925-4765-af60-29310de1b99a">
+    <rdf:type rdf:resource="http://purl.dataone.org/provone/2015/01/15/ontology#Data"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A23495598-d50b-4317-b0e1-05a9d9e52632">
+    <dcterms:identifier rdf:datatype="http://www.w3.org/2001/XMLSchema#string">urn:uuid:23495598-d50b-4317-b0e1-05a9d9e52632</dcterms:identifier>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A21edffcf-70e9-43fb-829d-b5f8644f1a11">
+    <cito:documents rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Aee635a61-c930-444d-8214-db65178a1a47"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A21edffcf-70e9-43fb-829d-b5f8644f1a11">
+    <cito:documents rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Ae534b2ab-3a1b-44ed-8a99-ce54a0487aea"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A21edffcf-70e9-43fb-829d-b5f8644f1a11">
+    <cito:documents rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Ad2fcd5c0-2755-411e-b969-0b5f8eb47d75"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A21edffcf-70e9-43fb-829d-b5f8644f1a11">
+    <cito:documents rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Abf29d4cb-d06e-4e2b-a722-e1f9a98f2263"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A21edffcf-70e9-43fb-829d-b5f8644f1a11">
+    <cito:documents rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Aa0e104da-c925-4765-af60-29310de1b99a"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A21edffcf-70e9-43fb-829d-b5f8644f1a11">
+    <cito:documents rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A672ba6c5-8812-4c05-a324-246af172c67a"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A21edffcf-70e9-43fb-829d-b5f8644f1a11">
+    <cito:documents rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A621a115f-f1ed-4bef-bca5-f8741793a540"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A21edffcf-70e9-43fb-829d-b5f8644f1a11">
+    <cito:documents rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A4c9d9509-4772-4131-9aec-9a9d5ccd8f8a"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A21edffcf-70e9-43fb-829d-b5f8644f1a11">
+    <cito:documents rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A2c20432e-116a-4085-b8d6-abfc4b2dada2"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A21edffcf-70e9-43fb-829d-b5f8644f1a11">
+    <cito:documents rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A23495598-d50b-4317-b0e1-05a9d9e52632"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A21edffcf-70e9-43fb-829d-b5f8644f1a11">
+    <cito:documents rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A21edffcf-70e9-43fb-829d-b5f8644f1a11"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A2c20432e-116a-4085-b8d6-abfc4b2dada2">
+    <rdf:type rdf:resource="http://purl.dataone.org/provone/2015/01/15/ontology#Data"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A23495598-d50b-4317-b0e1-05a9d9e52632">
+    <rdf:type rdf:resource="http://purl.dataone.org/provone/2015/01/15/ontology#Data"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A4c9d9509-4772-4131-9aec-9a9d5ccd8f8a">
+    <ore:isAggregatedBy rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Ae029b6e4-be07-442b-a54e-2d0aca657294#aggregation"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn.dataone.org/cn/v2/resolve/urn%3Auuid%3Ad8e46217-2650-42b2-896f-0f006b1a2d3b">
+    <rdf:type rdf:resource="http://purl.dataone.org/provone/2015/01/15/ontology#Execution"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Ae534b2ab-3a1b-44ed-8a99-ce54a0487aea">
+    <dcterms:identifier rdf:datatype="http://www.w3.org/2001/XMLSchema#string">urn:uuid:e534b2ab-3a1b-44ed-8a99-ce54a0487aea</dcterms:identifier>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Aa0e104da-c925-4765-af60-29310de1b99a">
+    <prov:wasGeneratedBy rdf:resource="https://cn.dataone.org/cn/v2/resolve/urn%3Auuid%3A9ceeaeb3-6ef3-4b1e-bc4d-96e299fab3a4"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Aee635a61-c930-444d-8214-db65178a1a47">
+    <rdf:type rdf:resource="http://purl.dataone.org/provone/2015/01/15/ontology#Data"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A621a115f-f1ed-4bef-bca5-f8741793a540">
+    <cito:isDocumentedBy rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A21edffcf-70e9-43fb-829d-b5f8644f1a11"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Aee635a61-c930-444d-8214-db65178a1a47">
+    <ore:isAggregatedBy rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Ae029b6e4-be07-442b-a54e-2d0aca657294#aggregation"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn.dataone.org/cn/v2/resolve/urn%3Auuid%3Ad8e46217-2650-42b2-896f-0f006b1a2d3b">
+    <prov:used rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Aee635a61-c930-444d-8214-db65178a1a47"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn.dataone.org/cn/v2/resolve/urn%3Auuid%3Ad8e46217-2650-42b2-896f-0f006b1a2d3b">
+    <prov:used rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Ae534b2ab-3a1b-44ed-8a99-ce54a0487aea"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn.dataone.org/cn/v2/resolve/urn%3Auuid%3Ad8e46217-2650-42b2-896f-0f006b1a2d3b">
+    <prov:used rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A672ba6c5-8812-4c05-a324-246af172c67a"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn.dataone.org/cn/v2/resolve/urn%3Auuid%3Ad8e46217-2650-42b2-896f-0f006b1a2d3b">
+    <prov:used rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A23495598-d50b-4317-b0e1-05a9d9e52632"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Ae029b6e4-be07-442b-a54e-2d0aca657294">
+    <rdf:type rdf:resource="http://www.openarchives.org/ore/terms/ResourceMap"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Ad2fcd5c0-2755-411e-b969-0b5f8eb47d75">
+    <rdf:type rdf:resource="http://purl.dataone.org/provone/2015/01/15/ontology#Program"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A2c20432e-116a-4085-b8d6-abfc4b2dada2">
+    <cito:isDocumentedBy rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A21edffcf-70e9-43fb-829d-b5f8644f1a11"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A672ba6c5-8812-4c05-a324-246af172c67a">
+    <cito:isDocumentedBy rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A21edffcf-70e9-43fb-829d-b5f8644f1a11"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Abf29d4cb-d06e-4e2b-a722-e1f9a98f2263">
+    <dcterms:identifier rdf:datatype="http://www.w3.org/2001/XMLSchema#string">urn:uuid:bf29d4cb-d06e-4e2b-a722-e1f9a98f2263</dcterms:identifier>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A621a115f-f1ed-4bef-bca5-f8741793a540">
+    <prov:wasGeneratedBy rdf:resource="https://cn.dataone.org/cn/v2/resolve/urn%3Auuid%3Ad8e46217-2650-42b2-896f-0f006b1a2d3b"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Abf29d4cb-d06e-4e2b-a722-e1f9a98f2263">
+    <cito:isDocumentedBy rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A21edffcf-70e9-43fb-829d-b5f8644f1a11"/>
+  </rdf:Description>
+  <rdf:Description rdf:nodeID="_:1f552b34-893e-4b1d-8aaf-e6293c997ff4">
+    <rdf:type rdf:resource="http://www.w3.org/ns/prov#Association"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A4c9d9509-4772-4131-9aec-9a9d5ccd8f8a">
+    <cito:isDocumentedBy rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A21edffcf-70e9-43fb-829d-b5f8644f1a11"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Abf29d4cb-d06e-4e2b-a722-e1f9a98f2263">
+    <ore:isAggregatedBy rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Ae029b6e4-be07-442b-a54e-2d0aca657294#aggregation"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A4c9d9509-4772-4131-9aec-9a9d5ccd8f8a">
+    <rdf:type rdf:resource="http://purl.dataone.org/provone/2015/01/15/ontology#Program"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A2c20432e-116a-4085-b8d6-abfc4b2dada2">
+    <prov:wasDerivedFrom rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A621a115f-f1ed-4bef-bca5-f8741793a540"/>
+  </rdf:Description>
+  <rdf:Description rdf:nodeID="_:5787d51f-f7ae-4dcd-9cce-107c55a17b10">
+    <rdf:type rdf:resource="http://www.w3.org/ns/prov#Association"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A672ba6c5-8812-4c05-a324-246af172c67a">
+    <ore:isAggregatedBy rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Ae029b6e4-be07-442b-a54e-2d0aca657294#aggregation"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Aa0e104da-c925-4765-af60-29310de1b99a">
+    <cito:isDocumentedBy rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A21edffcf-70e9-43fb-829d-b5f8644f1a11"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A2c20432e-116a-4085-b8d6-abfc4b2dada2">
+    <dcterms:identifier rdf:datatype="http://www.w3.org/2001/XMLSchema#string">urn:uuid:2c20432e-116a-4085-b8d6-abfc4b2dada2</dcterms:identifier>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A621a115f-f1ed-4bef-bca5-f8741793a540">
+    <rdf:type rdf:resource="http://purl.dataone.org/provone/2015/01/15/ontology#Data"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A23495598-d50b-4317-b0e1-05a9d9e52632">
+    <cito:isDocumentedBy rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A21edffcf-70e9-43fb-829d-b5f8644f1a11"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A23495598-d50b-4317-b0e1-05a9d9e52632">
+    <ore:isAggregatedBy rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Ae029b6e4-be07-442b-a54e-2d0aca657294#aggregation"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A4c9d9509-4772-4131-9aec-9a9d5ccd8f8a">
+    <dcterms:identifier rdf:datatype="http://www.w3.org/2001/XMLSchema#string">urn:uuid:4c9d9509-4772-4131-9aec-9a9d5ccd8f8a</dcterms:identifier>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Ad2fcd5c0-2755-411e-b969-0b5f8eb47d75">
+    <dcterms:identifier rdf:datatype="http://www.w3.org/2001/XMLSchema#string">urn:uuid:d2fcd5c0-2755-411e-b969-0b5f8eb47d75</dcterms:identifier>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A21edffcf-70e9-43fb-829d-b5f8644f1a11">
+    <ore:isAggregatedBy rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Ae029b6e4-be07-442b-a54e-2d0aca657294#aggregation"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Ae029b6e4-be07-442b-a54e-2d0aca657294#aggregation">
+    <ore:aggregates rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Aee635a61-c930-444d-8214-db65178a1a47"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Ae029b6e4-be07-442b-a54e-2d0aca657294#aggregation">
+    <ore:aggregates rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Ae534b2ab-3a1b-44ed-8a99-ce54a0487aea"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Ae029b6e4-be07-442b-a54e-2d0aca657294#aggregation">
+    <ore:aggregates rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Ad2fcd5c0-2755-411e-b969-0b5f8eb47d75"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Ae029b6e4-be07-442b-a54e-2d0aca657294#aggregation">
+    <ore:aggregates rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Abf29d4cb-d06e-4e2b-a722-e1f9a98f2263"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Ae029b6e4-be07-442b-a54e-2d0aca657294#aggregation">
+    <ore:aggregates rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Aa0e104da-c925-4765-af60-29310de1b99a"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Ae029b6e4-be07-442b-a54e-2d0aca657294#aggregation">
+    <ore:aggregates rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A672ba6c5-8812-4c05-a324-246af172c67a"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Ae029b6e4-be07-442b-a54e-2d0aca657294#aggregation">
+    <ore:aggregates rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A621a115f-f1ed-4bef-bca5-f8741793a540"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Ae029b6e4-be07-442b-a54e-2d0aca657294#aggregation">
+    <ore:aggregates rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A4c9d9509-4772-4131-9aec-9a9d5ccd8f8a"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Ae029b6e4-be07-442b-a54e-2d0aca657294#aggregation">
+    <ore:aggregates rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A2c20432e-116a-4085-b8d6-abfc4b2dada2"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Ae029b6e4-be07-442b-a54e-2d0aca657294#aggregation">
+    <ore:aggregates rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A23495598-d50b-4317-b0e1-05a9d9e52632"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Ae029b6e4-be07-442b-a54e-2d0aca657294#aggregation">
+    <ore:aggregates rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A21edffcf-70e9-43fb-829d-b5f8644f1a11"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Ae534b2ab-3a1b-44ed-8a99-ce54a0487aea">
+    <cito:isDocumentedBy rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A21edffcf-70e9-43fb-829d-b5f8644f1a11"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Ae029b6e4-be07-442b-a54e-2d0aca657294#aggregation">
+    <dc:title>DataONE Aggregation</dc:title>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Aa0e104da-c925-4765-af60-29310de1b99a">
+    <ore:isAggregatedBy rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Ae029b6e4-be07-442b-a54e-2d0aca657294#aggregation"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A621a115f-f1ed-4bef-bca5-f8741793a540">
+    <ore:isAggregatedBy rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Ae029b6e4-be07-442b-a54e-2d0aca657294#aggregation"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A2c20432e-116a-4085-b8d6-abfc4b2dada2">
+    <ore:isAggregatedBy rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Ae029b6e4-be07-442b-a54e-2d0aca657294#aggregation"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Ae029b6e4-be07-442b-a54e-2d0aca657294#aggregation">
+    <rdf:type rdf:resource="http://www.openarchives.org/ore/terms/Aggregation"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A672ba6c5-8812-4c05-a324-246af172c67a">
+    <dcterms:identifier rdf:datatype="http://www.w3.org/2001/XMLSchema#string">urn:uuid:672ba6c5-8812-4c05-a324-246af172c67a</dcterms:identifier>
+  </rdf:Description>
+  <rdf:Description rdf:nodeID="_:5787d51f-f7ae-4dcd-9cce-107c55a17b10">
+    <prov:hadPlan rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Ad2fcd5c0-2755-411e-b969-0b5f8eb47d75"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn.dataone.org/cn/v2/resolve/urn%3Auuid%3A9ceeaeb3-6ef3-4b1e-bc4d-96e299fab3a4">
+    <dcterms:identifier rdf:datatype="http://www.w3.org/2001/XMLSchema#string">urn:uuid:9ceeaeb3-6ef3-4b1e-bc4d-96e299fab3a4</dcterms:identifier>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Aa0e104da-c925-4765-af60-29310de1b99a">
+    <dcterms:identifier rdf:datatype="http://www.w3.org/2001/XMLSchema#string">urn:uuid:a0e104da-c925-4765-af60-29310de1b99a</dcterms:identifier>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Ad2fcd5c0-2755-411e-b969-0b5f8eb47d75">
+    <ore:isAggregatedBy rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Ae029b6e4-be07-442b-a54e-2d0aca657294#aggregation"/>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3Ae029b6e4-be07-442b-a54e-2d0aca657294">
+    <dcterms:identifier rdf:datatype="http://www.w3.org/2001/XMLSchema#string">urn:uuid:e029b6e4-be07-442b-a54e-2d0aca657294</dcterms:identifier>
+  </rdf:Description>
+  <rdf:Description rdf:about="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A21edffcf-70e9-43fb-829d-b5f8644f1a11">
+    <cito:isDocumentedBy rdf:resource="https://cn-stage-2.test.dataone.org/cn/v2/resolve/urn%3Auuid%3A21edffcf-70e9-43fb-829d-b5f8644f1a11"/>
+  </rdf:Description>
+</rdf:RDF>
