Deprecated. This material represents early efforts and may be of interest to historians. It doe not describe current VIVO efforts.
Deprecated. This material represents early efforts and may be of interest to historians. It doe not describe current VIVO efforts.
Linked Open Data is one of the fundamental concepts of the Semantic Web. It consists of asking a server for the RDF relating to an individual. If the response includes object properties that link to other individuals, those individuals can be queried also. For more information on Linked Open Data, see Concept: Linked Data.
VIVO accepts standard requests for Linked Open Data and some non-standard ones. The contents of the response are in accordance with those suggested by the in their tutorial How to Publish Linked Data on the Web.
VIVO will provide Linked Open Data in several formats. The semantic content remains the same; only the syntax differs among formats.
The examples on this page are based on a fictitious individual named "Able Baker", with a URI of http://vivo.mydomain.edu/individual/n3639
. To keep the examples simple, this person has just a few items in his VIVO profile. His profile page looks like this:
VIVO will serve Linked Open Data in these formats:
Specifications for each of the formats are provided by the World Wide Web Consortium (W3C).
The standard way of requesting Linked Open data is an HTTP request to the URI of the individual in question, with the Accept
header on the request indicating the desired format. If there is no Accept
header, it is assumed to be text/html
, and the standard profile page is returned.
Response format | URL | Accept header |
---|---|---|
RDF/XML | http://vivo.mydomain.edu/individual/n3639 | application/rdf+xml |
N3 | http://vivo.mydomain.edu/individual/n3639 | text/n3 |
Turtle | http://vivo.mydomain.edu/individual/n3639 | text/turtle |
JSON-LD | http://vivo.mydomain.edu/individual/n3639 | application/json |
The different responses may also be explicitly requested by URL. In fact, the requests listed above will simply redirect the browser to these URLs:
Response format | URL |
---|---|
RDF/XML | http://vivo.mydomain.edu/individual/n3639/n3639.rdf |
N3 | http://vivo.mydomain.edu/individual/n3639/n3639.n3 |
Turtle | http://vivo.mydomain.edu/individual/n3639/n3639.ttl |
JSON-LD | http://vivo.mydomain.edu/individual/n3639/n3639.jsonld |
Finally, VIVO allows you to request Linked Open Data in a way that is not specified by the standard. You can make an HTTP GET request to the URI of the individual, and include a format
parameter that specifies the format of the response.
Response format | URL |
---|---|
RDF/XML | http://vivo.mydomain.edu/individual/n3639?format=rdfxml |
N3 | http://vivo.mydomain.edu/individual/n3639?format=n3 |
Turtle | http://vivo.mydomain.edu/individual/n3639?format=ttl |
JSON-LD | http://vivo.mydomain.edu/individual/n3639?format=jsonld |
When you get request the public RDF about an individual in VIVO, the result is a set of RDF statements, or triples. These triples state:
This statement over-simplifies slightly. In VIVO, object properties and data properties can be public, or restricted to some extent. The RDF for an individual will contain only public properties.
Let's say that we have a faculty member with just a few items on his profile page. It might look like this:
Here is the RDF for this person, produced by a request for http://vivo.mydomain.edu/individual/n3639
. In this example, the RDF is expressed in N3 format.
@prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix vcard: <http://www.w3.org/2006/vcard/ns#> . @prefix obo: <http://purl.obolibrary.org/obo/> . @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . @prefix vitro: <http://vitro.mannlib.cornell.edu/ns/vitro/0.7#> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . @prefix owl: <http://www.w3.org/2002/07/owl#> . @prefix vivo: <http://vivoweb.org/ontology/core#> . <http://vivo.mydomain.edu/individual/n3639> a vivo:FacultyMember , foaf:Person , owl:Thing , foaf:Agent , obo:BFO_0000002 , obo:BFO_0000001 , obo:BFO_0000004 ; rdfs:label "Baker, Able "^^xsd:string ; obo:ARG_2000028 <http://vivo.mydomain.edu/individual/n3972> ; obo:RO_0000053 <http://vivo.mydomain.edu/individual/n475> , <http://vivo.mydomain.edu/individual/n7850> ; vitro:mostSpecificType vivo:FacultyMember ; vivo:freetextKeyword "Potrezebie, Chattanooga" ; vivo:hasCollaborator <http://vivo.mydomain.edu/individual/n7429> ; vivo:relatedBy <http://vivo.mydomain.edu/individual/n3401> , <http://vivo.mydomain.edu/individual/n5855> , <http://vivo.mydomain.edu/individual/n2421> ; vivo:researchOverview "Whatever strikes my fancy." ; vivo:scopusId "abaker" . <http://vivo.mydomain.edu/individual/n3972> a vcard:Kind , obo:BFO_0000031 , owl:Thing , obo:ARG_2000379 , obo:IAO_0000030 , obo:BFO_0000002 , obo:BFO_0000001 , vcard:Individual ; obo:ARG_2000029 <http://vivo.mydomain.edu/individual/n3639> . <http://vivo.mydomain.edu/individual/n475> a owl:Thing , obo:BFO_0000023 , vivo:InvestigatorRole , obo:BFO_0000002 , obo:BFO_0000017 , vivo:PrincipalInvestigatorRole , obo:BFO_0000020 , obo:BFO_0000001 , vivo:ResearcherRole ; obo:RO_0000052 <http://vivo.mydomain.edu/individual/n3639> . <http://vivo.mydomain.edu/individual/n7850> a owl:Thing , obo:BFO_0000023 , obo:BFO_0000017 , obo:BFO_0000002 , obo:BFO_0000020 , obo:BFO_0000001 , vivo:LeaderRole ; rdfs:label "Lead Guitarist"^^xsd:string ; obo:RO_0000052 <http://vivo.mydomain.edu/individual/n3639> . <http://vivo.mydomain.edu/individual/n7429> a foaf:Person , vivo:FacultyMember , foaf:Agent , owl:Thing , obo:BFO_0000002 , obo:BFO_0000001 , obo:BFO_0000004 ; rdfs:label "Dog, Charlie" . <http://vivo.mydomain.edu/individual/n3401> a owl:Thing , vivo:Relationship , obo:BFO_0000002 , obo:BFO_0000020 , obo:BFO_0000001 , vivo:Authorship ; vivo:relates <http://vivo.mydomain.edu/individual/n3639> . <http://vivo.mydomain.edu/individual/n5855> a vivo:FacultyPosition , owl:Thing , vivo:Relationship , obo:BFO_0000002 , obo:BFO_0000020 , obo:BFO_0000001 , vivo:Position ; rdfs:label "Functionary"^^xsd:string ; vivo:relates <http://vivo.mydomain.edu/individual/n3639> . <http://vivo.mydomain.edu/individual/n2421> a owl:Thing , vivo:Relationship , obo:BFO_0000002 , obo:BFO_0000020 , obo:BFO_0000001 , vivo:Grant ; rdfs:label "Cosmogenic Lassitude in Phlegmatic Axolotls" ; vivo:relates <http://vivo.mydomain.edu/individual/n3639> . obo:BFO_0000001 a owl:Class ; rdfs:label "Entity" . obo:BFO_0000002 a owl:Class ; rdfs:label "Continuant" . obo:BFO_0000004 a owl:Class ; rdfs:label "Independent Continuant"@en-US . vivo:FacultyMember a owl:Class ; rdfs:label "Faculty Member"@en-US . foaf:Person a owl:Class ; rdfs:label "Person"@en-US . foaf:Agent a owl:Class ; rdfs:label "Agent"@en-US . owl:Thing a owl:Class . <http://vivo.mydomain.edu/individual/n3639/n3639.n3> a foaf:Document ; rdfs:label "RDF description of Baker, Able - http://vivo.mydomain.edu/individual/n3639" ; <http://purl.org/dc/elements/1.1/date> "2014-03-10T11:08:39"^^xsd:dateTime ; <http://purl.org/dc/elements/1.1/publisher> <http://vivo.mydomain.edu> ; <http://purl.org/dc/elements/1.1/rights> <http://vivo.mydomain.edu/termsOfUse> .
The RDF information can be expressed graphically, like this:
How to make them public or private, and how to obtain the private ones by logging in before requesting LOD.
List the formats we provide, with references to definitions, especially for JSONLD
A table of request URLs, accept headers, response formats and response mime types
What do we do if the format is incorrect, if they ask for an unsupported mime type, if the individual doesn't exist?