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
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
+ 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.
+
+
ReviewA 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: PeopleAudienceRange: Number
+
+ suitableForDiet
+ Indicates a dietary restriction or guideline for which this recipe is suitable, e.g. diabetic, halal etc.
+ Domain: Recipe
+ Range: RestrictedDiet
+
superEventAn 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
+
+ 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%
+
+
+
+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:
+
+
+
-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 @@
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.
<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 @@
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: