diff --git a/.circleci/_config.yml b/.circleci/_config.yml
new file mode 100644
index 0000000..9ad76f1
--- /dev/null
+++ b/.circleci/_config.yml
@@ -0,0 +1,33 @@
+# Welcome to Jekyll!
+#
+# This config file is meant for settings that affect your whole blog, values
+# which you are expected to set up once and rarely need to edit after that.
+# For technical reasons, this file is *NOT* reloaded automatically when you use
+# 'jekyll serve'. If you change this file, please restart the server process.
+
+# Site settings
+title: OpenSchemas
+email: vsochat@stanford.edu
+description: > # this means to ignore newlines until "baseurl:"
+ OpenSchemas relies and extends from schema.org to generate specifications for open science.
+logo: https://openschemas.github.io/assets/images/logos/openschemas/logo_hexagon.png
+
+# Alias
+github_username: openschemas
+repo: https://github.com/openschemas/spec-virtualization
+name: OpenSchemas
+
+# Build settings
+markdown: kramdown
+
+plugins:
+ - jekyll-sitemap
+
+# Collections
+collections:
+ specifications:
+ output: true
+ permalink: /:collection/:path/
+ archive:
+ output: true
+ permalink: /:collection/:path/
diff --git a/.circleci/_includes/collections_footer.html b/.circleci/_includes/collections_footer.html
new file mode 100644
index 0000000..85b5f2d
--- /dev/null
+++ b/.circleci/_includes/collections_footer.html
@@ -0,0 +1,29 @@
+
+
+ {% if page.name != 'Organization' and page.name != 'Person' and page.name != 'Chemical' and page.name != 'ChemicalStructure' and page.name != 'Course' and page.name != 'Standard' %}
+
diff --git a/.circleci/_includes/type_start.html b/.circleci/_includes/type_start.html
new file mode 100644
index 0000000..4674607
--- /dev/null
+++ b/.circleci/_includes/type_start.html
@@ -0,0 +1,155 @@
+{% if page.status == 'release' %}
+
{{page.name}} Specification v. {{page.version}}
+{% else %}
+
{{page.name}} DRAFT Specification v. {{page.version}}
+{% endif %}
+
{{page.subtitle}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Contributors
+{% assign group = site.groups | where:"identifier", page.group %}
+{% for g in group %}
+
The following people have been involved in the creation of this specification document. They are all members of the {{g.name}} group.
+{% endfor %}
+
+
Group Leader(s)
+
+ {% for g in group %}
+ {% for leader in g.lead %}
+ {% assign lead-id = "/people/" | append: leader %}
+ {% assign author = site.people | where:"id", lead-id | first %}
+ {% if author.homepage or author.github_username or author.orcid %}
+
+This is a new {{page.spec_type}} that fits into the schema.org hierarchy as follows:
+
+
+{%for branch_name in page.hierarchy %}
+{{branch_name}}
+{%if forloop.index < page.hierarchy.size%}
+>
+{%endif%}
+{%endfor%}
+{%if page.spec_type == 'Type'%}
+>
+{{page.name}}
+{%endif%}
+
+
+
+
+
+
+
Group
+
Task & Issues
+
+
+
+
+
+ {% for g in group %}
+ {{g.name}}
+ {% endfor %}
+
Schema.org properties where the Expected Types have been changed, or new (i.e., Bioschemas created) properties/types are green.
+
Schema.org properties/types are red.
+
Pending Schema.org properties/types are blue.
+
External (i.e., from 3rd party ontology) properties/types are black.
+
+
CD = Cardinality
+
+
+
diff --git a/.circleci/_layouts/default.html b/.circleci/_layouts/default.html
new file mode 100644
index 0000000..5b9cffd
--- /dev/null
+++ b/.circleci/_layouts/default.html
@@ -0,0 +1,21 @@
+
+
+ {% include head.html %}
+
+
+ {% include header.html %}
+ {% include navbar.html %}
+
+
+
+
+
+ {{ content }}
+
+
+
+
+ {% include footer.html %}
+
+
+
diff --git a/.circleci/config.yml b/.circleci/config.yml
new file mode 100644
index 0000000..51dfb99
--- /dev/null
+++ b/.circleci/config.yml
@@ -0,0 +1,242 @@
+# This is a CircleCI configuration that you can add to your Github repository,
+# and connect to CircleCI to generate your bioschema files! If you don't
+# define any custom variables, your files will be generated and available
+# as artifacts. If you define the GITHUB variables for a bot, we can put
+# them back to Github Pages for more programmatic use (and version control
+# archive)
+
+# Variables you can customize
+# OPENBASES_CONTAINER: is the container that will be used, see default section
+
+# The following variables are optional and will give you
+# additional deployments / functionality.
+
+# GITHUB_USER
+# GITHUB_EMAIL if defined, you can deploy your archive and site back to Github pages.
+# REPO_VERSION: derived from the sha, for naming the archive
+
+################################################################################
+# Functions
+################################################################################
+
+# Defaults
+defaults: &defaults
+ docker:
+ - image: docker:18.01.0-ce-git
+ working_directory: /tmp/src
+
+# Installation
+install: &install
+ name: Install parallel gzip, gettext, python3, openbases, and jq
+ command: |
+ apk add --no-cache pigz python3 gettext jq
+
+# Environment
+sourceenv: &sourceenv
+ name: Source environment variables from the BASH_ENV
+ command: source $BASH_ENV
+
+schemaenv: &schemaenv
+ name: Define container and open bases names
+ command: |
+ # If not set, define OPENBASES_CONTAINER
+ if [ ! -n "${OPENBASES_CONTAINER:-}" ]; then
+ OPENBASES_CONTAINER="openschemas/schema-builder"
+ fi
+ # If not set, define REPO_VERSION
+ if [ ! -n "${REPO_VERSION:-}" ]; then
+ REPO_VERSION=$(echo "${CIRCLE_SHA1}" | cut -c1-10)
+ fi
+ echo "Open Bases OpenSchema builder is ${OPENBASES_CONTAINER}"
+ # export to bash environment
+ echo "export OPENBASES_CONTAINER=${OPENBASES_CONTAINER}" >> ${BASH_ENV}
+ echo "export REPO_VERSION=${REPO_VERSION}" >> ${BASH_ENV}
+ cat ${BASH_ENV}
+
+githubsetup: &githubsetup
+ name: Prepare Github account credentials
+ command: |
+ # Only proceed if we minimally have a Github email
+ if [[ -n "${GITHUB_EMAIL:-}" ]];
+ then
+ echo "Preparing Github account credentials"
+ git config --global user.email $GITHUB_EMAIL
+ # If username is defined, use it (otherwuse use circle project)
+ if [[ -n "${GITHUB_USER:-}" ]];
+ then
+ git config --global user.name $GITHUB_USER
+ else
+ git config --global user.name $CIRCLE_PROJECT_USERNAME
+ fi
+ fi
+
+
+schema: &schema
+ name: use openschema/schema-builder docker container to generate specifications
+ command: |
+ source ${BASH_ENV}
+ cd /tmp/src
+ echo "0. Pulling latest OpenBases Schema Builder!"
+ echo "docker pull ${OPENBASES_CONTAINER}"
+ docker pull ${OPENBASES_CONTAINER}
+ echo "1. Starting OpenBases Schema Builder!"
+ echo "docker run --name schema --entrypoint bash -dt ${OPENBASES_CONTAINER}"
+ docker run --name schema --entrypoint bash -dt "${OPENBASES_CONTAINER}"
+ docker exec schema rm -rf /data/*
+ docker exec schema mkdir --p /data/specifications
+ echo "2. Copying specification files for Open Bases schema..."
+ echo "docker cp ./specifications/. schema:/data/specifications"
+ docker cp ./specifications/. schema:/data/specifications
+ echo "docker cp ./specifications/configuration.yml schema:/data/configuration.yml"
+ docker cp ./specifications/configuration.yml schema:/data/configuration.yml
+ echo "3. Generating specification files!"
+ echo "Files in /data"
+ docker exec schema ls /data
+ echo "docker exec schema map2model --config /data/configuration.yml --folder /data/specifications --output /data/output"
+ docker exec schema map2model --config /data/configuration.yml --folder /data/specifications --output /data/output
+ echo "4. Obtaining finished files"
+ mkdir -p /tmp/specifications
+ echo "docker cp schema:/data/output/. /tmp/specifications"
+ docker cp schema:/data/output/. /tmp/specifications/
+ echo "5. Creating archive."
+ echo "tar czf specs.tar.gz /tmp/specifications"
+ tar czf "specs-${REPO_VERSION}.tar.gz" /tmp/specifications
+ mv "specs-${REPO_VERSION}.tar.gz" /tmp/specifications
+ echo "6. Stopping schema container..."
+ docker stop schema
+ echo "Contents of /tmp"
+ ls /tmp
+ echo "Contents of /tmp/specifications"
+ ls /tmp/specifications
+
+################################################################################
+# Jobs
+################################################################################
+
+
+version: 2
+jobs:
+ setup:
+ <<: *defaults
+ steps:
+ - run: *schemaenv
+ - run: *install
+ - run: *githubsetup
+
+ build:
+ <<: *defaults
+ steps:
+ - run: *install
+ - setup_remote_docker
+ - checkout
+ - run: *schemaenv
+ - run: *schema
+ - store_artifacts:
+ path: /tmp/specifications
+ destination: specs
+ - persist_to_workspace:
+ root: /tmp
+ paths:
+ - src
+ - specifications
+
+ manifest:
+ <<: *defaults
+ steps:
+ - attach_workspace:
+ at: /tmp
+ - run: *schemaenv
+ - run: *githubsetup
+ - run: *install
+ - run:
+ name: Generate Archive of Specs, and Deploy to gh-pages
+ no_output_timeout: 40m
+ command: |
+ source ${BASH_ENV}
+ ls /tmp
+ ls /tmp/specifications
+ mkdir -p ${HOME}/.ssh
+ if [[ -n "${GITHUB_EMAIL:-}" ]];
+ then
+ echo "=== Deploying site to Github Pages ==="
+ echo "1. Checking out Github pages branch"
+ ssh-keyscan -H github.com >> ~/.ssh/known_hosts
+ git clone "git@github.com:${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}.git" out
+ cd out
+ # either checkout github pages, or create orphan
+ git checkout gh-pages || git checkout --orphan gh-pages
+ mkdir -p ../out-old/archive
+ mkdir -p archive
+ mkdir -p _specifications
+ cp -R _specifications ../out-old/
+ # Keep archive contents
+ for ext in tar.gz html
+ do
+ if /bin/bash -c "ls archive/*.${ext}" 1> /dev/null 2>&1; then
+ /bin/bash -c "cp archive/*.${ext} ../out-old/archive"
+ fi
+ if /bin/bash -c "ls _specifications/*.${ext}" 1> /dev/null 2>&1; then
+ /bin/bash -c "cp _specifications/*.${ext} ../out-old/_specifications/"
+ fi
+ done
+ git rm -rf .
+ # ensure that github pages are ignored
+ mkdir -p .circleci && cp -a ../.circleci/. .circleci/.
+ # Copy back previous files to archive
+ mv ../out-old/archive ${PWD}
+ mv ../out-old/_specifications ${PWD}
+ mkdir -p _yaml
+ echo "2. Preparing template..."
+ # Add latest to archive
+ mv /tmp/specifications/specs-${REPO_VERSION}.tar.gz archive/
+ cp archive/specs-${REPO_VERSION}.tar.gz archive/specs-latest.tar.gz
+ # Add build folders
+ for folder in `ls /tmp/specifications`
+ do
+ if [[ -f "_specifications/${folder}.html" ]];
+ then
+ rm _specifications/${folder}.html
+ rm -rf "_specifications/${folder}"
+ fi
+ echo "Moving /tmp/specifications/${folder} to _specifications"
+ mv "/tmp/specifications/${folder}/${folder}.html" "_specifications/"
+ mv "/tmp/specifications/${folder}/${folder}.yml" _yaml/
+ done
+ # Copy jekyll templates to static
+ cp -R /tmp/src/.circleci/_includes _includes
+ cp -R /tmp/src/.circleci/_layouts _layouts
+ cp /tmp/src/.circleci/_config.yml _config.yml
+ cp /tmp/src/.circleci/specifications.md specifications.md
+ git add -A;
+ git commit -m "Automated deployment to GitHub Pages ${CIRCLE_SHA1}" --allow-empty
+ git push origin gh-pages
+ else
+ echo "GITHUB_EMAIL not set, skipping manifest deploy to Github pages"
+ fi
+
+
+################################################################################
+# Workflows
+################################################################################
+
+
+workflows:
+ version: 2
+ build_deploy:
+ jobs:
+ - build:
+ filters:
+ branches:
+ ignore: gh-pages
+ tags:
+ only: /.*/
+
+ # Push the manifest back to Github pages
+ - manifest:
+ requires:
+ - build
+ filters:
+ branches:
+ only: master
+ tags:
+ only: /.*/
diff --git a/.circleci/specifications.md b/.circleci/specifications.md
new file mode 100644
index 0000000..d9df8fc
--- /dev/null
+++ b/.circleci/specifications.md
@@ -0,0 +1,97 @@
+---
+layout: default
+title: Openschemas Specifications
+permalink: /
+---
+
OpenSchemas Specifications
+
+
This page contains drafts for an Openschemas specifications. Ongoing changes are published to the official specifications page. This page is updated with newly merged drafts from
+the repository here.
+
Should you wish to contact the community to discuss our efforts please post an issue on the issues board.
+
+
Profiles
+
+
The Openschemas' profiles define a community agreed layer over the Schema.org model providing additional constraints. These constraints capture (i) the information properties agreed by the community which are minimum (M), recommended (R), or optional (O), (ii) the cardinality of the property, i.e. whether it is expected to occur once or many times, and (iii) associated controlled vocabulary terms drawn from existing ontologies.
+
+
+
+
+
+
Name
+
Use Cases
+
Task & Issues
+
Examples
+
+
+
+ {% assign prof_specs = site.specifications | where: 'spec_type', 'Profile'%}
+ {% for spec in prof_specs %}
+
We have found it necessary to propose some additional types to the Schema.org vocabulary.
+ These are specified below and are expected to be pushed up to Schema.org once they have stabilised.
+ These types are used as the generic base for some of the profile specifications, such as protein.
+ Again, working versions are published in the drafts page.
+
+
+
+
+
Name
+
Task & Issues
+
+
+
+ {% assign type_specs = site.types | where: 'spec_type', 'Type'%}
+ {% for spec in type_specs%}
+
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..89906ff
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+spec_files
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..daf45ab
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,30 @@
+BSD 3-Clause License
+
+Copyright (c) 2018, Vanessa Sochat
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+* Neither the name of the copyright holder nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..76b2c99
--- /dev/null
+++ b/README.md
@@ -0,0 +1,18 @@
+# OpenSchema Virtualization Specification
+
+
+
+This is the virtualization development specification repository, generated from the
+template for the [openschemas/schema-builder](https://www.github.com/openschemas/schema-builder)
+to generate a schema.org specification using [map2model](https://www.github.com/openschemas/map2model).
+
+ - [Virtualization](specifications/Virtualization)
+
+For complete generation and usage, see the [openschemas/spec-template](https://www.github.com/openschemas/spec-template).
+
+## Resources
+
+ - the [configuration.yml](specifications/configuration.yml) defines adding Virtualization to the list to be generated
+ - the documents for (easy update) of fields live in [Google Sheets](). To contribute, please ask @vsoch to share with you! When you are done, **export each sheet** as a tsv file (tab separated value) and drop into the [Hardware](specifications/Hardware) subfolder.
+
+Then open a pull request and upon merge, the Github pages will be updated with your specification.
diff --git a/img/hexagon_square_small.png b/img/hexagon_square_small.png
new file mode 100644
index 0000000..3895839
Binary files /dev/null and b/img/hexagon_square_small.png differ
diff --git a/specifications/Virtualization/Virtualization - Authors.tsv b/specifications/Virtualization/Virtualization - Authors.tsv
new file mode 100644
index 0000000..3c47774
--- /dev/null
+++ b/specifications/Virtualization/Virtualization - Authors.tsv
@@ -0,0 +1,2 @@
+Firstnames Surname Role Institution Contribution
+Vanessa Sochat contributor Stanford University created standard first draft and discussion
\ No newline at end of file
diff --git a/specifications/Virtualization/Virtualization - Bioschemas.tsv b/specifications/Virtualization/Virtualization - Bioschemas.tsv
new file mode 100644
index 0000000..940c296
--- /dev/null
+++ b/specifications/Virtualization/Virtualization - Bioschemas.tsv
@@ -0,0 +1,7 @@
+Property Expected Type Description Type Type URL BSC Description Marginality Cardinality Controlled Vocabulary Example
+additionalType URL An additional type for the item, typically used for adding more specific types from external vocabularies in microdata syntax. This is a relationship between something and a class that the thing is in. In RDFa syntax, it is better to use the native RDFa syntax - the 'typeof' attribute - for multiple types. Schema.org tools may have only weaker understanding of extra types, in particular those defined externally. external http://security.polito.it/ontology/ The additional type is defined at http://security.polito.it/ontology/ Optional ONE https://github.com/Vocamp/computationalEnvironmentODP/blob/master/data/ComputationalEnvironment.rdf
+alternateName Text An alias for the item. Recommended MANY
+description Text A description of the item. A description of the virtualization technology Minimum ONE
+identifier PropertyValue or Text or URL The identifier property represents any kind of identifier for any kind of Thing, such as ISBNs, GTIN codes, UUIDs etc. Schema.org provides dedicated properties for representing many of these, either as textual strings or as URL (URI) links. See [background notes](http://schema.org/docs/datamodel.html#identifierBg) for more details. An identifier for the virtualization technology. Recommended ONE
+name Text The name of the item. The name of the virtualization technology Minimum ONE
+url URL URL of the item. A url associated with the virtualization technology. Minimum ONE
\ No newline at end of file
diff --git a/specifications/Virtualization/Virtualization - Mapping.tsv b/specifications/Virtualization/Virtualization - Mapping.tsv
new file mode 100644
index 0000000..bea5be6
--- /dev/null
+++ b/specifications/Virtualization/Virtualization - Mapping.tsv
@@ -0,0 +1,13 @@
+Property Expected Type Description Type Type URL BSC Description Marginality Cardinality Controlled Vocabulary Example
+additionalType URL An additional type for the item, typically used for adding more specific types from external vocabularies in microdata syntax. This is a relationship between something and a class that the thing is in. In RDFa syntax, it is better to use the native RDFa syntax - the 'typeof' attribute - for multiple types. Schema.org tools may have only weaker understanding of extra types, in particular those defined externally. external http://security.polito.it/ontology/ The additional type is defined at http://security.polito.it/ontology/ Optional ONE https://github.com/Vocamp/computationalEnvironmentODP/blob/master/data/ComputationalEnvironment.rdf
+alternateName Text An alias for the item. Recommended MANY
+description Text A description of the item. A description of the virtualization technology Minimum ONE
+disambiguatingDescription Text A sub property of description. A short description of the item used to disambiguate from other, similar items. Information from other properties (in particular, name) may be necessary for the description to be useful for disambiguation.
+identifier PropertyValue or Text or URL The identifier property represents any kind of identifier for any kind of Thing, such as ISBNs, GTIN codes, UUIDs etc. Schema.org provides dedicated properties for representing many of these, either as textual strings or as URL (URI) links. See [background notes](http://schema.org/docs/datamodel.html#identifierBg) for more details. An identifier for the virtualization technology. Recommended ONE
+image ImageObject or URL An image of the item. This can be a URL or a fully described ImageObject.
+mainEntityOfPage CreativeWork or URL Indicates a page (or other CreativeWork) for which this thing is the main entity being described. See background notes for details. Inverse property: mainEntity.
+name Text The name of the item. The name of the virtualization technology Minimum ONE
+potentialAction Action Indicates a potential Action, which describes an idealized action in which this thing would play an 'object' role.
+sameAs URL URL of a reference Web page that unambiguously indicates the item's identity. E.g. the URL of the item's Wikipedia page, Wikidata entry, or official website.
+subjectOf CreativeWork or Event A CreativeWork or Event about this Thing.. Inverse property: about.
+url URL URL of the item. A url associated with the virtualization technology. Minimum ONE
\ No newline at end of file
diff --git a/specifications/Virtualization/Virtualization - Specification.tsv b/specifications/Virtualization/Virtualization - Specification.tsv
new file mode 100644
index 0000000..6bc0a8b
--- /dev/null
+++ b/specifications/Virtualization/Virtualization - Specification.tsv
@@ -0,0 +1,3 @@
+Title Subtitle Description Version Official Type Full Example
+Virtualization Openschemas specification to describe Virtualization technology This Virtualization profile specification presents a an abstract representation of virtualization used in a computational environment. 0.0.1 https://schema.org/Thing https://github.com/openschemas/spec-virtualization
+ g
\ No newline at end of file
diff --git a/specifications/configuration.yml b/specifications/configuration.yml
new file mode 100644
index 0000000..d76ea0d
--- /dev/null
+++ b/specifications/configuration.yml
@@ -0,0 +1,7 @@
+specifications:
+- name: Virtualization
+ status: revision
+ spec_type: Profile
+ use_cases_url: https://www.github.com/openschemas/spec-virtualization
+ version: 0.0.1
+ parent_type: Thing