diff --git a/.gitignore b/.gitignore index fd20fddf87..dde3895fc1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ - +.DS_Store *.pyc diff --git a/RELEASING.TXT b/RELEASING.TXT index 2d2f3d9841..5e1bc35d67 100644 --- a/RELEASING.TXT +++ b/RELEASING.TXT @@ -97,14 +97,11 @@ Then generate N-Triples version: Use of rdfa2nq with extensions: - -TODO: explain where all-layers.nq comes from (cat'ing the others) TODO: list optional tasks post-launch (blog, email, refresh dydra sparql db etc.). - 1) General preconditions / process and QA for release. 1-a) Steering Group have signed off on changes and release plan, @@ -148,3 +145,74 @@ python library is also needed: 'sudo easy_install rdflib' should do it. representative pages of each type appear to be in a healthy state. e.g. see http://webschemas.org/docs/qa.html + +2.) Final checks + +There is often some final tweaking, bugs, etc. When things settle down, a +final round of sanity-check tests is useful: + +* Run again: PYTHONPATH=/usr/local/google_appengine ./scripts/run_tests.py +* Run again 'git status', confirm no uncommited files or changes. +* Run again: './scripts/updateAppEngine.sh' for development/upstream site sync. + +3.) Merge release branch into master + +3a.) Get changes into master branch on github + +Use GitHub Web UI to create a pull request. For example to merge the +release branch sdo-phobos into master, we set the base branch 'master' and +compare 'sdo-phobos'. If you get this backwards you should see nothing to do, +because there ought to be no changes in master that we lack in the later +sdo-phobos branch. + +Note also that if someone else has already (e.g. mistakenly) filed a pull request +between the same pair of branches, Github will try to recycle that one (including +their description) instead of give you a new one with proper name, description. +Workaround is to close that PR (keeping track of any open issue it raises). + +Result should be "danbri wants to merge 205 commits into master from sdo-phobos" +or similar. Check the Commits and Files changed tabs. If it looks plausible +(e.g. Showing 55 changed files with 79,679 additions and 820 deletions.) we +can proceed with merging. + +3b) Get merged changes back into your working colorOpacity + +I do 'git checkout master'; 'git pull --all'. You may know of other +incantations. See also http://xkcd.com/1597/ + +4.) Publish from a clean checkout of 'master' branch to schema.org. + +Either by editing app.yaml to make sure 'application: schemaorgae' is active, +or by passing the name of the live appengine ID on the commandline. Currently +@rvguha (as Steering Group chair) and @danbri (as Community Group chair and +webmaster / dogsbody) have write access to the corresponding appengine account. + + * e.g. run: appcfg.py update . -A schemaorgae + * inspect console output for something like: + * 03:35 PM Completed update of app: schemaorgae, version: 1 + * Count to ten. Check http://schema.org/ and the 'releases' link. + +5.) Related post-release tasks. + +* Let the Community Group and Steering Group know. +* Blog post. +* There's a SPARQL database at DYDRA that can load NQuad dumps from +https://github.com/schemaorg/schemaorg/blob/sdo-phobos/data/releases/2.2/all-layers.nq +* Make a new per-release branch, reserve an appspot.com account for it. +* Configure GitHub with the new default branch. + See https://github.com/schemaorg/schemaorg/settings/branches +* Update issue tracker moving issues to new releases. + * Close issues that were addressed in this release. + * Make careful considered adjustment to expected release for the rest. Or + just tag them all for the next release. +* Update git release tags (TODO: we have no history of handling this yet). + +For example, if we are in 'master' and 'git status' shows it in a clean state, + +* git checkout -b sdo-deimos +* This tells us we can do: + * git push --set-upstream origin sdo-deimos + +> To https://github.com/schemaorg/schemaorg.git +> * [new branch] sdo-deimos -> sdo-deimos +> Branch sdo-deimos set up to track remote branch sdo-deimos from origin. diff --git a/app.yaml b/app.yaml index cdd0727ac9..10d3d9244a 100644 --- a/app.yaml +++ b/app.yaml @@ -1,12 +1,12 @@ #application: schemaorgae #application: webschemas -application: sdo-phobos +application: sdo-deimos version: 1 runtime: python27 api_version: 1 #threadsafe: true -threadsafe: true +threadsafe: false handlers: diff --git a/data/examples.txt b/data/examples.txt index 2a9ce1bec3..d8494017c0 100644 --- a/data/examples.txt +++ b/data/examples.txt @@ -1260,7 +1260,7 @@ JSON: } -TYPES: #eg-13 Recipe,NutritionInformation, image,datePublished,prepTime,cookTime,recipeYield,recipeIngredient,calories,fatContent +TYPES: #eg-13 Recipe,NutritionInformation, image,datePublished,prepTime,cookTime,recipeYield,recipeIngredient,calories,fatContent, suitableForDiet, LowFatDiet, RestrictedDiet PRE-MARKUP: @@ -1274,6 +1274,7 @@ This classic banana bread recipe comes from my mom -- the walnuts add a nice Prep Time: 15 minutes Cook time: 1 hour Yield: 1 loaf +Tags: Low fat Nutrition facts: 240 calories, 9 grams fat @@ -1308,6 +1309,7 @@ MICRODATA: Prep Time: 15 minutes Cook time: 1 hour Yield: 1 loaf + Tags: Low fat
@@ -1353,6 +1355,7 @@ RDFA: Prep Time: 15 minutes Cook time: 1 hour Yield: 1 loaf + Tags: Low Fat
Nutrition facts: @@ -1410,7 +1413,8 @@ JSON: }, "prepTime": "PT15M", "recipeInstructions": "Preheat the oven to 350 degrees. Mix in the ingredients in a bowl. Add the flour last. Pour the mixture into a loaf pan and bake for one hour.", - "recipeYield": "1 loaf" + "recipeYield": "1 loaf", + "suitableForDiet": "http://schema.org/LowFatDiet" } diff --git a/data/schema.rdfa b/data/schema.rdfa index e098fcd0b5..90da2294e3 100644 --- a/data/schema.rdfa +++ b/data/schema.rdfa @@ -2863,7 +2863,10 @@
Recipe - A recipe. + A recipe. For dietary restrictions covered by the recipe, + a few common restrictions are enumerated via <a href="/suitableForDiet">suitableForDiet</a>. + The <a href="/keywords">keywords</a> property can also be used to add more detail. + Subclass of: CreativeWork
@@ -2897,6 +2900,67 @@ Subclass of: FoodEstablishment
+
+ RestrictedDiet + A diet restricted to certain foods or preparations for cultural, religious, health or lifestyle reasons. + Subclass of: Enumeration +
+ +
+ DiabeticDiet + A diet appropriate for people with diabetes. +
+ +
+ GlutenFreeDiet + A diet exclusive of gluten. +
+ +
+ HalalDiet + A diet conforming to Islamic dietary practices. +
+ +
+ HinduDiet + A diet conforming to Hindu dietary practices, in particular, beef-free. +
+ +
+ KosherDiet + A diet conforming to Jewish dietary practices. +
+ +
+ LowCalorieDiet + A diet focused on reduced calorie intake. +
+ +
+ LowFatDiet + A diet focused on reduced fat and cholesterol intake. +
+ +
+ LowLactoseDiet + A diet appropriate for people with lactose intolerance. +
+ +
+ LowSaltDiet + A diet focused on reduced sodium intake. +
+ +
+ VeganDiet + A diet exclusive of all animal products. +
+ +
+ VegetarianDiet + A diet exclusive of animal meat. +
+
Review A review of an item - for example, of a restaurant, movie, or store. @@ -9428,6 +9492,12 @@ Note that Event uses startDate/endDate instead of startTime/endTime, even when d Domain: PeopleAudience Range: Number
+
+ suitableForDiet + Indicates a dietary restriction or guideline for which this recipe is suitable, e.g. diabetic, halal etc. + Domain: Recipe + Range: RestrictedDiet +
superEvent An event that this event is a part of. For example, a collection of individual music performances might each have a music festival as their superEvent. @@ -12600,6 +12670,29 @@ Typical unit code(s): C62 for persons Subclass of: Intangible
+ +
+ CompoundPriceSpecification + A compound price specification is one that bundles multiple prices that all apply in combination for different dimensions of consumption. Use the name property of the attached unit price specification for indicating the dimension of a price component (e.g. "electricity" or "final cleaning"). + Subclass of: PriceSpecification + Source: GoodRelationsClass +
+ +
+ priceComponent + This property links to all UnitPriceSpecification nodes that apply in parallel for the CompoundPriceSpecification node. + Domain: CompoundPriceSpecification + Range: UnitPriceSpecification + Source: GoodRelationsProperty +
+ +
+ referenceQuantity + The reference quantity for which a certain price applies, e.g. 1 EUR per 4 kWh of electricity. This property is a replacement for unitOfMeasurement for the advanced cases where the price does not relate to a standard unit. + Domain: UnitPriceSpecification + Range: QuantitativeValue + Source: GoodRelationsProperty +
diff --git a/data/sdo-examples-goodrelations.txt b/data/sdo-examples-goodrelations.txt new file mode 100644 index 0000000000..f6da08a2c7 --- /dev/null +++ b/data/sdo-examples-goodrelations.txt @@ -0,0 +1,126 @@ +TYPES: #compoundPrice-1 CompoundPriceSpecification, BankAccount + +PRE-MARKUP: + +A bank account fee will be 5 USD per month and $ 0.10 per transaction + +MICRODATA: + +
+

