node-schema-org
A node.js library that retrieves, parses and provides all schemas from schema.org
Installation
Installing npm (node package manager)
curl http://npmjs.org/install.sh | sh
Installing node-schema-org
[sudo] npm install schema-org
Motivation
Although there is some debate from the W3C et al right now, when I came across schema.org I thought: "wow, what a gold mine of potential data formats to use in my applications." Then I looked at the site and thought: "Y U NO GIVE ME JSON FORMAT!?!?!" So I wrote this. It uses some other awesome node.js libraries:
- jsdom: CommonJS implementation of the DOM intended to be platform independent and as minimal/light as possible while completely adhering to the w3c DOM specifications.
- neuron: The simplest possible event driven job manager, FIFO queue, and "task based cache" in node.js
- optimist: Light-weight option parsing for node.js
- request: Simplified HTTP request client.
- winston: A multi-transport async logging library for node.js
Usage
Right now, node-schema-org
is implemented as a bin script which can be run after you install this module:
$ read-schema-org
Here is a sample of the output (all of the pre-parsed schemas are available here):
warn: Removing all schemas in /path/to/node-schema-org/schemas
info: Spawning: node /path/to/node-schema-org/list-schemas.js
info: Contacting: http://schema.org/docs/full.html
info: Parsing: http://schema.org/docs/full.html
info: Reading: http://schema.org/docs/full.html
info: Saving results to: /path/to/node-schema-org/schemas/schema-list.json
info: Done creating /path/to/node-schema-org/schemas/schema-list.json from http://schema.org/docs/full.html
info: node /path/to/node-schema-org/list-schemas.js has exited.
info: Spawning: node /path/to/node-schema-org/read-schema.js --type DataType
info: Spawning: node /path/to/node-schema-org/read-schema.js --type Boolean
info: Spawning: node /path/to/node-schema-org/read-schema.js --type Date
(....)
info: Parsing Type: Place
info: Parsing Type: Organization
info: Parsing Type: LocalBusiness
info: Writing schema: /path/to/node-schema-org/schemas/localbusiness.json
info: Done parsing schema: /path/to/node-schema-org/schemas/localbusiness.json
info: node /path/to/node-schema-org/read-schema.js --type LocalBusiness has exited.
info:
info: Done parsing all schemas from schema.org
info: They are located in: /path/to/node-schema-org/schemas
info:
Sample Schema
{
"type": "Place",
"bases": {
"Thing": [
{
"name": "description",
"description": "A short description of the item.",
"type": "Text"
},
{
"name": "image",
"description": "URL of an image of the item.",
"type": "URL"
},
{
"name": "name",
"description": "The name of the item.",
"type": "Text"
},
{
"name": "url",
"description": "URL of the item.",
"type": "Text"
}
]
},
"properties": [
{
"name": "address",
"description": "Physical address of the item.",
"type": "PostalAddress"
},
{
"name": "aggregateRating",
"description": "The overall rating, based on a collection of reviews or ratings, of the item.",
"type": "AggregateRating"
},
{
"name": "containedIn",
"description": "The basic containment relation between places.",
"type": "Place"
},
{
"name": "events",
"description": "The events held at this place or organization.",
"type": "Event"
},
{
"name": "faxNumber",
"description": "The fax number.",
"type": "Text"
},
{
"name": "geo",
"description": "The geo coordinates of the place.",
"type": "GeoCoordinates"
},
{
"name": "interactionCount",
"description": "A count of a specific user interactions with this item—for example, 20 UserLikes, 5 UserComments, or 300 UserDownloads. The user interaction type should be one of the sub types of UserInteraction.",
"type": "Text"
},
{
"name": "maps",
"description": "A URL to a map of the place.",
"type": "Text"
},
{
"name": "photos",
"description": "Photographs of this place.",
"type": [
"Photograph",
"ImageObject"
]
},
{
"name": "reviews",
"description": "Review of the item.",
"type": "Review"
},
{
"name": "telephone",
"description": "The telephone number.",
"type": "Text"
}
]
}