The Library’s linked schema definitions.
This repository is designed to provide both documentation and programmatic support for the the library’s linked data platform. By support we mean:
maintaining https://schema.library.ucdavis.edu which is a website, matching to some extent the UC Davis web standards that give a brief summary of the applications that use linked data, fin, dams, aggie experts.
A catalog somewhat similar to https://schema.org/ that describes each individual predicate and objects that are used in the the projects. For example, https://schema.library.ucdavis.edu/is-open-access might point to something that says:
is-open-access is a property of type schema:Property.
Describes whether the content of a work is available via some open-access mechanism.
Values expected to be on of these types |
---|
boolean |
Used on these types |
work |
Defining an owl type definition for the those properties. For example (although this is not right )
{ "@context": {
"@base":"http://schema.library.ucdavis.edu/",
"schema":"http://schema.org/"
},
"@graph":[
{
"@id":"is-open-access",
"@type":["schema:Property"],
"domain":["boolean"],
"range":["work"]
}
]
}
One important part of the using linked data in JSON-LD, is the proper
creation of a @context
for the document. This can be used to support
compaction and expansion of documents, as well as framing data in for
programmatic use. We would like there to be a catalog of @context
files,
as well, where for example, going to
http://schema.library.ucdavis.edu/@context/dams.json
responds with:
{
"@context": {
"@vocab":"http://schema.org/",
"fast": "http://id.worldcat.org/fast/",
"fedora":"http://fedora.info/definitions/v4/repository#",
"rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
"schema": "http://schema.org/",
"shelfmark":"ark:/87287/d7r94j/",
"xsd": "http://www.w3.org/2001/XMLSchema#",
"ucdlib":"http://digital.ucdavis.edu/schema#",
"ldp":"http://www.w3.org/ns/ldp#",
"about": {
"@type":"@id"
},
"datePublished":{
"@type":"xsd:date"
},
"yearPublished":{
"@id":"datePublished",
"@type":"xsd:gYear"
},
"sdDatePublished":{
"@type":"xsd:date"
},
"sdYearPublished":{
"@id":"sdDatePublished",
"@type":"xsd:gYear"
},
"identifier":{"@type":"@id"},
"isPartOf":{"@type":"@id"},
"image":{"@type":"@id"},
"license":{"@type":"@id"},
"sdLicense":{"@type":"@id"},
"sdPublisher":{"@type":"@id"},
"publisher":{"@type":"@id"},
"name":{
"@language":"en"
},
"ldp:membershipResource":{"@type":"@id"},
"ldp:isMemberOfRelation":{"@type":"@id"},
"ldp:hasMemberOfRelation":{"@type":"@id"}
}
}
In this fashion, metadata creators can create more simple documents as in:
{
"@context": "https://schema.library.ucdavis.edu/@context/dams",
"@id": "",
"@type": [
"fedora:ArchivalGroup",
"CreativeWork",
"Menu"
],
"about": [
"fast:1424061",
"fast:893952"
],
"yearPublished": "1960",
"datePublished": "1960-09-07",
"identifier": [
"ark:/87287/d7002v",
"shelfmark:D-060/box:60+folder:112"
],
"image": "ark:/87287/d7002v/media/images/d7002v-0",
"isPartOf": "https://oac.cdlib.org/findaid/ark:/13030/c8xd13fg/",
"license": "http://rightsstatements.org/vocab/CNE/1.0/",
"name": "Drake-Wiltshire Hotel (San Francisco, California): Un Dîner d'Automne"
}
We should provide multiple contexts, on an application basis, and we should
also provide @contexts
for any standard data framing that we will be
doing for applications.
We can also provide support for higher level defintions, for example giving a more complete idea of what a :Person is, and what features are expected. This can be a combination of both an informative description, along with more technical descriptions, for example, these notes about linked data shape expressions, There are both, SHeX (2019) which is implemented in Jena 4.2, and SHACL (2017), also in JENA SHACL.
We should provide an implicit but also explicit versions for our linked data definitions
We should use the issue tracking framework to manage the discussions on how the decisions we made on our schema.