Ticket of the month - March 2022 - Getting started with REST API queries

Hi @edgolovin ,

We use the default scoring in Elasticsearch (ES): Practical BM25 - Part 2: The BM25 Algorithm and its Variables | Elastic Blog. The query is scored against a field which is a concatenation of several metadata fields.

There is also one additional thing to keep in mind about these scores: in search engines, such as ES, scoring is not supposed to be meaningful across different queries, i.e. the score is not some sort of objective global measure of similarity. The number is not scaled to any known range, and it will depend a lot on the query itself. Scores are only supposed to allow us to compare the similarity of different indexed documents with the same query , and so it only enables us to sort the results for a given query.

My best,
Isaac

1 Like

hi Isaac,
I am wondering ig it is possible to write a query on the keywords used by articles’ authors ? I can’t find the command.
Thank you by advance for your help
sincerely

1 Like

Hi @AlRen ,

Unfortunately, keywords asserted by authors are not a part of the metadata record registered with Crossref, so there’s no way to search for an author’s keywords using our API.

-Isaac

Hello all,

For those of you looking to get started with using our API, I highly recommend the API 101 for publishers, researchers, and librarians with Postman and Crossref - ConTech.Live video tutorial hosted by my colleague Rachael Lammey, our Director of Product, and Claire Froelich, Student Community Manager at Postman. So well done!

-Isaac

Hello @ifarley,

I discovered that in order to access all work published in a particular journal, I need to query all journals ISSNs registered in Crossref. To do this, I search for a known ISSN using the following link: https://api.crossref.org/journals/{known_issn}. After obtaining the journal registered in Crossref ISSNs, I fetch the works for each ISSN separately.

However, I find this approach counterintuitive. When I read the FAQ for journal queries (crossref*/swagger-ui/index.html#/Journals/get_journals__issn_), the description states “Returns information about a journal with the given ISSN…,”, which leads me to believe that by providing one of the journal ISSNs, I should receive all the associated works regardless of the ISSN assigned to each work. Moreover, when I double-checked the works obtained with different ISSNs from several journals and received the same results, I reinforced in my misunderstanding. Only later I accidentally come across a journal where the lists of works differed between the print-ISSN and eISSN (and I know there can be more ISSNs, i.e. if journal renamed).

I wonder why this functionality isn’t implemented in a way where journal query api.crossref.org/journal/ with providing any of journal ISSNs directly gives access to all works associated with journal without the need for additional queries which mostly return duplicated result. Instead, now it seems to be a replica of another query https://api.crossref.org/works?filter=issn:{known_issn}.

1 Like

Good question @SibTony. We get versions of this question from our metadata users from time to time, so I’m glad you asked it here.

You’re right; it would be helpful for us to have a better journal identifier to use for retrieving metadata records across an entire journal. We do use an internal identifier within our system to aggregate all records against one journal. We call these internal identifiers publication or journal IDs, and you can see those IDs within some of our reporting features, like our journal depositor reports, which do aggregate records exactly like you’re wanting. Let’s use the EKSAKTA Journal of Sciences and Data Analysis from the Universitas Islam Indonesia (Islamic University of Indonesia) (10.20885) as an example:

In the REST API, there are different counts for the number of DOIs registered for the pISSN and eISSN:

Print: https://api.crossref.org/journals/25032364/works?mailto=support@crossref.org (116 total works)
versus
Electronic: https://api.crossref.org/journals/14111047/works?mailto=support@crossref.org (66 total works)

Our internal journal ID for the EKSAKTA Journal of Sciences and Data Analysis is 300093, and if I append that ID to our depositor report address, I can see all of the DOIs registered against this journal: https://data.crossref.org/depositorreport?pubid=J300093

Now, and I think it is important to note, there are legitimate business and publishing practices that would lead to different totals between works with the pISSN and eISSN. For instance, maybe some of the journal articles are online-only articles and the member has omitted the pISSN in the metadata records of works that only appear online. I can’t speak to the discrepancy for this specific journal, but the point is the issue with the REST API query is with the identifier being used in the query and not necessarily metadata errors or inconsistencies on the part of any individual Crossref members (albeit human and machine publishing and registration errors can certainly lead to differing counts in records as well).

We are aware of this, and are working on a longer-term solution for being able to retrieve all works via the REST API for a journal using a better global identifier than an ISSN. Unfortunately, we’re still early in those discussions, so there is no timetable for that arrival. Therefore you’ll need to take the above into consideration when searching for a full list of articles for a specific journal. Note: we also expose the journal IDs in our title list tool here: crossref.org : : Title List (click on the ID link on your result)

My best,
Isaac

2 Likes

@Shayn has published a great post on using Postman for API queries, which builds nicely on this post and thread: Ticket of the month - August 2023 - Using Postman for API Queries

My best,
Isaac