jackwener/OpenCLI · warning · EmptyResultError

dblp PID ${pid}${resolvedName ? ` (${resolvedName})` : ''} h

Error message

dblp PID ${pid}${resolvedName ? ` (${resolvedName})` : ''} has no publications.

What it means

EmptyResultError thrown when the dblp record XML fetched for a PID (/pid/<pid>.xml) yields zero publication records via splitRecords. The author page resolved fine but contains no publication entries.

Source

Thrown at clis/dblp/author.js:112

                throw new EmptyResultError(
                    'dblp author',
                    `No dblp author matched "${name}". Try a different spelling, or pass --pid to bypass author search.`,
                );
            }
            const top = pickTopAuthor(hits);
            pid = extractPidFromAuthorHit(top);
            if (!pid) {
                throw new CommandExecutionError(
                    `dblp author search for "${name}" returned a hit without a PID URL`,
                    'dblp may have changed its author-search response shape; retry or pass --pid manually.',
                );
            }
            resolvedName = decodeXmlEntities(String(top?.info?.author ?? '')).trim();
        }
        const xml = await dblpFetchXml(`/pid/${pid}.xml`, `dblp pid ${pid}`);
        const records = splitRecords(xml);
        if (!records.length) {
            throw new EmptyResultError(
                'dblp author',
                `dblp PID ${pid}${resolvedName ? ` (${resolvedName})` : ''} has no publications.`,
            );
        }
        return records.slice(0, limit).map((recordXml, i) => {
            const row = recordXmlToRow(`<root>${recordXml}</root>`);
            return {
                rank: i + 1,
                key: row.key || extractRecordKey(recordXml),
                title: row.title,
                authors: row.authors,
                venue: row.venue,
                year: row.year,
                type: row.type,
                doi: row.doi,
                pid,
                url: row.open_access_url || row.dblp_url,
            };

View on GitHub (pinned to 49907e53dc)

Solutions

  1. Verify the PID on dblp.org in a browser — check the author page actually lists publications
  2. If the profile is genuinely empty, search for the author's publications via `dblp search <query>` instead
  3. Double-check the PID isn't pointing at the wrong person/venue record
  4. Retry later in case dblp indexing was in progress

Example fix

// before
opencli dblp author --pid 199/0001   # profile with no pubs
// Error: dblp PID 199/0001 (Jane Doe) has no publications.
// after
opencli dblp search 'Jane Doe machine learning'
Defensive patterns

Strategy: fallback

Validate before calling

// Verify the PID page has content before expecting publications.
const res = await fetch(`https://dblp.org/pid/${pid}.xml`);
if (!res.ok) throw new Error(`PID ${pid} not found on dblp`);

Try / catch

try {
  rows = await dblpAuthor({ pid });
} catch (err) {
  if (/has no publications/.test(err.message)) {
    rows = []; // genuinely empty profile
  } else throw err;
}

Prevention

When it happens

Trigger: Calling `dblp author --pid <pid>` where the fetched author XML parses to an empty record list — an author profile with no indexed publications, or a PID that points to an empty/vential profile.

Common situations: Author recently created their dblp profile with nothing indexed yet; extremely low --limit? no — actually valid-but-empty profiles; PID points to a person record with publications under a different entity; dblp serving a stripped-down response.

Understand the failure class

Background: EmptyResultError / "no results found": when an API or scraper succeeds but returns zero rows — this error's family across 9 libraries.

Related errors


AI-assisted analysis of jackwener/OpenCLI@49907e53dc (2026-08-29). Data as JSON: /api/errors/c10379055a22a64f. Report an issue: GitHub.