Our Private Bank Account Package: Low monthly fees and fair per-use charges.

+ Private Bank Account Package + + ACME Private Bank Account + APR: 3.14% + +
+ + + 5 + US$ + per month + + + 0.10 + US$ + per transaction + + +
+ +RDFA: + +This example is currently available in Microdata and JSON-LD syntaxes only. + +JSON: + + + +TYPES: #compoundPrice-2 CompoundPriceSpecification, Car + +PRE-MARKUP: + +A rental car is 50 USD per day and and $ 0.10 per mile. + +MICRODATA: + +
+

Our standard rental car is 50 USD per day and and $ 0.10 per mile.

+ Rental Car Package + + Volkswagen Golf Class Car + +
+ + + 50 + US$ + per day + + + 0.10 + US$ + per mile + + + + +RDFA: + +This example is currently available in Microdata and JSON-LD syntaxes only. + +JSON: + + \ No newline at end of file diff --git a/data/sdo-lrmi-examples.txt b/data/sdo-lrmi-examples.txt new file mode 100644 index 0000000000..1c700c5015 --- /dev/null +++ b/data/sdo-lrmi-examples.txt @@ -0,0 +1,297 @@ +TYPES: #lrmi-1 learningResourceType, educationalAlignment, AlignmentObject, educationalFramework, alignmentType, targetName, targetUrl, audience, EducationalAudience, educationalRole + +PRE-MARKUP: + + +
+

