Project:SunshinePPS Object Model (SOM)
"SunshinePPS Object Model" (SOM) refers to the model for structured data in the wiki. This data is reified in wiki pages (like everything in the wiki), with a structure imposed by the use of PageForms and Lua modules. PageForms are used to create and edit such pages, to enforce the structure and to provide affordances for users. The resulting pages invoke Lua modules to render themselves and to store their structured data as Semantic MediaWiki (SMW) properties and subobjects.
SOM type hierarchy
The SOM type hierarchy comprises classes of entities and attributes; an entity is a named "thing" in the world, and an attribute is a fact attached to an entity. Conversely, entities are named collections of facts. Entity instances are realized as wiki pages, and attributes are realized as SMW properties or subobjects attached associated to their entity pages.
For example, Rudolph Blue Elementary School is an instance of the School entity class, which contains facts such as its HasName attributes (its names at different points in time).
SOM Entity Classes
There are two entity types, differentiated only by page namespace:
- Page (
Module:SOM.meta.Page
)
- Entities represented by wiki pages in the main wiki namespace
- File (
Module:SOM.meta.File
)
- Entities in the File namespace, i.e., documents or media files
An entity class is defined by a Lua module (i.e., a page in the Module:
namespace) which invokes one of the above-listed meta
modules. In addition, three other pages will need to be created:
- a Template to structure and render the contents of instance pages;
- a Category to collect/categorize instance pages;
- a Form to define the interface for editing instance pages.
The contents for each of these pages is automatically generated by functions in the class's Lua module.
SOM Attribute Classes
Attributes are broadly typed as simple or composite:
- Simple Attribute (Module:SOM.meta.SimpleAttribute)
- A single value (a 1-tuple), which usually becomes a SMW property attached to the page. Simple Attributes are generally only useful for intrinsic/unchanging properties of an entity (e.g., the School District to which a School belongs)
- Composite Attribute (Module:SOM.meta.CompositeAttribute)
- Multiple correlated values (an n-tuple), which usually becomes an SMW subobject attached to the page.
- DateBounded Attribute (Module:SOM.meta.DateBoundedAttribute)
- A composite attribute which has start/end date bounds for its validity (e.g., a specific name for a School, since a school can change names over time)
- Organization-Person Role (Module:SOM.meta.DateBounded.Role.OrgPerson)
- A date-bounded relation between two entities, specifically between an Organization and a Person
Following SMW recommendations, most attribute names are short verb phrases. For example, HasBoardMeetingType
is an attribute attached to School Board Meeting
pages, used in the sense of "This school board meeting has the following board meeting type...".
SOM entities
List of existing or anticipated ("TBD") entity classes (organized by a category hierarchy):
- Person (TBD)
- Organization
- School (
Module:SOM.Page.School
) - School Board (TBD)
- School District (
Module:SOM.Page.School District
) - School District Suborganization
- District Department (TBD)
- District Team (TBD)
- Advisory Committee (TBD)
- Support Organization
- Parent Teacher Association (TBD)
- Parent Teacher Organization (TBD)
- Foundation (TBD)
- Ad Hoc Advocacy Group (TBD)
- School (
- Educational Program (TBD)
- Event
- Public Meeting
- School Board Meeting (
Module:SOM.Page.School Board Meeting
)
- School Board Meeting (
- Public Meeting
- Location
- Site
- Venue
- Property (e.g., real estate) (TBD)
- Public Record (
Module:SOM.File.Public Record
)
See [1] for a live list of "page" entity classes.
See [2] for a live list of "file" entity classes.
To find undefined entity classes that are wanted by wiki pages, look at Categories beginning with "Pages needing undefined SOM class"
SOM simple attributes
See [3] for a live list of simple (SOM.Simple.
) attribute classes.
SOM composite attributes
See [4] for a live list of generic composite (SOM.Composite.
) attribute classes.
See [5] for a live list of all date-bounded (SOM.DateBounded.
) attributes, including role attribute classes.
SOM roles
TBD
- Role
- Organization to Person Role
- Organization to Organization Role
- Organization to Place Role