Structured Data linter
HTML Ruby JavaScript CSS
Latest commit 5a3446a Jun 28, 2016 @gkellogg gkellogg Finish 2.3.3-hf1
Failed to load latest commit information.
assets Do better job of displaying intelligable messages on internal errors.… Oct 5, 2015
etc Update for 2.1 release. Aug 6, 2015
good-relations Good Relations examples and snippets. Jul 28, 2011
google-rs Linter fixes to align with RDF and rdf-reasoner changes. Jun 15, 2014
lib/rdf Update examples. Jun 28, 2016
public Update examples. Jun 28, 2016
.gitmodules Remove schema-org-rdf as a submodule. Oct 20, 2013
.travis.yml Update travis to 2.3.1. Jun 28, 2016
Gemfile Update Ruby version and dependencies. Jun 28, 2016
Gemfile.lock Update Ruby version and dependencies. Jun 28, 2016
Procfile Remove unused spec/test_data. Oct 5, 2015
Rakefile Update examples. Jun 28, 2016
VERSION Version 2.3.3. Jun 28, 2016 Progress on using Angularjs. Dec 9, 2014
linter.gemspec Update for new reader logging/debug behavior. Nov 25, 2015

Structured Data Linter

Extract and validate embedded RDF markup in HTML and other formats.


The Structured Data Linter digests structured data, in the form of HTML marked-up with RDFa, JSON-LD, or Microdata, or other RDF technologies supported in [Linked Data][linkeddata].

The linter is part of the, and runs at

Output is expressed as HTML+RDFa in a Snippet format.

Running locally

To run locally, do a bundle install to load required dependencies. Then run with foreman or rackup:

foreman start


rackup examples

To update the examples from, run rake schema:examples. Warnings for these examples can be generated into {file:etc/schema-warnings.txt} by running rake schema:warnings; remember to run bundle install first.

Code layout

This application is represented as a Sinatra application implemented in Ruby.

assets                -- Assets for web application             -- [Rack][] configuration file, to start application
      parser.rb         -- Parse and transform input to RDFa.
      rdfa_template.rb  -- RDFa output templates in [Haml][]
      snippets          -- Snippet templates
      views             -- Templates for view generation in [Erubis][]
      writer.rb         -- Sub-class of [RDFa][] writer for generating snippet output.
    linter.rb         -- Controller defining HTTP endpoints
spec                  -- Tests



Setup notes

  • public/.htaccess
  • Bundle installed using:

    bundle install --path vendor/bundler

  • Start the server with:

    bundle exec shotgun -p 3000



  • Do your best to adhere to the existing coding conventions and idioms.
  • Don't use hard tabs, and don't leave trailing whitespace on any line.
  • Do document every method you add using [YARD][] annotations. Read the [tutorial][YARD-GS] or just look at the existing code for examples.
  • Don't touch the .gemspec, VERSION or AUTHORS files. If you need to change them, do so on your private branch only.
  • Do feel free to add yourself to the CREDITS file and the corresponding list in the the README. Alphabetical order applies.
  • Do note that in order for us to merge any non-trivial changes (as a rule of thumb, additions larger than about 15 lines of code), we need an explicit [public domain dedication][PDD] on record from you.


This is free and unencumbered public domain software. For more information, see or the accompanying {file:UNLICENSE} file.