Structured Data linter
HTML Ruby JavaScript CSS
Latest commit 23430c9 Sep 10, 2016 @gkellogg gkellogg Finish 2.3.5a
Failed to load latest commit information.
assets Do better job of displaying intelligable messages on internal errors.… Oct 5, 2015
config Use puma instead of unicorn. Aug 14, 2016
etc Update for 2.1 release. Aug 6, 2015
examples Version 2.1. Dec 13, 2014
good-relations Good Relations examples and snippets. Jul 29, 2011
google-rs Linter fixes to align with RDF and rdf-reasoner changes. Jun 15, 2014
lib/rdf Update examples. Aug 14, 2016
public Progress on using Angularjs. Dec 10, 2014 Update examples. Aug 14, 2016
script First parse with validation, and collection validation errors, if it … Jun 10, 2015
spec Don't use Rest::Client::Cache, which is not as important given JSON-L… Aug 14, 2016
.gitignore Update for new reader logging/debug behavior. Nov 25, 2015
.gitmodules Remove schema-org-rdf as a submodule. Oct 20, 2013
.travis.yml Update travis to 2.3.1. Jun 28, 2016
.yardopts Documentation and version update Apr 22, 2012
Gemfile Use JSON-LD Preloaded Contexts (json-ld-preloaded). Aug 14, 2016
Gemfile.lock Use updated version of RDF.rb with changed Accept header generation. … Sep 10, 2016
Procfile Use puma instead of unicorn. Aug 14, 2016 Remove unused spec/test_data. Oct 5, 2015
Rakefile Update examples. Aug 14, 2016
UNLICENSE Add UNLICENCSE, note licensing terms, contributing and other updates … Aug 19, 2011
VERSION Update to include Reasoner fix. Fixes #37. Aug 22, 2016 Don't use Rest::Client::Cache, which is not as important given JSON-L… Aug 14, 2016
dependencyci.yml Update to include Reasoner fix. Fixes #37. Aug 22, 2016
linter.gemspec Use puma instead of unicorn. Aug 14, 2016

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.