Skip to content

Identify a paper's venue: Bibliography.venue names its OpenAlex source - #57

Merged
jdkent merged 1 commit into
mainfrom
feat/bibliography-venue
Nov 5, 2026
Merged

jdkent merged 1 commit into
mainfrom
feat/bibliography-venue

Conversation

@jdkent

@jdkent jdkent commented Nov 5, 2026

Copy link
Copy Markdown
Member

What

  • Bibliography.venue (new, optional) says which journal, preprint server or conference series a paper appeared in. It holds the OpenAlex source id (S…), how that was identified (VenueMatch: doi, pmid, preprint_server, issn, title, fuzzy), and a 0–100 score for fuzzy matches only.
  • Bibliography.journal stays the raw string as the metadata source printed it. It now has a description saying so.

Why

Production neurostore holds 4,225 distinct journal strings for 76,664 base studies; PLoS ONE / PloS one / PLoS One is one journal in three spellings. ns-pond will identify each uploaded paper's venue, and neurostore will link it to a journals row. The design, the identifier research and the measured match rates are in neurostore's docs/journals/DESIGN.md on branch claude/journal-entity-cf4eee.

Venue carries only the paper's own facts. The source's title, ISSNs, ISSN-L, NLM id and abbreviation belong to the source, and neurostore's journals table holds them once rather than every paper repeating them.

Checks

  • python tools/generate_models.py --check: in sync.
  • pytest: all pass, including a new test. It checks that a venue validates in both the models and the JSON Schema, that a URL-form id is refused, and that the JSON Schema refuses a fuzzy match without a score and a score on a non-fuzzy match.
  • mkdocs build --strict: passes.

The change is additive, so the schema versions stay as they are. The example parsed paper gains "venue": null so the byte-for-byte layout round trip holds.

🤖 Generated with Claude Code

Bibliography.journal stays the name as the metadata source printed it.
Bibliography.venue says which journal, preprint server or conference
series that is: the OpenAlex source id and how it was identified
(VenueMatch: doi, pmid, preprint_server, issn, title, fuzzy). A fuzzy
match, and only a fuzzy match, carries a 0-100 score; the JSON Schema
enforces it as it does abstract_provider.

Venue holds only the paper's own facts. The source's title, ISSNs, NLM
id and abbreviation belong to the source, and the consumer (neurostore's
journals table) holds them once rather than each paper repeating them.

Additive, so the schema versions stay as they are.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@jdkent jdkent left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@jdkent
jdkent merged commit dfdf5b2 into main Nov 5, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant