SPL is based on the HL7 Reference Information Model (RIM) , which is like a toolkit of reusable data elements that can be used for creating data models in different domains. It uses universal data types including such high-level types as "physical quantity" (PQ) with intervals and even probability distributions, and "general timing specification" conceptualized as a set for points in time (QSET<TS>) and many others. Physical quantities use the Unified Codes for Units of Measure (UCUM) for units of measure. SPL has been designed such that it does not require modification of the XML schema for every extension although it is less generic than the RIM in an attempt to trade-off domain specificity and recognizable element names with generality. For example, the "processStep" element in SPL, which we use to represent reactions is just a refinement of the RIM class called "Act", and the "interactor" element which is used to link reactants and products to the processStep is called "participation" in the RIM. Every expression in the SPL schema is also in the RIM, i.e. the SPL schema is a constraint and refinement of the RIM. SPL uses domain-specific terminologies. SPL use cases are quite easily described in domain-specific implementation guides, mostly using example XML "snippets" along with validation procedures that are spelled out in plain English and encoded in Schematron (XPath) assertions to be automatically testable. Thus, new use cases can be supported quickly without breaking the conceptual backbone model. The Reference Information Mode (RIM) is a simple but powerful data schema, consisting of 5 top-level classes: Entity, Role, Participation, Act, and ActRelationship. It is like a general grammar for a language, consisting of nouns (Entities) and verbs (Acts) and grammatical glue to connect them. Entities represent physical objects, people, places, and things. Acts represent events, activities, interactions between the Entities participating in the Acts, linked to the Acts by Participation classes with a participation type specifying how the Entity participates in the Act (e.g., as performer, or subject, or consumable or durable material, etc.) The participations connect an Act not directly to an Entity but through a Role that is "played" by the Entity. For example: a Person (Entity) plays a Patient (Role) and subject (Participation) of a Surgery (Act) performed (Participation) by a Surgeon (Role) played by another Person (Entity).