- 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.
3.4 KiB
3.4 KiB
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 valueclassifies_place: Link to CustodianPlacewas_derived_from: Source observations
Optional Fields:
feature_name: Name/labelfeature_description: Physical characteristicsfeature_note: Classification rationalevalid_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
CustodianPlace:
place_name: "Rijksmuseum"
has_feature_type:
feature_type: MUSEUM
feature_description: "Neo-Gothic museum building (1885)"
Historic Mansion
CustodianPlace:
place_name: "het herenhuis in de Schilderswijk"
has_feature_type:
feature_type: MANSION
feature_description: "17th-century canal mansion"
Church Archive
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
- ✅ Validate schemas: Run
linkml-validate - ⏳ Generate RDF: Use
gen-owlfor RDF serialization - ⏳ Update main schema: Add imports
- ⏳ 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