Skip to content

MetadataSource: publisher_page, for a licence a held copy's publisher page states - #46

Merged
jdkent merged 3 commits into
mainfrom
feat/publisher-page-source
Oct 18, 2026
Merged

jdkent merged 3 commits into
mainfrom
feat/publisher-page-source

Conversation

@jdkent

@jdkent jdkent commented Oct 18, 2026

Copy link
Copy Markdown
Member

This PR adds one MetadataSource value, publisher_page: a held copy's web page at its publisher. A License read from that page needs a source to name as stated_by, and none of the existing values fits it.

Why

Ingestion holds a copy of many papers only as the publisher's HTML page (its "ACE" download). Today none of these pages is read for a licence.

In ingestion's census of 5,200 synced articles, 1,341 ACE copies were recorded as assumed all rights reserved. The page itself usually states the rights:

  • 737 of the 1,341 pages carry an article-level dc.rights or prism.copyright meta tag, or a copyright-statement or copyright-line element. Some examples:
    • "Copyright © 2021 the authors. SfN exclusive license."
    • "© The Author (2011). Published by Oxford University Press ... All rights reserved."
    • "IOS Press and the authors. All rights reserved".
  • 229 ScienceDirect pages carry sa-user-license, Elsevier's licence for the accepted manuscript.

These are stated licences, so they should be recorded as stated, not assumed. The existing values each name another source:

value names
jats JATS XML
elsevier Elsevier's full-text XML
pmc_cloud PMC's cloud record
the rest indexers

What changed

  • license.yaml: the new publisher_page value.
  • The regenerated pydantic models and JSON Schemas.

No schema version bump: this adds one permissible value, and nothing that validated before stops validating. If you would rather bump it, the examples' schema_version and ingestion's upload cassettes move with it.

Tests

python tools/generate_models.py --check passes, and pytest passes (1 skipped: building a wheel needs setuptools).

Follow-up

Once this merges, ingestion moves its pin to main and reads each ACE page's own rights, stated by publisher_page.

🤖 Generated with Claude Code

jdkent and others added 3 commits October 18, 2026 15:50
An HTML copy read from the publisher's site (ingestion's ACE pages) states its own
rights in dc.rights or prism.copyright metadata, or in the copyright line it
prints. No MetadataSource value names that source, so a licence read there
cannot say who stated it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ce in its description

The example carries the sa-user-license line of an ACE-scraped ScienceDirect page
(PMID 32664016), so dropping publisher_page from the enum fails the suite.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…cess unrecorded

The page says openaccessArticle false and entitlementReason subscription, and its
sa-start-date is 12 months after the 2020-06-04 version of record, so the
self-archiving licence covers the accepted manuscript. ACE copies have access unrecorded.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@jdkent
jdkent marked this pull request as ready for review October 18, 2026 22:04
@jdkent jdkent self-assigned this Oct 18, 2026

@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 7c0425a into main Oct 18, 2026
4 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