1. Description Logics (DL)
1.1. Concepts, roles, individuals
1.2. Knowledge base
1.2.1. ABox ("data axioms")
1.2.2. TBox ("schema axioms")
1.3. Formal syntax & semantics
1.3.1. Allows for reasoning
1.3.1.1. satisfiability
1.3.1.2. subsumption/equivalence
1.3.1.3. consistency
1.3.1.4. instance checking (classification)
1.3.2. "ontological reasoning"
1.3.2.1. open world assumption (vs closed world assumption often made in linguistic setting)
1.3.2.2. no unique name assumption (which is often made in linguistic setting)
1.3.2.3. axioms act as inferences rules (vs as constraints in linguistic setting)
1.4. Family of languages, i.e. many "levels" with different extensions/supported features
1.4.1. ALC
1.4.2. ...
1.4.3. SROIQ
2. Web Ontology Language (OWL)
2.1. Based on DL and RDFS
2.2. Classes = DL Concepts Properties = DL Roles
2.3. Multiple syntaxes
2.3.1. Interchange
2.3.1.1. RDF/XML
2.3.1.2. ...
2.3.2. Human readable
2.3.2.1. Functional style
2.3.2.2. Manchester syntax
2.3.2.3. ...
2.4. Tools
2.4.1. Protégé
2.4.1.1. Can be considered as industry standard
2.4.1.2. Many plugins have been developed for additional functionality
2.4.1.3. Great reasoner integration
2.4.2. Reasoners
2.4.2.1. HermiT
2.4.2.2. FaCT++
2.4.2.3. List of Reasoners | OWL research at the University of Manchester
2.4.3. OWLReady2
2.4.3.1. With a bit of library abuse, can load in-memory ontologies created using RDFLib
2.4.3.2. Makes ontology creation very pythonic
2.4.3.3. Via annotations can "rename" properties to produce more readable python code.
2.4.3.3.1. These annotations can be set in an ontology editor (e.g. Protégé) and then referenced by the python code extending the ontology
2.4.3.4. Provides handy "close_world" function to make closed world reasoning easier in situations where it may be needed.
2.4.3.5. In terms of ontology creation/editing capabilities it's as powerful as Protégé
3. Resource Description Framework (RDF)
3.1. Makes statements about resources ~ “stores data” using triples
3.1.1. (subject, predicate, object)
3.1.2. stored in a triplestore
3.1.3. a collection of triples ~ a labelled, directed graph
3.2. Can be queried using SPARQL (Protocol and RDF Query Language)
3.2.1. SPARQL 1.1 Query language only allows information retrieval (read)
3.2.2. SPARQL 1.1 Update is an extension that also allows create and delete queries
3.3. RDF Schema (RDFS)
3.3.1. semantic extension of RDF
3.3.2. provides mechanisms for describing groups of related resources and the relationships between these resources.
3.3.2.1. domain
3.3.2.2. range
3.3.2.3. type
3.3.2.4. subClassOf
3.3.2.5. ...
3.3.3. RIF/SWRL?
3.4. SHACL (Shapes Constraint Language)
3.4.1. RDF vocabulary for validating RDF graphs against a set of conditions which are provided as a set of RDF graphs called "shapes"
3.4.2. SHACL shape graphs may be used for a variety of purposes beside validation, including user interface building, code generation and data integration.
3.5. Tools
3.5.1. RDFLib
3.5.1.1. Full CR(U)D support
3.5.1.1.1. via it's own API
3.5.1.1.2. via SPARQL (update) queries
3.5.1.2. Defaults to in-memory storage but provides Store API which can be (and has been) extended to support on-disk persistence
3.5.1.2.1. rdflib-sqlalchemy
3.5.1.2.2. rdflib-sqlite
3.5.1.2.3. rdflib-postgresql
3.5.1.2.4. ...
3.5.1.3. Parses/serializes most established RDF formats
3.5.1.4. pySHACL