Designing a treasure map

+

Resource type: lesson plan, learning activity

+

Target audience: teachers

+

Educational level: US Grade 2

+

Link to lesson plan: http://example.org/lessonplan

+
+ +MICRODATA: + + +
+

Designing a treasure map

+

Resource type: + lesson plan, + learning activity +

+

Target audience: + + teachers. +

+

+ Educational level: + US Grade Levels + 2 + +

+

Link to lesson plan:

+
+ +RDFA: + + +
+

Designing a treasure map

+

Resource type: + lesson plan, + learning activity +

+

Target audience: + + teachers + +

+

+ Educational level: + US Grade Levels + 2 + +

+

Link to lesson plan: http://example.org/lessonplan

+
+ +JSON: + + + +TYPES: #lrmi-2 typicalAgeRange, timeRequired, educationalAlignment, AlignmentObject, educationalFramework, alignmentType, targetName, targetUrl + +PRE-MARKUP: +
+

The Declaration of Arbroath

+

A lesson plan for teachers with associated video. + Typical length of lesson, 1 hour. + Recommended for children aged 10-12 years old. +

+

Subject: Wars of Scottish independence

+

Alignment to curriculum:

+ +

Link to lesson plan: http://example.org/lessonplan

+ +

This example is based on Declaration of Arbroath from BBC Bitesize

+ +
+ +MICRODATA: +
+

The Declaration of Arbroath

+

A lesson plan + for + teachers with associated video. + Typical length of lesson, 1 hour. + Recommended for children aged 10-12 years old. +

+

Subject: Wars of Scottish independence

+

Alignment to curriculum:

+ +

Link to lesson plan:

+ +

