Adding test of Solr setup and indexing. The SolrSetup test will start a

solr server, load RDF from test/testontologies/SolrQueryTestRDF, index
the individuals in the RDF and then run some test solr queries.
This commit is contained in:
Brian Caruso 2013-07-09 11:41:01 -04:00
parent 1d5f53ab78
commit 674ca6f774
4 changed files with 598 additions and 86 deletions

View file

@ -15,6 +15,7 @@ import org.apache.solr.client.solrj.impl.CommonsHttpSolrServer;
import org.apache.solr.client.solrj.impl.XMLResponseParser; import org.apache.solr.client.solrj.impl.XMLResponseParser;
import com.hp.hpl.jena.ontology.OntModel; import com.hp.hpl.jena.ontology.OntModel;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.vocabulary.OWL; import com.hp.hpl.jena.vocabulary.OWL;
import edu.cornell.mannlib.vitro.webapp.config.ConfigurationProperties; import edu.cornell.mannlib.vitro.webapp.config.ConfigurationProperties;
@ -217,7 +218,7 @@ public class SolrSetup implements javax.servlet.ServletContextListener{
modifiers.add( new NameFields( rdfServiceFactory )); modifiers.add( new NameFields( rdfServiceFactory ));
modifiers.add( new NameBoost( 1.2f )); modifiers.add( new NameBoost( 1.2f ));
modifiers.add( new ThumbnailImageURL(jenaOntModel)); modifiers.add( new ThumbnailImageURL( rdfServiceFactory ));
/* try to get context attribute SearchIndexExcludes /* try to get context attribute SearchIndexExcludes
* and use that as the start of the list of exclude * and use that as the start of the list of exclude

View file

@ -24,8 +24,8 @@ import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument; import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrInputDocument; import org.apache.solr.common.SolrInputDocument;
import org.apache.solr.core.CoreContainer; import org.apache.solr.core.CoreContainer;
import org.junit.AfterClass; import org.junit.After;
import org.junit.BeforeClass; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.rules.TemporaryFolder; import org.junit.rules.TemporaryFolder;
import org.xml.sax.SAXException; import org.xml.sax.SAXException;
@ -37,10 +37,12 @@ import com.hp.hpl.jena.rdf.model.ResIterator;
import com.hp.hpl.jena.rdf.model.Resource; import com.hp.hpl.jena.rdf.model.Resource;
import com.hp.hpl.jena.util.FileManager; import com.hp.hpl.jena.util.FileManager;
import edu.cornell.mannlib.vitro.testing.AbstractTestClass;
import edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory; import edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory;
import edu.cornell.mannlib.vitro.webapp.dao.jena.WebappDaoFactoryJena; import edu.cornell.mannlib.vitro.webapp.dao.jena.WebappDaoFactoryJena;
import edu.cornell.mannlib.vitro.webapp.rdfservice.impl.RDFServiceFactorySingle; import edu.cornell.mannlib.vitro.webapp.rdfservice.impl.RDFServiceFactorySingle;
import edu.cornell.mannlib.vitro.webapp.rdfservice.impl.jena.model.RDFServiceModel; import edu.cornell.mannlib.vitro.webapp.rdfservice.impl.jena.model.RDFServiceModel;
import edu.cornell.mannlib.vitro.webapp.search.VitroSearchTermNames;
import edu.cornell.mannlib.vitro.webapp.search.solr.documentBuilding.IndividualToSolrDocument; import edu.cornell.mannlib.vitro.webapp.search.solr.documentBuilding.IndividualToSolrDocument;
/** /**
@ -54,14 +56,20 @@ import edu.cornell.mannlib.vitro.webapp.search.solr.documentBuilding.IndividualT
* *
* This code is based on a similar test from the CUL Discovery and Access * This code is based on a similar test from the CUL Discovery and Access
* integration layer. * integration layer.
*
* All RDF/XML files in webapp/test/testontologies/SolrQueryTestRDF will be
* loaded into the model.
*/ */
public class SolrQueryTest { public class SolrQueryTest extends AbstractTestClass {
/** Key of system property for build directory. */ /** Key of system property for build directory. */
static final String buildDirSystemPropertyKey = "vitro.build.dir"; final static String buildDirSystemPropertyKey = "vitro.build.dir";
/** Solr index to run test queries on. */ /** Solr index to run test queries on. */
static SolrServer solr = null; static SolrServer solr = null;
/** Container for solr */
static CoreContainer coreContainer = null;
/** Folder to store the temporary Solr index. */ /** Folder to store the temporary Solr index. */
public static TemporaryFolder solrIndexFolder = null; public static TemporaryFolder solrIndexFolder = null;
@ -70,11 +78,15 @@ public class SolrQueryTest {
* source of individuals to to build documents. * source of individuals to to build documents.
* This is relative to the build directory. * This is relative to the build directory.
*/ */
static final String testRDFDir = final static String testRDFDir =
"webapp/test/testontologies/SolrQueryTestData.n3"; "/webapp/test/testontologies/SolrQueryTestRDF";
@Before
public void setup() throws Exception{
//solr makes a lot of output
suppressSysout();
suppressSyserr();
@BeforeClass
public static void setup() throws Exception{
File buildDir = findBuildDir(); File buildDir = findBuildDir();
solrIndexFolder = new TemporaryFolder(); solrIndexFolder = new TemporaryFolder();
@ -87,6 +99,17 @@ public class SolrQueryTest {
indexRdf( loadTestRDF( buildDir ) ); indexRdf( loadTestRDF( buildDir ) );
} }
@After
public void takedown() throws Exception{
if( coreContainer != null )
coreContainer.shutdown();
restoreOutputStreams();
if( solrIndexFolder != null )
solrIndexFolder.delete();
}
/** /**
* This will return the directory to use as the Solr * This will return the directory to use as the Solr
* home template directory. * home template directory.
@ -94,7 +117,7 @@ public class SolrQueryTest {
* Throws an exception if the directory is not found. * Throws an exception if the directory is not found.
* @param buildDir - must not be null, must be the base of the build. * @param buildDir - must not be null, must be the base of the build.
*/ */
private static File getSolrTemplateDir(File buildDir) throws Exception { private File getSolrTemplateDir(File buildDir) throws Exception {
if(buildDir == null || !buildDir.exists() ) if(buildDir == null || !buildDir.exists() )
throw new Exception("buildDir must not be null"); throw new Exception("buildDir must not be null");
@ -108,22 +131,22 @@ public class SolrQueryTest {
return solrTemplateDir; return solrTemplateDir;
} }
protected static SolrServer setupSolr(File solrBase) protected SolrServer setupSolr(File solrBase)
throws ParserConfigurationException, IOException, SAXException{ throws ParserConfigurationException, IOException, SAXException{
System.setProperty("solr.solr.home", solrBase.getAbsolutePath()); System.setProperty("solr.solr.home", solrBase.getAbsolutePath());
CoreContainer.Initializer initializer = new CoreContainer.Initializer(); CoreContainer.Initializer initializer = new CoreContainer.Initializer();
CoreContainer coreContainer = initializer.initialize(); coreContainer = initializer.initialize();
return new EmbeddedSolrServer(coreContainer, ""); return new EmbeddedSolrServer(coreContainer, "");
} }
private static OntModel loadTestRDF(File buildDir) throws Exception { private OntModel loadTestRDF(File buildDir) throws Exception {
String dirname = buildDir.getAbsolutePath() + "/webapp/test/testontologies/solrTestRDF"; String dirname = buildDir.getAbsolutePath() + testRDFDir;
File testRDFDir = new File( dirname ); File rdfDir = new File( dirname );
assertNotNull("could not find dir " + dirname , testRDFDir); assertNotNull("could not find dir " + dirname , rdfDir);
assertTrue(dirname + " must be a directory." ,testRDFDir.isDirectory()); assertTrue(dirname + " must be a directory." ,rdfDir.isDirectory());
//load all files in test dir. //load all files in test dir.
File[] files = testRDFDir.listFiles(); File[] files = rdfDir.listFiles();
assertNotNull("no test RDF files found",files); assertNotNull("no test RDF files found",files);
assertTrue("no test RDF files found", files.length > 0 ); assertTrue("no test RDF files found", files.length > 0 );
@ -132,9 +155,9 @@ public class SolrQueryTest {
InputStream in = FileManager.get().open( file.getAbsolutePath() ); InputStream in = FileManager.get().open( file.getAbsolutePath() );
assertNotNull("Could not load file " + file.getAbsolutePath(), in ); assertNotNull("Could not load file " + file.getAbsolutePath(), in );
try{ try{
model.read(in,null,"N-TRIPLE"); model.read(in,null);
}catch(Throwable th){ }catch(Throwable th){
throw new Exception( "Could not load N-TRIPLE file " throw new Exception( "Could not load RDF/XML file "
+ file.getAbsolutePath() , th); + file.getAbsolutePath() , th);
} }
} }
@ -147,7 +170,7 @@ public class SolrQueryTest {
* or it will throw an exception if none can be found. * or it will throw an exception if none can be found.
* @throws Exception * @throws Exception
*/ */
private static File findBuildDir() throws Exception { private File findBuildDir() throws Exception {
//First try to find the base directory //First try to find the base directory
//of the build in the system properties. //of the build in the system properties.
@ -163,7 +186,7 @@ public class SolrQueryTest {
//If there is no system property try to //If there is no system property try to
//guess the location based on the working directory //guess the location based on the working directory
File f = null; File f = null;
String[] fallBackBases = {"./","../","../../"}; String[] fallBackBases = {"","../","../../"};
List<String> attempted = new ArrayList<String>(); List<String> attempted = new ArrayList<String>();
for( String base: fallBackBases){ for( String base: fallBackBases){
String attemptedDir =base + "solr/homeDirectoryTemplate"; String attemptedDir =base + "solr/homeDirectoryTemplate";
@ -191,10 +214,13 @@ public class SolrQueryTest {
/** Query the RDF, build Solr Documents from results, load them to Solr. */ /** Query the RDF, build Solr Documents from results, load them to Solr. */
private static void indexRdf(OntModel model) throws Exception { private void indexRdf(OntModel model) throws Exception {
RDFServiceModel rdfService = new RDFServiceModel(model); RDFServiceModel rdfService = new RDFServiceModel(model);
IndividualToSolrDocument r2d = SolrSetup.setupTransltion(model, IndividualToSolrDocument r2d =
SolrSetup.setupTransltion(
model,
model,
new RDFServiceFactorySingle(rdfService), new RDFServiceFactorySingle(rdfService),
null, null); null, null);
@ -210,16 +236,13 @@ public class SolrQueryTest {
try { try {
solr.add( doc ); solr.add( doc );
} catch (Exception e) { } catch (Exception e) {
System.err.println("Failed adding doc to solr for uri:" + uri); throw new Exception("Failed adding doc to solr for uri:" + uri, e);
// System.err.println( IndexingUtilities.toString( doc ) + "\n\n" );
// System.err.println( IndexingUtilities.prettyFormat( ClientUtils.toXML( doc ) ) );
throw e;
} }
} }
solr.commit(); solr.commit();
} }
private static List<String> getURISToIndex(Model model) { private List<String> getURISToIndex(Model model) {
//just return all the URIs in the subject position //just return all the URIs in the subject position
List<String> uris = new LinkedList<String>(); List<String> uris = new LinkedList<String>();
ResIterator it = model.listSubjects(); ResIterator it = model.listSubjects();
@ -239,58 +262,41 @@ public class SolrQueryTest {
} }
@Test @Test
public void testBronte() throws SolrServerException{ public void testCorsonSearch() throws SolrServerException{
/* make sure that we have the document in the index before we do anything */ /* make sure that we have the document in the index before we do anything */
SolrQuery query = SolrQuery query = new SolrQuery().setQuery("corson");
new SolrQuery().setQuery("id:4696").setParam("qt", "standard");
testQueryGetsDocs("Expect to find Bronte document by doc:id 4696", testQueryGetsDocs("Expect to find a doc when searching for 'corson'",
query,new String[]{ "4696" } ) ; query,new String[]{ "http://vivo.cornell.edu/individual/individual22972" } ) ;
query = new SolrQuery().setQuery("bronte");
testQueryGetsDocs("Expect to find doc:id 4696 when searching for 'bronte'",
query,new String[]{ "4696" } ) ;
query = new SolrQuery().setQuery( "Selected Bronte\u0308 poems") ;
testQueryGetsDocs("Expect to find doc:id 4696 when searching for 'Selected Bronte\u0308 poems'",
query,new String[]{ "4696" } ) ;
query = new SolrQuery().setQuery( "\"Selected Bronte\u0308 poems\"") ;
testQueryGetsDocs("Expect to find doc:id 4696 when searching for 'Selected Bronte\u0308 poems' all in quotes",
query,new String[]{ "4696" } ) ;
} }
@AfterClass
public static void down() throws Exception{
if( solrIndexFolder != null )
solrIndexFolder.delete();
}
/** /**
* Test that a document with the given IDs are in the results for the query. * Test that a document with the given URIs are in the results for the query.
* @throws SolrServerException */ * @throws SolrServerException */
void testQueryGetsDocs(String errmsg, SolrQuery query, String[] docIds) throws SolrServerException{ void testQueryGetsDocs(String errmsg, SolrQuery query, String[] expectedUris) throws SolrServerException{
assertNotNull(errmsg + " but query was null", query); assertNotNull(errmsg + " but query was null", query);
assertNotNull(errmsg + " but docIds was null", docIds ); assertNotNull(errmsg + " but expected URIs was null", expectedUris );
QueryResponse resp = solr.query(query); QueryResponse resp = solr.query(query);
if( resp == null ) if( resp == null )
fail( errmsg + " but Could not get a solr response"); fail( errmsg + " but Could not get a solr response");
Set<String> expecteIds = new HashSet<String>(Arrays.asList( docIds )); Set<String> uris = new HashSet<String>(Arrays.asList( expectedUris ));
for( SolrDocument doc : resp.getResults()){ for( SolrDocument doc : resp.getResults()){
assertNotNull(errmsg + ": solr doc was null", doc); assertNotNull(errmsg + ": solr doc was null", doc);
String id = (String) doc.getFirstValue("id"); String uri = (String) doc.getFirstValue( VitroSearchTermNames.URI );
assertNotNull(errmsg+": no id field in solr doc" , id); assertNotNull(errmsg+": no URI field in solr doc" , uri);
expecteIds.remove( id ); uris.remove( uri );
} }
if( expecteIds.size() > 0){ if( uris.size() > 0){
String errorMsg = String errorMsg =
"\nThe query '"+ query + "' was expected " + "\nThe query '"+ query + "' was expected " +
"to return the following ids but did not:"; "to return the following URIs but did not:";
for( String id : expecteIds){ for( String uri : uris){
errorMsg= errorMsg+"\n" + id; errorMsg= errorMsg+"\n" + uri;
} }
fail( errmsg + errorMsg); fail( errmsg + errorMsg);

View file

@ -13,8 +13,6 @@ import org.junit.Assert;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import com.hp.hpl.jena.ontology.OntModel;
import com.hp.hpl.jena.ontology.OntModelSpec;
import com.hp.hpl.jena.rdf.model.Model; import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.ModelFactory; import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.rdf.model.impl.RDFDefaultErrorHandler; import com.hp.hpl.jena.rdf.model.impl.RDFDefaultErrorHandler;
@ -22,21 +20,17 @@ import com.hp.hpl.jena.rdf.model.impl.RDFDefaultErrorHandler;
import edu.cornell.mannlib.vitro.testing.AbstractTestClass; import edu.cornell.mannlib.vitro.testing.AbstractTestClass;
import edu.cornell.mannlib.vitro.webapp.beans.Individual; import edu.cornell.mannlib.vitro.webapp.beans.Individual;
import edu.cornell.mannlib.vitro.webapp.beans.IndividualImpl; import edu.cornell.mannlib.vitro.webapp.beans.IndividualImpl;
import edu.cornell.mannlib.vitro.webapp.rdfservice.RDFServiceFactory;
import edu.cornell.mannlib.vitro.webapp.rdfservice.impl.RDFServiceFactorySingle;
import edu.cornell.mannlib.vitro.webapp.rdfservice.impl.jena.model.RDFServiceModel;
import edu.cornell.mannlib.vitro.webapp.search.VitroSearchTermNames; import edu.cornell.mannlib.vitro.webapp.search.VitroSearchTermNames;
import edu.cornell.mannlib.vitro.webapp.search.solr.documentBuilding.SkipIndividualException; import edu.cornell.mannlib.vitro.webapp.search.solr.documentBuilding.SkipIndividualException;
import edu.cornell.mannlib.vitro.webapp.search.solr.documentBuilding.ThumbnailImageURL; import edu.cornell.mannlib.vitro.webapp.search.solr.documentBuilding.ThumbnailImageURL;
/**
* @author bdc34
*
*/
public class ThumbnailImageURLTest extends AbstractTestClass{ public class ThumbnailImageURLTest extends AbstractTestClass{
OntModel testModel; RDFServiceFactory testRDF;
String personsURI = "http://vivo.cornell.edu/individual/individual8803"; String personsURI = "http://vivo.cornell.edu/individual/individual8803";
static VitroSearchTermNames term = new VitroSearchTermNames();
String fieldForThumbnailURL = term.THUMBNAIL_URL;
/** /**
* @throws java.lang.Exception * @throws java.lang.Exception
*/ */
@ -47,25 +41,32 @@ public class ThumbnailImageURLTest extends AbstractTestClass{
Model model = ModelFactory.createDefaultModel(); Model model = ModelFactory.createDefaultModel();
InputStream in = ThumbnailImageURLTest.class.getResourceAsStream("testPerson.n3"); InputStream in = ThumbnailImageURLTest.class.getResourceAsStream("testPerson.n3");
model.read(in,"","N3"); model.read(in,"","N3");
testModel = ModelFactory.createOntologyModel(OntModelSpec.OWL_DL_MEM,model); testRDF = new RDFServiceFactorySingle( new RDFServiceModel( model ) );
} }
/** /**
* Test to see if ThumbnailImageURL gets the date it is suppose to gete
* from a set of RDF.
*
* Test method for {@link edu.cornell.mannlib.vitro.webapp.search.solr.documentBuilding.ThumbnailImageURL#modifyDocument(edu.cornell.mannlib.vitro.webapp.beans.Individual, org.apache.solr.common.SolrInputDocument, java.lang.StringBuffer)}. * Test method for {@link edu.cornell.mannlib.vitro.webapp.search.solr.documentBuilding.ThumbnailImageURL#modifyDocument(edu.cornell.mannlib.vitro.webapp.beans.Individual, org.apache.solr.common.SolrInputDocument, java.lang.StringBuffer)}.
*/ */
@Test @Test
public void testModifyDocument() { public void testThumbnailFieldCreatedInSolrDoc() {
SolrInputDocument doc = new SolrInputDocument(); SolrInputDocument doc = new SolrInputDocument();
ThumbnailImageURL testMe = new ThumbnailImageURL( testModel ); ThumbnailImageURL testMe = new ThumbnailImageURL( testRDF );
Individual ind = new IndividualImpl(); Individual ind = new IndividualImpl();
ind.setURI(personsURI); ind.setURI(personsURI);
//make sure that the person is in the RDF
try { try {
testMe.modifyDocument(ind, doc, null); testMe.modifyDocument(ind, doc, null);
} catch (SkipIndividualException e) { } catch (SkipIndividualException e) {
Assert.fail("person was skipped: " + e.getMessage()); Assert.fail("Test individual was skipped by classes that build the search document: " + e.getMessage());
} }
SolrInputField thumbnailField = doc.getField(fieldForThumbnailURL); //make sure that a Solr document field got created for the thumbnail image
SolrInputField thumbnailField = doc.getField( VitroSearchTermNames.THUMBNAIL_URL );
Assert.assertNotNull(thumbnailField); Assert.assertNotNull(thumbnailField);
Assert.assertNotNull( thumbnailField.getValues() ); Assert.assertNotNull( thumbnailField.getValues() );

View file

@ -0,0 +1,504 @@
<rdfsyn:RDF
xmlns:hr="http://vivo.cornell.edu/ns/hr/0.9/hr.owl#"
xmlns:c4o="http://purl.org/spar/c4o/"
xmlns:vitro-public="http://vitro.mannlib.cornell.edu/ns/vitro/public#"
xmlns:ero="http://purl.obolibrary.org/obo/"
xmlns:pvs="http://vivoweb.org/ontology/provenance-support#"
xmlns:vivo="http://vivoweb.org/ontology/core#"
xmlns:j.0="http://vivoweb.org/ontology/newhr#"
xmlns:stars="http://vitro.mannlib.cornell.edu/ns/cornell/stars/classes#"
xmlns:aka="http://vivoweb.org/ontology/aka#"
xmlns:far="http://vitro.mannlib.cornell.edu/ns/reporting#"
xmlns:rdfsyn="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:bibo="http://purl.org/ontology/bibo/"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:local="http://vivo.cornell.edu/ontology/local#"
xmlns:dcterms="http://purl.org/dc/terms/"
xmlns:scires="http://vivoweb.org/ontology/scientific-research#"
xmlns:acti="http://vivoweb.org/ontology/activity-insight#"
xmlns:aktp="http://www.aktors.org/ontology/portal#"
xmlns:geo="http://aims.fao.org/aos/geopolitical.owl#"
xmlns:skos="http://www.w3.org/2004/02/skos/core#"
xmlns:event="http://purl.org/NET/c4dm/event.owl#"
xmlns:socsci="http://vivo.library.cornell.edu/ns/vivo/socsci/0.1#"
xmlns:dcelem="http://purl.org/dc/elements/1.1/"
xmlns:ospcu="http://vivoweb.org/ontology/cu-vivo-osp#"
xmlns:sce="http://vivoweb.org/ontology/SchoolOfContinuingEducation#"
xmlns:vitro="http://vitro.mannlib.cornell.edu/ns/vitro/0.7#"
xmlns:vivoc="http://vivo.library.cornell.edu/ns/0.1#"
xmlns:pubmed="http://vitro.mannlib.cornell.edu/ns/pubmed#"
xmlns:cce="http://vivoweb.org/ontology/cornell-cooperative-extension#"
xmlns:mann="http://vivo.cornell.edu/ns/mannadditions/0.1#"
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns:fabio="http://purl.org/spar/fabio/"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" >
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n56282">
<rdfs:label rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#string">AgriVIVO: an Ontology-based Store of URIs and Relations between Entities in Agricultural Research</rdfs:label>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n122000">
<rdfsyn:type rdfsyn:resource="http://www.w3.org/2002/07/owl#Thing"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#Relationship"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#Authorship"/>
<vivo:linkedAuthor rdfsyn:resource="http://vivo.cornell.edu/individual/individual22972"/>
<vivo:linkedInformationResource rdfsyn:resource="http://vivo.cornell.edu/individual/n60089"/>
<vivo:authorRank rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#int">7</vivo:authorRank>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://link.informatics.stonybrook.edu/umls/CUI/C1518584">
<rdfs:label rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#string">ontology</rdfs:label>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/CornellsVIVOconceptwillexpandtoconnectresearchersnationwide">
<rdfs:label xml:lang="en-US">Cornell's VIVO concept will expand to connect researchers nationwide</rdfs:label>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n36325">
<rdfsyn:type rdfsyn:resource="http://www.w3.org/2002/07/owl#Thing"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#DateTimeValue"/>
<vivo:dateTimePrecision rdfsyn:resource="http://vivoweb.org/ontology/core#yearPrecision"/>
<vivo:dateTime rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2011-01-01T05:00:00Z</vivo:dateTime>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n25439">
<rdfsyn:type rdfsyn:resource="http://www.w3.org/2002/07/owl#Thing"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#Relationship"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#Authorship"/>
<vivo:linkedAuthor rdfsyn:resource="http://vivo.cornell.edu/individual/individual22972"/>
<vivo:linkedInformationResource rdfsyn:resource="http://vivo.cornell.edu/individual/n15280"/>
<vivo:authorRank rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#int">4</vivo:authorRank>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n59276">
<rdfs:label rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#string">The Future of VIVO: Growing the Community</rdfs:label>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n52538">
<rdfsyn:type rdfsyn:resource="http://www.w3.org/2002/07/owl#Thing"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#DateTimeValue"/>
<vivo:dateTimePrecision rdfsyn:resource="http://vivoweb.org/ontology/core#yearPrecision"/>
<vivo:dateTime rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2011-01-01T00:00:00</vivo:dateTime>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n154727">
<rdfs:label rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#string">Polygon Overlay to Support Point Sample Mapping: the National Resources Inventory</rdfs:label>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n237958">
<rdfs:label rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#string">DataStaR: Using the Semantic Web Approach for Data Curation</rdfs:label>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivoweb.org/ontology/core#yearMonthDayPrecision">
<rdfs:label xml:lang="en-US">yearMonthDayPrecision</rdfs:label>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n4805850">
<rdfsyn:type rdfsyn:resource="http://www.w3.org/2002/07/owl#Thing"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#DateTimeValue"/>
<vivo:dateTimePrecision rdfsyn:resource="http://vivoweb.org/ontology/core#yearPrecision"/>
<vivo:dateTime rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2011-01-01T00:00:00</vivo:dateTime>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/individual1">
<rdfs:label rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#string">Albert R. Mann Library</rdfs:label>
<rdfs:label>Albert R. Mann Library</rdfs:label>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n24980">
<rdfs:label rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#string">Digital Research Data Curation: Overview of Issues, Current Activities, and Opportunities for the Cornell University Library</rdfs:label>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n518934">
<rdfs:label rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#string">Report of the Workshop on Rendering, Perception, and Measurement</rdfs:label>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n51088">
<rdfsyn:type rdfsyn:resource="http://www.w3.org/2002/07/owl#Thing"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#Relationship"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#Authorship"/>
<vivo:linkedAuthor rdfsyn:resource="http://vivo.cornell.edu/individual/individual22972"/>
<vivo:linkedInformationResource rdfsyn:resource="http://vivo.cornell.edu/individual/n59526"/>
<vivo:authorRank rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#int">3</vivo:authorRank>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n39639">
<rdfs:label rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#string">Searching Interoperability Between Linguistic Coding and Ontologies for Language Description</rdfs:label>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n60828">
<rdfsyn:type rdfsyn:resource="http://www.w3.org/2002/07/owl#Thing"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#Relationship"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#Authorship"/>
<vivo:linkedAuthor rdfsyn:resource="http://vivo.cornell.edu/individual/individual22972"/>
<vivo:linkedInformationResource rdfsyn:resource="http://vivo.cornell.edu/individual/n24126"/>
<vivo:authorRank rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#int">1</vivo:authorRank>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n59311">
<rdfsyn:type rdfsyn:resource="http://www.w3.org/2002/07/owl#Thing"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#Role"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#PresenterRole"/>
<vivo:roleRealizedIn rdfsyn:resource="http://vivo.cornell.edu/individual/n32881"/>
<vivo:dateTimeInterval rdfsyn:resource="http://vivo.cornell.edu/individual/n7857854"/>
<vivo:presenterRoleOf rdfsyn:resource="http://vivo.cornell.edu/individual/individual22972"/>
<rdfs:label rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#string">co-Presenter</rdfs:label>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n117568">
<rdfsyn:type rdfsyn:resource="http://www.w3.org/2002/07/owl#Thing"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#Relationship"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#Authorship"/>
<vivo:linkedAuthor rdfsyn:resource="http://vivo.cornell.edu/individual/individual22972"/>
<vivo:linkedInformationResource rdfsyn:resource="http://vivo.cornell.edu/individual/n39639"/>
<vivo:authorRank rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#int">4</vivo:authorRank>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n264175">
<rdfsyn:type rdfsyn:resource="http://www.w3.org/2002/07/owl#Thing"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#DateTimeValue"/>
<vivo:dateTimePrecision rdfsyn:resource="http://vivoweb.org/ontology/core#yearPrecision"/>
<vivo:dateTime rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2011-01-01T00:00:00</vivo:dateTime>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://link.informatics.stonybrook.edu/umls/CUI/C0036612">
<rdfs:label rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#string">semantic</rdfs:label>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n208204">
<rdfs:label rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#string">AgriVIVO for enabling global networking for agriculture. Concept Note</rdfs:label>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n36342">
<rdfsyn:type rdfsyn:resource="http://www.w3.org/2002/07/owl#Thing"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#Relationship"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#Authorship"/>
<vivo:linkedAuthor rdfsyn:resource="http://vivo.cornell.edu/individual/individual22972"/>
<vivo:linkedInformationResource rdfsyn:resource="http://vivo.cornell.edu/individual/n237958"/>
<vivo:authorRank rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#int">3</vivo:authorRank>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivoweb.org/ontology/core#yearPrecision">
<rdfs:label xml:lang="en-US">yearPrecision</rdfs:label>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n1560309">
<rdfsyn:type rdfsyn:resource="http://www.w3.org/2002/07/owl#Thing"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#DateTimeInterval"/>
<vivo:start rdfsyn:resource="http://vivo.cornell.edu/individual/n6654066"/>
<vivo:end rdfsyn:resource="http://vivo.cornell.edu/individual/n930701"/>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n9051023">
<rdfsyn:type rdfsyn:resource="http://www.w3.org/2002/07/owl#Thing"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#DateTimeValue"/>
<vivo:dateTimePrecision rdfsyn:resource="http://vivoweb.org/ontology/core#yearPrecision"/>
<vivo:dateTime rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2003-01-01T00:00:00</vivo:dateTime>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n24126">
<rdfs:label rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#string">VIVO: Connecting People, Creating a Virtual Life Sciences Community</rdfs:label>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n137627">
<rdfsyn:type rdfsyn:resource="http://www.w3.org/2002/07/owl#Thing"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#DateTimeInterval"/>
<vivo:start rdfsyn:resource="http://vivo.cornell.edu/individual/n52538"/>
<vivo:end rdfsyn:resource="http://vivo.cornell.edu/individual/n264175"/>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n213074">
<rdfsyn:type rdfsyn:resource="http://www.w3.org/2002/07/owl#Thing"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#AwardReceipt"/>
<vivo:dateTimeValue rdfsyn:resource="http://vivo.cornell.edu/individual/n247617"/>
<vivo:receiptOf rdfsyn:resource="http://vivo.cornell.edu/individual/n92124"/>
<vivo:awardOrHonorFor rdfsyn:resource="http://vivo.cornell.edu/individual/individual22972"/>
<rdfs:label rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#string">SUNY Chancellor's Award for Excellence in Professional Service (Corson-Rikert, Jonathan - 2012)</rdfs:label>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n247617">
<rdfsyn:type rdfsyn:resource="http://www.w3.org/2002/07/owl#Thing"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#DateTimeValue"/>
<vivo:dateTimePrecision rdfsyn:resource="http://vivoweb.org/ontology/core#yearPrecision"/>
<vivo:dateTime rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2012-01-01T00:00:00</vivo:dateTime>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n54810">
<rdfs:label rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#string">Extending VIVO</rdfs:label>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n220050">
<rdfs:label rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#string">Act: An Easy-to-use and Dynamically Extensible 3D Graphics Library</rdfs:label>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n153441">
<rdfsyn:type rdfsyn:resource="http://www.w3.org/2002/07/owl#Thing"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#Relationship"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#Authorship"/>
<vivo:linkedAuthor rdfsyn:resource="http://vivo.cornell.edu/individual/individual22972"/>
<vivo:linkedInformationResource rdfsyn:resource="http://vivo.cornell.edu/individual/n168471"/>
<vivo:authorRank rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#int">1</vivo:authorRank>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n14786">
<rdfsyn:type rdfsyn:resource="http://www.w3.org/2002/07/owl#Thing"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#Relationship"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#Authorship"/>
<vivo:linkedAuthor rdfsyn:resource="http://vivo.cornell.edu/individual/individual22972"/>
<vivo:linkedInformationResource rdfsyn:resource="http://vivo.cornell.edu/individual/n518934"/>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n32881">
<rdfs:label rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#string">VIVO Researcher Networking Update</rdfs:label>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://www.eionet.europa.eu/gemet/concept/3645">
<rdfs:label rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#string">geographic information system</rdfs:label>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n118473">
<rdfsyn:type rdfsyn:resource="http://www.w3.org/2002/07/owl#Thing"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#Role"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#MemberRole"/>
<vivo:memberRoleOf rdfsyn:resource="http://vivo.cornell.edu/individual/individual22972"/>
<vivo:dateTimeInterval rdfsyn:resource="http://vivo.cornell.edu/individual/n32759"/>
<vivo:roleContributesTo rdfsyn:resource="http://vivo.cornell.edu/individual/n20618"/>
<rdfs:label rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#string">member</rdfs:label>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n59132">
<rdfsyn:type rdfsyn:resource="http://www.w3.org/2002/07/owl#Thing"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#AwardReceipt"/>
<vivo:dateTimeValue rdfsyn:resource="http://vivo.cornell.edu/individual/n9051023"/>
<vivo:awardOrHonorFor rdfsyn:resource="http://vivo.cornell.edu/individual/individual22972"/>
<vivo:awardConferredBy rdfsyn:resource="http://vivo.cornell.edu/individual/individual1"/>
<rdfs:label>Ans van Tienhoven Award</rdfs:label>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n213009">
<rdfs:label rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#string">VIVO: A Semantic Network of Researchers and Research Information as Linked Open Data</rdfs:label>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n7857854">
<vivo:dateTimeIntervalFor rdfsyn:resource="http://vivo.cornell.edu/individual/n59311"/>
<rdfsyn:type rdfsyn:resource="http://www.w3.org/2002/07/owl#Thing"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#DateTimeInterval"/>
<vivo:start rdfsyn:resource="http://vivo.cornell.edu/individual/n4805850"/>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n46303">
<rdfsyn:type rdfsyn:resource="http://www.w3.org/2002/07/owl#Thing"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#Relationship"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#Authorship"/>
<vivo:linkedAuthor rdfsyn:resource="http://vivo.cornell.edu/individual/individual22972"/>
<vivo:linkedInformationResource rdfsyn:resource="http://vivo.cornell.edu/individual/n56282"/>
<vivo:authorRank rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#int">3</vivo:authorRank>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n20618">
<rdfs:label rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#string">CUL Discovery and Access Committee</rdfs:label>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n318104">
<rdfsyn:type rdfsyn:resource="http://www.w3.org/2002/07/owl#Thing"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#Relationship"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#Authorship"/>
<vivo:linkedAuthor rdfsyn:resource="http://vivo.cornell.edu/individual/individual22972"/>
<vivo:linkedInformationResource rdfsyn:resource="http://vivo.cornell.edu/individual/n213009"/>
<vivo:authorRank rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#int">1</vivo:authorRank>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n930701">
<rdfsyn:type rdfsyn:resource="http://www.w3.org/2002/07/owl#Thing"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#DateTimeValue"/>
<vivo:dateTimePrecision rdfsyn:resource="http://vivoweb.org/ontology/core#yearMonthDayPrecision"/>
<vivo:dateTime rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2010-05-18T00:00:00</vivo:dateTime>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n467508">
<rdfs:label rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#string">VIVO Development Roadmap: Enhancing an Ontology-Based University Research Portal with OWL and Rules</rdfs:label>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n226968">
<rdfs:label rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#string">N.Y.'s climate change clearinghouse to offer info to all</rdfs:label>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://link.informatics.stonybrook.edu/umls/CUI/C0599807">
<rdfs:label rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#string">informatics</rdfs:label>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n188191">
<rdfs:label rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#string">DataStaR: Using the Semantic Web approach for Data Curation</rdfs:label>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://link.informatics.stonybrook.edu/umls/CUI/C0872261">
<rdfs:label rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#string">repository</rdfs:label>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/individual22972">
<vivo:hasResearchArea rdfsyn:resource="http://link.informatics.stonybrook.edu/umls/CUI/C0599807"/>
<vivo:awardOrHonor rdfsyn:resource="http://vivo.cornell.edu/individual/n59132"/>
<hr:primaryJobcodeLdesc>Info Tech Asst Dir II</hr:primaryJobcodeLdesc>
<vivo:preferredTitle>Head of Information Technology Services, Mann Library, Cornell University</vivo:preferredTitle>
<vivo:authorInAuthorship rdfsyn:resource="http://vivo.cornell.edu/individual/n415309"/>
<vivo:editorOf rdfsyn:resource="http://vivo.cornell.edu/individual/n60089"/>
<hr:netId>jc55</hr:netId>
<vivo:authorInAuthorship rdfsyn:resource="http://vivo.cornell.edu/individual/n318104"/>
<vivo:hasResearchArea rdfsyn:resource="http://www.eionet.europa.eu/gemet/concept/3645"/>
<vivo:authorInAuthorship rdfsyn:resource="http://vivo.cornell.edu/individual/n31799"/>
<vivo:orcidId>0000-0002-2017-9998</vivo:orcidId>
<vivo:hasResearchArea rdfsyn:resource="http://link.informatics.stonybrook.edu/umls/CUI/C1518584"/>
<vivo:advisorIn rdfsyn:resource="http://vivo.cornell.edu/individual/n14460"/>
<vivo:webpage rdfsyn:resource="http://vivo.cornell.edu/individual/n120085"/>
<vivo:authorInAuthorship rdfsyn:resource="http://vivo.cornell.edu/individual/n77544"/>
<rdfsyn:type rdfsyn:resource="http://vivo.library.cornell.edu/ns/0.1#CornellAffiliatedPerson"/>
<vivo:authorInAuthorship rdfsyn:resource="http://vivo.cornell.edu/individual/n60828"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#NonAcademic"/>
<hr:emplId>1012111</hr:emplId>
<vitro:moniker>Head of Information Technology Services</vitro:moniker>
<vivo:hasResearchArea rdfsyn:resource="http://link.informatics.stonybrook.edu/umls/CUI/C0872261"/>
<vivoc:CornellemailnetId>jc55@cornell.edu</vivoc:CornellemailnetId>
<vivo:personInPosition rdfsyn:resource="http://vivo.cornell.edu/individual/empl1012111-position0"/>
<vivo:overview>&lt;p&gt;I am active in Semantic Web research for research information discovery and library projects.&lt;/p&gt;</vivo:overview>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/activity-insight#ActivityInsightReporter"/>
<vivoc:professionalBackground>&lt;ul&gt;&#xD;
&lt;li&gt;Programmer Analyst, Mann Library 2001-2006&lt;/li&gt;&#xD;
&lt;li&gt;Lab Manager, Program of Computer Graphics, Cornell University, 1992-2001&lt;/li&gt;&#xD;
&lt;li&gt;Programmer, Harvard Lab for Computer Graphics, Cambridge, Massachusetts 1983-1992&lt;/li&gt;&#xD;
&lt;li&gt;Cartographer, Dane County Regional Planning Commission, Madison, Wisconsin, 1978-1982&lt;/li&gt;&#xD;
&lt;/ul&gt;</vivoc:professionalBackground>
<vivo:webpage rdfsyn:resource="http://vivo.cornell.edu/individual/n172791"/>
<rdfsyn:type rdfsyn:resource="http://www.w3.org/2002/07/owl#Thing"/>
<vitro-public:mainImage rdfsyn:resource="http://vivo.cornell.edu/individual/n32203"/>
<vivo:featuredIn rdfsyn:resource="http://vivo.cornell.edu/individual/CornellsVIVOconceptwillexpandtoconnectresearchersnationwide"/>
<vivo:webpage rdfsyn:resource="http://vivo.cornell.edu/individual/n19652"/>
<vivo:authorInAuthorship rdfsyn:resource="http://vivo.cornell.edu/individual/n117568"/>
<vivo:authorInAuthorship rdfsyn:resource="http://vivo.cornell.edu/individual/n148480"/>
<vivo:authorInAuthorship rdfsyn:resource="http://vivo.cornell.edu/individual/n36342"/>
<vivo:authorInAuthorship rdfsyn:resource="http://vivo.cornell.edu/individual/n122000"/>
<vivo:authorInAuthorship rdfsyn:resource="http://vivo.cornell.edu/individual/n51088"/>
<vivo:scopusId>20336816000</vivo:scopusId>
<vivo:hasMemberRole rdfsyn:resource="http://vivo.cornell.edu/individual/n118473"/>
<foaf:lastName>Corson-Rikert</foaf:lastName>
<vivo:authorInAuthorship rdfsyn:resource="http://vivo.cornell.edu/individual/n37724"/>
<vivo:featuredIn rdfsyn:resource="http://vivo.cornell.edu/individual/n226968"/>
<rdfsyn:type rdfsyn:resource="http://vivo.library.cornell.edu/ns/0.1#CornellEmployee"/>
<vivo:authorInAuthorship rdfsyn:resource="http://vivo.cornell.edu/individual/n25298"/>
<foaf:firstName>Jonathan</foaf:firstName>
<vivo:authorInAuthorship rdfsyn:resource="http://vivo.cornell.edu/individual/n153441"/>
<vivo:middleName></vivo:middleName>
<rdfsyn:type rdfsyn:resource="http://xmlns.com/foaf/0.1/Person"/>
<vivo:awardOrHonor rdfsyn:resource="http://vivo.cornell.edu/individual/n213074"/>
<rdfs:label>Corson-Rikert, Jonathan</rdfs:label>
<vivo:authorInAuthorship rdfsyn:resource="http://vivo.cornell.edu/individual/n66205"/>
<rdfsyn:type rdfsyn:resource="http://vivo.cornell.edu/ns/mannadditions/0.1#CornellNonAcademicStaff"/>
<vivo:webpage rdfsyn:resource="http://vivo.cornell.edu/individual/n200243"/>
<hr:primaryWorkingTitle>Info Tech Assistant Dir II</hr:primaryWorkingTitle>
<vivo:researchOverview>My research is focused on semantic web development for networked scholarship.</vivo:researchOverview>
<vivo:authorInAuthorship rdfsyn:resource="http://vivo.cornell.edu/individual/n14786"/>
<rdfsyn:type rdfsyn:resource="http://xmlns.com/foaf/0.1/Agent"/>
<vivo:hasPresenterRole rdfsyn:resource="http://vivo.cornell.edu/individual/n110772"/>
<acti:aiUser>509729</acti:aiUser>
<vivo:authorInAuthorship rdfsyn:resource="http://vivo.cornell.edu/individual/n113565"/>
<vivo:hasPresenterRole rdfsyn:resource="http://vivo.cornell.edu/individual/n59311"/>
<vivo:authorInAuthorship rdfsyn:resource="http://vivo.cornell.edu/individual/n46303"/>
<vivo:researcherId>B-3301-2009</vivo:researcherId>
<hr:PrefName>Corson-Rikert, Jon</hr:PrefName>
<rdfsyn:type rdfsyn:resource="http://vivo.cornell.edu/ontology/local#InternalThing"/>
<vivo:authorInAuthorship rdfsyn:resource="http://vivo.cornell.edu/individual/n63093"/>
<vivo:hasResearchArea rdfsyn:resource="http://link.informatics.stonybrook.edu/umls/CUI/C0036612"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/activity-insight#ActivityInsightPerson"/>
<vivo:authorInAuthorship rdfsyn:resource="http://vivo.cornell.edu/individual/n25439"/>
<vivo:webpage rdfsyn:resource="http://www.mannlib.cornell.edu"/>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n110772">
<rdfsyn:type rdfsyn:resource="http://www.w3.org/2002/07/owl#Thing"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#Role"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#PresenterRole"/>
<vivo:roleRealizedIn rdfsyn:resource="http://vivo.cornell.edu/individual/n34834"/>
<vivo:dateTimeInterval rdfsyn:resource="http://vivo.cornell.edu/individual/n137627"/>
<vivo:presenterRoleOf rdfsyn:resource="http://vivo.cornell.edu/individual/individual22972"/>
<rdfs:label rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#string">Presenter</rdfs:label>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n148480">
<rdfsyn:type rdfsyn:resource="http://www.w3.org/2002/07/owl#Thing"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#Relationship"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#Authorship"/>
<vivo:linkedAuthor rdfsyn:resource="http://vivo.cornell.edu/individual/individual22972"/>
<vivo:linkedInformationResource rdfsyn:resource="http://vivo.cornell.edu/individual/n54810"/>
<vivo:authorRank rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#int">6</vivo:authorRank>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n92124">
<rdfs:label rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#string">SUNY Chancellor's Award for Excellence in Professional Service</rdfs:label>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n60089">
<rdfs:label xml:lang="en-US">VIVO: A Semantic Approach to Scholarly Networking and Discovery</rdfs:label>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n31799">
<rdfsyn:type rdfsyn:resource="http://www.w3.org/2002/07/owl#Thing"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#Relationship"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#Authorship"/>
<vivo:linkedAuthor rdfsyn:resource="http://vivo.cornell.edu/individual/individual22972"/>
<vivo:linkedInformationResource rdfsyn:resource="http://vivo.cornell.edu/individual/n467508"/>
<vivo:authorRank rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#int">2</vivo:authorRank>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n112752">
<rdfsyn:type rdfsyn:resource="http://www.w3.org/2002/07/owl#Thing"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#DateTimeValue"/>
<vivo:dateTimePrecision rdfsyn:resource="http://vivoweb.org/ontology/core#yearPrecision"/>
<vivo:dateTime rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2011-01-01T05:00:00Z</vivo:dateTime>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n6654066">
<rdfsyn:type rdfsyn:resource="http://www.w3.org/2002/07/owl#Thing"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#DateTimeValue"/>
<vivo:dateTimePrecision rdfsyn:resource="http://vivoweb.org/ontology/core#yearMonthDayPrecision"/>
<vivo:dateTime rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2010-01-05T00:00:00</vivo:dateTime>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n37724">
<rdfsyn:type rdfsyn:resource="http://www.w3.org/2002/07/owl#Thing"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#Relationship"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#Authorship"/>
<vivo:linkedAuthor rdfsyn:resource="http://vivo.cornell.edu/individual/individual22972"/>
<vivo:linkedInformationResource rdfsyn:resource="http://vivo.cornell.edu/individual/n220050"/>
<vivo:authorRank rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#int">2</vivo:authorRank>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n59526">
<rdfs:label rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#string">VIVO: Case Study of an Ontology-Based Web Site</rdfs:label>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n15280">
<rdfs:label rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#string">VIVO: Enabling National Networking of Scientists</rdfs:label>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n66205">
<rdfsyn:type rdfsyn:resource="http://www.w3.org/2002/07/owl#Thing"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#Relationship"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#Authorship"/>
<vivo:linkedAuthor rdfsyn:resource="http://vivo.cornell.edu/individual/individual22972"/>
<vivo:linkedInformationResource rdfsyn:resource="http://vivo.cornell.edu/individual/n154727"/>
<vivo:authorRank rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#int">4</vivo:authorRank>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n14460">
<rdfsyn:type rdfsyn:resource="http://www.w3.org/2002/07/owl#Thing"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#Relationship"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#AdvisingRelationship"/>
<vivo:advisor rdfsyn:resource="http://vivo.cornell.edu/individual/individual22972"/>
<vivo:dateTimeInterval rdfsyn:resource="http://vivo.cornell.edu/individual/n1560309"/>
<rdfs:label>Web development intern</rdfs:label>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n34834">
<rdfs:label rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#string">DataStaR: An Ontology-Based Approach to Representing Metadata for Research Datasets</rdfs:label>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n168471">
<rdfs:label rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#string">The VIVO Ontology</rdfs:label>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/empl1012111-position0">
<vivo:positionInOrganization rdfsyn:resource="http://vivo.cornell.edu/individual/individual1"/>
<vivo:positionForPerson rdfsyn:resource="http://vivo.cornell.edu/individual/individual22972"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#NonAcademicPosition"/>
<hr:LDAPJobNumber>0</hr:LDAPJobNumber>
<j.0:headInd>P</j.0:headInd>
<j.0:company>STA</j.0:company>
<rdfsyn:type rdfsyn:resource="http://www.w3.org/2002/07/owl#Thing"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#Position"/>
<rdfs:label>Info Tech Assistant Dir II</rdfs:label>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#PrimaryPosition"/>
<vivo:hrJobTitle>Info Tech Asst Dir II</vivo:hrJobTitle>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n77544">
<rdfsyn:type rdfsyn:resource="http://www.w3.org/2002/07/owl#Thing"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#Relationship"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#Authorship"/>
<vivo:linkedAuthor rdfsyn:resource="http://vivo.cornell.edu/individual/individual22972"/>
<vivo:linkedInformationResource rdfsyn:resource="http://vivo.cornell.edu/individual/n208204"/>
<vivo:authorRank rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#int">1</vivo:authorRank>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n25354">
<rdfs:label rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#string">WYSIWYG Map Digitizing: Real Time Geometric Correction and Topological Encoding</rdfs:label>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n63093">
<rdfsyn:type rdfsyn:resource="http://www.w3.org/2002/07/owl#Thing"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#Relationship"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#Authorship"/>
<vivo:linkedAuthor rdfsyn:resource="http://vivo.cornell.edu/individual/individual22972"/>
<vivo:linkedInformationResource rdfsyn:resource="http://vivo.cornell.edu/individual/n59276"/>
<vivo:authorRank rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#int">3</vivo:authorRank>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n25298">
<rdfsyn:type rdfsyn:resource="http://www.w3.org/2002/07/owl#Thing"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#Relationship"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#Authorship"/>
<vivo:linkedAuthor rdfsyn:resource="http://vivo.cornell.edu/individual/individual22972"/>
<vivo:linkedInformationResource rdfsyn:resource="http://vivo.cornell.edu/individual/n24980"/>
<vivo:authorRank rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#int">8</vivo:authorRank>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n113565">
<rdfsyn:type rdfsyn:resource="http://www.w3.org/2002/07/owl#Thing"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#Relationship"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#Authorship"/>
<vivo:linkedAuthor rdfsyn:resource="http://vivo.cornell.edu/individual/individual22972"/>
<vivo:linkedInformationResource rdfsyn:resource="http://vivo.cornell.edu/individual/n188191"/>
<vivo:authorRank rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#int">4</vivo:authorRank>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n32759">
<rdfsyn:type rdfsyn:resource="http://www.w3.org/2002/07/owl#Thing"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#DateTimeInterval"/>
<vivo:start rdfsyn:resource="http://vivo.cornell.edu/individual/n112752"/>
<vivo:end rdfsyn:resource="http://vivo.cornell.edu/individual/n36325"/>
</rdfsyn:Description>
<rdfsyn:Description rdfsyn:about="http://vivo.cornell.edu/individual/n415309">
<rdfsyn:type rdfsyn:resource="http://www.w3.org/2002/07/owl#Thing"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#Relationship"/>
<rdfsyn:type rdfsyn:resource="http://vivoweb.org/ontology/core#Authorship"/>
<vivo:linkedAuthor rdfsyn:resource="http://vivo.cornell.edu/individual/individual22972"/>
<vivo:linkedInformationResource rdfsyn:resource="http://vivo.cornell.edu/individual/n25354"/>
<vivo:authorRank rdfsyn:datatype="http://www.w3.org/2001/XMLSchema#int">2</vivo:authorRank>
</rdfsyn:Description>
</rdfsyn:RDF>