Every piece of Schema.org markup combines types and properties. A type, written with a capital letter such as Product or Person, says what something is. A property, written in camel case such as name or datePublished, describes one attribute of it. Each property lists the types of value it expects, which can be simple values like Text and Date or other types like Organization.
Inheritance
Types inherit properties from their parents. Because Organization descends from Thing, it can use name, url and sameAs. Because SoftwareApplication descends from CreativeWork, it can use author and datePublished. A type's page on schema.org lists its own properties and every inherited one, grouped by parent.
Expected types
Each property page shows what values it accepts. author expects Organization or Person. price expects Number or Text. startDate expects Date or DateTime. Supplying a plain string where an object is expected, such as an author name as text, is often accepted by parsers but gives less information. Supplying the wrong object type is an error.
- Simple values: Text, URL, Number, Boolean, Date, DateTime, Duration
- Enumerations: fixed values such as https://schema.org/InStock
- Other types: nested objects such as Offer, Person, PostalAddress
Multiple types
An entity can have more than one type, written as an array, when it genuinely is both. A software company's product page might describe something that is both a SoftwareApplication and a Product. Google's documentation allows this; use it only where both are accurate.
{ "@type": ["SoftwareApplication", "Product"], "name": "Ravenloft Sync" }Example
Reading a type page
A developer at Ravenloft wants to describe the app's free trial. On the SoftwareApplication page they find offers, which expects Offer or Demand, and on Offer they find eligibleDuration, which expects QuantitativeValue. Following expected types down the chain gives them valid structure without guessing.
Common mistakes
Wrong capitalization
Types and properties are case-sensitive. "product" or "DatePublished" will not be recognized.
Using properties from another type
A property only applies to types that define or inherit it.
Questions
On the type's page at schema.org, and on Google's documentation for the properties it requires or recommends.