glam/schemas/20251121/linkml/modules/classes/SearchAPI.yaml
kempersc fc405445c6 Refactor and update schema definitions
- Removed obsolete slots: `has_or_had_custodian_observation`, `provider`, and `specificity_annotation`.
- Updated `has_or_had_score` slot to use `SpecificityScore` class and modified its description and examples.
- Added new slots: `end_seconds`, `end_time`, `has_archive_path`, `has_or_had_custodian_name`, `protocol_name`, and `protocol_version`.
- Introduced a script `check_annotation_types.py` to validate the presence and structure of `custodian_types` in YAML files.
- Added a script `update_specificity.py` to automate updates related to `SpecificityAnnotation` to `SpecificityScore`.
2026-02-01 19:55:38 +01:00

73 lines
3.3 KiB
YAML

id: https://nde.nl/ontology/hc/class/SearchAPI
name: search_api
title: SearchAPI Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
dcat: http://www.w3.org/ns/dcat#
dcterms: http://purl.org/dc/terms/
schema: http://schema.org/
hydra: http://www.w3.org/ns/hydra/core#
xsd: http://www.w3.org/2001/XMLSchema#
imports:
- linkml:types
- ../enums/HTTPMethodEnum
- ../enums/PaginationMethodEnum
- ../enums/SearchResponseFormatEnum
- ../metadata
- ../slots/has_or_had_score
- ../slots/response_format
classes:
SearchAPI:
is_a: DataServiceEndpoint
class_uri: hc:SearchAPI
description: "REST/JSON search API endpoint for heritage collection discovery.\n\
\n**Purpose:**\n\nModels search APIs that provide programmatic access to collection\
\ search\nfunctionality. These APIs enable:\n- Custom search interface development\n\
- Integration with aggregation platforms\n- Automated data discovery\n- Faceted\
\ search and filtering\n\n**Common Patterns:**\n\nHeritage search APIs typically\
\ support:\n- **Full-text search**: Query across all fields\n- **Field-specific\
\ search**: Query specific metadata fields\n- **Faceted search**: Filter by\
\ category, date, type, etc.\n- **Pagination**: Navigate large result sets\n\
- **Sorting**: Order results by relevance, date, etc.\n\n**Example - Nationaal\
\ Archief Search API:**\n\n```yaml\nsearch_api:\n endpoint_name: \"Nationaal\
\ Archief Search API\"\n endpoint_url: \"https://www.nationaalarchief.nl/onderzoeken/api/zoeken\"\
\n protocol: REST\n query_parameters:\n - name: \"q\"\n type: \"string\"\
\n description: \"Full-text search query\"\n - name: \"from\"\n \
\ type: \"integer\"\n description: \"Pagination offset\"\n - name:\
\ \"size\"\n type: \"integer\"\n description: \"Results per page\"\
\n pagination_method: OFFSET_LIMIT\n max_results_per_page: 100\n response_format:\
\ JSON\n supports_facets: true\n facet_fields: [\"type\", \"periode\", \"\
archief\"]\n```\n\n**Response Structure:**\n\nMost heritage search APIs return\
\ JSON with:\n- `total`: Total number of matching records\n- `results`/`items`/`records`:\
\ Array of result objects\n- `facets`: Aggregation counts for filtering\n- `pagination`:\
\ Links or cursors for paging\n\n**See Also:**\n\n- OpenSearch: https://opensearch.org/\n\
- Hydra API vocabulary: https://www.hydra-cg.com/\n"
comments:
- Primary interface for programmatic collection discovery
- Most heritage institutions expose REST/JSON search APIs
- Consider rate limits and pagination for large-scale harvesting
see_also:
- https://opensearch.org/
- https://www.hydra-cg.com/spec/latest/core/
slots:
- has_or_had_score
- has_or_had_url
- response_format
annotations:
specificity_score: 0.1
specificity_rationale: Generic utility class/slot created during migration
custodian_types: '[''*'']'
SearchQueryParameter:
class_uri: hydra:IriTemplateMapping
description: 'Describes a query parameter supported by a search API.
Documents the parameter name, type, whether it''s required,
and its purpose.
'
slots:
- has_or_had_score
- name