Documentation
¶
Overview ¶
resources.go package supports feedtools modeling a common structure to describe resources. It describes the output model we use to present records in feeds v2. It is largely based on the DataCite Schema 4.3.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Award ¶
type Award struct { URI string `json:"award_uri,omitempty"` Title string `json:"title,omitempty"` Number string `json:"number,omitempty"` }
Awards
type Date ¶
type Description ¶
type Description struct { Language string `json:"language,omitempty"` Type string `json:"type,omitempty"` Schema string `json:"schema,omitempty"` SchemaURI string `json:"schema_uri,omitempty"` Value string `json:"value,omitempty"` }
Description
func (*Description) String ¶
func (description *Description) String() string
type DigitalObject ¶
type DigitalObject struct { // Name holds the basename for file including extension, // e.g. thesis.pdf Name string `json:"name,omitempty"` // DOI this is the identifier for this object. DOI string `json:"doi,omitempty"` // OfficialURL this is the perma link maintained by Caltech Library OfficialURL string `json:"official_url,omitempty"` // IsPublic is true then we can show this document to public, // if false then document is for dark archive OpenAccess bool `json:"open_access,omitempty"` // Restrictions hold a string describing any restrictions. // "public" means it is openly accessible. Other restrictions // might be "internal", "staff only", etc. Restrictions string `json:"restrictions,omitempty"` // Content holds a short string describing the content. // e.g. "final", "archival" Content string `json:"content,omitempty"` // License, individual documents may vary their license License string `json:"license,omitempty"` // URL a URL pointing at the actual digital object file URL string `json:"url,omitempty"` // Size in bytes of file Size int `json:"size,omitempty"` // MimeType (content type), e.g. application/pdf MimeType string `json:"mime_type,omitempty"` // Revision of the object, in EPrints this is a single digit value // down the road we should support semver version number. Revision int `json:"rev_number,omitempty"` }
DigitalObject holds metadata point to the actual digital file(s) references by the resource.
func (*DigitalObject) Anchor ¶
func (do *DigitalObject) Anchor(id string, class string, title string) string
Given a discription render the Digital Object as HTML Anchor element.
func (*DigitalObject) String ¶
func (do *DigitalObject) String() string
type Funder ¶
type Funder struct { Agency *PersonOrOrg `json:"agency,omitempty"` Awards []*Award `json:"award,omitempty"` Citation string `json:"citation,omitempty"` }
Funder deviates from the DataCite schema. It is a heirachy relation of funding source and the awards they provided, e.g. a work might be funded through multiple NSF grants and this would group them together. Funding can be from a person or organization though most of the time it is from an organization. Citation is the string that is required to be included by the funding agent. These can be quite long historically particularly for things like Thesis and Disertations.
type GeoLocation ¶
type GeoLocation struct { Place string `json:"place,omitempty"` Point *Point `json:"point,empty"` Box []*Point `json:"box,omitempty"` Polygon []*Point `json:"polygon,omitempty"` }
GeoLocation
func (*GeoLocation) String ¶
func (geoLocation *GeoLocation) String() string
type Identifier ¶
type Identifier struct { // Type of identifier Type string `json:"type,omitempty"` // Schema name Schema string `json:"schema,omitempty"` // Schema URI SchemURI string `json:"schema_uri,omitempty"` // Value of the identifier Value string `json:"value,omitempty"` }
Identifier holds an identifer value and descriptive information E.g. DOI and a DOI value.
func (*Identifier) String ¶
func (identifier *Identifier) String() string
type PersonOrOrg ¶
type PersonOrOrg struct { // Type of identifier Type string `json:"type,omitempty"` // Schema name of identifier Schema string `json:"schema,omitempty"` // Schema URI SchemURI string `json:"schema_uri,omitempty"` // Role describes the relationship of the name, e.g. creator, // contributor, editor. Role string `json:"role,omitempty"` // Name holds the name of an organization or person Name string `json:"name,omitempty"` // GivenName // e.g. in European names it is often the "first name". GivenName string `json:"given_name,omitempty"` // FamilyName // e.g. in European names it is often the "last name". FamilyName string `json:"family_name,omitempty"` // HonorificPrefix (e.g. Dr/Mrs/Ms) HonorificPrefix string `json:"honorificPrefix,omitempty"` // HonorificSuffix (e.g. M.D./PhD/MSCS) HonorificSuffix string `json:"honorificSuffix,omitempty"` // Lineage (e.g. Jr., Sr., III) Lineage string `json:"lineage,omitempty"` // Identifiers associated with person or organizaiton Identifiers []*Identifier `json:"identifiers,omitempty"` // Affilication of the person or organization Affiliation []*PersonOrOrg `json:"affiliation,omitempty"` }
PersonOrOrg holds a person or organization's name, role (e.g. creator, contributor, editor), identifiers and affiliation
func (*PersonOrOrg) String ¶
func (personOrOrg *PersonOrOrg) String() string
type Point ¶
type Point struct { Latitude float64 `json:"latitude,omitempty"` Longitude float64 `json:"longitude,omitempty"` Altitude float64 `json:"altitude,omitempty"` }
Point
type RelatedItem ¶
type RelatedItem struct { RelationType string `json:"relation_type,omitempty"` RelatedItemType string `json:"related_item_type,omitempty"` RelatedItemIdentifier string `json:"related_item_identifier,omitempty"` RelatedItemIdentifierType string `json:"related_item_identifier_type,omitempty"` Creator string `json:"creator,omitempty"` Title string `json:"title,omitempty"` PublicationYear string `json:"publication_year,omitempty"` Volume string `json:"volume,omitempty"` Issue string `json:"issue,omitempty"` Number string `json:"numnber,omitempty"` FirstPage string `json:"first_page,omitempty"` LastPage string `json:"last_page,omitempty"` Publisher string `json:"publisher,omitempty"` Edition string `json:"edition,omitempty"` Contributor string `json:"contributor,omitempty"` }
RelatedItem follows DataCite but feels wrong. It seems like you want describe a relationship and point at anther resource rather than hold minimal journal citation values
func (*RelatedItem) String ¶
func (relatedItem *RelatedItem) String() string
type Resource ¶
type Resource struct { Identifier *Identifier `json:"identifier,omitempty"` Creators []*PersonOrOrg `json:"creators,omitempty"` Titles []*Title `json:"titles,omitempty"` Publisher string `json:"publisher,omitempty"` PublicationYear string `json:"publication_year,omitempty"` // An approxite date in YYYY-MM-DD notation. Not in datacite spec. PublicationDate string `json:"publication_date,omitempty"` Subjects []*Subject `json:"subjects,omitempty"` Contributors []*PersonOrOrg `json:"contributors,omitempty"` Dates []*Date `json:"dates,omitempty"` Language string `json:"language,omitempty"` ResourceType *ResourceType `json:"resource_type,omitempty"` AltIdentifiers []*Identifier `json:"alternate_identifiers,omitempty"` RelatedIdentifiers []*Identifier `json:"related_identifiers,omitempty"` Sizes []string `json:"sizes,omitempty"` Formats []string `json:"formats,omitempty"` Version string `json:"version,omitempty"` RightsList []*Rights `json:"rights_list,omitempty"` Descriptions []*Description `json:"description,omitempty"` GeoLocations []*GeoLocation `json:"geo_locations,omitempty"` Funders []*Funder `json:"funders,omitempty"` RelatedItems []*RelatedItem `json:"related_items,omitempty"` // PrimaryObject holds the primary digital artifact PrimaryObject *DigitalObject `json:"primary_object,omitempty"` // RelatedObjects is the other objects associated with resource RelatedObjects []*DigitalObject `json:"related_objects,omitempty"` // Additoinal custom fields ... CustomFields map[string]interface{} `json:"custom_fields,omitempty"` }
Resource holds a record such as an description of a dataset, journal article, thesis, etc. It includes more root fields than a DataCite resource because feeds needs more specificity.
type ResourceType ¶
type ResourceType struct { Type string `json:"type,omitempty"` // Schema name Schema string `json:"schema,omitempty"` // Schema URI SchemURI string `json:"schema_uri,omitempty"` // Value describing resource type Value string `json:"value,omitempty"` }
ResourceType
func (*ResourceType) String ¶
func (resourceType *ResourceType) String() string
type Rights ¶
type Rights struct { // Identifier Identifier *Identifier `json:"identifier,omitempty"` Language string `json:"language,omitempty"` // Schema name Schema string `json:"schema,omitempty"` // Schema URI SchemURI string `json:"schema_uri,omitempty"` // URI to rights document URI string `json:"uri,omitempty"` // describing rights Value string `json:"value,omitempty"` }
Rights
type Subject ¶
type Subject struct { Language string `json:"language,omitempty"` Schema string `json:"schema,omitempty"` SchemaURI string `json:"schema_uri,omitempty"` // Code holds the classification code is one applies Code string `json:"code,omitempty"` // Value holds the subject itself Value string `json:"subject,omitempty"` }
Subject