his book is about checking the correctness of programs that can access semantic data. Although the flexibility of semantic data models is one of their greatest strengths, it can lead programmers to accidentally fail to account for unintuitive edge cases, leading to run-time errors or unintended side-effects during program execution. A program may even run for a long time before such an error occurs and the program crashes. Providing a type system is an established methodology for proving the absence of run-time errors in programs without requiring execution. The book defines type systems that can detect and avoid such run-time errors based on schema languages available for the Semantic Web. Using the Web Ontology Language (OWL) and its theoretic underpinnings i.e. description logics, and the Shapes Constraint Language (SHACL) in particular, the book defines systems that can provide type-safe data access to semantic data graphs. The book is divided into 3 parts: Part I contains an introduction and preliminaries; Part II covers type systems for the Semantic Web; and Part III includes related work and conclusions.