Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Structured Data linter
HTML Ruby JavaScript CSS
Latest commit a248901 @gkellogg gkellogg Release 2.3.0:
* Update to 1.99 verions of RDF.rb gems
* Adapt to new reader/writer debug/logging behavior.
Failed to load latest commit information.
assets Do better job of displaying intelligable messages on internal errors.…
config Heroku updates: shielded-river-1101.
etc Update for 2.1 release.
good-relations Good Relations examples and snippets.
google-rs Linter fixes to align with RDF and rdf-reasoner changes.
lib/rdf Update for new reader logging/debug behavior.
public Progress on using Angularjs. Update for 2.1 release.
script First parse with validation, and collection validation errors, if it …
spec Update for new reader logging/debug behavior.
.gitignore Update for new reader logging/debug behavior.
.gitmodules Remove schema-org-rdf as a submodule.
.travis.yml Use RVM version 2.2.3 in travis.yml.
.yardopts Documentation and version update
Gemfile Update for new reader logging/debug behavior.
Procfile Heroku updates: shielded-river-1101. Remove unused spec/test_data.
Rakefile Update examples with sdo-gozer (2.0).
UNLICENSE Add UNLICENCSE, note licensing terms, contributing and other updates …
VERSION Version 2.3.0. Progress on using Angularjs.
linter.gemspec Update for new reader logging/debug behavior.

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.

Something went wrong with that request. Please try again.