Data and machine access

Searchplex ID publishes static, machine-readable registry data for term resolution, linked-data use, and bulk reuse.

The data interface is file-based rather than a live query API. Files are designed to be cacheable, crawlable, and easy to consume from scripts, agents, search systems, and documentation pipelines.

Current release: 2026.09 · 145 published concepts · CC0 1.0

Resolve a term

Resolve a single term with /resolve/{term}. For batch or offline resolution, download /data/resolver.json.

Example: https://id.searchplex.net/resolve/RRF resolves to https://id.searchplex.net/reciprocal-rank-fusion/.

The endpoint and offline resolver use the same normalization rule and the same generated resolver index. /data/resolver.json has two top-level sections:

Normalize the input term the same way the site search does: Unicode normalize, lowercase, trim, treat hyphens as spaces, and collapse repeated whitespace. Look up the normalized key in identity first, then use suggestions for possible matches when no identity match exists.

A resolver match returns a canonical concept ID. Construct the stable URI as https://id.searchplex.net/{id}/, or fetch /{id}.json for the full record.

{
  "identity": {
    "aqe": { "id": "query-expansion", "matchType": "altLabel" }
  },
  "suggestions": {
    "candidate generation": [
      { "id": "candidate-retrieval", "usage": "communityPreferred", "community": "industry" }
    ]
  }
}

Batch resolution

For batch work, download resolver.json once and resolve many terms locally. This is the recommended v1 pattern for processing papers, documentation, glossaries, logs, prompts, or code comments.

const resolver = await fetch("https://id.searchplex.net/data/resolver.json")
  .then((response) => response.json());

const normalize = (value) => String(value)
  .normalize("NFKC")
  .toLowerCase()
  .trim()
  .replace(/[‐-―−]/g, " ")
  .replace(/\s+/g, " ");

const terms = ["AQE", "candidate generation", "RRF"];
const resolved = terms.map((term) => {
  const key = normalize(term);
  const identity = resolver.identity[key];
  if (identity) {
    return {
      term,
      status: "identity",
      id: identity.id,
      uri: `https://id.searchplex.net/${identity.id}/`,
      matchType: identity.matchType
    };
  }
  return {
    term,
    status: "suggestion",
    matches: resolver.suggestions[key] ?? []
  };
});

Batch clients should keep identity and suggestions separate. An identity match can be used as the canonical ID. A suggestion should usually be shown as a possible terminology match with its usage and community.

Search concepts

Use the search index for lightweight lookup across preferred labels, alternative labels, observed terms, definitions, scope notes, and concept kind.

Fetch one concept

Each published concept has a canonical human page and suffix-based machine representations.

Bulk exports

Bulk files contain the generated public registry projection. Use the manifest to check record counts and hashes for release artifacts.

Choose a format: JSON is the easiest general-purpose format; JSONL is useful for streaming and batch processing; JSON-LD is for Linked Data and RDF-compatible tooling; Turtle is for RDF graph tooling.

Linked data

The concept scheme and local vocabulary are also published in machine-readable forms. The local vocabulary includes lightweight RDFS/OWL declarations for Searchplex-specific predicates.

Stability

Published canonical concept IDs are intended to remain dereferenceable. Deprecated concepts remain available as tombstones rather than disappearing.

Machine-readable files are generated from the same canonical concept records as the human pages. Registry data is available under CC0 1.0.