---
# System prepended metadata

title: SOLR Core Records Table Design

---

# SOLR Core Records Table Design
```
        transformed_record = {
            "$schema": "../iSamplesSchemaBasicSMR.json",
            "@id": string, 
            "label": string 
            "sampleidentifier": string
            "description": 
                string 
                text copyField from string (https://solr.apache.org/guide/8_8/copying-fields.html)
            "hasContextCategory": multivalue string
            "hasMaterialCategory": multivalue string 
            "hasSpecimenCategory": multivalue string
            "keywords": multivalue string
            "producedBy": {
                "label": string
                "description":
                    string 
                    text copyField from string (https://solr.apache.org/guide/8_8/copying-fields.html)               
                "hasFeatureOfInterest": string
                "responsibility": multivalue string
                "resultTime": date time
                "samplingSite": {
                    "description": 
                    "label": 
                    "location": {
                        "elevation": 
                            - float
                        "latitude": 
                            - float
                            - LatLonPointSpatialField (https://solr.apache.org/guide/8_8/spatial-search.html)
                        "longitude":
                            - float
                            - LatLonPointSpatialField (https://solr.apache.org/guide/8_8/spatial-search.html)
                            
                    },
                    "placeName": multivalue string
                },
            },
            "registrant": multivalue string
            "samplingPurpose": multivalue string
        }
```

- Use string for any literal values
- Multivalued fields for any lists
- Flatten core record structure by combining names

Latitude and longitude also stored as `LatLonPointSpatialField`.

Preferred structure in core record should probably be GeoJSON. https://geojson.org/

Responsibility is a strange one since it encodes both name and role into a single string value, e.g. ["Evans_Leigh,,Collector","Andra Bobbitt,,Sample Owner"]
