Position is defined:
store = EntityStore["USCounty" -> <|
"Entities" -> countyEntities,
"Properties" -> <|
"ParentEntity" -> <|
"Label" -> "Parent entity"
|>,
"FIPSCode" -> <|
"DefaultFunction" -> (#["ParentEntity"]["FIPSCode"] &),
"Label" -> "County FIPS code"
|>,
"Polygon" -> <|
"DefaultFunction" -> (#["ParentEntity"]["Polygon"] &),
"Label" -> "Polygon"
|>,
"Position" -> <|
"DefaultFunction" -> (#["ParentEntity"]["Position"] &),
"Label" -> "Position"
|>,
"Latitude" -> <|
"DefaultFunction" -> (#["ParentEntity"]["Latitude"] &),
"Label" -> "Latitude"
|>,
"Longitude" -> <|
"DefaultFunction" -> (#["ParentEntity"]["Longitude"] &),
"Label" -> "Longitude"
|>,
"HasPolygon" -> <|
"DefaultFunction" -> (#["ParentEntity"]["HasPolygon"] &),
"Label" -> "Has polygon?"
|>,
"Name" -> <|
"DefaultFunction" -> (#["ParentEntity"]["Name"] &),
"Label" -> "Name"
|>
|>,
"EntityClasses" -> <|
"Alaska" -> <|
"Entities" -> ("ParentEntity" -> (MatchQ[#,
Entity[_, {_, "Alaska", _}]] &)),
"Label" -> Style["Alaska", Bold]
|>,
"Hawaii" -> <|
"Entities" -> ("ParentEntity" -> (MatchQ[#, Entity[_, {_, "Hawaii", _}]] &)),
"Label" -> Style["Hawaii", Bold]
|>,
"Mainland" -> <|
"Entities" -> ("ParentEntity" -> (MatchQ[#, Entity[_, {_, Except["Alaska" | "Hawaii"], _}]] &)),
"Label" -> Style["Mainland", Bold]|>
|>
|>];
I'm still a learner in this Wolfram thing, but I have a background in object-oriented programming, so I'm always thinking in "interfaces" that needs to be implemented. And that is what I currently don't understand with the Wolfram knowledge framework. Why is the "interface" to do all the geo-stuff not described? Some functions obviously need "Position" (e.g. GeoGraphics), but others need more. But what is this "more"? Or is this not the idea of the framework that everyone can build own EntityStores which gives back entities that can be used together with the existing functions and other Entities?