Skip to main content

Work

Struct Work 

Source
pub struct Work {
Show 49 fields pub id: String, pub doi: Option<String>, pub title: Option<String>, pub display_name: Option<String>, pub publication_year: Option<i32>, pub publication_date: Option<String>, pub language: Option<String>, pub type: Option<String>, pub type_crossref: Option<String>, pub indexed_in: Option<Vec<String>>, pub ids: Option<WorkIds>, pub primary_location: Option<Location>, pub locations: Option<Vec<Location>>, pub locations_count: Option<i64>, pub best_oa_location: Option<Location>, pub open_access: Option<OpenAccess>, pub authorships: Option<Vec<Authorship>>, pub countries_distinct_count: Option<i64>, pub institutions_distinct_count: Option<i64>, pub corresponding_author_ids: Option<Vec<String>>, pub corresponding_institution_ids: Option<Vec<String>>, pub apc_list: Option<Apc>, pub apc_paid: Option<Apc>, pub fwci: Option<f64>, pub has_fulltext: Option<bool>, pub cited_by_count: Option<i64>, pub citation_normalized_percentile: Option<CitationPercentile>, pub cited_by_percentile_year: Option<CitedByPercentileYear>, pub biblio: Option<Biblio>, pub is_retracted: Option<bool>, pub is_paratext: Option<bool>, pub is_xpac: Option<bool>, pub primary_topic: Option<TopicWithScore>, pub topics: Option<Vec<TopicWithScore>>, pub keywords: Option<Vec<Keyword>>, pub concepts: Option<Vec<Concept>>, pub mesh: Option<Vec<MeshTerm>>, pub sustainable_development_goals: Option<Vec<SdgTag>>, pub funders: Option<Vec<DehydratedFunder>>, pub awards: Option<Vec<Award>>, pub has_content: Option<HasContent>, pub content_urls: Option<Value>, pub referenced_works_count: Option<i64>, pub referenced_works: Option<Vec<String>>, pub related_works: Option<Vec<String>>, pub abstract_text: Option<String>, pub counts_by_year: Option<Vec<CountsByYear>>, pub updated_date: Option<String>, pub created_date: Option<String>,
}
Expand description

A scholarly work: an article, book, dataset, preprint, or other research output.

OpenAlex contains 240M+ works. Each work includes metadata about its title, authors, publication venue, open-access status, citations, topics, funding, and more.

§Example

{
  "id": "https://openalex.org/W2741809807",
  "doi": "https://doi.org/10.7717/peerj.4375",
  "display_name": "The state of OA: a large-scale analysis...",
  "publication_year": 2018,
  "type": "article",
  "cited_by_count": 1234,
  "open_access": {"is_oa": true, "oa_status": "gold", ...},
  "authorships": [{"author_position": "first", "author": {...}, ...}],
  "primary_topic": {"id": "https://openalex.org/T...", "score": 0.99, ...}
}

§ID formats

Works can be retrieved by OpenAlex ID (W...), DOI, PMID (pmid:...), PMCID (pmcid:...), or MAG ID (mag:...).

§Abstract

abstract_text contains the reconstructed abstract as a plain string. OpenAlex stores abstracts as an inverted index internally; this crate converts that to readable text automatically on deserialization.

Fields§

§id: String

OpenAlex ID URI (e.g. "https://openalex.org/W2741809807").

§doi: Option<String>

DOI URL (e.g. "https://doi.org/10.7717/peerj.4375").

§title: Option<String>

Original title of the work.

§display_name: Option<String>

Display-ready title (same as title in most cases).

§publication_year: Option<i32>

Year of publication.

§publication_date: Option<String>

Full publication date as an ISO 8601 string (e.g. "2018-02-13").

§language: Option<String>

ISO 639-1 two-letter language code (e.g. "en", "zh").

§type: Option<String>

Simplified work type: "article", "preprint", "paratext", "letter", "editorial", "erratum", "libguides", "supplementary-materials", or "review".

§type_crossref: Option<String>

Crossref type (more granular than type): "journal-article", "proceedings-article", "posted-content", "book-chapter", "dissertation", "dataset", and 24 other values from the Crossref controlled vocabulary.

§indexed_in: Option<Vec<String>>

External indexes that include this work: "arxiv", "crossref", "doaj", "pubmed".

