We use cookies to distinguish you from other users and to provide you with a better experience on our websites. Close this message to accept cookies or find out how to manage your cookie settings.
To save content items to your account,
please confirm that you agree to abide by our usage policies.
If this is the first time you use this feature, you will be asked to authorise Cambridge Core to connect with your account.
Find out more about saving content to .
To save content items to your Kindle, first ensure [email protected]
is added to your Approved Personal Document E-mail List under your Personal Document Settings
on the Manage Your Content and Devices page of your Amazon account. Then enter the ‘name’ part
of your Kindle email address below.
Find out more about saving to your Kindle.
Note you can select to save to either the @free.kindle.com or @kindle.com variations.
‘@free.kindle.com’ emails are free but can only be saved to your device when it is connected to wi-fi.
‘@kindle.com’ emails can be delivered even when you are not connected to wi-fi, but note that service fees apply.
In this chapter we deal with the way in which RDF descriptions are stored, processed and queried as well as the applications and languages involved in the process.
In Section 3.1 we describe how to make RDF meta-information on the web available for search engines. Next, in Section 3.2, we give an overview of development tools which can be used to parse and manage RDF-based sources. In Section 3.3 we describe RDF query languages and show why XML query languages are not suitable for this purpose. Subsequently, in Section 3.4, we discuss the possible reasoning tasks involved in answering RDF queries. Finally, in Section 3.5, we describe problems which arise in the course of optimising RDF queries and outline possible solutions.
RDF descriptions on the web
The RDF language is a generic framework that helps to associate meta-information with resources in a uniform way. RDF is by no means limited to the web, because anything that is identified by a URI can be used in RDF statements. However, as we saw in the previous chapter, practically anything can have a URI: a person, a rucksack, a house etc. This allows us to use RDF in environments other than the web, for example, traditional databases, information integration and other knowledge-intensive systems.
The Semantic Web is a new area of research and development in the field of computer science that aims to make it easier for computers to process the huge amount of information on the web, and indeed other large databases, by enabling them not only to read, but also to understand the information. Based on successful courses taught by the authors, and liberally sprinkled with examples and exercises, this comprehensive textbook describes not only the theoretical issues underlying the Semantic Web, but also algorithms, optimisation ideas and implementation details. The book will therefore be valuable to practitioners as well as students, indeed to anyone who is interested in Internet technology, knowledge engineering or description logics. Supplementary materials available online include the source code of program examples and solutions to selected exercises.
At the heart of this short introduction to category theory is the idea of a universal property, important throughout mathematics. After an introductory chapter giving the basic definitions, separate chapters explain three ways of expressing universal properties: via adjoint functors, representable functors, and limits. A final chapter ties all three together. The book is suitable for use in courses or for independent study. Assuming relatively little mathematical background, it is ideal for beginning graduate students or advanced undergraduates learning category theory for the first time. For each new categorical concept, a generous supply of examples is provided, taken from different parts of mathematics. At points where the leap in abstraction is particularly great (such as the Yoneda lemma), the reader will find careful and extensive explanations. Copious exercises are included.
Separation logic is the twenty-first-century variant of Hoare logic that permits verification of pointer-manipulating programs. This book covers practical and theoretical aspects of separation logic at a level accessible to beginning graduate students interested in software verification. On the practical side it offers an introduction to verification in Hoare and separation logics, simple case studies for toy languages, and the Verifiable C program logic for the C programming language. On the theoretical side it presents separation algebras as models of separation logics; step-indexed models of higher-order logical features for higher-order programs; indirection theory for constructing step-indexed separation algebras; tree-shares as models for shared ownership; and the semantic construction (and soundness proof) of Verifiable C. In addition, the book covers several aspects of the CompCert verified C compiler, and its connection to foundationally verified software analysis tools. All constructions and proofs are made rigorous and accessible in the Coq developments of the open-source Verified Software Toolchain.
Sets and functions are ubiquitous in mathematics. You might have the impression that they are most strongly connected with the pure end of the subject, but this is an illusion: think of probability density functions in statistics, data sets in experimental science, planetary motion in astronomy, or flow in fluid dynamics.
Category theory is often used to shed light on common constructions and patterns in mathematics. If we hope to do this in an advanced context, we must begin by settling the basic notions of set and function. That is the purpose of the first section of this chapter.
The definition of category mentions a ‘collection’ of objects and ‘collections’ of maps. We will see in the second section that some collections are too big to be sets, which leads to a distinction between ‘small’ and ‘large’ collections. This distinction will be needed later, most prominently for the adjoint functor theorems (Chapter 6).
The final section takes a historical look at set theory. It also explains why the approach to sets taken in this chapter is more relevant to most of mathematics than the traditional approach is. None of this section is logically necessary for anything that follows, but it may provide useful perspective.
I do not assume that you have encountered axiomatic set theory of any kind.
Limits, and the dual concept, colimits, provide our third approach to the idea of universal property.
Adjointness is about the relationships between categories. Representability is a property of set-valued functors. Limits are about what goes on inside a category.
The concept of limit unifies many familiar constructions in mathematics. Whenever you meet a method for taking some objects and maps in a category and constructing a new object out of them, there is a good chance that you are looking at either a limit or a colimit. For instance, in group theory, we can take a homomorphism between two groups and form its kernel, which is a new group. This construction is an example of a limit in the category of groups. Or, we might take two natural numbers and form their lowest common multiple. This is an example of a colimit in the poset of natural numbers, ordered by divisibility.
Limits: definition and examples
The definition of limit is very general. We build up to it by first examining some particularly useful types of limit: products, equalizers, and pullbacks.
Products
Let X and Y be sets. The familiar cartesian product X χ Y is characterized by the property that an element of X χ Y is an element of X together with an element of Y.
We have approached the idea of universal property from three different angles, producing three different formalisms: adjointness, representability, and limits. In this final chapter, we work out the connections between them.
In principle, anything that can be described in one of the three formalisms can also be described in the others. The situation is similar to that of cartesian and polar coordinates: anything that can be done in polar coordinates can in principle be done in cartesian coordinates, and vice versa, but some things are more gracefully done in one system than the other.
In comparing the three approaches, we will discover many of the fundamental results of category theory. Here are some highlights.
• Limits and colimits in functor categories work in the simplest possible way.
• The embedding of a category A into its presheaf category [Aop, Set] preserves limits (but not colimits).
• The representables are the prime numbers of presheaves: every presheaf can be expressed canonically as a colimit of representables.
• A functor with a left adjoint preserves limits. Under suitable hypotheses, the converse holds too.
• Categories of presheaves [Aop, Set] behave very much like the category of sets, the beginning of an incredible story that brings together the subjects of logic and geometry.
A category is a system of related objects. The objects do not live in isolation: there is some notion of map between objects, binding them together.
Typical examples of what ‘object’ might mean are ‘group’ and ‘topological space’, and typical examples of what ‘map’ might mean are ‘homomorphism’ and ‘continuous map’, respectively. We will see many examples, and we will also learn that some categories have a very different flavour from the two just mentioned. In fact, the ‘maps’ of category theory need not be anything like maps in the sense that you are most likely to be familiar with.
Categories are themselves mathematical objects, and with that in mind, it is unsurprising that there is a good notion of ‘map between categories’. Such maps are called functors. More surprising, perhaps, is the existence of a third level: we can talk about maps between functors, which are called natural transformations. These, then, are maps between maps between categories.
In fact, it was the desire to formalize the notion of natural transformation that led to the birth of category theory. By the early 1940s, researchers in algebraic topology had started to use the phrase ‘natural transformation’, but only in an informal way. Two mathematicians, Samuel Eilenberg and Saunders Mac Lane, saw that a precise definition was needed. But before they could define natural transformation, they had to define functor; and before they could define functor, they had to define category. And so the subject was born.
This is an advanced 2001 textbook on modal logic, a field which caught the attention of computer scientists in the late 1970s. Researchers in areas ranging from economics to computational linguistics have since realised its worth. The book is for novices and for more experienced readers, with two distinct tracks clearly signposted at the start of each chapter. The development is mathematical; prior acquaintance with first-order logic and its semantics is assumed, and familiarity with the basic mathematical notions of set theory is required. The authors focus on the use of modal languages as tools to analyze the properties of relational structures, including their algorithmic and algebraic aspects, and applications to issues in logic and computer science such as completeness, computability and complexity are considered. Three appendices supply basic background information and numerous exercises are provided. Ideal for anyone wanting to learn modern modal logic.