So far, we haven’t leveraged one of the most powerful and important features of GraphQL’s type system—abstract types—which allow us to represent multiple concrete types in a single GraphQL field. Similarly, we also haven’t really made use of an important feature of the property graph model—relationship properties—which allow us to associate attributes with the relationships that connect nodes rather than just nodes themselves. In this chapter, we will see how to leverage the abstract union and interface types supported by GraphQL. We will also make use of relationship properties and, along the way, introduce GraphQL Connection objects and pagination methods. We will move away from our business review application and simplify our data model, focusing instead on an API for a simple online store that sells two types of products: books and videos.