- Created SHACL shapes for validating temporal consistency and bidirectional relationships in custodial collections and staff observations. - Implemented a Python script to validate RDF data against the defined SHACL shapes using the pyshacl library. - Added command-line interface for validation with options for specifying data formats and output reports. - Included detailed error handling and reporting for validation results.
144 lines
3.4 KiB
Markdown
144 lines
3.4 KiB
Markdown
# Quick Status: FeaturePlace Implementation Complete ✅
|
|
|
|
**Date**: 2025-11-22
|
|
**Status**: ✅ Complete
|
|
**Time**: ~45 minutes
|
|
|
|
---
|
|
|
|
## What We Built
|
|
|
|
### 1. FeatureTypeEnum (298 values)
|
|
**File**: `schemas/20251121/linkml/modules/enums/FeatureTypeEnum.yaml`
|
|
**Size**: 106 KB
|
|
|
|
Physical feature types from Wikidata:
|
|
- MANSION (Q1802963) - large dwelling house
|
|
- PARISH_CHURCH (Q16970) - place of Christian worship
|
|
- MUSEUM (Q33506) - institution housing collections
|
|
- MONUMENT (Q4989906) - commemorative structure
|
|
- CEMETERY (Q39614) - burial ground
|
|
- CASTLE (Q23413) - fortified building
|
|
- ...292 more values
|
|
|
|
### 2. FeaturePlace Class
|
|
**File**: `schemas/20251121/linkml/modules/classes/FeaturePlace.yaml`
|
|
**Size**: 12 KB
|
|
|
|
Classifies physical feature types for nominal place references.
|
|
|
|
**Key Concept**:
|
|
- CustodianPlace = WHERE (nominal reference: "Rijksmuseum")
|
|
- FeaturePlace = WHAT TYPE (classification: MUSEUM building)
|
|
|
|
**Required Fields**:
|
|
- `feature_type`: FeatureTypeEnum value
|
|
- `classifies_place`: Link to CustodianPlace
|
|
- `was_derived_from`: Source observations
|
|
|
|
**Optional Fields**:
|
|
- `feature_name`: Name/label
|
|
- `feature_description`: Physical characteristics
|
|
- `feature_note`: Classification rationale
|
|
- `valid_from/valid_to`: Temporal validity
|
|
|
|
### 3. Updated CustodianPlace
|
|
**File**: `schemas/20251121/linkml/modules/classes/CustodianPlace.yaml`
|
|
|
|
**Added**:
|
|
- Import: `./FeaturePlace`
|
|
- Slot: `has_feature_type` (optional link to FeaturePlace)
|
|
- Updated example with feature type classification
|
|
|
|
---
|
|
|
|
## Relationship Model
|
|
|
|
```
|
|
CustodianPlace ("Rijksmuseum")
|
|
↓ has_feature_type (optional)
|
|
FeaturePlace
|
|
├─ feature_type: MUSEUM
|
|
├─ feature_description: "Neo-Gothic building (1885)"
|
|
└─ classifies_place → back to CustodianPlace
|
|
```
|
|
|
|
**Bidirectional**:
|
|
- CustodianPlace → FeaturePlace: `has_feature_type` (optional)
|
|
- FeaturePlace → CustodianPlace: `classifies_place` (required)
|
|
|
|
---
|
|
|
|
## Examples
|
|
|
|
### Museum Building
|
|
```yaml
|
|
CustodianPlace:
|
|
place_name: "Rijksmuseum"
|
|
has_feature_type:
|
|
feature_type: MUSEUM
|
|
feature_description: "Neo-Gothic museum building (1885)"
|
|
```
|
|
|
|
### Historic Mansion
|
|
```yaml
|
|
CustodianPlace:
|
|
place_name: "het herenhuis in de Schilderswijk"
|
|
has_feature_type:
|
|
feature_type: MANSION
|
|
feature_description: "17th-century canal mansion"
|
|
```
|
|
|
|
### Church Archive
|
|
```yaml
|
|
CustodianPlace:
|
|
place_name: "Oude Kerk Amsterdam"
|
|
has_feature_type:
|
|
feature_type: PARISH_CHURCH
|
|
feature_description: "Medieval church (1306)"
|
|
```
|
|
|
|
---
|
|
|
|
## Ontology Alignment
|
|
|
|
**FeaturePlace**:
|
|
- `crm:E27_Site` (CIDOC-CRM physical site)
|
|
- `schema:LandmarksOrHistoricalBuildings` (Schema.org)
|
|
|
|
**CustodianPlace**:
|
|
- `crm:E53_Place` (CIDOC-CRM conceptual place)
|
|
- `schema:Place` (Schema.org)
|
|
|
|
**Distinction**: E27_Site (physical) vs E53_Place (nominal/conceptual)
|
|
|
|
---
|
|
|
|
## Statistics
|
|
|
|
- **Total enum values**: 298
|
|
- **Top hypernym**: Heritage sites (144, 48.3%)
|
|
- **Files created**: 2
|
|
- **Files modified**: 1
|
|
- **Total size**: 118 KB
|
|
|
|
---
|
|
|
|
## Next Steps
|
|
|
|
1. ✅ **Validate schemas**: Run `linkml-validate`
|
|
2. ⏳ **Generate RDF**: Use `gen-owl` for RDF serialization
|
|
3. ⏳ **Update main schema**: Add imports
|
|
4. ⏳ **Create test instances**: YAML validation examples
|
|
|
|
---
|
|
|
|
## Documentation
|
|
|
|
📄 **Full report**: `FEATUREPLACE_IMPLEMENTATION_COMPLETE.md`
|
|
📄 **Extraction report**: `README_F_EXTRACTION.md`
|
|
📄 **Source data**: `data/wikidata/GLAMORCUBEPSXHFN/hyponyms_curated_full_f.yaml`
|
|
|
|
---
|
|
|
|
**Status**: ✅ Ready for integration
|