§ids: Option<WorkIds>

External identifiers for this work (DOI, MAG, PMID, PMCID).

§primary_location: Option<Location>

The primary (best) location for this work — typically the publisher’s site.

§locations: Option<Vec<Location>>

All known locations where this work is available.

§locations_count: Option<i64>

Total number of locations.

§best_oa_location: Option<Location>

The best open-access location, if any.

§open_access: Option<OpenAccess>

Open-access status: whether the work is OA, OA type, and OA URL.

§authorships: Option<Vec<Authorship>>

List of authors and their affiliations for this work.

§countries_distinct_count: Option<i64>

Number of distinct countries represented by the authors’ affiliations.

§institutions_distinct_count: Option<i64>

Number of distinct institutions represented by the authors’ affiliations.

§corresponding_author_ids: Option<Vec<String>>

OpenAlex IDs of the corresponding author(s).

§corresponding_institution_ids: Option<Vec<String>>

OpenAlex IDs of the corresponding author(s)’ institution(s).

§apc_list: Option<Apc>

Article processing charge list price.

§apc_paid: Option<Apc>

Article processing charge actually paid.

§fwci: Option<f64>

Field-weighted citation impact. A value of 1.0 means average for the field; above 1.0 means more cited than average.

§has_fulltext: Option<bool>

Whether full text is available for this work.

§cited_by_count: Option<i64>

Total number of times this work has been cited.

§citation_normalized_percentile: Option<CitationPercentile>

Citation percentile ranking relative to works published in the same year.

§cited_by_percentile_year: Option<CitedByPercentileYear>

Min/max citation count at this work’s percentile for its publication year.

§biblio: Option<Biblio>

Bibliographic details: volume, issue, and page numbers.

§is_retracted: Option<bool>

Whether this work has been retracted.

§is_paratext: Option<bool>

Whether this work is paratext (content about a venue, e.g. table of contents, cover page).

§is_xpac: Option<bool>

Whether this work is cross-publisher article content.

§primary_topic: Option<TopicWithScore>

The most relevant topic assigned to this work, with a relevance score.

§topics: Option<Vec<TopicWithScore>>

Up to 3 topics assigned to this work, each with a relevance score.

§keywords: Option<Vec<Keyword>>

Keywords extracted from this work.

§concepts: Option<Vec<Concept>>

Deprecated concept tags (replaced by topics).

§mesh: Option<Vec<MeshTerm>>

MeSH terms assigned to this work (biomedical literature only).

§sustainable_development_goals: Option<Vec<SdgTag>>

UN Sustainable Development Goal tags.

§funders: Option<Vec<DehydratedFunder>>

Funding organizations that supported this work.

§awards: Option<Vec<Award>>

Grants and awards associated with this work.

§has_content: Option<HasContent>

Availability of full-text content (PDF, GROBID XML).

§content_urls: Option<Value>

URLs for accessing full-text content. Structure varies.

§referenced_works_count: Option<i64>

Number of works cited by this work.

§referenced_works: Option<Vec<String>>

OpenAlex IDs of works cited in this work’s references.

§related_works: Option<Vec<String>>

OpenAlex IDs of works related to this one (by topic similarity).

§abstract_text: Option<String>

Abstract text, reconstructed from the OpenAlex inverted index format.

§counts_by_year: Option<Vec<CountsByYear>>

Citation and publication counts broken down by year.

§updated_date: Option<String>

ISO 8601 timestamp of the last update to this record.

§created_date: Option<String>

ISO 8601 date when this record was first created.

Trait Implementations§

Source§

impl Clone for Work

Source§

fn clone(&self) -> Work

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Work

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for Work

Source§

fn deserialize<__D>( __deserializer: __D, ) -> Result<Work, <__D as Deserializer<'de>>::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl From<Work> for WorkSummary

Source§

fn from(w: Work) -> Self

Converts to this type from the input type.
Source§

impl Serialize for Work

Source§

fn serialize<__S>( &self, __serializer: __S, ) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

§

impl Freeze for Work

§

impl RefUnwindSafe for Work

§

impl Send for Work

§

impl Sync for Work

§

impl Unpin for Work

§

impl UnsafeUnpin for Work

§

impl UnwindSafe for Work

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,