I'd like to apologise to those with whom I've had recent conversations about linguistics, logic, and ontologies, for brushing off the relevance of the latter topics to the former. It seems these topics are more deeply intertwined than I had previously realised.
• The field of logic emerged as a means of studying how humans reason using natural language. Logic is irrevocably tied to the structure of natural language, and therefore it seems foolish to try to add natural language to a programming system without basing it on logic.
• Ontology is the study of categories and relationships. Ontology languages like OWL are actually based on Description Logic (I was surprised!), which could be perceived as a type system based on first-order logic. This gives us a formal way of conceptualising entities and have the computer check that a program is going to respect that conceptualisation.
I had been dissuaded from reading into the use of ontologies in information systems because most resources I encountered about it are about the "Semantic Web"; I had equated the two. I'm interested merely in programming systems, and accordingly I have no interest in trying to make or support global standards for the categorisation of information. But the fundamental idea of ontology is sound: it seems like a bridge between natural language, logic, and type systems. I'd be a fool to ignore it given I'm designing a logic programming system.
Next up: Several weeks studying the interplay between logic, natural language, ontologies, and type systems!