Models · Limits · Publication checklist · Sample report
English, international educational JSON-LD examples for Person, Organization, ProfilePage and Article, with an offline Python structural linter. Keep entity identifiers stable and relationships understandable across pages.
A clean report means only that this educational subset lint found no issues. It does not establish full schema.org validity, Google rich result eligibility, factual accuracy, rankings or AI citations. No network access, packages, API keys, telemetry or special “AI schema” are involved.
Python 3.10+ supported; standard library only. Also exercised locally on Python 3.9.6.
python3 validate.py examples/04-article.json --output-dir reports
python3 validate.py --all examples --output-dir reports
python3 -m unittest discover -s tests -vOpen reports/report.html in a browser or read reports/report.json. Each run replaces those two files. Input/output collisions, including resolved paths, symlinks and hardlinks, are checked before writing. Keep a separate report directory; do not change file links during a run.
Exit codes: 0 no structural errors (warnings may exist); 1 lint errors, including syntax/duplicate keys/unreadable input; 2 command usage, output failure or file collision. Recommendations are warnings, never asserted schema.org legal requirements.
All people, organizations, publishing activity and copy are fictional. example.org is a reserved domain. Do not deploy the examples unchanged.
| Example | What to learn |
|---|---|
| Person | Stable person ID independent of their profile page |
| Organization | Separate publisher identity |
| Person profile | ProfilePage mainEntity and publisher |
| Article | author, publisher and mainEntityOfPage |
| Organization profile | A profile describing an organization |
The visible-copy companion explains the fictional page content these models reflect; it is not a deployed site. Definitions repeat deliberately: each file is independently linted, reusing the same identity IDs.
Strict JSON parsing, duplicate keys, exact supported context, graph shape, duplicate graph IDs, type representation, selected HTTP(S) URL properties, local references and selected relationship targets. Missing recommended fields are warnings. Unknown properties are not vocabulary-validated. Read the complete boundary before interpreting any report.
The checked-in JSON and standalone HTML were generated by python3 validate.py --all examples --output-dir reports. Output has no timestamps, remote resources or machine-specific paths when invoked as shown. CI compares regenerated files byte for byte.
Entity Consistency Auditor compares supplied entity records; Authority Evidence Mapper organizes claim evidence. See the method and boundaries. These links imply no integration or data collection. This independent project implies no employer, Google or schema.org endorsement.
Official references checked 2026-11-01 are in the modeling guide. See CONTRIBUTING, CHANGELOG and LICENSE. Code/tests/CI: MIT. Docs, examples, reports and original banner: CC BY 4.0.