Skip to content

Instantly share code, notes, and snippets.

@lawlesst
Created June 25, 2013 20:27
Show Gist options
  • Save lawlesst/5862040 to your computer and use it in GitHub Desktop.
Save lawlesst/5862040 to your computer and use it in GitHub Desktop.
Sample RDFAlchemy models for use in VIVO. These have been used to create RDF for ingest but will require review and change before using in real code.
class MostSpecificType(rdfSubject):
rdf_type = VITRO.mostSpecificType
class Thing(rdfSubject):
rdf_type = OWL.Thing
label = rdfSingle(RDFS.label)
most_specific_type = rdfSingle(VITRO.mostSpecificType)
class Date(rdfSubject):
rdf_type = VIVO.DateTimeValue
date_time = rdfSingle(VIVO.dateTime)
date_time_precision = rdfSingle(VIVO.dateTimePrecision)
class DateTimeInterval(rdfSubject):
rdf_type = VIVO.DateTimeInterval
start = rdfSingle(VIVO.start, range_type=VIVO.DateTimeValue)
end = rdfSingle(VIVO.end, range_type=VIVO.DateTimeValue)
class Person(Thing):
rdf_type = FOAF.Person
firstname = rdfSingle(FOAF.firstName)
lastname = rdfSingle(FOAF.lastName)
has_service_role = rdfMultiple(VIVO.serviceProviderRoleOf, range_type=VIVO.ServiceProviderRole)
has_invited_speaker_role = rdfMultiple(BROWN_LOCAL.hasInvitedSpeakerRole, range_type=BROWN_LOCAL.InvitedSpeakerRole)
has_artistic_participation = rdfMultiple(BLOCAL.artistictParticipant, range_type=VIVO.Performance)
class FacultyMember(Person):
rdf_type = VIVO.FacultyMember
email = rdfSingle(VIVO.primaryEmail)
research_overview = rdfSingle(VIVO.researchOverview)
preferred_title = rdfSingle(VIVO.preferredTitle)
authorships = rdfMultiple(VIVO.authorInAuthorship, range_type=VIVO.Authorship)
class Position(rdfSubject):
rdf_type = VIVO.Position
date_time_interval = rdfSingle(VIVO.dateTimeInterval, range_type=VIVO.DateTimeInterval)
class Authorship(Relationship):
rdf_type = VIVO.Authorship
linked_resource = rdfSingle(VIVO.linkedInformationResource, range_type=VIVO.InformationResource)
linked_author = rdfSingle(VIVO.linkedAuthor, range_type=VIVO.FacultyMember)
class InformationResource(Thing):
rdf_type = VIVO.InformationResource
keywords = rdfSingle(VIVO.freetextKeyword)
title = rdfSingle(DCTERMS.title)
date = rdfSingle(VIVO.dateTimeValue, range_type=VIVO.DateTimeValue)
venue = rdfSingle(VIVO.hasPublicationVenue, range_type=VIVO.InformationResource)
publisher = rdfMultiple(VIVO.publisher)
place = rdfSingle(VIVO.placeOfPublication)
class Document(InformationResource):
rdf_type = BIBO.Document
authors = rdfMultiple(VIVO.informationResourceInAuthorship, range_type=VIVO.Authorship)
number = rdfSingle(BIBO.number)
start_page = rdfSingle(BIBO.pageStart)
end_page = rdfSingle(BIBO.pageEnd)
pmid = rdfSingle(BIBO.pmid)
doi = rdfSingle(BIBO.doi)
volume = rdfSingle(BIBO.volume)
class Article(Document):
rdf_type = BIBO.Article
doi = rdfSingle(BIBO.doi)
class ConferencePaper(Article):
rdf_type = VIVO.ConferencePaper
presented_at = rdfSingle(BIBO.presentedAt, range_type=EVENT.Event)
class WebPage(rdfSubject):
rdf_type = VIVO.URLLink
anchor_text = rdfSingle(VIVO.linkAnchorText)
link_uri = rdfSingle(VIVO.linkURI, range_type=XSD.anyURI)
webpage_of = rdfSingle(VIVO.webpageOf)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment