- From: Anthony Moretti <anthony.moretti@gmail.com>
- Date: Sat, 16 Jun 2018 20:41:45 -0700
- To: Thad Guidry <thadguidry@gmail.com>
- Cc: public-schemaorg@w3.org
- Message-ID: <CACusdfSYW=D+wSA-Uu3g7yDf3q_ZJVhx38x0wP9BtgovMun0Qg@mail.gmail.com>
If it helps, I've tried to put together my suggestions from last week on making Schema easier. I realize a lot of people will disagree, and realize most of it is unlikely to go through. I do hope though that in the spirit of this thread it might help improve people's understanding of Schema, and who knows maybe even inform future tweaks. I welcome any feedback or questions. All types could ideally exist in pairs, following a naming pattern such as: *BaseType* *BaseTypeType* This pattern scales in the rare instances required: *BaseTypeTypeType* etc. The "some or all" test for subtyping should be strictly followed: If, and only if, *all* instances of one type are instances of another is it a subtype. Types without a clearly agreed meaning should be removed and their properties moved to the parent type. Time-wasting debates have been caused because of the lack of clear meaning of the following types: *CreativeWork* *Intangible* *Product* Combining the above points results in an arguably easier to learn, simpler to use, and (importantly) more scalable type hierarchy. A partial example of what it might look like (showing several subtypes of Place to demonstrate how it scales): *Thing* * Action* * Article* * Book* * Event* * Game* * Language* * Movie* * MusicRecording* * Organization* * Painting* * Person* * Place* * Airport* * Bridge* * Hospital* * Museum* * Park* * Reservation* * ThingType* * ActionType* * ArticleType* * BookType* * EventType* * GameType* * LanguageType* * MovieType* * MusicRecordingType* * OrganizationType* * PaintingType* * PersonType* * PlaceType* * AirportType* * BridgeType* * HospitalType* * MuseumType* * ParkType* * ReservationType* * TicketType* * VehicleType* * WebPageType* * WebSiteType* * Ticket* * Vehicle* * WebPage* * WebSite* For greatest flexibility, and in the spirit of volcanoes-can-have-fax-numbers, a guideline similar to the rule of three <https://en.wikipedia.org/wiki/Rule_of_three_(computer_programming)> can then be applied: Whenever a property is used on more than two types move it to the parent type. Moving properties higher in the type hierarchy improves the flexibility of Schema, and might address some of the cross-domain concerns people have. Loading properties onto Thing is a good idea in my view, it achieves maximum reuse. A partial example of what it might look like: *Thing* height width depth weight material color offers predecessorOf successorTo variantOf *Event* endDate startDate *Person* additionalName familyName givenName * ThingType* heightOfTypicalInstances widthOfTypicalInstances depthOfTypicalInstances weightOfTypicalInstances materialOfTypicalInstances colorOfTypicalInstances offersOfTypicalInstances predecessorTypeOf successorTypeTo variantTypeOf The following are some other minor suggestions: When naming things, the underlying model combined with the naming convention above is enough to provide type-instance distinctions, so words like the following are ideally avoided in type names: Class Category Description Entity Individual Instance Model Object Occurence Specification (The exception is probably for subtypes of StructuredValue, where adding "Description" or "Specification" to the end of all type names might highlight that their instances have a different nature.) On the full hierarchy <https://schema.org/docs/full.html> page, instances of Enumeration (for example ActionStatusType, BoardingPolicyType, etc.) could be in a different text style (if they should be listed on the page at all). Also, to follow the pattern of the example type hierarchy above and to give organization, a subtype of Enumeration, TypeEnumeration, could be created: *Enumeration* * TypeEnumeration* For consistency's sake, the same could be done for structured values: *StructuredValue* * TypeStructuredValue* Also on the full hierarchy page, to be consistent with the Class section that immediately starts with classes, the Data Types section could immediately start with data types, not with the type "DataType". Additionally, in a similar manner to Enumerations, the instances of Boolean, True and False, could be in a different text style to the data types (if they should be listed there at all). I hope people might find this useful. Anthony On Sat, Jun 16, 2018 at 4:40 PM Thad Guidry <thadguidry@gmail.com> wrote: > I've started the new "Help Our Users!" mission > https://github.com/schemaorg/schemaorg/issues/1958 > > -Thad > >
Received on Sunday, 17 June 2018 03:42:21 UTC