VIVO can be used to mange the hierarchical structure, or organizational chart, of any organization. We describe how VIVO represents organizational structure, and how to create data that can be loaded into VIVO to represent the structure of an organization. The Sample Data has a sample university, with sample colleges and departments, illustrating the techniques described here.
VIVO uses the Basic Formal Ontology "hasPart" to indicate that organization A "hasPart" organization B. Sample University has a College of Science. We say College of Science "partOf" Sample University. VIVO will automatically assert Sample University "hasPart" College of Science.
The Basic Formal Ontology has been implemented as part of the Open Biomedical Ontologies (OBO). They have coded "hasPart" as "BFO_0000051" and "partOf" is "BFO_0000050" VIVO uses the OBO representation which can be found here: http://purl.obolibrary.org/obo/
To manage organizations in VIVO, you will need to create data representing your organizations and your organizational structure. This is easy to do using a spreadsheet. Simply create one row for each organization in your institution. For example, the table below shows two colleges as part of Sample University, and each college has one or more departments. The Department of Chemistry has a division – Organic Chemistry.
Your URI will contain your domain name. In this example we have structured the URI. VIVO URI always start with the domain, followed by "/individual/" followed by a URI of your choice. Here we have used a tag "org" to indicate URIs for organizations. This will make the URI easier to find. We then use the name of the organization, with each word capitalized. URI must be unique. If two organizations within your institution have the same name, you will need to make unique URI for each – you might add a "1" to the end of one of the URI, for example.
Add as many rows as it takes to represent the organizations within your institution. You can start with some, load them to VIVO (see below), and create more rows and reload, eventually building up a complete set of organizations.
OrgURI | Type | Name | PartOfURI |
---|---|---|---|
http://vivo.mydomain.edu/individual/orgSampleUniversity | university | Sample University | |
http://vivo.mydomain.edu/individual/orgCollegeOfScience | college | College of Science | http://vivo.mydomain.edu/individual/orgSampleUniversity |
http://vivo.mydomain.edu/individual/orgPhysics | department | Physics | http://vivo.mydomain.edu/individual/orgCollegeOfScience |
http://vivo.mydomain.edu/individual/orgChemistry | department | Chemistry | http://vivo.mydomain.edu/individual/orgCollegeOfScience |
http://vivo.mydomain.edu/individual/orgOrganicChemistry | division | Organic Chemistry | http://vivo.mydomain.edu/individual/orgChemistry |
http://vivo.mydomain.edu/individual/orgCollegeOfTheArts | college | College of the Arts | http://vivo.mydomain.edu/individual/orgSampleUniversity |
http://vivo.mydomain.edu/individual/orgTheaterAndDance | department | Theater and Dance | http://vivo.mydomain.edu/individual/orgCollegeOfTheArt |
To load data into VIVO, you will make triples out of your organizational data. You can use tools such as Karma, SAS, python, the VIVO Pump, VIVO Harvester, XSLT, your own scripts, or a text editor.
To load your organizational data into VIVO, you will transform your spreadsheet into triples. Each row of the spreadsheet will result in three triples: 1) a triple that asserts that the OrgURI is an organization of a particular type; 2) a triple that asserts that the organization has a particular name; and 3) a triple that asserts that the organization is part of another organization. Notice that the first row in the spreadsheet will generate two triples – Sample University is not part of another organization. The other six rows will generate 3 triples each. We will have 20 triples in all 2 + 3 * 6 = 20. The triples are shown below. Notes follow.
<http://vivo.mydomain.edu/individual/orgSampleUniversity> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://vivoweb.org/ontology/core#University> . <http://vivo.mydomain.edu/individual/orgSampleUniversity> <http://www.w3.org/2000/01/rdf-schema#label> "Sample University"@en-US . <http://vivo.mydomain.edu/individual/orgCollegeOfScience> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://vivoweb.org/ontology/core#College> . <http://vivo.mydomain.edu/individual/orgCollegeOfScience> <http://www.w3.org/2000/01/rdf-schema#label> "College of Science"@en-US . <http://vivo.mydomain.edu/individual/orgCollegeOfScience> <http://purl.obolibrary.org/obo/BFO_0000050> <http://vivo.mydomain.edu/individual/orgSampleUniversity> . <http://vivo.mydomain.edu/individual/orgPhysics> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://vivoweb.org/ontology/core#Department> . <http://vivo.mydomain.edu/individual/orgPhysics> <http://www.w3.org/2000/01/rdf-schema#label> "Physics"@en-US . <http://vivo.mydomain.edu/individual/orgPhysics> <http://purl.obolibrary.org/obo/BFO_0000050> <http://vivo.mydomain.edu/individual/orgCollegeOfScience> . <http://vivo.mydomain.edu/individual/orgChemistry> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://vivoweb.org/ontology/core#Department> . <http://vivo.mydomain.edu/individual/orgChemistry> <http://www.w3.org/2000/01/rdf-schema#label> "Chemistry"@en-US . <http://vivo.mydomain.edu/individual/orgChemistry> <http://purl.obolibrary.org/obo/BFO_0000050> <http://vivo.mydomain.edu/individual/orgCollegeOfScience> . <http://vivo.mydomain.edu/individual/orgOrganicChemistry> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://vivoweb.org/ontology/core#Division> . <http://vivo.mydomain.edu/individual/orgOrganicChemistry> <http://www.w3.org/2000/01/rdf-schema#label> "Organic Chemistry"@en-US . <http://vivo.mydomain.edu/individual/orgOrganicChemistry> <http://purl.obolibrary.org/obo/BFO_0000050> <http://vivo.mydomain.edu/individual/orgChemistry> . <http://vivo.mydomain.edu/individual/orgCollegeOfTheArts> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://vivoweb.org/ontology/core#College> . <http://vivo.mydomain.edu/individual/orgCollegeOfTheArts> <http://www.w3.org/2000/01/rdf-schema#label> "College of the Arts"@en-US . <http://vivo.mydomain.edu/individual/orgCollegeOfTheArts> <http://purl.obolibrary.org/obo/BFO_0000050> <http://vivo.mydomain.edu/individual/orgSampleUniversity> . <http://vivo.mydomain.edu/individual/orgTheaterAndDance> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://vivoweb.org/ontology/core#Department> . <http://vivo.mydomain.edu/individual/orgTheaterAndDance> <http://www.w3.org/2000/01/rdf-schema#label> "Theater and Dance"@en-US . <http://vivo.mydomain.edu/individual/orgTheaterAndDance> <http://purl.obolibrary.org/obo/BFO_0000050> <http://vivo.mydomain.edu/individual/orgCollegeOfTheArts> . |
Now that we have triples representing our organizations and their organization hierarchy, its easy to load them into VIVO and update them as necessary. We will load the triples into a "named graph." This is just a collection of triples with a name. We will use a named graph to make it easy to update – we'll just empty the named graph and reload it. That way we can be sure that the data in the file of triples is the data in the named graph.
You're done! You have your organizations and your organizational hierarchy data in VIVO. You can navigate to one of your organizations and see the hierarchical information:
When you have organizational data to update – a new organization has been added, an organizational change has been made, an organization has a new name, you discovered an error in your data, or for any other reason, update the file with your triples and follow the steps below to replace your organizational data in VIVO with the organizational data in your file.
Your previous organization data has been replaced with your new organizational data.
The basic technique for data management described here – creating triples, loading them into a named graph, and updating the graph when data changes – can be used to manage any of your VIVO data. You can put people in one graph, publications in another, grants in another, datasets in another, and manage each by creating triples and updating graphs. You may wish to create repeatable processes for each of the kinds of data you are managing. These processes should be based on tools of your choice – Karma, XSLT, or scripts you write.
The Ontology Reference provides details regarding how VIVO represents entities. Practice will lead to familiarity and the VIVO community is always happy to help with any questions you may have.