--- name: tl-schema-org description: > The full Schema.org vocabulary -- all 800+ types, 1500+ properties -- with production patterns for JSON-LD rendering, database modeling, API interoperability, extension governance, and rich results. Not just SEO markup. Use when working with structured data, Schema.org types, JSON-LD, or designing data models and APIs grounded in Schema.org. license: MIT metadata: version: "1.0" author: Todd Levy homepage: https://github.com/toddlevy/tl-agent-skills quilted: version: 1 synthesized: 2026-03-21 sources: - url: https://playbooks.com/skills/openclaw/skills/schema-markup borrowed: - Validation checklist - Common errors table - React component pattern weight: 0.25 - url: https://playbooks.com/skills/openclaw/skills/schema-markup-generator borrowed: - Schema type decision tree - Rich result eligibility matrix - Implementation workflow weight: 0.25 - url: https://schema.org/docs/ borrowed: - Data model - Extension docs - Conformance guidance - Machine-readable files weight: 0.25 - url: https://developers.google.com/search/docs/appearance/structured-data borrowed: - Required vs recommended properties - Quality guidelines weight: 0.10 - url: https://w3c.github.io/json-ld-bp/ borrowed: - "@id/@graph patterns" - Vocabulary reuse - API integration weight: 0.15 enhancements: - "Full taxonomy coverage via machine-readable data files (1245 core types, 1532 core properties, plus 632 enum members and 460 pending terms)" - "Database modeling patterns for Schema.org-grounded relational design" - "API interoperability patterns with OpenAPI type hierarchy mirroring" - "Two-tier extension system (x- public / _x- internal) with field ordering and stripping" - "Enum mapping tables for availability/condition with normalization" - "DB-driven schemaOrgProperty for measurement-to-property routing" - "Version tracking and governance workflow" --- # Schema.org Work fluently with the entire Schema.org vocabulary -- types, properties, enumerations, and their relationships -- across every surface where structured data matters: web pages, databases, APIs, and data interchange. ## When to Use - "Add structured data to a page" - "Map Schema.org types to a database" - "Design an API using Schema.org vocabulary" - "Extend Schema.org with custom properties" - "Which Schema.org type should I use for X?" - "Validate structured data markup" - Working with JSON-LD, RDFa, or any semantic/linked-data integration - Building data models grounded in a shared vocabulary ## Outcomes - **Artifact**: JSON-LD markup, database schemas, API type definitions, or extension specifications aligned to Schema.org - **Decision**: Type selection, extension strategy, rendering approach, or validation plan --- ## 1. Schema.org Fundamentals Schema.org is a collaborative vocabulary of **800+ types and 1500+ properties** maintained by Google, Microsoft, Yahoo, and Yandex. It is not a rigid ontology -- it follows Postel's Law: be liberal in what you accept, conservative in what you produce. ### Data Model - **Types** form a hierarchy rooted at `Thing`. A type can have multiple parent types (multiple inheritance). - **Properties** have one or more domain types (where they can appear) and one or more range types (what values they accept). - **Enumerations** are types whose instances are a fixed set of members (e.g., `ItemAvailability` has `InStock`, `OutOfStock`, etc.). - Conformance is pragmatic: search engines accept text strings where a type is expected, and properties can appear on types outside their declared domain. ### Hierarchy at a Glance Everything descends from `Thing`. The major branches: | Branch | Key Types | Typical Use | |--------|-----------|-------------| | Action | AchieveAction, TradeAction, SearchAction | User interactions, deep linking | | CreativeWork | Article, Book, MusicComposition, SoftwareApplication | Content, media, publications | | Event | MusicEvent, SportsEvent, Festival | Happenings with dates and locations | | Intangible | Offer, Order, Rating, StructuredValue | Commerce, measurements, abstract concepts | | MedicalEntity | MedicalCondition, Drug, MedicalProcedure | Health and medical content | | Organization | Corporation, LocalBusiness, SportsTeam | Entities with structure and identity | | Person | -- | People with roles and relationships | | Place | MusicVenue, Restaurant, City, Country | Physical and administrative locations | | Product | ProductModel, ProductGroup, Vehicle | Tangible goods and variants | | BioChemEntity | Gene, Protein, MolecularEntity | Life sciences | For the complete hierarchy, see `assets/tree.jsonld`. For type/property lookup, query `assets/schemaorg-current-https-types.csv` and `assets/schemaorg-current-https-properties.csv`. See: `references/taxonomy-guide.md` ### Domain Clusters Common verticals and their Schema.org type constellations: | Vertical | Primary Types | Supporting Types | |----------|---------------|------------------| | E-commerce | Product, Offer, AggregateOffer | Brand, Organization, QuantitativeValue, SizeSpecification | | Events | Event, MusicEvent, Festival | Place, PostalAddress, GeoCoordinates, Offer, Person | | News/Blog | Article, BlogPosting, NewsArticle | Person, Organization, ImageObject, WebPage | | Books & Publishing | Book, BookSeries | Person, Organization, Offer, ImageObject, PublicationVolume, PublicationIssue | | Jobs | JobPosting | Organization, Place, MonetaryAmount | | Local Business | LocalBusiness, Restaurant | PostalAddress, GeoCoordinates, OpeningHoursSpecification | | Education | Course, LearningResource | Organization, Person, Offer | | Recipes | Recipe | NutritionInformation, HowToStep, ImageObject | | Collectibles | Product, ProductModel, ProductGroup | Offer, Brand, QuantitativeValue, PropertyValue | | Music | MusicGroup, MusicEvent, MusicComposition | Person, Place, Offer, MusicAlbum | --- ## 2. JSON-LD Rendering JSON-LD is the recommended format for structured data on web pages. It separates structured data from HTML, making it easier to maintain and less coupled to markup changes. ### Core Patterns **Single entity:** ```json { "@context": "https://schema.org", "@type": "Event", "name": "Summer Jazz Festival", "startDate": "2026-07-15T19:00:00-05:00", "location": { "@type": "MusicVenue", "name": "Riverside Amphitheater", "address": { "@type": "PostalAddress", "streetAddress": "100 River Road", "addressLocality": "Austin", "addressRegion": "TX", "postalCode": "78701", "addressCountry": "US" } } } ``` **Multi-entity with `@graph` and `@id` cross-references:** ```json { "@context": "https://schema.org", "@graph": [ { "@type": "Organization", "@id": "https://example.com/#org", "name": "Riverside Concerts", "url": "https://example.com" }, { "@type": "WebSite", "@id": "https://example.com/#site", "name": "Riverside Concerts", "url": "https://example.com", "publisher": { "@id": "https://example.com/#org" } }, { "@type": "Event", "name": "Summer Jazz Festival", "organizer": { "@id": "https://example.com/#org" } } ] } ``` **Multi-type entities** (an item that is simultaneously two types): ```json { "@context": "https://schema.org", "@type": ["Book", "Product"], "name": "The Complete Jazz Standards", "isbn": "978-0-123456-78-9", "offers": { "@type": "Offer", "price": "29.95", "priceCurrency": "USD" } } ``` ### Enumeration Values Always use full Schema.org URIs for enumeration values: ```json "availability": "https://schema.org/InStock", "eventStatus": "https://schema.org/EventScheduled", "itemCondition": "https://schema.org/NewCondition", "eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode" ``` ### Placement and Rendering - Place JSON-LD in `` or before `` inside `