Back after a couple of weeks away and there’s a lot to catch up on (apologies as this will be the norm for me - work and training). Nick, Parts 1 and 2 are the clearest anyone’s framed this. Jacky, thanks for putting five concrete records up.
Three things I had wrong in pub.byline.*, since it seems fair to lead with those.
seriesPosition needs to be a string. “1.5” and “Vol. II” both happen and my integer can’t hold either.
Contributor identifiers beat a bare DID. That’s guido’s point in the other thread and Nick’s too. Most authors will never have a DID and the ones who do shouldn’t be a separate path.
And Jacky’s publishedYear as a plain integer is better than my format: datetime. Publication dates are years. Nick’s ISO 8601 has the same problem mine does, we both over-spec’d something that’s usually four digits.
byline’s lexicon isn’t heavily used and I’m not attached to it. If a better rationale comes out of this thread I’ll change byline to match rather than defend whatever I happened to ship first.
Now the bit I got stuck on reading both proposals back to back.
I think there are two identifier shapes on the table that can’t both work, and I want to check I’m reading them right.
Jacky’s is {uri, resource}, where uri is a vendor URL or a URN. Nick’s is {type, value, url?}, where value is the raw identifier in canonical form and matching is exact string equality on (type, value).
That equality rule only works because value is canonicalized, hyphenless ISBN-13, which ISBN-10 converts to losslessly. I don’t think {uri, resource} can support it. The searchEditions example in Jacky’s post shows one book with three id params: a URN and two vendor URLs that don’t seem to align. Compare those as strings and you’ve got three books. Compare them any other way and you’re back to per-AppView normalization, which is what the quote from Nick in that same post says we shouldn’t be doing.
So I’d take {type, value, url} forward, with a required canonical form per type, and url kept for display and human disambiguation but out of the matching path entirely.
Jacky, am I missing something about how uri was meant to normalize? You may have had a resolution step in mind that I’ve skipped past.
The other place the two point in opposite directions is contributors as separate records joined by strongRef versus denormalized inline. Nick’s “the PDS is not a database” and Jacky’s contributor and publisher records can’t both be right, and I don’t think anyone’s picked.
For what it’s worth I don’t think it has to be either/or. pub.byline.defs#seriesMembership carries a strongRef and a denormalized name, so the record renders standalone and the ref is pure enrichment. If the target vanishes you lose depth of the record, not meaning. Editions could carry inline contributors for the day-after test and still point at richer contributor records where an AppView has them. Costs you a duplicated string.
Last thing, and this is support rather than argument. community.lexicon.book.compatibility is the best idea in Jacky’s post and I haven’t seen anyone pick it up. Progressive discovery beats probing endpoints and eating 501s, and it’s what lets a partial implementer join in honestly instead of claiming a surface it doesn’t have. I’d keep it mandatory as proposed.
Enjoying these threads. I want to stay involved in it, though my schedule’s unreliable and I’ve already dropped out once for two weeks. Don’t wait on me, carry on and I’ll catch up where I can and voice what I can.
I’ve got a longer argument about the supply side of this, authors rather than catalogues, but it’s a slightly different conversation and this is long enough already. I’ll try to pull it together and post later tonight.