This example is based on Declaration of Arbroath from BBC Bitesize

+
+ +RDFA: +
+

The Declaration of Arbroath

+

A lesson plan + for + teachers with associated video. + Typical length of lesson, 1 hour. + Recommended for children aged 10-12 years old. +

+

Subject: Wars of Scottish independence

+

Alignment to curriculum:

+ +

Link to lesson plan: http://example.org/lessonplan

+ +

This example is based on Declaration of Arbroath from BBC Bitesize

+
+ +JSON: + + +TYPES: FakeEntryNeeded, FixMeSomeDay +PRE-MARKUP: +MICRODATA: +RDFA: +JSON: + diff --git a/data/sdo-property-value-examples.txt b/data/sdo-property-value-examples.txt index bb467b5163..c198e0e80a 100644 --- a/data/sdo-property-value-examples.txt +++ b/data/sdo-property-value-examples.txt @@ -97,31 +97,33 @@ JSON: "datePublished": "2008-01-25", "description": "I took this picture while on vacation last year.", "name": "Beach in Mexico" - "exifData": { - "@type": "PropertyValue", - "name": "Exposure Time", - "value": "1/659 sec." - } - "exifData": { - "@type": "PropertyValue", - "name": "FNumber", - "value": "f/4.0" - } - "exifData": { - "@type": "PropertyValue", - "name": "MaxApertureValue", - "value": "2.00" - } - "exifData": { - "@type": "PropertyValue", - "name": "Metering Mode", - "value": "Pattern" - } - "exifData": { - "@type": "PropertyValue", - "name": "Flash", - "value": "Flash did not fire." - } + "exifData": [ + { + "@type": "PropertyValue", + "name": "Exposure Time", + "value": "1/659 sec." + }, + { + "@type": "PropertyValue", + "name": "FNumber", + "value": "f/4.0" + }, + { + "@type": "PropertyValue", + "name": "MaxApertureValue", + "value": "2.00" + }, + { + "@type": "PropertyValue", + "name": "Metering Mode", + "value": "Pattern" + }, + { + "@type": "PropertyValue", + "name": "Flash", + "value": "Flash did not fire." + } + ] } diff --git a/docs/about.html b/docs/about.html index f89bcebd39..1a1d71df6c 100644 --- a/docs/about.html +++ b/docs/about.html @@ -145,7 +145,7 @@

Community Group and Steering Group

-The Schema.org Steering Group is chaired by R.V. Guha, who does not represent his employer Google in this capacity. +The Schema.org Steering Group is chaired by R.V. Guha, who serves in an individual capacity. The regular Steering Group participants from the search engines are Peter Mika from Yahoo; Alex Shubin, Yuliya Tikhokhod and Charles Nevile from Yandex; Shankar Natarajan, Tom Marsh and Steve Macbeth from Microsoft; and Vicki Tardif Holand and Dan Brickley from Google. In April 2015 the Steering Group unanimously agreed to expand its membership to include Stéphane Corlosquet and Martin Hepp, diff --git a/docs/extension.html b/docs/extension.html index 08fb4e8881..397e8f7034 100644 --- a/docs/extension.html +++ b/docs/extension.html @@ -65,6 +65,30 @@

Extension Mechanism

can be found here.

+

Extension Directory

+ +

The following extensions are available for use alongside the schema.org core.

+ +

Hosted extensions

+ +

Hosted extensions are managed and reviewed as part of the schema.org project itself.

+ + + +

External extensions

+ +

External extensions are managed and reviewed by other groups. Notable extensions can be officially listed here, +but please consult external documentation for full details of their vocabulary, versioning system and release history.

+ + + + +

Motivation

@@ -153,7 +177,7 @@

Examples

<span property="author">J.R.R Tolkien</span> and was originally published in the <span property="publisher" typeof="Organization"> <span property="location">United Kingdom</span> by - <span property="name">George Allen & Unwin</span> + <span property="name">George Allen & Unwin</span> </span> in <time property="datePublished">1954</time>. The book has been republished many times, including editions by <span property="workExample" typeof="Book"> @@ -187,7 +211,7 @@

Examples

<span property="author">J.R.R Tolkien</span> and was originally published in the <span property="publisher" typeof="Organization"> <span property="location">United Kingdom</span> by - <span property="name">George Allen & Unwin</span> + <span property="name">George Allen & Unwin</span> </span> in <time property="datePublished">1954</time>. The book has been republished many times, including editions by <span property="workExample" typeof="Book"> @@ -226,7 +250,7 @@

Examples

"@type": "Organization", }, "location": "United Kingdom", - "name": "George Allen & Unwin", + "name": "George Allen & Unwin", }, "datePublished": "1954", "workExample": { @@ -258,7 +282,7 @@

Examples

"gtin13": "5011476100885", "@type": "TradeItem", "tradeItemDescription": "Deliciously crunchy Os, packed with 4 whole grains. Say Yes to Cheerios", - "healthClaimDescription": "8 Vitamins & Iron, Source of Calcium & High in Fibre", + "healthClaimDescription": "8 Vitamins & Iron, Source of Calcium & High in Fibre", "hasAllergenRelatedInformation": { "@type": "gs1:AllergenRelatedInformation", "allergenStatement": "May contain nut traces" @@ -316,6 +340,8 @@

Examples

+ + diff --git a/docs/releases.html b/docs/releases.html index 29c165609b..70a58e9c76 100644 --- a/docs/releases.html +++ b/docs/releases.html @@ -127,10 +127,72 @@

Releases

Description + + + + +2.x
sdo-deimos
(201x-xx-x) + + + +
+Version 2.x (working name 'sdo-deimos'). This release is under development. See planning pages, specifically #911 for details. +
+ + + +

Vocabulary

+ + +

Site improvements

+ + +

Quick fixes and Examples

+ + + + 2.2
sdo-phobos
(2015-11-05) + diff --git a/scripts/updateAppEngine.sh b/scripts/updateAppEngine.sh index 07aa28dd18..1ff7f79d62 100755 --- a/scripts/updateAppEngine.sh +++ b/scripts/updateAppEngine.sh @@ -1,4 +1,4 @@ #!/bin/sh -appcfg.py update . -A sdo-phobos +appcfg.py update . -A sdo-deimos appcfg.py update . -A webschemas diff --git a/sdoapp.py b/sdoapp.py index 76ce5726fa..2e3cc51d69 100755 --- a/sdoapp.py +++ b/sdoapp.py @@ -438,7 +438,7 @@ def makeLinksFromArray(self, nodearray, tooltip=''): def emitUnitHeaders(self, node, layers='core'): """Write out the HTML page headers for this node.""" - self.write("

\n") + self.write("

\n") self.write(node.id) self.write("

") home = node.home diff --git a/templates/homepage.tpl b/templates/homepage.tpl index ccc2ad3b54..124683b8bf 100644 --- a/templates/homepage.tpl +++ b/templates/homepage.tpl @@ -17,7 +17,7 @@ {% import 'ext.tpl' as ext with context %} -{% if mybasehost in [ "sdo-phobos.appspot.com", "sdo-ganymede.appspot.com", "sdo-gozer.appspot.com", "sdo-tully.appspot.com", "sdo-lenny.appspot.com", "webschemas.org", "sdo-scripts.appspot.com", "localhost" ] %} +{% if mybasehost in [ "sdo-deimos.appspot.com", "sdo-phobos.appspot.com", "sdo-ganymede.appspot.com", "sdo-gozer.appspot.com", "sdo-tully.appspot.com", "sdo-lenny.appspot.com", "webschemas.org", "sdo-scripts.appspot.com", "localhost" ] %}

Note: This is {{ mybasehost }}. you are viewing an unstable work-in-progress preview of schema.org. diff --git a/templates/schemas.tpl b/templates/schemas.tpl index 3e0158eae6..72397f7bdb 100644 --- a/templates/schemas.tpl +++ b/templates/schemas.tpl @@ -31,7 +31,7 @@ Or you can jump directly to a commonly used type:

  • Creative works: CreativeWork, Book, Movie, MusicRecording, Recipe, TVSeries ...
  • Embedded non-text objects: AudioObject, ImageObject, VideoObject
  • Event
  • -
  • Health and medical types: notes on the health and medical types under MedicalEntity.
  • +
  • Health and medical types: notes on the health and medical types under MedicalEntity.
  • Organization
  • Person
  • Place, LocalBusiness, Restaurant ...