jOWL Example
authordgarijo
Tue, 06 Mar 2012 17:44:21 +0100
changeset 1777 9d7baba2fdfb
parent 1776 a488af865377
child 1778 cb6d3fd66bee
jOWL Example
ontology/DocExamples/jOWLBrowser_1.0/ReadMe.txt
ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/compressed/WS_FTP.LOG
ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/compressed/print.css
ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/compressed/screen.css
ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/lib/WS_FTP.LOG
ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/lib/forms.css
ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/lib/grid.css
ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/lib/grid.png
ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/lib/ie.css
ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/lib/reset.css
ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/lib/typography.css
ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/plugins/buttons/Readme
ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/plugins/buttons/WS_FTP.LOG
ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/plugins/buttons/buttons.css
ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/plugins/buttons/icons/WS_FTP.LOG
ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/plugins/buttons/icons/cross.png
ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/plugins/buttons/icons/key.png
ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/plugins/buttons/icons/tick.png
ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/plugins/css-classes/Readme
ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/plugins/css-classes/WS_FTP.LOG
ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/plugins/css-classes/css-classes.css
ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/plugins/fancy-type/Readme
ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/plugins/fancy-type/WS_FTP.LOG
ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/plugins/fancy-type/fancy-type-compressed.css
ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/plugins/fancy-type/fancy-type.css
ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/print.css
ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/screen.css
ontology/DocExamples/jOWLBrowser_1.0/css/jq/custom-theme/images/ui-bg_flat_0_aaaaaa_40x100.png
ontology/DocExamples/jOWLBrowser_1.0/css/jq/custom-theme/images/ui-bg_glass_55_fbf9ee_1x400.png
ontology/DocExamples/jOWLBrowser_1.0/css/jq/custom-theme/images/ui-bg_glass_65_ffffff_1x400.png
ontology/DocExamples/jOWLBrowser_1.0/css/jq/custom-theme/images/ui-bg_glass_75_dadada_1x400.png
ontology/DocExamples/jOWLBrowser_1.0/css/jq/custom-theme/images/ui-bg_glass_75_e6e6e6_1x400.png
ontology/DocExamples/jOWLBrowser_1.0/css/jq/custom-theme/images/ui-bg_glass_75_ffffff_1x400.png
ontology/DocExamples/jOWLBrowser_1.0/css/jq/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png
ontology/DocExamples/jOWLBrowser_1.0/css/jq/custom-theme/images/ui-bg_inset-soft_95_fef1ec_1x100.png
ontology/DocExamples/jOWLBrowser_1.0/css/jq/custom-theme/images/ui-icons_222222_256x240.png
ontology/DocExamples/jOWLBrowser_1.0/css/jq/custom-theme/images/ui-icons_2e83ff_256x240.png
ontology/DocExamples/jOWLBrowser_1.0/css/jq/custom-theme/images/ui-icons_454545_256x240.png
ontology/DocExamples/jOWLBrowser_1.0/css/jq/custom-theme/images/ui-icons_888888_256x240.png
ontology/DocExamples/jOWLBrowser_1.0/css/jq/custom-theme/images/ui-icons_cd0a0a_256x240.png
ontology/DocExamples/jOWLBrowser_1.0/css/jq/custom-theme/jquery-ui-1.7.custom.css
ontology/DocExamples/jOWLBrowser_1.0/css/jq/vader/images/ui-bg_flat_0_aaaaaa_40x100.png
ontology/DocExamples/jOWLBrowser_1.0/css/jq/vader/images/ui-bg_glass_95_fef1ec_1x400.png
ontology/DocExamples/jOWLBrowser_1.0/css/jq/vader/images/ui-bg_gloss-wave_16_121212_500x100.png
ontology/DocExamples/jOWLBrowser_1.0/css/jq/vader/images/ui-bg_highlight-hard_15_888888_1x100.png
ontology/DocExamples/jOWLBrowser_1.0/css/jq/vader/images/ui-bg_highlight-hard_55_555555_1x100.png
ontology/DocExamples/jOWLBrowser_1.0/css/jq/vader/images/ui-bg_highlight-soft_35_adadad_1x100.png
ontology/DocExamples/jOWLBrowser_1.0/css/jq/vader/images/ui-bg_highlight-soft_60_dddddd_1x100.png
ontology/DocExamples/jOWLBrowser_1.0/css/jq/vader/images/ui-bg_inset-soft_15_121212_1x100.png
ontology/DocExamples/jOWLBrowser_1.0/css/jq/vader/images/ui-icons_666666_256x240.png
ontology/DocExamples/jOWLBrowser_1.0/css/jq/vader/images/ui-icons_aaaaaa_256x240.png
ontology/DocExamples/jOWLBrowser_1.0/css/jq/vader/images/ui-icons_bbbbbb_256x240.png
ontology/DocExamples/jOWLBrowser_1.0/css/jq/vader/images/ui-icons_c98000_256x240.png
ontology/DocExamples/jOWLBrowser_1.0/css/jq/vader/images/ui-icons_cccccc_256x240.png
ontology/DocExamples/jOWLBrowser_1.0/css/jq/vader/images/ui-icons_cd0a0a_256x240.png
ontology/DocExamples/jOWLBrowser_1.0/css/jq/vader/images/ui-icons_f29a00_256x240.png
ontology/DocExamples/jOWLBrowser_1.0/css/jq/vader/jquery-ui-1.7.custom.css
ontology/DocExamples/jOWLBrowser_1.0/data/ProvenanceOntology.owl
ontology/DocExamples/jOWLBrowser_1.0/data/wine.owl
ontology/DocExamples/jOWLBrowser_1.0/jOWLBrowser.html
ontology/DocExamples/jOWLBrowser_1.0/scripts/jOWL.js
ontology/DocExamples/jOWLBrowser_1.0/scripts/jOWLBrowser.js
ontology/DocExamples/jOWLBrowser_1.0/scripts/jOWL_Exhibit.js
ontology/DocExamples/jOWLBrowser_1.0/scripts/jOWL_UI.js
ontology/DocExamples/jOWLBrowser_1.0/scripts/jquery.tooltip.js
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ontology/DocExamples/jOWLBrowser_1.0/ReadMe.txt	Tue Mar 06 17:44:21 2012 +0100
@@ -0,0 +1,42 @@
+Generic Ontology Browser
+built for the jOWL - Semantic Javascript Library
+Version 1.0
+Creator: David Decraene
+Released: 11-03-2009
+___________________________________________________________________________________________________________
+
+This package contains additional files necessary to set up a generic jOWL browser similar to what can be found at:
+http://jowl.ontologyonline.org/jOWLBrowser.html
+
+Usage:
+	1. Unzip this package to your disk
+	2. Unzip the latest jOWL package to the same folder (minimum version: 1.0).
+	3. Modify the configuration object in the jOWLBrowser.html file to suit your needs:
+
+	Example:
+
+	var configuration = {
+		ontology : "data/wine.owl", //the ontology to load
+		owlClass       : "wine", //The class to show when loading
+		classOverview  : true, //show or hide the class overview list.
+		propertiesTab  : true, //show or hide the properties panel
+		individualsTab : true, //show or hide the individuals panel
+		sparqldlTab    : true  //show or hide the sparq-dl panel
+	}
+
+
+This package contains:
+
+jOWLBrowser.html	html file that allows browsing of ontologies
+data/wine.owl		the prototypical wine ontology, for testing purposes
+css/			contains the blueprint css framework, can be updated with more recent version found at: http://www.blueprintcss.org/
+			contains basic jQuery themeroller css files (UI version 1.7) , can be updated with custom themeroller files found at: http://ui.jquery.com/themeroller
+scripts/			empty directory where the latest jOWL scripts should be placed. 
+img/			empty directory where the jOWL images will be put
+
+This package does NOT contain:
+	a jOWL version, for that, proceed to http://code.google.com/p/jowl-plugin/ and download the latest release.
+	Unzip the contents into this generic jOWL browser folder (if done properly scripts go automatically into the scripts folder, etc)...
+	Upload all files to the web in their current folder structure to allow online browsing.
+
+More information on jOWL at http://jowl.ontologyonline.org
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/compressed/WS_FTP.LOG	Tue Mar 06 17:44:21 2012 +0100
@@ -0,0 +1,2 @@
+2008.02.19 18:48 B c:\myweb\css\blueprint\compressed\print.css --> ontologyonline.org /httpdocs/css/blueprint/compressed print.css
+2008.02.19 18:48 B c:\myweb\css\blueprint\compressed\screen.css --> ontologyonline.org /httpdocs/css/blueprint/compressed screen.css
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/compressed/print.css	Tue Mar 06 17:44:21 2012 +0100
@@ -0,0 +1,76 @@
+body {
+line-height:1.5;
+font-family:"Helvetica Neue", "Lucida Grande", Arial, Verdana, sans-serif;
+color:#000;
+background:none;
+font-size:10pt;
+}
+
+.container {
+background:none;
+}
+
+h1,h2,h3,h4,h5,h6 {
+font-family:"Helvetica Neue", Arial, "Lucida Grande", sans-serif;
+}
+
+code {
+font:.9em "Courier New", Monaco, Courier, monospace;
+}
+
+img {
+float:left;
+margin:1.5em 1.5em 1.5em 0;
+}
+
+a img {
+border:none;
+}
+
+p img.top {
+margin-top:0;
+}
+
+hr {
+background:#ccc;
+color:#ccc;
+width:100%;
+height:2px;
+border:none;
+margin:2em 0;
+padding:0;
+}
+
+blockquote {
+font-style:italic;
+font-size:.9em;
+margin:1.5em;
+padding:1em;
+}
+
+.small {
+font-size:.9em;
+}
+
+.large {
+font-size:1.1em;
+}
+
+.quiet {
+color:#999;
+}
+
+.hide {
+display:none;
+}
+
+a:link,a:visited {
+background:transparent;
+font-weight:700;
+text-decoration:underline;
+}
+
+a:link:after,a:visited:after {
+content:" (" attr(href) ") ";
+font-size:90%;
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/compressed/screen.css	Tue Mar 06 17:44:21 2012 +0100
@@ -0,0 +1,696 @@
+html,body,div,span,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,code,del,dfn,em,img,q,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td {
+border:0;
+font-weight:inherit;
+font-style:inherit;
+font-size:100%;
+font-family:inherit;
+vertical-align:baseline;
+margin:0;
+padding:0;
+}
+
+body {
+line-height:1.5;
+background:#fff;
+font-size:75%;
+color:#222;
+font-family:"Helvetica Neue", "Lucida Grande", Helvetica, Arial, Verdana, sans-serif;
+margin:1.5em 0;
+}
+
+table {
+border-collapse:separate;
+border-spacing:0;
+margin-bottom:1.4em;
+}
+
+caption,th,td {
+text-align:left;
+font-weight:400;
+}
+
+blockquote:before,blockquote:after,q:before,q:after {
+content:"";
+}
+
+blockquote,q {
+quotes:;
+}
+
+a img {
+border:none;
+}
+
+h1,h2,h3,h4,h5,h6 {
+color:#111;
+font-family:"Helvetica Neue", Helvetica, Arial, sans-serif;
+font-weight:400;
+}
+
+h1 {
+font-size:3em;
+line-height:1;
+margin-bottom:.5em;
+}
+
+h2 {
+font-size:2em;
+margin-bottom:.75em;
+}
+
+h3 {
+font-size:1.5em;
+line-height:1;
+margin-bottom:1em;
+}
+
+h4 {
+font-size:1.2em;
+line-height:1.25;
+margin-bottom:1.25em;
+}
+
+h5 {
+font-size:1em;
+font-weight:700;
+margin-bottom:1.5em;
+}
+
+h6 {
+font-size:1em;
+font-weight:700;
+}
+
+p.last {
+margin-bottom:0;
+}
+
+p img {
+float:left;
+margin:1.5em 1.5em 1.5em 0;
+padding:0;
+}
+
+p img.top {
+margin-top:0;
+}
+
+ul,ol {
+margin:0 1.5em 1.5em;
+}
+
+ul {
+list-style-type:circle;
+}
+
+ol {
+list-style-type:decimal;
+}
+
+dd {
+margin-left:1.5em;
+}
+
+abbr,acronym {
+border-bottom:1px dotted #666;
+}
+
+address {
+margin-top:1.5em;
+font-style:italic;
+}
+
+a:focus,a:hover {
+color:#000;
+}
+
+a {
+color:#009;
+text-decoration:underline;
+}
+
+blockquote {
+color:#666;
+font-style:italic;
+margin:1.5em;
+}
+
+em,dfn {
+font-style:italic;
+background:#ffc;
+}
+
+pre,code {
+white-space:pre;
+margin:1.5em 0;
+}
+
+pre,code,tt {
+font:1em 'andale mono', monotype.com, 'lucida console', monospace;
+line-height:1.5;
+}
+
+tt {
+display:block;
+line-height:1.5;
+margin:1.5em 0;
+}
+
+th {
+border-bottom:2px solid #ccc;
+font-weight:700;
+}
+
+td {
+border-bottom:1px solid #ddd;
+}
+
+th,td {
+padding:4px 10px 4px 0;
+}
+
+tfoot {
+font-style:italic;
+}
+
+caption {
+background:#ffc;
+}
+
+table .last {
+padding-right:0;
+}
+
+.small {
+font-size:.8em;
+margin-bottom:1.875em;
+line-height:1.875em;
+}
+
+.large {
+font-size:1.2em;
+line-height:2.5em;
+margin-bottom:1.25em;
+}
+
+.hide {
+display:none;
+}
+
+.highlight {
+background:#ff0;
+}
+
+.added {
+color:#060;
+}
+
+.removed {
+color:#900;
+}
+
+.top {
+margin-top:0;
+padding-top:0;
+}
+
+.bottom {
+margin-bottom:0;
+padding-bottom:0;
+}
+
+.container {
+width:950px;
+margin:0 auto;
+}
+
+.column {
+float:left;
+margin-right:10px;
+}
+
+.last {
+margin-right:0;
+}
+
+.span-1 {
+width:30px;
+}
+
+.span-2 {
+width:70px;
+}
+
+.span-3 {
+width:110px;
+}
+
+.span-4 {
+width:150px;
+}
+
+.span-5 {
+width:190px;
+}
+
+.span-6 {
+width:230px;
+}
+
+.span-7 {
+width:270px;
+}
+
+.span-8 {
+width:310px;
+}
+
+.span-9 {
+width:350px;
+}
+
+.span-10 {
+width:390px;
+}
+
+.span-11 {
+width:430px;
+}
+
+.span-12 {
+width:470px;
+}
+
+.span-13 {
+width:510px;
+}
+
+.span-14 {
+width:550px;
+}
+
+.span-15 {
+width:590px;
+}
+
+.span-16 {
+width:630px;
+}
+
+.span-17 {
+width:670px;
+}
+
+.span-18 {
+width:710px;
+}
+
+.span-19 {
+width:750px;
+}
+
+.span-20 {
+width:790px;
+}
+
+.span-21 {
+width:830px;
+}
+
+.span-22 {
+width:870px;
+}
+
+.span-23 {
+width:910px;
+}
+
+.span-24 {
+width:950px;
+margin:0;
+}
+
+.append-1 {
+padding-right:40px;
+}
+
+.append-2 {
+padding-right:80px;
+}
+
+.append-3 {
+padding-right:120px;
+}
+
+.append-4 {
+padding-right:160px;
+}
+
+.append-5 {
+padding-right:200px;
+}
+
+.append-6 {
+padding-right:240px;
+}
+
+.append-7 {
+padding-right:280px;
+}
+
+.append-8 {
+padding-right:320px;
+}
+
+.append-9 {
+padding-right:360px;
+}
+
+.append-10 {
+padding-right:400px;
+}
+
+.append-11 {
+padding-right:440px;
+}
+
+.append-12 {
+padding-right:480px;
+}
+
+.append-13 {
+padding-right:520px;
+}
+
+.append-14 {
+padding-right:560px;
+}
+
+.append-15 {
+padding-right:600px;
+}
+
+.append-16 {
+padding-right:640px;
+}
+
+.append-17 {
+padding-right:680px;
+}
+
+.append-18 {
+padding-right:720px;
+}
+
+.append-19 {
+padding-right:760px;
+}
+
+.append-20 {
+padding-right:800px;
+}
+
+.append-21 {
+padding-right:840px;
+}
+
+.append-22 {
+padding-right:880px;
+}
+
+.append-23 {
+padding-right:920px;
+}
+
+.prepend-1 {
+padding-left:40px;
+}
+
+.prepend-2 {
+padding-left:80px;
+}
+
+.prepend-3 {
+padding-left:120px;
+}
+
+.prepend-4 {
+padding-left:160px;
+}
+
+.prepend-5 {
+padding-left:200px;
+}
+
+.prepend-6 {
+padding-left:240px;
+}
+
+.prepend-7 {
+padding-left:280px;
+}
+
+.prepend-8 {
+padding-left:320px;
+}
+
+.prepend-9 {
+padding-left:360px;
+}
+
+.prepend-10 {
+padding-left:400px;
+}
+
+.prepend-11 {
+padding-left:440px;
+}
+
+.prepend-12 {
+padding-left:480px;
+}
+
+.prepend-13 {
+padding-left:520px;
+}
+
+.prepend-14 {
+padding-left:560px;
+}
+
+.prepend-15 {
+padding-left:600px;
+}
+
+.prepend-16 {
+padding-left:640px;
+}
+
+.prepend-17 {
+padding-left:680px;
+}
+
+.prepend-18 {
+padding-left:720px;
+}
+
+.prepend-19 {
+padding-left:760px;
+}
+
+.prepend-20 {
+padding-left:800px;
+}
+
+.prepend-21 {
+padding-left:840px;
+}
+
+.prepend-22 {
+padding-left:880px;
+}
+
+.prepend-23 {
+padding-left:920px;
+}
+
+.border {
+padding-right:4px;
+margin-right:5px;
+border-right:1px solid #eee;
+}
+
+.colborder {
+padding-right:24px;
+margin-right:25px;
+border-right:1px solid #eee;
+}
+
+.pull-1 {
+margin-left:-40px;
+}
+
+.pull-2 {
+margin-left:-80px;
+}
+
+.pull-3 {
+margin-left:-120px;
+}
+
+.pull-4 {
+margin-left:-160px;
+}
+
+.push-0 {
+margin:0 0 0 18px;
+}
+
+.push-1 {
+margin:0 -40px 0 18px;
+}
+
+.push-2 {
+margin:0 -80px 0 18px;
+}
+
+.push-3 {
+margin:0 -120px 0 18px;
+}
+
+.push-4 {
+margin:0 -160px 0 18px;
+}
+
+.push-0,.push-1,.push-2,.push-3,.push-4 {
+float:right;
+}
+
+.box {
+margin-bottom:1.5em;
+background:#eee;
+padding:1.5em;
+}
+
+hr {
+background:#ddd;
+color:#ddd;
+clear:both;
+float:none;
+width:100%;
+height:.1em;
+border:none;
+margin:0 0 1.4em;
+}
+
+hr.space {
+background:#fff;
+color:#fff;
+}
+
+.clear {
+display:block;
+}
+
+.clear:after,.container:after {
+content:".";
+display:block;
+height:0;
+clear:both;
+visibility:hidden;
+}
+
+* html .clear {
+height:1%;
+}
+
+fieldset {
+border:1px solid #ccc;
+margin:0 0 1.5em;
+padding:1.4em;
+}
+
+legend {
+font-weight:700;
+font-size:1.2em;
+}
+
+input.text,input.title {
+width:300px;
+border:1px solid #bbb;
+background:#f6f6f6;
+margin:.5em .5em .5em 0;
+padding:5px;
+}
+
+input.title {
+font-size:1.5em;
+}
+
+textarea {
+width:400px;
+height:250px;
+border:1px solid #bbb;
+background:#eee;
+margin:.5em .5em .5em 0;
+padding:5px;
+}
+
+select {
+border:1px solid #ccc;
+background:#f6f6f6;
+width:200px;
+}
+
+.error,.notice,.success {
+margin-bottom:1em;
+border:2px solid #ddd;
+padding:.8em;
+}
+
+.error {
+background:#FBE3E4;
+color:#D12F19;
+border-color:#FBC2C4;
+}
+
+.notice {
+background:#FFF6BF;
+color:#817134;
+border-color:#FFD324;
+}
+
+.success {
+background:#E6EFC2;
+color:#529214;
+border-color:#C6D880;
+}
+
+.error a {
+color:#D12F19;
+}
+
+.notice a {
+color:#817134;
+}
+
+.success a {
+color:#529214;
+}
+
+p,img,dl {
+margin:0 0 1.5em;
+}
+
+dl dt,strong,dfn,label {
+font-weight:700;
+}
+
+del,.quiet {
+color:#666;
+}
+
+input.text:focus,input.title:focus,textarea:focus,select:focus {
+background:#fff;
+border:1px solid #999;
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/lib/WS_FTP.LOG	Tue Mar 06 17:44:21 2012 +0100
@@ -0,0 +1,6 @@
+2008.02.19 18:48 B c:\myweb\css\blueprint\lib\forms.css --> ontologyonline.org /httpdocs/css/blueprint/lib forms.css
+2008.02.19 18:48 B c:\myweb\css\blueprint\lib\grid.css --> ontologyonline.org /httpdocs/css/blueprint/lib grid.css
+2008.02.19 18:48 B c:\myweb\css\blueprint\lib\grid.png --> ontologyonline.org /httpdocs/css/blueprint/lib grid.png
+2008.02.19 18:48 B c:\myweb\css\blueprint\lib\ie.css --> ontologyonline.org /httpdocs/css/blueprint/lib ie.css
+2008.02.19 18:48 B c:\myweb\css\blueprint\lib\reset.css --> ontologyonline.org /httpdocs/css/blueprint/lib reset.css
+2008.02.19 18:48 B c:\myweb\css\blueprint\lib\typography.css --> ontologyonline.org /httpdocs/css/blueprint/lib typography.css
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/lib/forms.css	Tue Mar 06 17:44:21 2012 +0100
@@ -0,0 +1,45 @@
+/* -------------------------------------------------------------- 
+   
+   forms.css
+   * Sets up some default styling for forms
+   * Gives you classes to enhance your forms
+   
+   Usage:
+   * For text fields, use class .title or .text
+   
+-------------------------------------------------------------- */
+
+label { font-weight: bold; }
+
+
+/* Fieldsets */
+fieldset    { padding:1.4em; margin: 0 0 1.5em 0; border: 1px solid #ccc; }
+legend      { font-weight: bold; font-size:1.2em; }
+
+/* Text fields */
+input.text, input.title   { width: 300px; margin:0.5em 0.5em 0.5em 0; }
+input.text, input.title   { border:1px solid #bbb; background:#f6f6f6; padding:5px; }
+input.text:focus,
+input.title:focus         { border:1px solid #999; background:#fff; }
+input.title               { font-size:1.5em; }
+
+/* Textareas */
+textarea            { width: 400px; height: 250px; margin:0.5em 0.5em 0.5em 0; }
+textarea            { border:1px solid #bbb; background:#eee; padding:5px; }
+textarea:focus      { border:1px solid #999; background:#fff; }
+
+/* Select fields */
+select              { border:1px solid #ccc; background:#f6f6f6; width:200px; }
+select:focus        { border:1px solid #999; background:#fff; }
+
+
+/* Success, error & notice boxes for messages and errors. */
+.error,
+.notice, 
+.success    { padding: .8em; margin-bottom: 1em; border: 2px solid #ddd; }
+.error      { background: #FBE3E4; color: #D12F19; border-color: #FBC2C4; }
+.notice     { background: #FFF6BF; color: #817134; border-color: #FFD324; }
+.success    { background: #E6EFC2; color: #529214; border-color: #C6D880; }
+.error a    { color: #D12F19; }
+.notice a   { color: #817134; }
+.success a  { color: #529214; }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/lib/grid.css	Tue Mar 06 17:44:21 2012 +0100
@@ -0,0 +1,193 @@
+/* -------------------------------------------------------------- 
+   
+   grid.css
+   * Sets up an easy-to-use grid of 24 columns.
+   
+   Based on work by:
+   * Nathan Borror     [playgroundblues.com]
+   * Jeff Croft        [jeffcroft.com]
+   * Christian Metts   [mintchaos.com]
+   * Khoi Vinh         [subtraction.com]
+   
+   By default, the grid is 950px wide, with 24 columns 
+   spanning 30px, and a 10px margin between columns.
+   
+   If you need fewer or more columns, use this 
+   formula to find the new total width: 
+   Total width = (columns * 40) - 10
+   
+   Read more about using a grid here:
+   * subtraction.com/archives/2007/0318_oh_yeeaahh.php
+   
+-------------------------------------------------------------- */
+
+/* A container should group all your columns. */
+.container {
+  width: 950px;
+  margin: 0 auto;
+}
+
+
+/* Columns
+-------------------------------------------------------------- */
+
+/* Use this class together with the .span-x classes
+   to create any composition of columns in a layout. */
+   
+.column {
+  float: left;
+  margin-right: 10px;
+}
+
+
+/* The last column in a row needs this class. */
+.last { margin-right: 0; }
+
+/* Use these classes to set the width of a column. */
+.span-1   { width: 30px; }
+.span-2   { width: 70px; }
+.span-3   { width: 110px; }
+.span-4   { width: 150px; }
+.span-5   { width: 190px; }
+.span-6   { width: 230px; }
+.span-7   { width: 270px; }
+.span-8   { width: 310px; }
+.span-9   { width: 350px; }
+.span-10  { width: 390px; }
+.span-11  { width: 430px; }
+.span-12  { width: 470px; }
+.span-13  { width: 510px; }
+.span-14  { width: 550px; }
+.span-15  { width: 590px; }
+.span-16  { width: 630px; }
+.span-17  { width: 670px; }
+.span-18  { width: 710px; }
+.span-19  { width: 750px; }
+.span-20  { width: 790px; }
+.span-21  { width: 830px; }
+.span-22  { width: 870px; }
+.span-23  { width: 910px; }
+.span-24  { width: 950px; margin: 0; }
+
+/* Add these to a column to append empty cols. */
+.append-1   { padding-right: 40px; }  
+.append-2   { padding-right: 80px; } 
+.append-3   { padding-right: 120px; } 
+.append-4   { padding-right: 160px; } 
+.append-5   { padding-right: 200px; } 
+.append-6   { padding-right: 240px; } 
+.append-7   { padding-right: 280px; } 
+.append-8   { padding-right: 320px; } 
+.append-9   { padding-right: 360px; } 
+.append-10  { padding-right: 400px; } 
+.append-11  { padding-right: 440px; } 
+.append-12  { padding-right: 480px; } 
+.append-13  { padding-right: 520px; } 
+.append-14  { padding-right: 560px; } 
+.append-15  { padding-right: 600px; } 
+.append-16  { padding-right: 640px; } 
+.append-17  { padding-right: 680px; } 
+.append-18  { padding-right: 720px; } 
+.append-19  { padding-right: 760px; } 
+.append-20  { padding-right: 800px; } 
+.append-21  { padding-right: 840px; } 
+.append-22  { padding-right: 880px; } 
+.append-23  { padding-right: 920px; } 
+
+/* Add these to a column to prepend empty cols. */
+.prepend-1   { padding-left: 40px; }  
+.prepend-2   { padding-left: 80px; } 
+.prepend-3   { padding-left: 120px; } 
+.prepend-4   { padding-left: 160px; } 
+.prepend-5   { padding-left: 200px; } 
+.prepend-6   { padding-left: 240px; } 
+.prepend-7   { padding-left: 280px; } 
+.prepend-8   { padding-left: 320px; } 
+.prepend-9   { padding-left: 360px; } 
+.prepend-10  { padding-left: 400px; } 
+.prepend-11  { padding-left: 440px; } 
+.prepend-12  { padding-left: 480px; } 
+.prepend-13  { padding-left: 520px; } 
+.prepend-14  { padding-left: 560px; } 
+.prepend-15  { padding-left: 600px; } 
+.prepend-16  { padding-left: 640px; } 
+.prepend-17  { padding-left: 680px; } 
+.prepend-18  { padding-left: 720px; } 
+.prepend-19  { padding-left: 760px; } 
+.prepend-20  { padding-left: 800px; } 
+.prepend-21  { padding-left: 840px; } 
+.prepend-22  { padding-left: 880px; } 
+.prepend-23  { padding-left: 920px; } 
+
+
+/* Border on right hand side of a column. */
+.border {
+  padding-right: 4px;
+  margin-right: 5px;
+  border-right: 1px solid #eee;
+}
+
+/* Border with more whitespace, spans one column. */
+.colborder {
+  padding-right: 24px;
+  margin-right: 25px;
+  border-right: 1px solid #eee;
+}
+
+
+/* Use these classes on an element to push it into the 
+   next column, or to pull it into the previous column. */
+
+.pull-1  { margin-left: -40px; }
+.pull-2  { margin-left: -80px; }
+.pull-3  { margin-left: -120px; }
+.pull-4  { margin-left: -160px; }
+
+.push-0  { margin: 0 0 0 18px; }
+.push-1  { margin: 0 -40px 0 18px; }
+.push-2  { margin: 0 -80px 0 18px; }
+.push-3  { margin: 0 -120px 0 18px; }
+.push-4  { margin: 0 -160px 0 18px; }
+.push-0, .push-1, .push-2, .push-3, .push-4 { float: right; }
+
+
+/* Misc classes and elements
+-------------------------------------------------------------- */
+
+/* Use a .box to create a padded box inside a column.  */ 
+.box { 
+  padding: 1.5em; 
+  margin-bottom: 1.5em; 
+  background: #eee; 
+}
+
+/* Use this to create a horizontal ruler across a column. */
+hr {
+  background: #ddd; 
+  color: #ddd;
+  clear: both; 
+  float: none; 
+  width: 100%; 
+  height: .1em;
+  margin: 0 0 1.4em;
+  border: none; 
+}
+hr.space {
+  background: #fff;
+  color: #fff;
+}
+
+/* Clearing floats without extra markup
+   Based on How To Clear Floats Without Structural Markup by PiE
+   [http://www.positioniseverything.net/easyclearing.html] */
+
+.clear { display: inline-block; }   
+.clear:after, .container:after {
+  content: "."; 
+  display: block; 
+  height: 0; 
+  clear: both; 
+  visibility: hidden;
+}
+* html .clear { height: 1%; }
+.clear { display: block; }
Binary file ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/lib/grid.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/lib/ie.css	Tue Mar 06 17:44:21 2012 +0100
@@ -0,0 +1,30 @@
+/* -------------------------------------------------------------- 
+   
+   ie.css
+   
+   Contains every hack for Internet Explorer versions prior 
+   to IE7, so that our core files stay sweet and nimble.
+   
+-------------------------------------------------------------- */
+
+/* Make sure the layout is centered in IE5 */
+body        { text-align: center; }
+.container  { text-align: left; }
+
+
+/* This fixes the problem where IE6 adds an extra 3px margin to
+   two columns that are floated up against each other. */
+
+* html .column { overflow-x: hidden; } /* IE6 fix */
+
+.pull-1, .pull-2, .pull-3, .pull-4,
+.push-1, .push-2, .push-3, .push-4, 
+ul, ol {
+  position: relative; /* Keeps IE6 from cutting pulled/pushed images */
+}
+
+/* Fixes incorrect styling of legend in IE6 fieldsets. */
+legend { margin-bottom:1.4em; }
+
+/* Fixes incorrect placement of numbers in ol's in IE6/7 */
+ol { margin-left:2em; }
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/lib/reset.css	Tue Mar 06 17:44:21 2012 +0100
@@ -0,0 +1,39 @@
+/* -------------------------------------------------------------- 
+  
+   reset.css
+   * Resets default browser CSS.
+   
+   Based on work by Eric Meyer:
+   * meyerweb.com/eric/thoughts/2007/05/01/reset-reloaded/
+   
+-------------------------------------------------------------- */
+
+html, body, div, span, object, iframe,
+h1, h2, h3, h4, h5, h6, p, blockquote, pre,
+a, abbr, acronym, address, code,
+del, dfn, em, img, q, dl, dt, dd, ol, ul, li,
+fieldset, form, label, legend,
+table, caption, tbody, tfoot, thead, tr, th, td {
+	margin: 0;
+	padding: 0;
+	border: 0;
+	font-weight: inherit;
+	font-style: inherit;
+	font-size: 100%;
+	font-family: inherit;
+	vertical-align: baseline;
+}
+
+
+body { line-height: 1.5; background: #fff; margin:1.5em 0; }
+
+/* Tables still need 'cellspacing="0"' in the markup. */
+table { border-collapse: separate; border-spacing: 0; }
+caption, th, td { text-align: left; font-weight:400; }
+
+/* Remove possible quote marks (") from <q>, <blockquote>. */
+blockquote:before, blockquote:after, q:before, q:after { content: ""; }
+blockquote, q { quotes: "" ""; }
+
+a img { border: none; }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/lib/typography.css	Tue Mar 06 17:44:21 2012 +0100
@@ -0,0 +1,116 @@
+/* -------------------------------------------------------------- 
+   
+   typography.css
+   * Sets up some sensible default typography.
+  
+   Based on work by:
+   * Nathan Borror     [playgroundblues.com]
+   * Jeff Croft        [jeffcroft.com]
+   * Christian Metts   [mintchaos.com]
+   * Wilson Miner      [wilsonminer.com]
+   * Richard Rutter    [clagnut.com]
+   
+   Read more about using a baseline here:
+   * alistapart.com/articles/settingtypeontheweb
+  
+-------------------------------------------------------------- */
+
+/* This is where you set your desired font size. The line-heights 
+   and vertical margins are automatically calculated from this. 
+   The percentage is of 16px (0.75 * 16px = 12px). */
+   
+body { font-size: 75%; }
+
+
+/* Default fonts and colors. 
+   If you prefer serif fonts, remove the font-family 
+   on the headings, and apply this one to the body:
+   font: 1em Georgia, "lucida bright", "times new roman", serif; */
+   
+body { 
+  color: #222; 
+  font-family: "Helvetica Neue", "Lucida Grande", Helvetica, Arial, Verdana, sans-serif; 
+}
+h1,h2,h3,h4,h5,h6 { 
+  color: #111; 
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; 
+}
+
+
+/* Headings
+-------------------------------------------------------------- */
+
+h1,h2,h3,h4,h5,h6 { font-weight: normal; }
+
+h1 { font-size: 3em; line-height: 1; margin-bottom: 0.5em; }
+h2 { font-size: 2em; margin-bottom: 0.75em; }
+h3 { font-size: 1.5em; line-height: 1; margin-bottom: 1em; }
+h4 { font-size: 1.2em; line-height: 1.25; margin-bottom: 1.25em; }
+h5 { font-size: 1em; font-weight: bold; margin-bottom: 1.5em; }
+h6 { font-size: 1em; font-weight: bold; }
+
+
+/* Text elements
+-------------------------------------------------------------- */
+
+p           { margin: 0 0 1.5em; }
+p.last      { margin-bottom: 0; }
+p img       { float: left; margin: 1.5em 1.5em 1.5em 0; padding: 0; }
+p img.top   { margin-top: 0; } /* Use this if the image is at the top of the <p>. */
+img         { margin: 0 0 1.5em; }
+
+ul, ol      { margin:0 1.5em 1.5em 1.5em; }
+ul          { list-style-type: circle; }
+ol          { list-style-type: decimal; }
+dl          { margin: 0 0 1.5em 0; }
+dl dt       { font-weight: bold; }
+dd          { margin-left: 1.5em;}
+
+abbr, 
+acronym     { border-bottom: 1px dotted #666; }
+address     { margin-top: 1.5em; font-style: italic; }
+del         { color:#666; }
+
+a:focus, 
+a:hover     { color: #000; }
+a           { color: #009; text-decoration: underline; }
+
+blockquote  { margin: 1.5em; color: #666; font-style: italic; }
+strong      { font-weight: bold; }
+em,dfn      { font-style: italic; background: #ffc; }
+dfn         { font-weight: bold; }
+pre,code    { margin: 1.5em 0; white-space: pre; }
+pre,code,tt { font: 1em 'andale mono', 'monotype.com', 'lucida console', monospace; line-height: 1.5; } 
+tt          { display: block; margin: 1.5em 0; line-height: 1.5; }
+
+
+/* Tables
+-------------------------------------------------------------- */
+
+table   { margin-bottom: 1.4em; }
+th      { border-bottom: 2px solid #ccc; font-weight: bold; }
+td      { border-bottom: 1px solid #ddd; }
+th,td   { padding: 4px 10px 4px 0; }
+tfoot   { font-style: italic; }
+caption { background: #ffc; }
+
+/* Use this if you use span-x classes on th/td. */
+table .last { padding-right: 0; } 
+
+
+/* Some default classes
+-------------------------------------------------------------- */
+
+.small      { font-size: .8em; margin-bottom: 1.875em; line-height: 1.875em; }
+.large      { font-size: 1.2em; line-height: 2.5em; margin-bottom: 1.25em; }
+.quiet      { color: #666; }
+
+.hide       { display: none; }
+.highlight  { background:#ff0; }
+.added      { color:#060; }
+.removed    { color:#900; }
+
+.top        { margin-top:0; padding-top:0; }
+.bottom     { margin-bottom:0; padding-bottom:0; }
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/plugins/buttons/Readme	Tue Mar 06 17:44:21 2012 +0100
@@ -0,0 +1,31 @@
+Buttons
+* Gives you great looking CSS buttons, for both <a> and <button>.
+* Demo: particletree.com/features/rediscovering-the-button-element
+
+
+Credits
+----------------------------------------------------------------
+
+* Created by Kevin Hale [particletree.com]
+* Adapted for Blueprint by Olav Bjorkoy [bjorkoy.com]
+
+
+Usage
+----------------------------------------------------------------
+
+1) Add this line to "blueprint/screen.css":
+	 @import 'plugins/buttons/buttons.css';
+
+2) Use the following HTML code to place the buttons on your site:
+
+	<button type="submit" class="button positive">
+	  <img src="css/blueprint/plugins/buttons/icons/tick.png" alt=""/> Save
+	</button>
+
+	<a class="button" href="/password/reset/">
+	  <img src="css/blueprint/plugins/buttons/icons/key.png" alt=""/> Change Password
+	</a>
+
+	<a href="#" class="button negative">
+	  <img src="css/blueprint/plugins/buttons/icons/cross.png" alt=""/> Cancel
+	</a>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/plugins/buttons/WS_FTP.LOG	Tue Mar 06 17:44:21 2012 +0100
@@ -0,0 +1,2 @@
+2008.02.19 18:48 B c:\myweb\css\blueprint\plugins\buttons\buttons.css --> ontologyonline.org /httpdocs/css/blueprint/plugins/buttons buttons.css
+2008.02.19 18:48 B c:\myweb\css\blueprint\plugins\buttons\Readme --> ontologyonline.org /httpdocs/css/blueprint/plugins/buttons Readme
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/plugins/buttons/buttons.css	Tue Mar 06 17:44:21 2012 +0100
@@ -0,0 +1,97 @@
+/* -------------------------------------------------------------- 
+  
+   buttons.css
+   * Gives you some great CSS-only buttons.
+   
+   Created by Kevin Hale [particletree.com]
+   * particletree.com/features/rediscovering-the-button-element
+
+   See Readme.txt in this folder for instructions.
+
+-------------------------------------------------------------- */
+
+a.button, button {
+  display:block;
+  float:left;
+  margin:0 0.583em 0.667em 0;
+  padding:5px 10px 5px 7px;   /* Links */
+  
+  border:1px solid #dedede;
+  border-top:1px solid #eee;
+  border-left:1px solid #eee;
+
+  background-color:#f5f5f5;
+  font-family:"Lucida Grande", Tahoma, Arial, Verdana, sans-serif;
+  font-size:100%;
+  line-height:130%;
+  text-decoration:none;
+  font-weight:bold;
+  color:#565656;
+  cursor:pointer;
+}
+button {
+  width:auto;
+  overflow:visible;
+  padding:4px 10px 3px 7px;   /* IE6 */
+}
+button[type] {
+  padding:4px 10px 4px 7px;   /* Firefox */
+  line-height:17px;           /* Safari */
+}
+*:first-child+html button[type] {
+  padding:4px 10px 3px 7px;   /* IE7 */
+}
+button img, a.button img{
+  margin:0 3px -3px 0 !important;
+  padding:0;
+  border:none;
+  width:16px;
+  height:16px;
+  float:none;
+}
+
+
+/* Button colors
+-------------------------------------------------------------- */
+
+/* Standard */
+button:hover, a.button:hover{
+  background-color:#dff4ff;
+  border:1px solid #c2e1ef;
+  color:#336699;
+}
+a.button:active{
+  background-color:#6299c5;
+  border:1px solid #6299c5;
+  color:#fff;
+}
+
+/* Positive */
+body .positive {
+  color:#529214;
+}
+a.positive:hover, button.positive:hover {
+  background-color:#E6EFC2;
+  border:1px solid #C6D880;
+  color:#529214;
+}
+a.positive:active {
+  background-color:#529214;
+  border:1px solid #529214;
+  color:#fff;
+}
+
+/* Negative */
+body .negative {
+  color:#d12f19;
+}
+a.negative:hover, button.negative:hover {
+  background:#fbe3e4;
+  border:1px solid #fbc2c4;
+  color:#d12f19;
+}
+a.negative:active {
+  background-color:#d12f19;
+  border:1px solid #d12f19;
+  color:#fff;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/plugins/buttons/icons/WS_FTP.LOG	Tue Mar 06 17:44:21 2012 +0100
@@ -0,0 +1,3 @@
+2008.02.19 18:48 B c:\myweb\css\blueprint\plugins\buttons\icons\cross.png --> ontologyonline.org /httpdocs/css/blueprint/plugins/buttons/icons cross.png
+2008.02.19 18:48 B c:\myweb\css\blueprint\plugins\buttons\icons\key.png --> ontologyonline.org /httpdocs/css/blueprint/plugins/buttons/icons key.png
+2008.02.19 18:48 B c:\myweb\css\blueprint\plugins\buttons\icons\tick.png --> ontologyonline.org /httpdocs/css/blueprint/plugins/buttons/icons tick.png
Binary file ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/plugins/buttons/icons/cross.png has changed
Binary file ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/plugins/buttons/icons/key.png has changed
Binary file ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/plugins/buttons/icons/tick.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/plugins/css-classes/Readme	Tue Mar 06 17:44:21 2012 +0100
@@ -0,0 +1,14 @@
+CSS Development Classes Plugin
+
+Sets up some classes to use in CSS development
+
+This is an experimental plugin, and the tools it provides
+are not exactly semantically correct, so use with care,
+and preferably only in development. :)
+
+
+Usage
+----------------------------------------------------------------
+
+1) Add this line to "blueprint/screen.css", and you're done:
+	 @import 'plugins/css-classes/css-classes.css';
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/plugins/css-classes/WS_FTP.LOG	Tue Mar 06 17:44:21 2012 +0100
@@ -0,0 +1,2 @@
+2008.02.19 18:48 B c:\myweb\css\blueprint\plugins\css-classes\css-classes.css --> ontologyonline.org /httpdocs/css/blueprint/plugins/css-classes css-classes.css
+2008.02.19 18:48 B c:\myweb\css\blueprint\plugins\css-classes\Readme --> ontologyonline.org /httpdocs/css/blueprint/plugins/css-classes Readme
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/plugins/css-classes/css-classes.css	Tue Mar 06 17:44:21 2012 +0100
@@ -0,0 +1,24 @@
+/* -------------------------------------------------------------- 
+
+   css-classes.css
+   * Classes for CSS development
+   
+   See the Readme file in this directory
+   for further instructions.
+   
+-------------------------------------------------------------- */
+
+.left   { float:left; }
+.right  { float:right; }
+
+.hide   { display:none; }
+
+.reset-margin   { margin:0; } 
+.reset-padding  { padding:0; } 
+.reset          { margin:0; padding:0; } 
+
+.align-justify  { text-align:justify; } 
+.align-left     { text-align:left; } 
+.align-center   { text-align:center; } 
+.align-right    { text-align:right; } 
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/plugins/fancy-type/Readme	Tue Mar 06 17:44:21 2012 +0100
@@ -0,0 +1,22 @@
+Fancy Type
+* Gives you classes to use if you'd like some 
+  extra fancy typography. 
+
+Credits and instructions are specified above each class
+in the fancy-type.css file in this directory.
+
+
+Usage
+----------------------------------------------------------------
+
+1) Add this line to "blueprint/screen.css", and you're done:
+	 @import 'plugins/fancy-type/fancy-type-compressed.css';
+
+Note that this uses the compressed version of the CSS file, 
+as the original file contains a lot of instructing comments.
+
+Remember to re-compress (or change) the compressed file 
+if you make any changes to the original CSS file.
+
+Here's a pretty good CSS compressor: 
+http://teenage.cz/acidofil/tools/cssformat.php
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/plugins/fancy-type/WS_FTP.LOG	Tue Mar 06 17:44:21 2012 +0100
@@ -0,0 +1,3 @@
+2008.02.19 18:48 B c:\myweb\css\blueprint\plugins\fancy-type\fancy-type-compressed.css --> ontologyonline.org /httpdocs/css/blueprint/plugins/fancy-type fancy-type-compressed.css
+2008.02.19 18:48 B c:\myweb\css\blueprint\plugins\fancy-type\fancy-type.css --> ontologyonline.org /httpdocs/css/blueprint/plugins/fancy-type fancy-type.css
+2008.02.19 18:48 B c:\myweb\css\blueprint\plugins\fancy-type\Readme --> ontologyonline.org /httpdocs/css/blueprint/plugins/fancy-type Readme
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/plugins/fancy-type/fancy-type-compressed.css	Tue Mar 06 17:44:21 2012 +0100
@@ -0,0 +1,5 @@
+p + p { text-indent:2em; margin-top:-1.5em; }
+.alt{color:#666;font-family:"Warnock Pro","Goudy Old Style","Palatino","Book Antiqua",Georgia,serif;font-size:1.2em;line-height:80%;font-style:italic;}
+.dquo{margin-left:-.5em;}
+p.incr,.incr p{font-size:10px;line-height:1.44em;margin-bottom:1.5em;}
+.caps{font-variant:small-caps;letter-spacing:1px;text-transform:lowercase;font-size:1.2em;line-height:1%;font-weight:bold;}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/plugins/fancy-type/fancy-type.css	Tue Mar 06 17:44:21 2012 +0100
@@ -0,0 +1,74 @@
+/* -------------------------------------------------------------- 
+  
+   fancy-type.css
+   * Lots of pretty advanced classes for manipulating text.
+   
+   See the Readme file in this folder for additional instructions.
+
+-------------------------------------------------------------- */
+
+/* Indentation instead of line shifts for sibling paragraphs. */
+   p + p { text-indent:2em; margin-top:-1.5em; }
+
+/* Ornaments on first paragraph.
+   Commented out by default. Use with care.
+   p:before { content: "\2767"; padding-right: 0.4em; }
+   p + p:before { content: ""; padding:0; } */
+
+/* For great looking type, use this code instead of asdf: 
+   <span class="alt">asdf</span>  
+   Best used on prepositions and ampersands. */
+  
+.alt { 
+  color: #666; 
+  font-family: "Warnock Pro", "Goudy Old Style","Palatino","Book Antiqua", Georgia, serif; 
+  font-style: italic;
+  font-weight: normal;
+}
+
+
+/* For great looking quote marks in titles, replace "asdf" with:
+   <span class="dquo">&#8220;</span>asdf&#8221;
+   (That is, when the title starts with a quote mark). 
+   (You may have to change this value depending on your font size). */  
+   
+.dquo { margin-left: -.5em; } 
+
+
+/* Reduced size type with incremental leading
+   (http://www.markboulton.co.uk/journal/comments/incremental_leading/)
+
+   This could be used for side notes. For smaller type, you don't necessarily want to 
+   follow the 1.5x vertical rhythm -- the line-height is too much. 
+   
+   Using this class, it reduces your font size and line-height so that for 
+   every four lines of normal sized type, there is five lines of the sidenote. eg:
+
+   New type size in em's:
+     10px (wanted side note size) / 12px (existing base size) = 0.8333 (new type size in ems)
+
+   New line-height value:
+     12px x 1.5 = 18px (old line-height)
+     18px x 4 = 72px 
+     72px / 5 = 14.4px (new line height)
+     14.4px / 10px = 1.44 (new line height in em's) */
+
+p.incr, .incr p {
+	font-size: 10px;
+	line-height: 1.44em;  
+	margin-bottom: 1.5em;
+}
+
+
+/* Surround uppercase words and abbreviations with this class.
+   Based on work by Jørgen Arnor Gårdsø Lom [http://twistedintellect.com/] */
+   
+.caps { 
+  font-variant: small-caps; 
+  letter-spacing: 1px; 
+  text-transform: lowercase; 
+  font-size:1.2em;
+  line-height:1%;
+  font-weight:bold;
+  padding:0 2px;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/print.css	Tue Mar 06 17:44:21 2012 +0100
@@ -0,0 +1,68 @@
+/* -------------------------------------------------------------- 
+  
+   Blueprint CSS Framework Print Styles
+   * Gives you some sensible styles for printing pages.
+   See Readme file in this directory for further instructions.
+      
+   Some additions you'll want to make, customized to your markup:
+   #header, #footer, #navigation { display:none; }
+	 
+-------------------------------------------------------------- */
+
+body {
+  line-height: 1.5;
+  font-family: "Helvetica Neue", "Lucida Grande", Arial, Verdana, sans-serif;   
+  color:#000;
+  background: none;
+  font-size: 10pt;
+}
+.container {
+  background: none;
+}
+
+h1,h2,h3,h4,h5,h6 { font-family: "Helvetica Neue", Arial, "Lucida Grande", sans-serif; }
+code { font:.9em "Courier New", Monaco, Courier, monospace; } 
+
+img { float:left; margin:1.5em 1.5em 1.5em 0; }
+a img { border:none; }
+p img.top { margin-top: 0; }
+
+hr { 
+  background:#ccc; 
+  color:#ccc;
+  width:100%;
+  height:2px;
+  margin:2em 0;
+  padding:0;
+  border:none;
+}
+
+blockquote {
+  margin:1.5em;
+  padding:1em;
+  font-style:italic;
+  font-size:.9em;
+}
+
+.small  { font-size: .9em; }
+.large  { font-size: 1.1em; }
+.quiet  { color: #999; }
+.hide   { display:none; }
+
+a:link, a:visited {
+	background: transparent;
+	font-weight:700;
+	text-decoration: underline;
+}
+
+a:link:after, a:visited:after {
+  content: " (" attr(href) ") ";
+  font-size: 90%;
+}
+
+/* If you're having trouble printing relative links, uncomment and customize this:
+   (note: This is valid CSS3, but it still won't go through the W3C CSS Validator) */
+
+/* a[href^="/"]:after {
+  content: " (http://www.yourdomain.com" attr(href) ") ";
+} */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ontology/DocExamples/jOWLBrowser_1.0/css/blueprint/screen.css	Tue Mar 06 17:44:21 2012 +0100
@@ -0,0 +1,22 @@
+/* -------------------------------------------------------------- 
+  
+   Blueprint CSS Framework Screen Styles
+   * Version:   0.6 (21.9.2007)
+   * Website:   http://code.google.com/p/blueprintcss/
+   See Readme file in this directory for further instructions.
+   
+-------------------------------------------------------------- */
+
+@import 'lib/reset.css';
+@import 'lib/typography.css';
+@import 'lib/grid.css';
+@import 'lib/forms.css';
+
+/* Plugins:
+   Additional functionality can be found in the plugins directory.
+   See the readme files for each plugin. Example:
+   @import 'plugins/buttons/buttons.css'; */
+   
+/* See the grid:
+   Uncomment the line below to see the grid and baseline.
+   .container { background: url(lib/grid.png); } */
Binary file ontology/DocExamples/jOWLBrowser_1.0/css/jq/custom-theme/images/ui-bg_flat_0_aaaaaa_40x100.png has changed
Binary file ontology/DocExamples/jOWLBrowser_1.0/css/jq/custom-theme/images/ui-bg_glass_55_fbf9ee_1x400.png has changed
Binary file ontology/DocExamples/jOWLBrowser_1.0/css/jq/custom-theme/images/ui-bg_glass_65_ffffff_1x400.png has changed
Binary file ontology/DocExamples/jOWLBrowser_1.0/css/jq/custom-theme/images/ui-bg_glass_75_dadada_1x400.png has changed
Binary file ontology/DocExamples/jOWLBrowser_1.0/css/jq/custom-theme/images/ui-bg_glass_75_e6e6e6_1x400.png has changed
Binary file ontology/DocExamples/jOWLBrowser_1.0/css/jq/custom-theme/images/ui-bg_glass_75_ffffff_1x400.png has changed
Binary file ontology/DocExamples/jOWLBrowser_1.0/css/jq/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png has changed
Binary file ontology/DocExamples/jOWLBrowser_1.0/css/jq/custom-theme/images/ui-bg_inset-soft_95_fef1ec_1x100.png has changed
Binary file ontology/DocExamples/jOWLBrowser_1.0/css/jq/custom-theme/images/ui-icons_222222_256x240.png has changed
Binary file ontology/DocExamples/jOWLBrowser_1.0/css/jq/custom-theme/images/ui-icons_2e83ff_256x240.png has changed
Binary file ontology/DocExamples/jOWLBrowser_1.0/css/jq/custom-theme/images/ui-icons_454545_256x240.png has changed
Binary file ontology/DocExamples/jOWLBrowser_1.0/css/jq/custom-theme/images/ui-icons_888888_256x240.png has changed
Binary file ontology/DocExamples/jOWLBrowser_1.0/css/jq/custom-theme/images/ui-icons_cd0a0a_256x240.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ontology/DocExamples/jOWLBrowser_1.0/css/jq/custom-theme/jquery-ui-1.7.custom.css	Tue Mar 06 17:44:21 2012 +0100
@@ -0,0 +1,405 @@
+/*
+* jQuery UI CSS Framework
+* Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
+* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
+*/
+
+/* Layout helpers
+----------------------------------*/
+.ui-helper-hidden { display: none; }
+.ui-helper-hidden-accessible { position: absolute; left: -99999999px; }
+.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
+.ui-helper-clearfix { display: inline-block; }
+/* required comment for clearfix to work in Opera \*/
+* html .ui-helper-clearfix { height:1%; }
+.ui-helper-clearfix { display:block; }
+/* end clearfix */
+.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+/*
+* jQuery UI CSS Framework
+* Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
+* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
+* To view and modify this theme, visit http://jqueryui.com/themeroller/?ctl=themeroller
+*/
+
+
+/* Component containers
+----------------------------------*/
+.ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; }
+.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; }
+.ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_75_ffffff_1x400.png) 50% 50% repeat-x; color: #222222; }
+.ui-widget-content a { color: #222222; }
+.ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; }
+.ui-widget-header a { color: #222222; }
+
+/* Interaction states
+----------------------------------*/
+.ui-state-default, .ui-widget-content .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #555555; outline: none; }
+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; outline: none; }
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus { border: 1px solid #999999; background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; outline: none; }
+.ui-state-hover a, .ui-state-hover a:hover { color: #212121; text-decoration: none; outline: none; }
+.ui-state-active, .ui-widget-content .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; outline: none; }
+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; outline: none; text-decoration: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-highlight, .ui-widget-content .ui-state-highlight {border: 1px solid #fcefa1; background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; }
+.ui-state-highlight a, .ui-widget-content .ui-state-highlight a { color: #363636; }
+.ui-state-error, .ui-widget-content .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_inset-soft_95_fef1ec_1x100.png) 50% bottom repeat-x; color: #cd0a0a; }
+.ui-state-error a, .ui-widget-content .ui-state-error a { color: #cd0a0a; }
+.ui-state-error-text, .ui-widget-content .ui-state-error-text { color: #cd0a0a; }
+.ui-state-disabled, .ui-widget-content .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+.ui-priority-primary, .ui-widget-content .ui-priority-primary { font-weight: bold; }
+.ui-priority-secondary, .ui-widget-content .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
+.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
+.ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
+.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); }
+.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
+.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
+.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); }
+.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }
+
+/* positioning */
+.ui-icon-carat-1-n { background-position: 0 0; }
+.ui-icon-carat-1-ne { background-position: -16px 0; }
+.ui-icon-carat-1-e { background-position: -32px 0; }
+.ui-icon-carat-1-se { background-position: -48px 0; }
+.ui-icon-carat-1-s { background-position: -64px 0; }
+.ui-icon-carat-1-sw { background-position: -80px 0; }
+.ui-icon-carat-1-w { background-position: -96px 0; }
+.ui-icon-carat-1-nw { background-position: -112px 0; }
+.ui-icon-carat-2-n-s { background-position: -128px 0; }
+.ui-icon-carat-2-e-w { background-position: -144px 0; }
+.ui-icon-triangle-1-n { background-position: 0 -16px; }
+.ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.ui-icon-triangle-1-e { background-position: -32px -16px; }
+.ui-icon-triangle-1-se { background-position: -48px -16px; }
+.ui-icon-triangle-1-s { background-position: -64px -16px; }
+.ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.ui-icon-triangle-1-w { background-position: -96px -16px; }
+.ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.ui-icon-arrow-1-n { background-position: 0 -32px; }
+.ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.ui-icon-arrow-1-e { background-position: -32px -32px; }
+.ui-icon-arrow-1-se { background-position: -48px -32px; }
+.ui-icon-arrow-1-s { background-position: -64px -32px; }
+.ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.ui-icon-arrow-1-w { background-position: -96px -32px; }
+.ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.ui-icon-arrow-4 { background-position: 0 -80px; }
+.ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.ui-icon-extlink { background-position: -32px -80px; }
+.ui-icon-newwin { background-position: -48px -80px; }
+.ui-icon-refresh { background-position: -64px -80px; }
+.ui-icon-shuffle { background-position: -80px -80px; }
+.ui-icon-transfer-e-w { background-position: -96px -80px; }
+.ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.ui-icon-folder-collapsed { background-position: 0 -96px; }
+.ui-icon-folder-open { background-position: -16px -96px; }
+.ui-icon-document { background-position: -32px -96px; }
+.ui-icon-document-b { background-position: -48px -96px; }
+.ui-icon-note { background-position: -64px -96px; }
+.ui-icon-mail-closed { background-position: -80px -96px; }
+.ui-icon-mail-open { background-position: -96px -96px; }
+.ui-icon-suitcase { background-position: -112px -96px; }
+.ui-icon-comment { background-position: -128px -96px; }
+.ui-icon-person { background-position: -144px -96px; }
+.ui-icon-print { background-position: -160px -96px; }
+.ui-icon-trash { background-position: -176px -96px; }
+.ui-icon-locked { background-position: -192px -96px; }
+.ui-icon-unlocked { background-position: -208px -96px; }
+.ui-icon-bookmark { background-position: -224px -96px; }
+.ui-icon-tag { background-position: -240px -96px; }
+.ui-icon-home { background-position: 0 -112px; }
+.ui-icon-flag { background-position: -16px -112px; }
+.ui-icon-calendar { background-position: -32px -112px; }
+.ui-icon-cart { background-position: -48px -112px; }
+.ui-icon-pencil { background-position: -64px -112px; }
+.ui-icon-clock { background-position: -80px -112px; }
+.ui-icon-disk { background-position: -96px -112px; }
+.ui-icon-calculator { background-position: -112px -112px; }
+.ui-icon-zoomin { background-position: -128px -112px; }
+.ui-icon-zoomout { background-position: -144px -112px; }
+.ui-icon-search { background-position: -160px -112px; }
+.ui-icon-wrench { background-position: -176px -112px; }
+.ui-icon-gear { background-position: -192px -112px; }
+.ui-icon-heart { background-position: -208px -112px; }
+.ui-icon-star { background-position: -224px -112px; }
+.ui-icon-link { background-position: -240px -112px; }
+.ui-icon-cancel { background-position: 0 -128px; }
+.ui-icon-plus { background-position: -16px -128px; }
+.ui-icon-plusthick { background-position: -32px -128px; }
+.ui-icon-minus { background-position: -48px -128px; }
+.ui-icon-minusthick { background-position: -64px -128px; }
+.ui-icon-close { background-position: -80px -128px; }
+.ui-icon-closethick { background-position: -96px -128px; }
+.ui-icon-key { background-position: -112px -128px; }
+.ui-icon-lightbulb { background-position: -128px -128px; }
+.ui-icon-scissors { background-position: -144px -128px; }
+.ui-icon-clipboard { background-position: -160px -128px; }
+.ui-icon-copy { background-position: -176px -128px; }
+.ui-icon-contact { background-position: -192px -128px; }
+.ui-icon-image { background-position: -208px -128px; }
+.ui-icon-video { background-position: -224px -128px; }
+.ui-icon-script { background-position: -240px -128px; }
+.ui-icon-alert { background-position: 0 -144px; }
+.ui-icon-info { background-position: -16px -144px; }
+.ui-icon-notice { background-position: -32px -144px; }
+.ui-icon-help { background-position: -48px -144px; }
+.ui-icon-check { background-position: -64px -144px; }
+.ui-icon-bullet { background-position: -80px -144px; }
+.ui-icon-radio-off { background-position: -96px -144px; }
+.ui-icon-radio-on { background-position: -112px -144px; }
+.ui-icon-pin-w { background-position: -128px -144px; }
+.ui-icon-pin-s { background-position: -144px -144px; }
+.ui-icon-play { background-position: 0 -160px; }
+.ui-icon-pause { background-position: -16px -160px; }
+.ui-icon-seek-next { background-position: -32px -160px; }
+.ui-icon-seek-prev { background-position: -48px -160px; }
+.ui-icon-seek-end { background-position: -64px -160px; }
+.ui-icon-seek-first { background-position: -80px -160px; }
+.ui-icon-stop { background-position: -96px -160px; }
+.ui-icon-eject { background-position: -112px -160px; }
+.ui-icon-volume-off { background-position: -128px -160px; }
+.ui-icon-volume-on { background-position: -144px -160px; }
+.ui-icon-power { background-position: 0 -176px; }
+.ui-icon-signal-diag { background-position: -16px -176px; }
+.ui-icon-signal { background-position: -32px -176px; }
+.ui-icon-battery-0 { background-position: -48px -176px; }
+.ui-icon-battery-1 { background-position: -64px -176px; }
+.ui-icon-battery-2 { background-position: -80px -176px; }
+.ui-icon-battery-3 { background-position: -96px -176px; }
+.ui-icon-circle-plus { background-position: 0 -192px; }
+.ui-icon-circle-minus { background-position: -16px -192px; }
+.ui-icon-circle-close { background-position: -32px -192px; }
+.ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.ui-icon-circle-zoomin { background-position: -176px -192px; }
+.ui-icon-circle-zoomout { background-position: -192px -192px; }
+.ui-icon-circle-check { background-position: -208px -192px; }
+.ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.ui-icon-circlesmall-close { background-position: -32px -208px; }
+.ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.ui-icon-squaresmall-close { background-position: -80px -208px; }
+.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; }
+.ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; }
+.ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; }
+.ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; }
+.ui-corner-top { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; }
+.ui-corner-bottom { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; }
+.ui-corner-right {  -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; }
+.ui-corner-left { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; }
+.ui-corner-all { -moz-border-radius: 4px; -webkit-border-radius: 4px; }
+
+/* Overlays */
+.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
+.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; }/* Resizable
+----------------------------------*/
+.ui-resizable { position: relative;}
+.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;}
+.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
+.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0px; }
+.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0px; }
+.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0px; height: 100%; }
+.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0px; height: 100%; }
+.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
+.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
+.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
+.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* Accordion
+----------------------------------*/
+.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
+.ui-accordion .ui-accordion-li-fix { display: inline; }
+.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
+.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em 2.2em; }
+.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
+.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; }
+.ui-accordion .ui-accordion-content-active { display: block; }/* Dialog
+----------------------------------*/
+.ui-dialog { position: relative; padding: .2em; width: 300px; }
+.ui-dialog .ui-dialog-titlebar { padding: .5em .3em .3em 1em; position: relative;  }
+.ui-dialog .ui-dialog-title { float: left; margin: .1em 0 .2em; } 
+.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
+.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
+.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
+.ui-dialog .ui-dialog-content { border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
+.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
+.ui-dialog .ui-dialog-buttonpane button { float: right; margin: .5em .4em .5em 0; cursor: pointer; padding: .2em .6em .3em .6em; line-height: 1.4em; width:auto; overflow:visible; }
+.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
+.ui-draggable .ui-dialog-titlebar { cursor: move; }
+/* Slider
+----------------------------------*/
+.ui-slider { position: relative; text-align: left; }
+.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
+.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; }
+
+.ui-slider-horizontal { height: .8em; }
+.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
+.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
+.ui-slider-horizontal .ui-slider-range-min { left: 0; }
+.ui-slider-horizontal .ui-slider-range-max { right: 0; }
+
+.ui-slider-vertical { width: .8em; height: 100px; }
+.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
+.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
+.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
+.ui-slider-vertical .ui-slider-range-max { top: 0; }/* Tabs
+----------------------------------*/
+.ui-tabs { padding: .2em; zoom: 1; }
+.ui-tabs .ui-tabs-nav { list-style: none; position: relative; padding: .2em .2em 0; }
+.ui-tabs .ui-tabs-nav li { position: relative; float: left; border-bottom-width: 0 !important; margin: 0 .2em -1px 0; padding: 0; }
+.ui-tabs .ui-tabs-nav li a { float: left; text-decoration: none; padding: .5em 1em; }
+.ui-tabs .ui-tabs-nav li.ui-tabs-selected { padding-bottom: 1px; border-bottom-width: 0; }
+.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
+.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
+.ui-tabs .ui-tabs-panel { padding: 1em 1.4em; display: block; border-width: 0; background: none; }
+.ui-tabs .ui-tabs-hide { display: none !important; }
+/* Datepicker
+----------------------------------*/
+.ui-datepicker { width: 17em; padding: .2em .2em 0; }
+.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
+.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
+.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
+.ui-datepicker .ui-datepicker-prev { left:2px; }
+.ui-datepicker .ui-datepicker-next { right:2px; }
+.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
+.ui-datepicker .ui-datepicker-next-hover { right:1px; }
+.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }
+.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
+.ui-datepicker .ui-datepicker-title select { float:left; font-size:1em; margin:1px 0; }
+.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
+.ui-datepicker select.ui-datepicker-month, 
+.ui-datepicker select.ui-datepicker-year { width: 49%;}
+.ui-datepicker .ui-datepicker-title select.ui-datepicker-year { float: right; }
+.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
+.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }
+.ui-datepicker td { border: 0; padding: 1px; }
+.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
+.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
+.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
+.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
+
+/* with multiple calendars */
+.ui-datepicker.ui-datepicker-multi { width:auto; }
+.ui-datepicker-multi .ui-datepicker-group { float:left; }
+.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
+.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
+.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
+.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
+.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
+.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
+.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
+.ui-datepicker-row-break { clear:both; width:100%; }
+
+/* RTL support */
+.ui-datepicker-rtl { direction: rtl; }
+.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
+.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
+.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
+.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
+.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
+.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
+.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
+.ui-datepicker-rtl .ui-datepicker-group { float:right; }
+.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+
+/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
+.ui-datepicker-cover {
+    display: none; /*sorry for IE5*/
+    display/**/: block; /*sorry for IE5*/
+    position: absolute; /*must have*/
+    z-index: -1; /*must have*/
+    filter: mask(); /*must have*/
+    top: -4px; /*must have*/
+    left: -4px; /*must have*/
+    width: 200px; /*must have*/
+    height: 200px; /*must have*/
+}/* Progressbar
+----------------------------------*/
+.ui-progressbar { height:2em; text-align: left; }
+.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }
\ No newline at end of file
Binary file ontology/DocExamples/jOWLBrowser_1.0/css/jq/vader/images/ui-bg_flat_0_aaaaaa_40x100.png has changed
Binary file ontology/DocExamples/jOWLBrowser_1.0/css/jq/vader/images/ui-bg_glass_95_fef1ec_1x400.png has changed
Binary file ontology/DocExamples/jOWLBrowser_1.0/css/jq/vader/images/ui-bg_gloss-wave_16_121212_500x100.png has changed
Binary file ontology/DocExamples/jOWLBrowser_1.0/css/jq/vader/images/ui-bg_highlight-hard_15_888888_1x100.png has changed
Binary file ontology/DocExamples/jOWLBrowser_1.0/css/jq/vader/images/ui-bg_highlight-hard_55_555555_1x100.png has changed
Binary file ontology/DocExamples/jOWLBrowser_1.0/css/jq/vader/images/ui-bg_highlight-soft_35_adadad_1x100.png has changed
Binary file ontology/DocExamples/jOWLBrowser_1.0/css/jq/vader/images/ui-bg_highlight-soft_60_dddddd_1x100.png has changed
Binary file ontology/DocExamples/jOWLBrowser_1.0/css/jq/vader/images/ui-bg_inset-soft_15_121212_1x100.png has changed
Binary file ontology/DocExamples/jOWLBrowser_1.0/css/jq/vader/images/ui-icons_666666_256x240.png has changed
Binary file ontology/DocExamples/jOWLBrowser_1.0/css/jq/vader/images/ui-icons_aaaaaa_256x240.png has changed
Binary file ontology/DocExamples/jOWLBrowser_1.0/css/jq/vader/images/ui-icons_bbbbbb_256x240.png has changed
Binary file ontology/DocExamples/jOWLBrowser_1.0/css/jq/vader/images/ui-icons_c98000_256x240.png has changed
Binary file ontology/DocExamples/jOWLBrowser_1.0/css/jq/vader/images/ui-icons_cccccc_256x240.png has changed
Binary file ontology/DocExamples/jOWLBrowser_1.0/css/jq/vader/images/ui-icons_cd0a0a_256x240.png has changed
Binary file ontology/DocExamples/jOWLBrowser_1.0/css/jq/vader/images/ui-icons_f29a00_256x240.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ontology/DocExamples/jOWLBrowser_1.0/css/jq/vader/jquery-ui-1.7.custom.css	Tue Mar 06 17:44:21 2012 +0100
@@ -0,0 +1,1026 @@
+/*
+* jQuery UI CSS Framework
+* Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
+* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
+*/
+
+/* Layout helpers
+----------------------------------*/
+.ui-helper-hidden { display: none; }
+.ui-helper-hidden-accessible { position: absolute; left: -99999999px; }
+.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
+.ui-helper-clearfix { display: inline-block; }
+/* required comment for clearfix to work in Opera \*/
+* html .ui-helper-clearfix { height:1%; }
+.ui-helper-clearfix { display:block; }
+/* end clearfix */
+.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+/*
+* jQuery UI CSS Framework
+* Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
+* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
+* To view and modify this theme, visit http://jqueryui.com/themeroller/?tr&ffDefault=Helvetica,%20Arial,%20sans-serif&fwDefault=normal&fsDefault=1.1&fsDefaultUnit=em&cornerRadius=5&cornerRadiusUnit=px&bgColorHeader=888888&bgTextureHeader=04_highlight_hard.png&bgImgOpacityHeader=15&borderColorHeader=404040&fcHeader=ffffff&iconColorHeader=cccccc&bgColorContent=121212&bgTextureContent=12_gloss_wave.png&bgImgOpacityContent=16&borderColorContent=404040&fcContent=eeeeee&iconColorContent=bbbbbb&bgColorDefault=adadad&bgTextureDefault=03_highlight_soft.png&bgImgOpacityDefault=35&borderColorDefault=cccccc&fcDefault=333333&iconColorDefault=666666&bgColorHover=dddddd&bgTextureHover=03_highlight_soft.png&bgImgOpacityHover=60&borderColorHover=dddddd&fcHover=000000&iconColorHover=c98000&bgColorActive=121212&bgTextureActive=05_inset_soft.png&bgImgOpacityActive=15&borderColorActive=000000&fcActive=ffffff&iconColorActive=f29a00&bgColorHighlight=555555&bgTextureHighlight=04_highlight_hard.png&bgImgOpacityHighlight=55&borderColorHighlight=404040&fcHighlight=cccccc&iconColorHighlight=aaaaaa&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a
+*/
+
+
+/* Component containers
+----------------------------------*/
+.ui-widget { font-family: Helvetica, Arial, sans-serif; font-size: 1.1em; }
+.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Helvetica, Arial, sans-serif; font-size: 1em; }
+.ui-widget-content { border: 1px solid #404040; background: #121212 url(images/ui-bg_gloss-wave_16_121212_500x100.png) 50% top repeat-x; color: #eeeeee; }
+.ui-widget-content a { color: #eeeeee; }
+.ui-widget-header { border: 1px solid #404040; background: #888888 url(images/ui-bg_highlight-hard_15_888888_1x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }
+.ui-widget-header a { color: #ffffff; }
+
+/* Interaction states
+----------------------------------*/
+.ui-state-default, .ui-widget-content .ui-state-default { border: 1px solid #cccccc; background: #adadad url(images/ui-bg_highlight-soft_35_adadad_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #333333; outline: none; }
+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #333333; text-decoration: none; outline: none; }
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus { border: 1px solid #dddddd; background: #dddddd url(images/ui-bg_highlight-soft_60_dddddd_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #000000; outline: none; }
+.ui-state-hover a, .ui-state-hover a:hover { color: #000000; text-decoration: none; outline: none; }
+.ui-state-active, .ui-widget-content .ui-state-active { border: 1px solid #000000; background: #121212 url(images/ui-bg_inset-soft_15_121212_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #ffffff; outline: none; }
+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #ffffff; outline: none; text-decoration: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-highlight, .ui-widget-content .ui-state-highlight {border: 1px solid #404040; background: #555555 url(images/ui-bg_highlight-hard_55_555555_1x100.png) 50% top repeat-x; color: #cccccc; }
+.ui-state-highlight a, .ui-widget-content .ui-state-highlight a { color: #cccccc; }
+.ui-state-error, .ui-widget-content .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; }
+.ui-state-error a, .ui-widget-content .ui-state-error a { color: #cd0a0a; }
+.ui-state-error-text, .ui-widget-content .ui-state-error-text { color: #cd0a0a; }
+.ui-state-disabled, .ui-widget-content .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+.ui-priority-primary, .ui-widget-content .ui-priority-primary { font-weight: bold; }
+.ui-priority-secondary, .ui-widget-content .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_bbbbbb_256x240.png); }
+.ui-widget-content .ui-icon {background-image: url(images/ui-icons_bbbbbb_256x240.png); }
+.ui-widget-header .ui-icon {background-image: url(images/ui-icons_cccccc_256x240.png); }
+.ui-state-default .ui-icon { background-image: url(images/ui-icons_666666_256x240.png); }
+.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_c98000_256x240.png); }
+.ui-state-active .ui-icon {background-image: url(images/ui-icons_f29a00_256x240.png); }
+.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_aaaaaa_256x240.png); }
+.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }
+
+/* positioning */
+.ui-icon-carat-1-n { background-position: 0 0; }
+.ui-icon-carat-1-ne { background-position: -16px 0; }
+.ui-icon-carat-1-e { background-position: -32px 0; }
+.ui-icon-carat-1-se { background-position: -48px 0; }
+.ui-icon-carat-1-s { background-position: -64px 0; }
+.ui-icon-carat-1-sw { background-position: -80px 0; }
+.ui-icon-carat-1-w { background-position: -96px 0; }
+.ui-icon-carat-1-nw { background-position: -112px 0; }
+.ui-icon-carat-2-n-s { background-position: -128px 0; }
+.ui-icon-carat-2-e-w { background-position: -144px 0; }
+.ui-icon-triangle-1-n { background-position: 0 -16px; }
+.ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.ui-icon-triangle-1-e { background-position: -32px -16px; }
+.ui-icon-triangle-1-se { background-position: -48px -16px; }
+.ui-icon-triangle-1-s { background-position: -64px -16px; }
+.ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.ui-icon-triangle-1-w { background-position: -96px -16px; }
+.ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.ui-icon-arrow-1-n { background-position: 0 -32px; }
+.ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.ui-icon-arrow-1-e { background-position: -32px -32px; }
+.ui-icon-arrow-1-se { background-position: -48px -32px; }
+.ui-icon-arrow-1-s { background-position: -64px -32px; }
+.ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.ui-icon-arrow-1-w { background-position: -96px -32px; }
+.ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.ui-icon-arrow-4 { background-position: 0 -80px; }
+.ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.ui-icon-extlink { background-position: -32px -80px; }
+.ui-icon-newwin { background-position: -48px -80px; }
+.ui-icon-refresh { background-position: -64px -80px; }
+.ui-icon-shuffle { background-position: -80px -80px; }
+.ui-icon-transfer-e-w { background-position: -96px -80px; }
+.ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.ui-icon-folder-collapsed { background-position: 0 -96px; }
+.ui-icon-folder-open { background-position: -16px -96px; }
+.ui-icon-document { background-position: -32px -96px; }
+.ui-icon-document-b { background-position: -48px -96px; }
+.ui-icon-note { background-position: -64px -96px; }
+.ui-icon-mail-closed { background-position: -80px -96px; }
+.ui-icon-mail-open { background-position: -96px -96px; }
+.ui-icon-suitcase { background-position: -112px -96px; }
+.ui-icon-comment { background-position: -128px -96px; }
+.ui-icon-person { background-position: -144px -96px; }
+.ui-icon-print { background-position: -160px -96px; }
+.ui-icon-trash { background-position: -176px -96px; }
+.ui-icon-locked { background-position: -192px -96px; }
+.ui-icon-unlocked { background-position: -208px -96px; }
+.ui-icon-bookmark { background-position: -224px -96px; }
+.ui-icon-tag { background-position: -240px -96px; }
+.ui-icon-home { background-position: 0 -112px; }
+.ui-icon-flag { background-position: -16px -112px; }
+.ui-icon-calendar { background-position: -32px -112px; }
+.ui-icon-cart { background-position: -48px -112px; }
+.ui-icon-pencil { background-position: -64px -112px; }
+.ui-icon-clock { background-position: -80px -112px; }
+.ui-icon-disk { background-position: -96px -112px; }
+.ui-icon-calculator { background-position: -112px -112px; }
+.ui-icon-zoomin { background-position: -128px -112px; }
+.ui-icon-zoomout { background-position: -144px -112px; }
+.ui-icon-search { background-position: -160px -112px; }
+.ui-icon-wrench { background-position: -176px -112px; }
+.ui-icon-gear { background-position: -192px -112px; }
+.ui-icon-heart { background-position: -208px -112px; }
+.ui-icon-star { background-position: -224px -112px; }
+.ui-icon-link { background-position: -240px -112px; }
+.ui-icon-cancel { background-position: 0 -128px; }
+.ui-icon-plus { background-position: -16px -128px; }
+.ui-icon-plusthick { background-position: -32px -128px; }
+.ui-icon-minus { background-position: -48px -128px; }
+.ui-icon-minusthick { background-position: -64px -128px; }
+.ui-icon-close { background-position: -80px -128px; }
+.ui-icon-closethick { background-position: -96px -128px; }
+.ui-icon-key { background-position: -112px -128px; }
+.ui-icon-lightbulb { background-position: -128px -128px; }
+.ui-icon-scissors { background-position: -144px -128px; }
+.ui-icon-clipboard { background-position: -160px -128px; }
+.ui-icon-copy { background-position: -176px -128px; }
+.ui-icon-contact { background-position: -192px -128px; }
+.ui-icon-image { background-position: -208px -128px; }
+.ui-icon-video { background-position: -224px -128px; }
+.ui-icon-script { background-position: -240px -128px; }
+.ui-icon-alert { background-position: 0 -144px; }
+.ui-icon-info { background-position: -16px -144px; }
+.ui-icon-notice { background-position: -32px -144px; }
+.ui-icon-help { background-position: -48px -144px; }
+.ui-icon-check { background-position: -64px -144px; }
+.ui-icon-bullet { background-position: -80px -144px; }
+.ui-icon-radio-off { background-position: -96px -144px; }
+.ui-icon-radio-on { background-position: -112px -144px; }
+.ui-icon-pin-w { background-position: -128px -144px; }
+.ui-icon-pin-s { background-position: -144px -144px; }
+.ui-icon-play { background-position: 0 -160px; }
+.ui-icon-pause { background-position: -16px -160px; }
+.ui-icon-seek-next { background-position: -32px -160px; }
+.ui-icon-seek-prev { background-position: -48px -160px; }
+.ui-icon-seek-end { background-position: -64px -160px; }
+.ui-icon-seek-first { background-position: -80px -160px; }
+.ui-icon-stop { background-position: -96px -160px; }
+.ui-icon-eject { background-position: -112px -160px; }
+.ui-icon-volume-off { background-position: -128px -160px; }
+.ui-icon-volume-on { background-position: -144px -160px; }
+.ui-icon-power { background-position: 0 -176px; }
+.ui-icon-signal-diag { background-position: -16px -176px; }
+.ui-icon-signal { background-position: -32px -176px; }
+.ui-icon-battery-0 { background-position: -48px -176px; }
+.ui-icon-battery-1 { background-position: -64px -176px; }
+.ui-icon-battery-2 { background-position: -80px -176px; }
+.ui-icon-battery-3 { background-position: -96px -176px; }
+.ui-icon-circle-plus { background-position: 0 -192px; }
+.ui-icon-circle-minus { background-position: -16px -192px; }
+.ui-icon-circle-close { background-position: -32px -192px; }
+.ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.ui-icon-circle-zoomin { background-position: -176px -192px; }
+.ui-icon-circle-zoomout { background-position: -192px -192px; }
+.ui-icon-circle-check { background-position: -208px -192px; }
+.ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.ui-icon-circlesmall-close { background-position: -32px -208px; }
+.ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.ui-icon-squaresmall-close { background-position: -80px -208px; }
+.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.ui-corner-tl { -moz-border-radius-topleft: 5px; -webkit-border-top-left-radius: 5px; }
+.ui-corner-tr { -moz-border-radius-topright: 5px; -webkit-border-top-right-radius: 5px; }
+.ui-corner-bl { -moz-border-radius-bottomleft: 5px; -webkit-border-bottom-left-radius: 5px; }
+.ui-corner-br { -moz-border-radius-bottomright: 5px; -webkit-border-bottom-right-radius: 5px; }
+.ui-corner-top { -moz-border-radius-topleft: 5px; -webkit-border-top-left-radius: 5px; -moz-border-radius-topright: 5px; -webkit-border-top-right-radius: 5px; }
+.ui-corner-bottom { -moz-border-radius-bottomleft: 5px; -webkit-border-bottom-left-radius: 5px; -moz-border-radius-bottomright: 5px; -webkit-border-bottom-right-radius: 5px; }
+.ui-corner-right {  -moz-border-radius-topright: 5px; -webkit-border-top-right-radius: 5px; -moz-border-radius-bottomright: 5px; -webkit-border-bottom-right-radius: 5px; }
+.ui-corner-left { -moz-border-radius-topleft: 5px; -webkit-border-top-left-radius: 5px; -moz-border-radius-bottomleft: 5px; -webkit-border-bottom-left-radius: 5px; }
+.ui-corner-all { -moz-border-radius: 5px; -webkit-border-radius: 5px; }
+
+/* Overlays */
+.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
+.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; }/* Resizable
+----------------------------------*/
+.ui-resizable { position: relative;}
+.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;}
+.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
+.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0px; }
+.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0px; }
+.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0px; height: 100%; }
+.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0px; height: 100%; }
+.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
+.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
+.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
+.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* Accordion
+----------------------------------*/
+.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
+.ui-accordion .ui-accordion-li-fix { display: inline; }
+.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
+.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em 2.2em; }
+.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
+.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; }
+.ui-accordion .ui-accordion-content-active { display: block; }/* Dialog
+----------------------------------*/
+.ui-dialog { position: relative; padding: .2em; width: 300px; }
+.ui-dialog .ui-dialog-titlebar { padding: .5em .3em .3em 1em; position: relative;  }
+.ui-dialog .ui-dialog-title { float: left; margin: .1em 0 .2em; } 
+.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
+.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
+.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
+.ui-dialog .ui-dialog-content { border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
+.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
+.ui-dialog .ui-dialog-buttonpane button { float: right; margin: .5em .4em .5em 0; cursor: pointer; padding: .2em .6em .3em .6em; line-height: 1.4em; width:auto; overflow:visible; }
+.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
+.ui-draggable .ui-dialog-titlebar { cursor: move; }
+/* Slider
+----------------------------------*/
+.ui-slider { position: relative; text-align: left; }
+.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
+.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; }
+
+.ui-slider-horizontal { height: .8em; }
+.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
+.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
+.ui-slider-horizontal .ui-slider-range-min { left: 0; }
+.ui-slider-horizontal .ui-slider-range-max { right: 0; }
+
+.ui-slider-vertical { width: .8em; height: 100px; }
+.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
+.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
+.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
+.ui-slider-vertical .ui-slider-range-max { top: 0; }/* Tabs
+----------------------------------*/
+.ui-tabs { padding: .2em; zoom: 1; }
+.ui-tabs .ui-tabs-nav { list-style: none; position: relative; padding: .2em .2em 0; }
+.ui-tabs .ui-tabs-nav li { position: relative; float: left; border-bottom-width: 0 !important; margin: 0 .2em -1px 0; padding: 0; }
+.ui-tabs .ui-tabs-nav li a { float: left; text-decoration: none; padding: .5em 1em; }
+.ui-tabs .ui-tabs-nav li.ui-tabs-selected { padding-bottom: 1px; border-bottom-width: 0; }
+.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
+.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
+.ui-tabs .ui-tabs-panel { padding: 1em 1.4em; display: block; border-width: 0; background: none; }
+.ui-tabs .ui-tabs-hide { display: none !important; }
+/* Datepicker
+----------------------------------*/
+.ui-datepicker { width: 17em; padding: .2em .2em 0; }
+.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
+.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
+.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
+.ui-datepicker .ui-datepicker-prev { left:2px; }
+.ui-datepicker .ui-datepicker-next { right:2px; }
+.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
+.ui-datepicker .ui-datepicker-next-hover { right:1px; }
+.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }
+.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
+.ui-datepicker .ui-datepicker-title select { float:left; font-size:1em; margin:1px 0; }
+.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
+.ui-datepicker select.ui-datepicker-month, 
+.ui-datepicker select.ui-datepicker-year { width: 49%;}
+.ui-datepicker .ui-datepicker-title select.ui-datepicker-year { float: right; }
+.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
+.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }
+.ui-datepicker td { border: 0; padding: 1px; }
+.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
+.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
+.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
+.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
+
+/* with multiple calendars */
+.ui-datepicker.ui-datepicker-multi { width:auto; }
+.ui-datepicker-multi .ui-datepicker-group { float:left; }
+.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
+.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
+.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
+.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
+.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
+.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
+.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
+.ui-datepicker-row-break { clear:both; width:100%; }
+
+/* RTL support */
+.ui-datepicker-rtl { direction: rtl; }
+.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
+.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
+.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
+.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
+.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
+.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
+.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
+.ui-datepicker-rtl .ui-datepicker-group { float:right; }
+.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+
+/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
+.ui-datepicker-cover {
+    display: none; /*sorry for IE5*/
+    display/**/: block; /*sorry for IE5*/
+    position: absolute; /*must have*/
+    z-index: -1; /*must have*/
+    filter: mask(); /*must have*/
+    top: -4px; /*must have*/
+    left: -4px; /*must have*/
+    width: 200px; /*must have*/
+    height: 200px; /*must have*/
+}/* Progressbar
+----------------------------------*/
+.ui-progressbar { height:2em; text-align: left; }
+.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }/*
+* jQuery UI CSS Framework
+* Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
+* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
+*/
+
+/* Layout helpers
+----------------------------------*/
+.ui-helper-hidden { display: none; }
+.ui-helper-hidden-accessible { position: absolute; left: -99999999px; }
+.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
+.ui-helper-clearfix { display: inline-block; }
+/* required comment for clearfix to work in Opera \*/
+* html .ui-helper-clearfix { height:1%; }
+.ui-helper-clearfix { display:block; }
+/* end clearfix */
+.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+/*
+* jQuery UI CSS Framework
+* Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
+* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
+* To view and modify this theme, visit http://jqueryui.com/themeroller/?tr&ffDefault=Helvetica,%20Arial,%20sans-serif&fwDefault=normal&fsDefault=1.1&fsDefaultUnit=em&cornerRadius=5&cornerRadiusUnit=px&bgColorHeader=888888&bgTextureHeader=04_highlight_hard.png&bgImgOpacityHeader=15&borderColorHeader=404040&fcHeader=ffffff&iconColorHeader=cccccc&bgColorContent=121212&bgTextureContent=12_gloss_wave.png&bgImgOpacityContent=16&borderColorContent=404040&fcContent=eeeeee&iconColorContent=bbbbbb&bgColorDefault=adadad&bgTextureDefault=03_highlight_soft.png&bgImgOpacityDefault=35&borderColorDefault=cccccc&fcDefault=333333&iconColorDefault=666666&bgColorHover=dddddd&bgTextureHover=03_highlight_soft.png&bgImgOpacityHover=60&borderColorHover=dddddd&fcHover=000000&iconColorHover=c98000&bgColorActive=121212&bgTextureActive=05_inset_soft.png&bgImgOpacityActive=15&borderColorActive=000000&fcActive=ffffff&iconColorActive=f29a00&bgColorHighlight=555555&bgTextureHighlight=04_highlight_hard.png&bgImgOpacityHighlight=55&borderColorHighlight=404040&fcHighlight=cccccc&iconColorHighlight=aaaaaa&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a
+*/
+
+
+/* Component containers
+----------------------------------*/
+.ui-widget { font-family: Helvetica, Arial, sans-serif; font-size: 1.1em; }
+.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Helvetica, Arial, sans-serif; font-size: 1em; }
+.ui-widget-content { border: 1px solid #404040; background: #121212 url(images/ui-bg_gloss-wave_16_121212_500x100.png) 50% top repeat-x; color: #eeeeee; }
+.ui-widget-content a { color: #eeeeee; }
+.ui-widget-header { border: 1px solid #404040; background: #888888 url(images/ui-bg_highlight-hard_15_888888_1x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }
+.ui-widget-header a { color: #ffffff; }
+
+/* Interaction states
+----------------------------------*/
+.ui-state-default, .ui-widget-content .ui-state-default { border: 1px solid #cccccc; background: #adadad url(images/ui-bg_highlight-soft_35_adadad_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #333333; outline: none; }
+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #333333; text-decoration: none; outline: none; }
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus { border: 1px solid #dddddd; background: #dddddd url(images/ui-bg_highlight-soft_60_dddddd_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #000000; outline: none; }
+.ui-state-hover a, .ui-state-hover a:hover { color: #000000; text-decoration: none; outline: none; }
+.ui-state-active, .ui-widget-content .ui-state-active { border: 1px solid #000000; background: #121212 url(images/ui-bg_inset-soft_15_121212_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #ffffff; outline: none; }
+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #ffffff; outline: none; text-decoration: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-highlight, .ui-widget-content .ui-state-highlight {border: 1px solid #404040; background: #555555 url(images/ui-bg_highlight-hard_55_555555_1x100.png) 50% top repeat-x; color: #cccccc; }
+.ui-state-highlight a, .ui-widget-content .ui-state-highlight a { color: #cccccc; }
+.ui-state-error, .ui-widget-content .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; }
+.ui-state-error a, .ui-widget-content .ui-state-error a { color: #cd0a0a; }
+.ui-state-error-text, .ui-widget-content .ui-state-error-text { color: #cd0a0a; }
+.ui-state-disabled, .ui-widget-content .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+.ui-priority-primary, .ui-widget-content .ui-priority-primary { font-weight: bold; }
+.ui-priority-secondary, .ui-widget-content .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_bbbbbb_256x240.png); }
+.ui-widget-content .ui-icon {background-image: url(images/ui-icons_bbbbbb_256x240.png); }
+.ui-widget-header .ui-icon {background-image: url(images/ui-icons_cccccc_256x240.png); }
+.ui-state-default .ui-icon { background-image: url(images/ui-icons_666666_256x240.png); }
+.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_c98000_256x240.png); }
+.ui-state-active .ui-icon {background-image: url(images/ui-icons_f29a00_256x240.png); }
+.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_aaaaaa_256x240.png); }
+.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }
+
+/* positioning */
+.ui-icon-carat-1-n { background-position: 0 0; }
+.ui-icon-carat-1-ne { background-position: -16px 0; }
+.ui-icon-carat-1-e { background-position: -32px 0; }
+.ui-icon-carat-1-se { background-position: -48px 0; }
+.ui-icon-carat-1-s { background-position: -64px 0; }
+.ui-icon-carat-1-sw { background-position: -80px 0; }
+.ui-icon-carat-1-w { background-position: -96px 0; }
+.ui-icon-carat-1-nw { background-position: -112px 0; }
+.ui-icon-carat-2-n-s { background-position: -128px 0; }
+.ui-icon-carat-2-e-w { background-position: -144px 0; }
+.ui-icon-triangle-1-n { background-position: 0 -16px; }
+.ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.ui-icon-triangle-1-e { background-position: -32px -16px; }
+.ui-icon-triangle-1-se { background-position: -48px -16px; }
+.ui-icon-triangle-1-s { background-position: -64px -16px; }
+.ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.ui-icon-triangle-1-w { background-position: -96px -16px; }
+.ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.ui-icon-arrow-1-n { background-position: 0 -32px; }
+.ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.ui-icon-arrow-1-e { background-position: -32px -32px; }
+.ui-icon-arrow-1-se { background-position: -48px -32px; }
+.ui-icon-arrow-1-s { background-position: -64px -32px; }
+.ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.ui-icon-arrow-1-w { background-position: -96px -32px; }
+.ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.ui-icon-arrow-4 { background-position: 0 -80px; }
+.ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.ui-icon-extlink { background-position: -32px -80px; }
+.ui-icon-newwin { background-position: -48px -80px; }
+.ui-icon-refresh { background-position: -64px -80px; }
+.ui-icon-shuffle { background-position: -80px -80px; }
+.ui-icon-transfer-e-w { background-position: -96px -80px; }
+.ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.ui-icon-folder-collapsed { background-position: 0 -96px; }
+.ui-icon-folder-open { background-position: -16px -96px; }
+.ui-icon-document { background-position: -32px -96px; }
+.ui-icon-document-b { background-position: -48px -96px; }
+.ui-icon-note { background-position: -64px -96px; }
+.ui-icon-mail-closed { background-position: -80px -96px; }
+.ui-icon-mail-open { background-position: -96px -96px; }
+.ui-icon-suitcase { background-position: -112px -96px; }
+.ui-icon-comment { background-position: -128px -96px; }
+.ui-icon-person { background-position: -144px -96px; }
+.ui-icon-print { background-position: -160px -96px; }
+.ui-icon-trash { background-position: -176px -96px; }
+.ui-icon-locked { background-position: -192px -96px; }
+.ui-icon-unlocked { background-position: -208px -96px; }
+.ui-icon-bookmark { background-position: -224px -96px; }
+.ui-icon-tag { background-position: -240px -96px; }
+.ui-icon-home { background-position: 0 -112px; }
+.ui-icon-flag { background-position: -16px -112px; }
+.ui-icon-calendar { background-position: -32px -112px; }
+.ui-icon-cart { background-position: -48px -112px; }
+.ui-icon-pencil { background-position: -64px -112px; }
+.ui-icon-clock { background-position: -80px -112px; }
+.ui-icon-disk { background-position: -96px -112px; }
+.ui-icon-calculator { background-position: -112px -112px; }
+.ui-icon-zoomin { background-position: -128px -112px; }
+.ui-icon-zoomout { background-position: -144px -112px; }
+.ui-icon-search { background-position: -160px -112px; }
+.ui-icon-wrench { background-position: -176px -112px; }
+.ui-icon-gear { background-position: -192px -112px; }
+.ui-icon-heart { background-position: -208px -112px; }
+.ui-icon-star { background-position: -224px -112px; }
+.ui-icon-link { background-position: -240px -112px; }
+.ui-icon-cancel { background-position: 0 -128px; }
+.ui-icon-plus { background-position: -16px -128px; }
+.ui-icon-plusthick { background-position: -32px -128px; }
+.ui-icon-minus { background-position: -48px -128px; }
+.ui-icon-minusthick { background-position: -64px -128px; }
+.ui-icon-close { background-position: -80px -128px; }
+.ui-icon-closethick { background-position: -96px -128px; }
+.ui-icon-key { background-position: -112px -128px; }
+.ui-icon-lightbulb { background-position: -128px -128px; }
+.ui-icon-scissors { background-position: -144px -128px; }
+.ui-icon-clipboard { background-position: -160px -128px; }
+.ui-icon-copy { background-position: -176px -128px; }
+.ui-icon-contact { background-position: -192px -128px; }
+.ui-icon-image { background-position: -208px -128px; }
+.ui-icon-video { background-position: -224px -128px; }
+.ui-icon-script { background-position: -240px -128px; }
+.ui-icon-alert { background-position: 0 -144px; }
+.ui-icon-info { background-position: -16px -144px; }
+.ui-icon-notice { background-position: -32px -144px; }
+.ui-icon-help { background-position: -48px -144px; }
+.ui-icon-check { background-position: -64px -144px; }
+.ui-icon-bullet { background-position: -80px -144px; }
+.ui-icon-radio-off { background-position: -96px -144px; }
+.ui-icon-radio-on { background-position: -112px -144px; }
+.ui-icon-pin-w { background-position: -128px -144px; }
+.ui-icon-pin-s { background-position: -144px -144px; }
+.ui-icon-play { background-position: 0 -160px; }
+.ui-icon-pause { background-position: -16px -160px; }
+.ui-icon-seek-next { background-position: -32px -160px; }
+.ui-icon-seek-prev { background-position: -48px -160px; }
+.ui-icon-seek-end { background-position: -64px -160px; }
+.ui-icon-seek-first { background-position: -80px -160px; }
+.ui-icon-stop { background-position: -96px -160px; }
+.ui-icon-eject { background-position: -112px -160px; }
+.ui-icon-volume-off { background-position: -128px -160px; }
+.ui-icon-volume-on { background-position: -144px -160px; }
+.ui-icon-power { background-position: 0 -176px; }
+.ui-icon-signal-diag { background-position: -16px -176px; }
+.ui-icon-signal { background-position: -32px -176px; }
+.ui-icon-battery-0 { background-position: -48px -176px; }
+.ui-icon-battery-1 { background-position: -64px -176px; }
+.ui-icon-battery-2 { background-position: -80px -176px; }
+.ui-icon-battery-3 { background-position: -96px -176px; }
+.ui-icon-circle-plus { background-position: 0 -192px; }
+.ui-icon-circle-minus { background-position: -16px -192px; }
+.ui-icon-circle-close { background-position: -32px -192px; }
+.ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.ui-icon-circle-zoomin { background-position: -176px -192px; }
+.ui-icon-circle-zoomout { background-position: -192px -192px; }
+.ui-icon-circle-check { background-position: -208px -192px; }
+.ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.ui-icon-circlesmall-close { background-position: -32px -208px; }
+.ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.ui-icon-squaresmall-close { background-position: -80px -208px; }
+.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.ui-corner-tl { -moz-border-radius-topleft: 5px; -webkit-border-top-left-radius: 5px; }
+.ui-corner-tr { -moz-border-radius-topright: 5px; -webkit-border-top-right-radius: 5px; }
+.ui-corner-bl { -moz-border-radius-bottomleft: 5px; -webkit-border-bottom-left-radius: 5px; }
+.ui-corner-br { -moz-border-radius-bottomright: 5px; -webkit-border-bottom-right-radius: 5px; }
+.ui-corner-top { -moz-border-radius-topleft: 5px; -webkit-border-top-left-radius: 5px; -moz-border-radius-topright: 5px; -webkit-border-top-right-radius: 5px; }
+.ui-corner-bottom { -moz-border-radius-bottomleft: 5px; -webkit-border-bottom-left-radius: 5px; -moz-border-radius-bottomright: 5px; -webkit-border-bottom-right-radius: 5px; }
+.ui-corner-right {  -moz-border-radius-topright: 5px; -webkit-border-top-right-radius: 5px; -moz-border-radius-bottomright: 5px; -webkit-border-bottom-right-radius: 5px; }
+.ui-corner-left { -moz-border-radius-topleft: 5px; -webkit-border-top-left-radius: 5px; -moz-border-radius-bottomleft: 5px; -webkit-border-bottom-left-radius: 5px; }
+.ui-corner-all { -moz-border-radius: 5px; -webkit-border-radius: 5px; }
+
+/* Overlays */
+.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
+.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; }/* Datepicker
+----------------------------------*/
+.ui-datepicker { width: 17em; padding: .2em .2em 0; }
+.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
+.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
+.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
+.ui-datepicker .ui-datepicker-prev { left:2px; }
+.ui-datepicker .ui-datepicker-next { right:2px; }
+.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
+.ui-datepicker .ui-datepicker-next-hover { right:1px; }
+.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }
+.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
+.ui-datepicker .ui-datepicker-title select { float:left; font-size:1em; margin:1px 0; }
+.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
+.ui-datepicker select.ui-datepicker-month, 
+.ui-datepicker select.ui-datepicker-year { width: 49%;}
+.ui-datepicker .ui-datepicker-title select.ui-datepicker-year { float: right; }
+.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
+.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }
+.ui-datepicker td { border: 0; padding: 1px; }
+.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
+.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
+.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
+.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
+
+/* with multiple calendars */
+.ui-datepicker.ui-datepicker-multi { width:auto; }
+.ui-datepicker-multi .ui-datepicker-group { float:left; }
+.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
+.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
+.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
+.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
+.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
+.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
+.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
+.ui-datepicker-row-break { clear:both; width:100%; }
+
+/* RTL support */
+.ui-datepicker-rtl { direction: rtl; }
+.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
+.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
+.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
+.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
+.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
+.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
+.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
+.ui-datepicker-rtl .ui-datepicker-group { float:right; }
+.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+
+/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
+.ui-datepicker-cover {
+    display: none; /*sorry for IE5*/
+    display/**/: block; /*sorry for IE5*/
+    position: absolute; /*must have*/
+    z-index: -1; /*must have*/
+    filter: mask(); /*must have*/
+    top: -4px; /*must have*/
+    left: -4px; /*must have*/
+    width: 200px; /*must have*/
+    height: 200px; /*must have*/
+}/*
+* jQuery UI CSS Framework
+* Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
+* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
+*/
+
+/* Layout helpers
+----------------------------------*/
+.ui-helper-hidden { display: none; }
+.ui-helper-hidden-accessible { position: absolute; left: -99999999px; }
+.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
+.ui-helper-clearfix { display: inline-block; }
+/* required comment for clearfix to work in Opera \*/
+* html .ui-helper-clearfix { height:1%; }
+.ui-helper-clearfix { display:block; }
+/* end clearfix */
+.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+/*
+* jQuery UI CSS Framework
+* Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
+* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
+* To view and modify this theme, visit http://jqueryui.com/themeroller/?tr&ffDefault=Helvetica,%20Arial,%20sans-serif&fwDefault=normal&fsDefault=1.1&fsDefaultUnit=em&cornerRadius=5&cornerRadiusUnit=px&bgColorHeader=888888&bgTextureHeader=04_highlight_hard.png&bgImgOpacityHeader=15&borderColorHeader=404040&fcHeader=ffffff&iconColorHeader=cccccc&bgColorContent=121212&bgTextureContent=12_gloss_wave.png&bgImgOpacityContent=16&borderColorContent=404040&fcContent=eeeeee&iconColorContent=bbbbbb&bgColorDefault=adadad&bgTextureDefault=03_highlight_soft.png&bgImgOpacityDefault=35&borderColorDefault=cccccc&fcDefault=333333&iconColorDefault=666666&bgColorHover=dddddd&bgTextureHover=03_highlight_soft.png&bgImgOpacityHover=60&borderColorHover=dddddd&fcHover=000000&iconColorHover=c98000&bgColorActive=121212&bgTextureActive=05_inset_soft.png&bgImgOpacityActive=15&borderColorActive=000000&fcActive=ffffff&iconColorActive=f29a00&bgColorHighlight=555555&bgTextureHighlight=04_highlight_hard.png&bgImgOpacityHighlight=55&borderColorHighlight=404040&fcHighlight=cccccc&iconColorHighlight=aaaaaa&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a
+*/
+
+
+/* Component containers
+----------------------------------*/
+.ui-widget { font-family: Helvetica, Arial, sans-serif; font-size: 1.1em; }
+.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Helvetica, Arial, sans-serif; font-size: 1em; }
+.ui-widget-content { border: 1px solid #404040; background: #121212 url(images/ui-bg_gloss-wave_16_121212_500x100.png) 50% top repeat-x; color: #eeeeee; }
+.ui-widget-content a { color: #eeeeee; }
+.ui-widget-header { border: 1px solid #404040; background: #888888 url(images/ui-bg_highlight-hard_15_888888_1x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }
+.ui-widget-header a { color: #ffffff; }
+
+/* Interaction states
+----------------------------------*/
+.ui-state-default, .ui-widget-content .ui-state-default { border: 1px solid #cccccc; background: #adadad url(images/ui-bg_highlight-soft_35_adadad_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #333333; outline: none; }
+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #333333; text-decoration: none; outline: none; }
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus { border: 1px solid #dddddd; background: #dddddd url(images/ui-bg_highlight-soft_60_dddddd_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #000000; outline: none; }
+.ui-state-hover a, .ui-state-hover a:hover { color: #000000; text-decoration: none; outline: none; }
+.ui-state-active, .ui-widget-content .ui-state-active { border: 1px solid #000000; background: #121212 url(images/ui-bg_inset-soft_15_121212_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #ffffff; outline: none; }
+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #ffffff; outline: none; text-decoration: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-highlight, .ui-widget-content .ui-state-highlight {border: 1px solid #404040; background: #555555 url(images/ui-bg_highlight-hard_55_555555_1x100.png) 50% top repeat-x; color: #cccccc; }
+.ui-state-highlight a, .ui-widget-content .ui-state-highlight a { color: #cccccc; }
+.ui-state-error, .ui-widget-content .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; }
+.ui-state-error a, .ui-widget-content .ui-state-error a { color: #cd0a0a; }
+.ui-state-error-text, .ui-widget-content .ui-state-error-text { color: #cd0a0a; }
+.ui-state-disabled, .ui-widget-content .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+.ui-priority-primary, .ui-widget-content .ui-priority-primary { font-weight: bold; }
+.ui-priority-secondary, .ui-widget-content .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_bbbbbb_256x240.png); }
+.ui-widget-content .ui-icon {background-image: url(images/ui-icons_bbbbbb_256x240.png); }
+.ui-widget-header .ui-icon {background-image: url(images/ui-icons_cccccc_256x240.png); }
+.ui-state-default .ui-icon { background-image: url(images/ui-icons_666666_256x240.png); }
+.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_c98000_256x240.png); }
+.ui-state-active .ui-icon {background-image: url(images/ui-icons_f29a00_256x240.png); }
+.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_aaaaaa_256x240.png); }
+.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }
+
+/* positioning */
+.ui-icon-carat-1-n { background-position: 0 0; }
+.ui-icon-carat-1-ne { background-position: -16px 0; }
+.ui-icon-carat-1-e { background-position: -32px 0; }
+.ui-icon-carat-1-se { background-position: -48px 0; }
+.ui-icon-carat-1-s { background-position: -64px 0; }
+.ui-icon-carat-1-sw { background-position: -80px 0; }
+.ui-icon-carat-1-w { background-position: -96px 0; }
+.ui-icon-carat-1-nw { background-position: -112px 0; }
+.ui-icon-carat-2-n-s { background-position: -128px 0; }
+.ui-icon-carat-2-e-w { background-position: -144px 0; }
+.ui-icon-triangle-1-n { background-position: 0 -16px; }
+.ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.ui-icon-triangle-1-e { background-position: -32px -16px; }
+.ui-icon-triangle-1-se { background-position: -48px -16px; }
+.ui-icon-triangle-1-s { background-position: -64px -16px; }
+.ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.ui-icon-triangle-1-w { background-position: -96px -16px; }
+.ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.ui-icon-arrow-1-n { background-position: 0 -32px; }
+.ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.ui-icon-arrow-1-e { background-position: -32px -32px; }
+.ui-icon-arrow-1-se { background-position: -48px -32px; }
+.ui-icon-arrow-1-s { background-position: -64px -32px; }
+.ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.ui-icon-arrow-1-w { background-position: -96px -32px; }
+.ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.ui-icon-arrow-4 { background-position: 0 -80px; }
+.ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.ui-icon-extlink { background-position: -32px -80px; }
+.ui-icon-newwin { background-position: -48px -80px; }
+.ui-icon-refresh { background-position: -64px -80px; }
+.ui-icon-shuffle { background-position: -80px -80px; }
+.ui-icon-transfer-e-w { background-position: -96px -80px; }
+.ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.ui-icon-folder-collapsed { background-position: 0 -96px; }
+.ui-icon-folder-open { background-position: -16px -96px; }
+.ui-icon-document { background-position: -32px -96px; }
+.ui-icon-document-b { background-position: -48px -96px; }
+.ui-icon-note { background-position: -64px -96px; }
+.ui-icon-mail-closed { background-position: -80px -96px; }
+.ui-icon-mail-open { background-position: -96px -96px; }
+.ui-icon-suitcase { background-position: -112px -96px; }
+.ui-icon-comment { background-position: -128px -96px; }
+.ui-icon-person { background-position: -144px -96px; }
+.ui-icon-print { background-position: -160px -96px; }
+.ui-icon-trash { background-position: -176px -96px; }
+.ui-icon-locked { background-position: -192px -96px; }
+.ui-icon-unlocked { background-position: -208px -96px; }
+.ui-icon-bookmark { background-position: -224px -96px; }
+.ui-icon-tag { background-position: -240px -96px; }
+.ui-icon-home { background-position: 0 -112px; }
+.ui-icon-flag { background-position: -16px -112px; }
+.ui-icon-calendar { background-position: -32px -112px; }
+.ui-icon-cart { background-position: -48px -112px; }
+.ui-icon-pencil { background-position: -64px -112px; }
+.ui-icon-clock { background-position: -80px -112px; }
+.ui-icon-disk { background-position: -96px -112px; }
+.ui-icon-calculator { background-position: -112px -112px; }
+.ui-icon-zoomin { background-position: -128px -112px; }
+.ui-icon-zoomout { background-position: -144px -112px; }
+.ui-icon-search { background-position: -160px -112px; }
+.ui-icon-wrench { background-position: -176px -112px; }
+.ui-icon-gear { background-position: -192px -112px; }
+.ui-icon-heart { background-position: -208px -112px; }
+.ui-icon-star { background-position: -224px -112px; }
+.ui-icon-link { background-position: -240px -112px; }
+.ui-icon-cancel { background-position: 0 -128px; }
+.ui-icon-plus { background-position: -16px -128px; }
+.ui-icon-plusthick { background-position: -32px -128px; }
+.ui-icon-minus { background-position: -48px -128px; }
+.ui-icon-minusthick { background-position: -64px -128px; }
+.ui-icon-close { background-position: -80px -128px; }
+.ui-icon-closethick { background-position: -96px -128px; }
+.ui-icon-key { background-position: -112px -128px; }
+.ui-icon-lightbulb { background-position: -128px -128px; }
+.ui-icon-scissors { background-position: -144px -128px; }
+.ui-icon-clipboard { background-position: -160px -128px; }
+.ui-icon-copy { background-position: -176px -128px; }
+.ui-icon-contact { background-position: -192px -128px; }
+.ui-icon-image { background-position: -208px -128px; }
+.ui-icon-video { background-position: -224px -128px; }
+.ui-icon-script { background-position: -240px -128px; }
+.ui-icon-alert { background-position: 0 -144px; }
+.ui-icon-info { background-position: -16px -144px; }
+.ui-icon-notice { background-position: -32px -144px; }
+.ui-icon-help { background-position: -48px -144px; }
+.ui-icon-check { background-position: -64px -144px; }
+.ui-icon-bullet { background-position: -80px -144px; }
+.ui-icon-radio-off { background-position: -96px -144px; }
+.ui-icon-radio-on { background-position: -112px -144px; }
+.ui-icon-pin-w { background-position: -128px -144px; }
+.ui-icon-pin-s { background-position: -144px -144px; }
+.ui-icon-play { background-position: 0 -160px; }
+.ui-icon-pause { background-position: -16px -160px; }
+.ui-icon-seek-next { background-position: -32px -160px; }
+.ui-icon-seek-prev { background-position: -48px -160px; }
+.ui-icon-seek-end { background-position: -64px -160px; }
+.ui-icon-seek-first { background-position: -80px -160px; }
+.ui-icon-stop { background-position: -96px -160px; }
+.ui-icon-eject { background-position: -112px -160px; }
+.ui-icon-volume-off { background-position: -128px -160px; }
+.ui-icon-volume-on { background-position: -144px -160px; }
+.ui-icon-power { background-position: 0 -176px; }
+.ui-icon-signal-diag { background-position: -16px -176px; }
+.ui-icon-signal { background-position: -32px -176px; }
+.ui-icon-battery-0 { background-position: -48px -176px; }
+.ui-icon-battery-1 { background-position: -64px -176px; }
+.ui-icon-battery-2 { background-position: -80px -176px; }
+.ui-icon-battery-3 { background-position: -96px -176px; }
+.ui-icon-circle-plus { background-position: 0 -192px; }
+.ui-icon-circle-minus { background-position: -16px -192px; }
+.ui-icon-circle-close { background-position: -32px -192px; }
+.ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.ui-icon-circle-zoomin { background-position: -176px -192px; }
+.ui-icon-circle-zoomout { background-position: -192px -192px; }
+.ui-icon-circle-check { background-position: -208px -192px; }
+.ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.ui-icon-circlesmall-close { background-position: -32px -208px; }
+.ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.ui-icon-squaresmall-close { background-position: -80px -208px; }
+.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.ui-corner-tl { -moz-border-radius-topleft: 5px; -webkit-border-top-left-radius: 5px; }
+.ui-corner-tr { -moz-border-radius-topright: 5px; -webkit-border-top-right-radius: 5px; }
+.ui-corner-bl { -moz-border-radius-bottomleft: 5px; -webkit-border-bottom-left-radius: 5px; }
+.ui-corner-br { -moz-border-radius-bottomright: 5px; -webkit-border-bottom-right-radius: 5px; }
+.ui-corner-top { -moz-border-radius-topleft: 5px; -webkit-border-top-left-radius: 5px; -moz-border-radius-topright: 5px; -webkit-border-top-right-radius: 5px; }
+.ui-corner-bottom { -moz-border-radius-bottomleft: 5px; -webkit-border-bottom-left-radius: 5px; -moz-border-radius-bottomright: 5px; -webkit-border-bottom-right-radius: 5px; }
+.ui-corner-right {  -moz-border-radius-topright: 5px; -webkit-border-top-right-radius: 5px; -moz-border-radius-bottomright: 5px; -webkit-border-bottom-right-radius: 5px; }
+.ui-corner-left { -moz-border-radius-topleft: 5px; -webkit-border-top-left-radius: 5px; -moz-border-radius-bottomleft: 5px; -webkit-border-bottom-left-radius: 5px; }
+.ui-corner-all { -moz-border-radius: 5px; -webkit-border-radius: 5px; }
+
+/* Overlays */
+.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
+.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; }
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ontology/DocExamples/jOWLBrowser_1.0/data/ProvenanceOntology.owl	Tue Mar 06 17:44:21 2012 +0100
@@ -0,0 +1,914 @@
+<?xml version="1.0"?>
+
+
+<!DOCTYPE rdf:RDF [
+    <!ENTITY prov "http://www.w3.org/ns/prov#" >
+    <!ENTITY owl "http://www.w3.org/2002/07/owl#" >
+    <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
+    <!ENTITY owl2xml "http://www.w3.org/2006/12/owl2-xml#" >
+    <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
+    <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
+]>
+
+
+<rdf:RDF xmlns="http://example.com/"
+     xml:base="http://example.com/"
+     xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+     xmlns:prov="http://www.w3.org/ns/prov#"
+     xmlns:owl2xml="http://www.w3.org/2006/12/owl2-xml#"
+     xmlns:owl="http://www.w3.org/2002/07/owl#"
+     xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
+     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+    <owl:Ontology rdf:about="http://www.w3.org/ns/prov#">
+        <rdfs:label xml:lang="en">PROV Ontology</rdfs:label>
+        <rdfs:comment rdf:datatype="&xsd;string">0.2</rdfs:comment>
+        <rdfs:comment xml:lang="en">This document is published by the Provenance Working Group (http://www.w3.org/2011/prov/wiki/Main_Page). 
+
+If you wish to make comments regarding this document, please send them to public-prov-wg@w3.org (subscribe, archives). All feedback is welcome.</rdfs:comment>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF"/>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/TR/prov#"/>
+    </owl:Ontology>
+    
+
+
+    <!-- 
+    ///////////////////////////////////////////////////////////////////////////////////////
+    //
+    // Annotation properties
+    //
+    ///////////////////////////////////////////////////////////////////////////////////////
+     -->
+
+    <owl:AnnotationProperty rdf:about="&prov;involvementClass">
+        <rdfs:comment xml:lang="en">This annotation property links a prov:involved subproperty with a prov:Involved subclass. This indicates that the property can be qualified by using prov:qualified. 
+
+Example:
+    prov:wasGeneratedBy prov:involvementClass prov:Generation .
+
+Then this unqualified assertion:
+    :entity1 prov:wasGeneratedBy :activity1 .
+
+can be qualified by adding:
+   :entity1 prov:qualified :entity1Gen .
+   :entity1Gen a prov:Generation;
+       prov:activity :activity1 ;
+       :customValue 1337 .
+
+Note how the range of the unqualified property is mirrored by the prov:activity or prov:entity on the involvement class.</rdfs:comment>
+        <rdfs:subPropertyOf rdf:resource="&rdfs;seeAlso"/>
+    </owl:AnnotationProperty>
+    <owl:AnnotationProperty rdf:about="&rdfs;seeAlso"/>
+    <owl:AnnotationProperty rdf:about="&prov;category"/>
+    <owl:AnnotationProperty rdf:about="&prov;involvementProperty">
+        <rdfs:subPropertyOf rdf:resource="&rdfs;seeAlso"/>
+    </owl:AnnotationProperty>
+    <owl:AnnotationProperty rdf:about="&rdfs;label"/>
+    <owl:AnnotationProperty rdf:about="&rdfs;comment"/>
+    
+
+
+    <!-- 
+    ///////////////////////////////////////////////////////////////////////////////////////
+    //
+    // Object Properties
+    //
+    ///////////////////////////////////////////////////////////////////////////////////////
+     -->
+
+    
+
+
+    <!-- http://www.w3.org/2002/07/owl#topObjectProperty -->
+
+    <owl:ObjectProperty rdf:about="&owl;topObjectProperty"/>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#actedOnBehalfOf -->
+
+    <owl:ObjectProperty rdf:about="&prov;actedOnBehalfOf">
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Responsibility"/>
+        <rdfs:domain rdf:resource="&prov;Agent"/>
+        <rdfs:range rdf:resource="&prov;Agent"/>
+        <prov:involvementClass rdf:resource="&prov;Responsibility"/>
+        <rdfs:subPropertyOf rdf:resource="&prov;involved"/>
+    </owl:ObjectProperty>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#activity -->
+
+    <owl:ObjectProperty rdf:about="&prov;activity">
+        <rdfs:comment xml:lang="en">The property used by a prov:EntityInvolvement to cite the Entity that was prov:involved with either an Activity or Entity.</rdfs:comment>
+        <prov:category>qualified</prov:category>
+        <rdfs:comment xml:lang="en">This property behaves in spirit like rdf:object; it references the object of a prov:involved triple.</rdfs:comment>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Activity_Ordering"/>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Responsibility"/>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Starting_again"/>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#not_in_DM:_consolidated_derivation_signature"/>
+        <rdfs:range rdf:resource="&prov;Activity"/>
+        <rdfs:domain rdf:resource="&prov;ActivityInvolvement"/>
+    </owl:ObjectProperty>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#adoptedPlan -->
+
+    <owl:ObjectProperty rdf:about="&prov;adoptedPlan">
+        <rdf:type rdf:resource="&owl;AsymmetricProperty"/>
+        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
+        <rdf:type rdf:resource="&owl;IrreflexiveProperty"/>
+        <prov:category>qualified</prov:category>
+        <rdfs:comment xml:lang="en">The Activity performed was described by the given plan resource. Activity specifications, as referred to by plan links, are out of scope of this           specification</rdfs:comment>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Agent_Association"/>
+        <rdfs:domain rdf:resource="&prov;Association"/>
+        <rdfs:range rdf:resource="&prov;Plan"/>
+    </owl:ObjectProperty>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#alternateOf -->
+
+    <owl:ObjectProperty rdf:about="&prov;alternateOf">
+        <rdfs:comment xml:lang="en">Another prov:Entity that characterizes the same thing as this prov:Entity, potentially in a different manner.</rdfs:comment>
+        <prov:category>core</prov:category>
+        <rdfs:subPropertyOf rdf:resource="&owl;topObjectProperty"/>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#AlternateOf"/>
+        <rdfs:domain rdf:resource="&prov;Entity"/>
+        <rdfs:range rdf:resource="&prov;Entity"/>
+        <rdfs:seeAlso rdf:resource="&prov;specializationOf"/>
+    </owl:ObjectProperty>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#endedAt -->
+
+    <owl:ObjectProperty rdf:about="&prov;endedAt">
+        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
+        <prov:category>core</prov:category>
+        <rdfs:comment xml:lang="en">TODO: range should be an xsd:dateTime directly to avoid proliferation of bnodes and to keep it simple. The elaborate form should also be permitted, but more practical uses will want it directly.</rdfs:comment>
+        <rdfs:subPropertyOf rdf:resource="&owl;topObjectProperty"/>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Activity"/>
+        <rdfs:domain rdf:resource="&prov;Activity"/>
+        <rdfs:range rdf:resource="&prov;TimeInstant"/>
+    </owl:ObjectProperty>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#entity -->
+
+    <owl:ObjectProperty rdf:about="&prov;entity">
+        <rdfs:comment xml:lang="en">The property used by a prov:ActivityInvolvement to cite the Activity that was prov:involved with either an Activity or Entity.</rdfs:comment>
+        <rdfs:comment xml:lang="en">This property behaves in spirit like rdf:object; it references the object of a prov:involved triple.</rdfs:comment>
+        <prov:category>qualified</prov:category>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Agent_Association"/>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Attribution"/>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Generation"/>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Original_Source"/>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Responsibility"/>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Usage"/>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#not_in_DM:_consolidated_derivation_signature"/>
+        <rdfs:range rdf:resource="&prov;Entity"/>
+        <rdfs:domain rdf:resource="&prov;EntityInvolvement"/>
+    </owl:ObjectProperty>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#generated -->
+
+    <owl:ObjectProperty rdf:about="&prov;generated">
+        <prov:category>core</prov:category>
+        <rdfs:comment>This inverse of prov:wasGeneratedBy is defined so that Activities being described can reference their generated outputs directly without needing to &#39;stop&#39; and start describing the Entity. This helps &#39;Activity-centric&#39; modeling as opposed to &#39;Entity-centric&#39; modeling.</rdfs:comment>
+        <rdfs:subPropertyOf rdf:resource="&prov;involved"/>
+        <owl:inverseOf rdf:resource="&prov;wasGeneratedBy"/>
+    </owl:ObjectProperty>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#hadOriginalSource -->
+
+    <owl:ObjectProperty rdf:about="&prov;hadOriginalSource">
+        <rdfs:comment xml:lang="en">how is this different from wasDerivedFrom?</rdfs:comment>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Original_Source"/>
+        <rdfs:range rdf:resource="&prov;Entity"/>
+        <rdfs:domain rdf:resource="&prov;Entity"/>
+        <prov:involvementClass rdf:resource="&prov;Source"/>
+        <rdfs:subPropertyOf rdf:resource="&prov;wasDerivedFrom"/>
+    </owl:ObjectProperty>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#hadQuotedAgent -->
+
+    <owl:ObjectProperty rdf:about="&prov;hadQuotedAgent">
+        <prov:category>additional</prov:category>
+        <rdfs:subPropertyOf rdf:resource="&owl;topObjectProperty"/>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Quotation"/>
+        <rdfs:range rdf:resource="&prov;Agent"/>
+        <rdfs:domain rdf:resource="&prov;Quotation"/>
+    </owl:ObjectProperty>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#hadQuoterAgent -->
+
+    <owl:ObjectProperty rdf:about="&prov;hadQuoterAgent">
+        <prov:category>additional</prov:category>
+        <rdfs:subPropertyOf rdf:resource="&owl;topObjectProperty"/>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Quotation"/>
+        <rdfs:range rdf:resource="&prov;Agent"/>
+        <rdfs:domain rdf:resource="&prov;Quotation"/>
+    </owl:ObjectProperty>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#hadRole -->
+
+    <owl:ObjectProperty rdf:about="&prov;hadRole">
+        <rdf:type rdf:resource="&owl;IrreflexiveProperty"/>
+        <rdfs:comment xml:lang="en">When an instance of prov:Involvement uses the prov:hadRole property to cite a prov:Role, it is providing a role for the instance referenced by the prov:entity or the prov:activity properties. For example, :baking prov:used :spoon; prov:qualified [ a prov:Usage; prov:entity :spoon; prov:hadRole roles:mixing_implement ].</rdfs:comment>
+        <prov:category>qualified</prov:category>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Attribute"/>
+        <rdfs:range rdf:resource="&prov;Role"/>
+    </owl:ObjectProperty>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#hadSpatialExtent -->
+
+    <owl:ObjectProperty rdf:about="&prov;hadSpatialExtent">
+        <rdf:type rdf:resource="&owl;AsymmetricProperty"/>
+        <rdf:type rdf:resource="&owl;IrreflexiveProperty"/>
+        <rdfs:comment>This property is not functional because the many values could be at a variety of granularies (In this room, in that chair).</rdfs:comment>
+        <rdfs:comment>DM: Location is an optional attribute of Entity and Activity.</rdfs:comment>
+        <prov:category>core</prov:category>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Location"/>
+        <rdfs:range rdf:resource="&prov;Location"/>
+    </owl:ObjectProperty>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#hadTemporalExtent -->
+
+    <owl:ObjectProperty rdf:about="&prov;hadTemporalExtent">
+        <prov:category>core</prov:category>
+    </owl:ObjectProperty>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#hasAnnotation -->
+
+    <owl:ObjectProperty rdf:about="&prov;hasAnnotation">
+        <prov:category>core</prov:category>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Annotation"/>
+        <rdfs:range rdf:resource="&prov;Note"/>
+    </owl:ObjectProperty>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#involved -->
+
+    <owl:ObjectProperty rdf:about="&prov;involved">
+        <rdfs:comment xml:lang="en">Subproperties of prov:involved may be be qualified by creating instances of a corresponding prov:Involvement class. For example, the binary relation :baking prov:used :spoon can be qualified by asserting :baking prov:qualified [ a prov:Usage; prov:entity :baking; :foo :bar ]
+
+prov:involved should not be used without also using the subproperty.
+
+Subproperties of prov:involved may also be asserted directly without being qualified.</rdfs:comment>
+        <rdfs:domain rdf:resource="&prov;Element"/>
+        <rdfs:range rdf:resource="&prov;Element"/>
+        <prov:involvementClass rdf:resource="&prov;Involvement"/>
+    </owl:ObjectProperty>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#occurredAt -->
+
+    <owl:ObjectProperty rdf:about="&prov;occurredAt">
+        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
+        <rdf:type rdf:resource="&owl;IrreflexiveProperty"/>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Usage"/>
+        <rdfs:domain rdf:resource="&prov;InstantaneousEvent"/>
+        <rdfs:range rdf:resource="&prov;TimeInstant"/>
+    </owl:ObjectProperty>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#occurredDuring -->
+
+    <owl:ObjectProperty rdf:about="&prov;occurredDuring"/>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#qualified -->
+
+    <owl:ObjectProperty rdf:about="&prov;qualified">
+        <rdfs:comment>This one property is used to associate a prov:Element (prov:Entity or prov:Activity) with an instance of any subclass of prov:Involvement, which will provide additional descriptions about the binary prov:involved relation. For example, :baking prov:used :pan, :egg; prov:wasAssociatedWith :baker; prov:generated :dirty_pan; prov:qualified [ a prov:Usage; prov:entity :egg; prov:role :ingredient], [ a prov:Association; prov:entity :baker; prov:role :leader ] .</rdfs:comment>
+        <prov:category>qualified</prov:category>
+        <rdfs:comment>The subproperties here can be deleted without concern. For example, :element prov:qualified [ a prov:Usage ] handles the case of prov:hadQualifiedUsage . http://www.w3.org/2011/prov/track/issues/255</rdfs:comment>
+        <rdfs:domain rdf:resource="&prov;Element"/>
+        <rdfs:range rdf:resource="&prov;Involvement"/>
+    </owl:ObjectProperty>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#specializationOf -->
+
+    <owl:ObjectProperty rdf:about="&prov;specializationOf">
+        <prov:category>core</prov:category>
+        <rdfs:subPropertyOf rdf:resource="&owl;topObjectProperty"/>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#SpecializationOf"/>
+        <rdfs:domain rdf:resource="&prov;Entity"/>
+        <rdfs:range rdf:resource="&prov;Entity"/>
+        <rdfs:seeAlso rdf:resource="&prov;alternateOf"/>
+    </owl:ObjectProperty>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#startedAt -->
+
+    <owl:ObjectProperty rdf:about="&prov;startedAt">
+        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
+        <prov:category>core</prov:category>
+        <rdfs:comment>TODO: range should be an xsd:dateTime directly to avoid proliferation of bnodes and to keep it simple. The elaborate form should also be permitted, but more practical uses will want it directly.</rdfs:comment>
+        <rdfs:subPropertyOf rdf:resource="&owl;topObjectProperty"/>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Activity"/>
+        <rdfs:domain rdf:resource="&prov;Activity"/>
+        <rdfs:range rdf:resource="&prov;TimeInstant"/>
+    </owl:ObjectProperty>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#tracedTo -->
+
+    <owl:ObjectProperty rdf:about="&prov;tracedTo">
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Attribution"/>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Traceability"/>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#imprecise-1"/>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#imprecise-n"/>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#not_in_DM:_consolidated_derivation_signature"/>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#precise-1"/>
+        <rdfs:range rdf:resource="&prov;Entity"/>
+        <rdfs:domain rdf:resource="&prov;Entity"/>
+        <prov:involvementClass rdf:resource="&prov;Trace"/>
+        <rdfs:subPropertyOf rdf:resource="&prov;involved"/>
+    </owl:ObjectProperty>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#used -->
+
+    <owl:ObjectProperty rdf:about="&prov;used">
+        <rdf:type rdf:resource="&owl;AsymmetricProperty"/>
+        <rdf:type rdf:resource="&owl;IrreflexiveProperty"/>
+        <rdfs:comment xml:lang="en">A prov:Entity that was used by this prov:Activity. For example, :baking prov:used :spoon, :egg, :oven .</rdfs:comment>
+        <prov:category>core</prov:category>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Usage"/>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#not_in_DM:_consolidated_derivation_signature"/>
+        <rdfs:domain rdf:resource="&prov;Activity"/>
+        <rdfs:range rdf:resource="&prov;Entity"/>
+        <prov:involvementClass rdf:resource="&prov;Usage"/>
+        <rdfs:seeAlso rdf:resource="&prov;Usage"/>
+        <rdfs:subPropertyOf rdf:resource="&prov;involved"/>
+    </owl:ObjectProperty>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#wasAssociatedWith -->
+
+    <owl:ObjectProperty rdf:about="&prov;wasAssociatedWith">
+        <prov:category>core</prov:category>
+        <rdfs:comment xml:lang="en">A prov:Agent that had some (unspecified) responsibility for the occurrence of this prov:Activity.</rdfs:comment>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Agent_Association"/>
+        <rdfs:domain rdf:resource="&prov;Activity"/>
+        <rdfs:range rdf:resource="&prov;Agent"/>
+        <rdfs:seeAlso rdf:resource="&prov;Association"/>
+        <prov:involvementClass rdf:resource="&prov;Association"/>
+        <rdfs:subPropertyOf rdf:resource="&prov;involved"/>
+    </owl:ObjectProperty>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#wasAttributedTo -->
+
+    <owl:ObjectProperty rdf:about="&prov;wasAttributedTo">
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Attribution"/>
+        <rdfs:range rdf:resource="&prov;Agent"/>
+        <prov:involvementClass rdf:resource="&prov;Attribution"/>
+        <rdfs:domain rdf:resource="&prov;Entity"/>
+        <rdfs:subPropertyOf rdf:resource="&prov;tracedTo"/>
+    </owl:ObjectProperty>
+    <owl:Axiom>
+        <rdfs:comment>TODO: Paolo questions this subproperty axiom.</rdfs:comment>
+        <owl:annotatedProperty rdf:resource="&rdfs;subPropertyOf"/>
+        <owl:annotatedTarget rdf:resource="&prov;tracedTo"/>
+        <owl:annotatedSource rdf:resource="&prov;wasAttributedTo"/>
+    </owl:Axiom>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#wasDerivedFrom -->
+
+    <owl:ObjectProperty rdf:about="&prov;wasDerivedFrom">
+        <rdf:type rdf:resource="&owl;AsymmetricProperty"/>
+        <rdf:type rdf:resource="&owl;IrreflexiveProperty"/>
+        <prov:category>core</prov:category>
+        <rdfs:comment xml:lang="en">wasDerivedFrom links two distinct characterized entities, where &quot;some characterized entity is transformed from, created from, or affected by another characterized entity.&quot;</rdfs:comment>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#imprecise-1"/>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#imprecise-n"/>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#not_in_DM:_consolidated_derivation_signature"/>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#precise-1"/>
+        <prov:involvementClass rdf:resource="&prov;Derivation"/>
+        <rdfs:range rdf:resource="&prov;Entity"/>
+        <rdfs:domain rdf:resource="&prov;Entity"/>
+        <rdfs:subPropertyOf rdf:resource="&prov;tracedTo"/>
+    </owl:ObjectProperty>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#wasEndedBy -->
+
+    <owl:ObjectProperty rdf:about="&prov;wasEndedBy">
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Ending"/>
+        <prov:involvementClass rdf:resource="&prov;End"/>
+        <rdfs:subPropertyOf rdf:resource="&prov;wasAssociatedWith"/>
+    </owl:ObjectProperty>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#wasGeneratedBy -->
+
+    <owl:ObjectProperty rdf:about="&prov;wasGeneratedBy">
+        <rdf:type rdf:resource="&owl;AsymmetricProperty"/>
+        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
+        <rdf:type rdf:resource="&owl;IrreflexiveProperty"/>
+        <prov:category>core</prov:category>
+        <rdfs:comment xml:lang="en">wasGeneratedBy links Entitites with Activity representing that entity was generated as a result of Activity</rdfs:comment>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Generation"/>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#not_in_DM:_consolidated_derivation_signature"/>
+        <rdfs:range rdf:resource="&prov;Activity"/>
+        <rdfs:domain rdf:resource="&prov;Entity"/>
+        <prov:involvementClass rdf:resource="&prov;Generation"/>
+        <rdfs:subPropertyOf rdf:resource="&prov;involved"/>
+    </owl:ObjectProperty>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#wasInformedBy -->
+
+    <owl:ObjectProperty rdf:about="&prov;wasInformedBy">
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Activity_Ordering"/>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Starting_again"/>
+        <rdfs:domain rdf:resource="&prov;Activity"/>
+        <rdfs:range rdf:resource="&prov;Activity"/>
+        <prov:involvementClass rdf:resource="&prov;Inform"/>
+        <rdfs:subPropertyOf rdf:resource="&prov;involved"/>
+    </owl:ObjectProperty>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#wasQuotedFrom -->
+
+    <owl:ObjectProperty rdf:about="&prov;wasQuotedFrom">
+        <rdfs:comment xml:lang="en">Different from wasAttributedTo?</rdfs:comment>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Quotation"/>
+        <rdfs:domain rdf:resource="&prov;Entity"/>
+        <rdfs:range rdf:resource="&prov;Entity"/>
+        <prov:involvementClass rdf:resource="&prov;Quotation"/>
+        <rdfs:subPropertyOf rdf:resource="&prov;wasDerivedFrom"/>
+    </owl:ObjectProperty>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#wasRevisionOf -->
+
+    <owl:ObjectProperty rdf:about="&prov;wasRevisionOf">
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Revision"/>
+        <rdfs:range rdf:resource="&prov;Entity"/>
+        <rdfs:domain rdf:resource="&prov;Entity"/>
+        <prov:involvementClass rdf:resource="&prov;Revision"/>
+        <rdfs:subPropertyOf rdf:resource="&prov;wasDerivedFrom"/>
+    </owl:ObjectProperty>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#wasStartedBy -->
+
+    <owl:ObjectProperty rdf:about="&prov;wasStartedBy">
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Starting"/>
+        <rdfs:range rdf:resource="&prov;Element"/>
+        <prov:involvementClass rdf:resource="&prov;Start"/>
+        <rdfs:subPropertyOf rdf:resource="&prov;wasAssociatedWith"/>
+    </owl:ObjectProperty>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#wasStartedByActivity -->
+
+    <owl:ObjectProperty rdf:about="&prov;wasStartedByActivity">
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Started_by_activity"/>
+        <rdfs:range rdf:resource="&prov;Activity"/>
+        <rdfs:domain rdf:resource="&prov;Activity"/>
+        <prov:involvementClass rdf:resource="&prov;StartByActivity"/>
+        <rdfs:subPropertyOf rdf:resource="&prov;involved"/>
+    </owl:ObjectProperty>
+    
+
+
+    <!-- 
+    ///////////////////////////////////////////////////////////////////////////////////////
+    //
+    // Data properties
+    //
+    ///////////////////////////////////////////////////////////////////////////////////////
+     -->
+
+    
+
+
+    <!-- http://www.w3.org/ns/prov#inXSDDateTime -->
+
+    <owl:DatatypeProperty rdf:about="&prov;inXSDDateTime">
+        <rdfs:range rdf:resource="&xsd;dateTime"/>
+        <rdfs:domain rdf:resource="&prov;TimeInstant"/>
+    </owl:DatatypeProperty>
+    
+
+
+    <!-- 
+    ///////////////////////////////////////////////////////////////////////////////////////
+    //
+    // Classes
+    //
+    ///////////////////////////////////////////////////////////////////////////////////////
+     -->
+
+    
+
+
+    <!-- http://www.w3.org/2002/07/owl#Thing -->
+
+    <owl:Class rdf:about="&owl;Thing"/>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#Activity -->
+
+    <owl:Class rdf:about="&prov;Activity">
+        <rdfs:subClassOf rdf:resource="&prov;Element"/>
+        <owl:disjointWith rdf:resource="&prov;Entity"/>
+        <prov:category>core</prov:category>
+        <rdfs:comment xml:lang="en">Activity is defined to be &#39;an identifiable activity, which performs a piece of work.&#39;</rdfs:comment>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Activity"/>
+    </owl:Class>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#ActivityInvolvement -->
+
+    <owl:Class rdf:about="&prov;ActivityInvolvement">
+        <rdfs:subClassOf rdf:resource="&prov;Involvement"/>
+        <owl:disjointWith rdf:resource="&prov;EntityInvolvement"/>
+        <prov:category>qualified</prov:category>
+        <rdfs:comment xml:lang="en">An instance of prov:ActivityInvolvement is used to provide additional descriptions of a binary relation from any instance to an instance of prov:Activity.</rdfs:comment>
+    </owl:Class>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#Agent -->
+
+    <owl:Class rdf:about="&prov;Agent">
+        <rdfs:subClassOf rdf:resource="&prov;Entity"/>
+        <rdfs:comment xml:lang="en">An agent represents a characterized entity capable of activity.</rdfs:comment>
+        <prov:category>core</prov:category>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Agent"/>
+    </owl:Class>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#AgentInvolvement -->
+
+    <owl:Class rdf:about="&prov;AgentInvolvement">
+        <rdfs:subClassOf rdf:resource="&prov;EntityInvolvement"/>
+    </owl:Class>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#Association -->
+
+    <owl:Class rdf:about="&prov;Association">
+        <rdfs:subClassOf rdf:resource="&prov;AgentInvolvement"/>
+        <prov:category>qualified</prov:category>
+        <rdfs:comment>An instance of prov:Association provides additional descriptions about the binary prov:wasAssociatedWith relation from a prov:Activity to some prov:Agent that is responsible for it. For example, :baking prov:wasAssociatedWith :baker; prov:qualified [ a prov:Association; prov:entity :baker; :foo :bar ].</rdfs:comment>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Agent_Association"/>
+        <prov:involvementProperty rdf:resource="&prov;wasAssociatedWith"/>
+    </owl:Class>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#Attribution -->
+
+    <owl:Class rdf:about="&prov;Attribution">
+        <rdfs:subClassOf rdf:resource="&prov;AgentInvolvement"/>
+        <rdfs:comment>An instance of prov:Attribution provides additional descriptions about the binary prov:wasAttributedTo relation from a prov:Entity to some prov:Agent that is responsible for it. For example, :cake prov:wasAttributedTo :baker; prov:qualified [ a prov:Attribution; prov:entity :baker; :foo :bar ].</rdfs:comment>
+        <prov:category>qualified</prov:category>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Attribution"/>
+        <prov:involvementProperty rdf:resource="&prov;wasAttributedTo"/>
+    </owl:Class>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#Bundle -->
+
+    <owl:Class rdf:about="&prov;Bundle">
+        <rdfs:subClassOf rdf:resource="&prov;Entity"/>
+        <rdfs:comment xml:lang="en">A prov:Bundle is a group of PROV statements.</rdfs:comment>
+        <rdfs:comment xml:lang="en">prov:Bundles are best modeled using sd:NamedGraphs.</rdfs:comment>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Bundle"/>
+    </owl:Class>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#Derivation -->
+
+    <owl:Class rdf:about="&prov;Derivation">
+        <rdfs:subClassOf rdf:resource="&prov;EntityInvolvement"/>
+        <prov:category>core</prov:category>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Revision"/>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Traceability"/>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#not_in_DM:_consolidated_derivation_signature"/>
+        <prov:involvementProperty rdf:resource="&prov;wasDerivedFrom"/>
+    </owl:Class>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#Element -->
+
+    <owl:Class rdf:about="&prov;Element">
+        <rdfs:comment rdf:datatype="&rdfs;Literal">Element could be avoided if we could specify unions on domains and ranges.</rdfs:comment>
+        <rdfs:comment xml:lang="en">Element is the union of Activity and Entity, which are the principal topics of PROV.
+
+(Due to OWL-RL restriction this union is not specified here)</rdfs:comment>
+    </owl:Class>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#End -->
+
+    <owl:Class rdf:about="&prov;End">
+        <rdfs:subClassOf rdf:resource="&prov;Association"/>
+        <rdfs:subClassOf rdf:resource="&prov;InstantaneousEvent"/>
+        <prov:category>qualified</prov:category>
+        <rdfs:comment>An Agent ends an Activity, optionally at a particular TimeInstant.</rdfs:comment>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Ending"/>
+        <prov:involvementProperty rdf:resource="&prov;wasEndedBy"/>
+    </owl:Class>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#Entity -->
+
+    <owl:Class rdf:about="&prov;Entity">
+        <rdfs:subClassOf rdf:resource="&prov;Element"/>
+        <rdfs:comment xml:lang="en">An identifiable characterized entity.</rdfs:comment>
+        <prov:category>core</prov:category>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Entity"/>
+    </owl:Class>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#EntityInvolvement -->
+
+    <owl:Class rdf:about="&prov;EntityInvolvement">
+        <rdfs:subClassOf rdf:resource="&prov;Involvement"/>
+        <prov:category>qualified</prov:category>
+        <rdfs:comment xml:lang="en">An instance of EntityInvolvement is used to provide additional descriptions of a binary relation from any instance to an instance of Entity.</rdfs:comment>
+    </owl:Class>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#Generation -->
+
+    <owl:Class rdf:about="&prov;Generation">
+        <rdfs:subClassOf rdf:resource="&prov;ActivityInvolvement"/>
+        <rdfs:subClassOf rdf:resource="&prov;InstantaneousEvent"/>
+        <rdfs:comment xml:lang="de">An instance of prov:Generation provides additional descriptions about the binary prov:wasGeneratedBy relation from a generated prov:Entity to the prov:Activity that generated it. For example, :cake prov:wasGeneratedBy :baking; prov:qualified [ a prov:Generation; prov:entity :baking; :foo :bar ].</rdfs:comment>
+        <prov:category>core</prov:category>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Generation"/>
+        <prov:involvementProperty rdf:resource="&prov;wasGeneratedBy"/>
+    </owl:Class>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#Inform -->
+
+    <owl:Class rdf:about="&prov;Inform">
+        <rdfs:subClassOf rdf:resource="&prov;ActivityInvolvement"/>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Activity_Ordering"/>
+        <prov:involvementProperty rdf:resource="&prov;wasInformedBy"/>
+    </owl:Class>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#InstantaneousEvent -->
+
+    <owl:Class rdf:about="&prov;InstantaneousEvent"/>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#Involvement -->
+
+    <owl:Class rdf:about="&prov;Involvement">
+        <rdfs:comment xml:lang="en">An instance of prov:Involvement is used to provide additional descriptions of a prov:qualifiable binary involvement. A description (via prov:Involvement) of the binary involvement implies the assertion of the binary involvement.</rdfs:comment>
+        <prov:category>qualified</prov:category>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Agent_Association"/>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Generation"/>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Responsibility"/>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Usage"/>
+        <prov:involvementProperty rdf:resource="&prov;involved"/>
+    </owl:Class>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#Location -->
+
+    <owl:Class rdf:about="&prov;Location">
+        <prov:category>core</prov:category>
+        <rdfs:comment>This is wgs:SpatialThing</rdfs:comment>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Location"/>
+        <rdfs:seeAlso rdf:resource="&prov;hadSpatialExtent"/>
+    </owl:Class>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#Note -->
+
+    <owl:Class rdf:about="&prov;Note">
+        <prov:category>core</prov:category>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Note"/>
+        <rdfs:seeAlso rdf:resource="&prov;hadNote"/>
+    </owl:Class>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#Organization -->
+
+    <owl:Class rdf:about="&prov;Organization">
+        <rdfs:subClassOf rdf:resource="&prov;Agent"/>
+        <prov:category>additional</prov:category>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Organization"/>
+    </owl:Class>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#Person -->
+
+    <owl:Class rdf:about="&prov;Person">
+        <rdfs:subClassOf rdf:resource="&prov;Agent"/>
+        <prov:category>additional</prov:category>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Person"/>
+    </owl:Class>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#Plan -->
+
+    <owl:Class rdf:about="&prov;Plan">
+        <rdfs:subClassOf rdf:resource="&prov;Entity"/>
+        <prov:category></prov:category>
+        <prov:category>core</prov:category>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Agent_Association"/>
+    </owl:Class>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#Quotation -->
+
+    <owl:Class rdf:about="&prov;Quotation">
+        <rdfs:subClassOf rdf:resource="&prov;EntityInvolvement"/>
+        <rdfs:comment xml:lang="en">TODO: Shouldn&#39;t Quotation be a subtype of Derivation (and same for the binary relations?) -Tim</rdfs:comment>
+        <prov:category>additional</prov:category>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Quotation"/>
+        <prov:involvementProperty rdf:resource="&prov;wasQuotedFrom"/>
+    </owl:Class>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#Responsibility -->
+
+    <owl:Class rdf:about="&prov;Responsibility">
+        <rdfs:subClassOf rdf:resource="&prov;AgentInvolvement"/>
+        <rdfs:comment xml:lang="en">An instance of prov:Responsibility provides additional descriptions about the binary prov:actedOnBehalfOf relation from a performing prov:Agent to some prov:Agent for whom it was performed. For example, :mixing prov:wasAssociatedWith :toddler . :toddler prov:actedOnBehalfOf :mother; prov:qualified [ a prov:Responsiblity; prov:entity :mother; :foo :bar ].</rdfs:comment>
+        <prov:category>qualified</prov:category>
+        <rdfs:comment rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Responsibility"/>
+        <prov:involvementProperty rdf:resource="&prov;actedOnBehalfOf"/>
+    </owl:Class>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#Revision -->
+
+    <owl:Class rdf:about="&prov;Revision">
+        <rdfs:subClassOf rdf:resource="&prov;Source"/>
+        <prov:category>additional</prov:category>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Revision"/>
+        <prov:involvementProperty rdf:resource="&prov;wasRevisionOf"/>
+    </owl:Class>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#Role -->
+
+    <owl:Class rdf:about="&prov;Role">
+        <rdfs:comment rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Attribute"/>
+        <rdfs:seeAlso rdf:resource="&prov;hadRole"/>
+    </owl:Class>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#SoftwareAgent -->
+
+    <owl:Class rdf:about="&prov;SoftwareAgent">
+        <rdfs:subClassOf rdf:resource="&prov;Agent"/>
+        <prov:category>additional</prov:category>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#SoftwareAgent"/>
+    </owl:Class>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#Source -->
+
+    <owl:Class rdf:about="&prov;Source">
+        <rdfs:subClassOf rdf:resource="&prov;Derivation"/>
+        <prov:category>additional</prov:category>
+        <rdfs:comment rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Original_Source"/>
+        <prov:involvementProperty rdf:resource="&prov;hadOriginalSource"/>
+    </owl:Class>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#Start -->
+
+    <owl:Class rdf:about="&prov;Start">
+        <rdfs:subClassOf rdf:resource="&prov;Association"/>
+        <rdfs:subClassOf rdf:resource="&prov;InstantaneousEvent"/>
+        <rdfs:comment>An Agent starts an Activity, optionally at a particular TimeInstant.</rdfs:comment>
+        <prov:category>qualified</prov:category>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Starting"/>
+        <prov:involvementProperty rdf:resource="&prov;wasStartedBy"/>
+    </owl:Class>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#StartByActivity -->
+
+    <owl:Class rdf:about="&prov;StartByActivity">
+        <rdfs:subClassOf rdf:resource="&prov;ActivityInvolvement"/>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Started_by_activity"/>
+        <prov:involvementProperty rdf:resource="&prov;wasStartedByActivity"/>
+    </owl:Class>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#TimeInstant -->
+
+    <owl:Class rdf:about="&prov;TimeInstant">
+        <rdfs:subClassOf rdf:resource="&owl;Thing"/>
+        <rdfs:comment>deprecate in favor of InstantaneousEvent? -Tim 6 march 2012</rdfs:comment>
+        <rdfs:comment xml:lang="en">&#39;Instants are, intuitively, point-like in that they have no interior points&#39;
+reusing notion from W3C OWL-Time Working Draft (http://www.w3.org/TR/owl-time/), but not associating to it directly because it is not a Recommendation.</rdfs:comment>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Activity"/>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Generation"/>
+        <rdfs:comment rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Usage"/>
+        <rdfs:seeAlso rdf:resource="&prov;hadTemporalExtent"/>
+    </owl:Class>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#Trace -->
+
+    <owl:Class rdf:about="&prov;Trace">
+        <rdfs:subClassOf rdf:resource="&prov;EntityInvolvement"/>
+        <rdfs:comment xml:lang="en">A prov:Trace can be from any prov:Element to any prov:Element, so it cannot be a subclass of prov:EntityInvolvement or prov:ActivityInvolvement.</rdfs:comment>
+        <rdfs:comment xml:lang="en">An instance of prov:Trace provides additional descriptions about the binary prov:tracedTo relation from some prov:Element (Entity or Activity) to some other prov:Element. For example, :stomach_ache prov:tracedTo :spoon; prov:qualified [ a prov:Trace; prov:entity :spoon; :foo :bar ].</rdfs:comment>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Revision"/>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Traceability"/>
+        <prov:involvementProperty rdf:resource="&prov;tracedTo"/>
+    </owl:Class>
+    
+
+
+    <!-- http://www.w3.org/ns/prov#Usage -->
+
+    <owl:Class rdf:about="&prov;Usage">
+        <rdfs:subClassOf rdf:resource="&prov;EntityInvolvement"/>
+        <rdfs:subClassOf rdf:resource="&prov;InstantaneousEvent"/>
+        <prov:category>core</prov:category>
+        <rdfs:seeAlso rdf:resource="http://www.w3.org/2011/prov/wiki/ProvRDF#Usage"/>
+        <prov:involvementProperty rdf:resource="&prov;used"/>
+    </owl:Class>
+</rdf:RDF>
+
+
+
+<!-- Generated by the OWL API (version 3.1.0.20069) http://owlapi.sourceforge.net -->
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ontology/DocExamples/jOWLBrowser_1.0/data/wine.owl	Tue Mar 06 17:44:21 2012 +0100
@@ -0,0 +1,2408 @@
+<?xml version="1.0"?>
+<!DOCTYPE rdf:RDF [
+     <!ENTITY vin "http://www.w3.org/TR/2003/PR-owl-guide-20031209/wine#">
+     <!ENTITY food "http://www.w3.org/TR/2003/PR-owl-guide-20031209/food#">
+     <!ENTITY owl "http://www.w3.org/2002/07/owl#">
+     <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#">
+   ]>
+
+<rdf:RDF
+  xmlns     = "http://www.w3.org/TR/2003/PR-owl-guide-20031209/wine#"
+  xmlns:vin = "http://www.w3.org/TR/2003/PR-owl-guide-20031209/wine#"
+  
+xml:base  = "http://www.w3.org/TR/2003/PR-owl-guide-20031209/wine#"
+  xmlns:food= "http://www.w3.org/TR/2003/PR-owl-guide-20031209/food#"
+  xmlns:owl = "http://www.w3.org/2002/07/owl#"
+  
+xmlns:rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+  xmlns:rdfs= "http://www.w3.org/2000/01/rdf-schema#"
+  xmlns:xsd = "http://www.w3.org/2001/XMLSchema#">
+
+  <owl:Ontology rdf:about="">
+    <rdfs:comment>An example OWL ontology</rdfs:comment>
+    <owl:priorVersion>
+      <owl:Ontology rdf:about="http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine"/>
+    </owl:priorVersion>
+    <owl:imports rdf:resource="http://www.w3.org/TR/2003/PR-owl-guide-20031209/food"/>
+    <rdfs:comment>Derived from the DAML Wine ontology at 
+      http://ontolingua.stanford.edu/doc/chimaera/ontologies/wines.daml
+      Substantially changed, in particular the Region based relations.
+    </rdfs:comment>
+    <rdfs:label>Wine Ontology</rdfs:label>
+  </owl:Ontology>
+  
+  <owl:Class rdf:ID="Wine">
+    <rdfs:subClassOf rdf:resource="&food;PotableLiquid" />
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasMaker"/>
+	<owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasMaker"/>
+	<owl:allValuesFrom rdf:resource="#Winery"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+ 	<owl:minCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:minCardinality>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasSugar"/>
+        <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasFlavor"/>
+        <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasBody"/>
+        <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasColor"/>
+        <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#locatedIn"/> 
+        <owl:someValuesFrom rdf:resource="&vin;Region"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:label xml:lang="en">wine</rdfs:label>
+    <rdfs:label xml:lang="fr">vin</rdfs:label>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="Vintage">
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasVintageYear"/>  
+        <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+  </owl:Class>
+
+  <owl:Class rdf:ID="WineGrape">
+    <rdfs:subClassOf rdf:resource="&food;Grape" />
+  </owl:Class>
+  
+  <owl:Class rdf:ID="WhiteWine">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#Wine"/>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasColor"/>
+        <owl:hasValue rdf:resource="#White"/>
+      </owl:Restriction>
+    </owl:intersectionOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="WhiteTableWine">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#TableWine"/>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasColor"/>
+        <owl:hasValue rdf:resource="#White"/>
+      </owl:Restriction>
+    </owl:intersectionOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="WhiteNonSweetWine">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#WhiteWine"/>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasSugar"/>
+        <owl:allValuesFrom>
+          <owl:Class>
+            <owl:oneOf rdf:parseType="Collection">
+              <owl:Thing rdf:about="#Dry"/>
+              <owl:Thing rdf:about="#OffDry"/>
+            </owl:oneOf>
+          </owl:Class>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </owl:intersectionOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="WhiteLoire">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#Loire"/>
+      <owl:Class rdf:about="#WhiteWine"/>
+    </owl:intersectionOf>
+  </owl:Class>
+
+  <owl:Class rdf:about="#WhiteLoire">
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:allValuesFrom>
+          <owl:Class>
+            <owl:oneOf rdf:parseType="Collection">
+              <owl:Thing rdf:about="#CheninBlancGrape"/>
+              <owl:Thing rdf:about="#PinotBlancGrape"/>
+              <owl:Thing rdf:about="#SauvignonBlancGrape"/>
+            </owl:oneOf>
+          </owl:Class>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="WhiteBurgundy">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#Burgundy"/>
+      <owl:Class rdf:about="#WhiteWine"/>
+    </owl:intersectionOf>
+  </owl:Class>
+
+  <owl:Class rdf:about="#WhiteBurgundy">
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:hasValue rdf:resource="#ChardonnayGrape"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="WhiteBordeaux">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#Bordeaux"/>
+      <owl:Class rdf:about="#WhiteWine"/>
+    </owl:intersectionOf>
+  </owl:Class>
+
+  <owl:Class rdf:about="#WhiteBordeaux">
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:allValuesFrom>
+          <owl:Class>
+            <owl:oneOf rdf:parseType="Collection">
+              <owl:Thing rdf:about="#SemillonGrape"/>
+              <owl:Thing rdf:about="#SauvignonBlancGrape"/>
+            </owl:oneOf>
+          </owl:Class>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="Region"/>
+
+  <owl:ObjectProperty rdf:ID="locatedIn">
+    <rdf:type rdf:resource="&owl;TransitiveProperty" />
+    <rdfs:domain rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
+    <rdfs:range rdf:resource="#Region"/>
+  </owl:ObjectProperty>
+
+  <owl:ObjectProperty rdf:ID="adjacentRegion">
+    <rdf:type rdf:resource="&owl;SymmetricProperty" />
+    <rdfs:domain rdf:resource="#Region"/>
+    <rdfs:range rdf:resource="#Region"/>
+  </owl:ObjectProperty>
+  
+  <owl:Class rdf:ID="VintageYear"/>
+
+  <owl:DatatypeProperty rdf:ID="yearValue">
+    <rdfs:domain rdf:resource="#VintageYear"/>    
+    <rdfs:range  rdf:resource="&xsd;positiveInteger" />
+  </owl:DatatypeProperty>
+  
+  <VintageYear rdf:ID="Year1998">
+    <yearValue rdf:datatype="&xsd;positiveInteger">1998</yearValue>
+  </VintageYear>
+
+  <owl:ObjectProperty rdf:ID="hasVintageYear">
+    <rdf:type rdf:resource="&owl;FunctionalProperty" />
+    <rdfs:domain rdf:resource="#Vintage"/>
+    <rdfs:range  rdf:resource="#VintageYear" />
+  </owl:ObjectProperty>
+  
+  <owl:ObjectProperty rdf:ID="madeFromGrape">
+    <rdfs:subPropertyOf rdf:resource="&food;madeFromFruit" />
+    <rdfs:domain rdf:resource="#Wine"/>
+    <rdfs:range rdf:resource="#WineGrape"/>
+  </owl:ObjectProperty>
+
+  <owl:ObjectProperty rdf:ID="madeIntoWine">
+    <owl:inverseOf rdf:resource="#madeFromGrape"/>
+  </owl:ObjectProperty>
+
+  <owl:ObjectProperty rdf:ID="hasWineDescriptor">
+    <rdfs:domain rdf:resource="#Wine"/>
+    <rdfs:range  rdf:resource="#WineDescriptor" />
+  </owl:ObjectProperty>
+
+  <owl:ObjectProperty rdf:ID="hasSugar">
+    <rdf:type rdf:resource="&owl;FunctionalProperty" />
+    <rdfs:subPropertyOf rdf:resource="#hasWineDescriptor"/>
+    <rdfs:range rdf:resource="#WineSugar"/>
+  </owl:ObjectProperty>
+  
+  <owl:ObjectProperty rdf:ID="hasBody">
+    <rdf:type rdf:resource="&owl;FunctionalProperty" />
+    <rdfs:subPropertyOf rdf:resource="#hasWineDescriptor"/>
+    <rdfs:range rdf:resource="#WineBody"/>
+  </owl:ObjectProperty>
+  
+  <owl:ObjectProperty rdf:ID="hasFlavor">
+    <rdf:type rdf:resource="&owl;FunctionalProperty" />
+    <rdfs:subPropertyOf rdf:resource="#hasWineDescriptor"/>
+    <rdfs:range rdf:resource="#WineFlavor"/>
+  </owl:ObjectProperty>
+  
+  <owl:ObjectProperty rdf:ID="hasColor">
+    <rdf:type rdf:resource="&owl;FunctionalProperty" />
+    <rdfs:subPropertyOf rdf:resource="#hasWineDescriptor"/>
+    <rdfs:domain rdf:resource="#Wine"/>
+    <rdfs:range rdf:resource="#WineColor"/>
+  </owl:ObjectProperty>
+
+  <owl:ObjectProperty rdf:ID="hasMaker">
+    <rdf:type rdf:resource="&owl;FunctionalProperty" />
+  </owl:ObjectProperty>
+  
+  <owl:ObjectProperty rdf:ID="producesWine">
+    <owl:inverseOf rdf:resource="#hasMaker"/>
+  </owl:ObjectProperty>
+
+  <owl:Class rdf:ID="Zinfandel">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#Wine"/>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:hasValue rdf:resource="#ZinfandelGrape"/>
+      </owl:Restriction>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
+      </owl:Restriction>
+    </owl:intersectionOf>
+  </owl:Class>
+  
+  <owl:Class rdf:about="#Zinfandel">
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasColor"/>
+        <owl:hasValue rdf:resource="#Red"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasSugar"/>
+        <owl:hasValue rdf:resource="#Dry"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasBody"/>
+        <owl:allValuesFrom>
+          <owl:Class>
+            <owl:oneOf rdf:parseType="Collection">
+              <owl:Thing rdf:about="#Full"/>
+              <owl:Thing rdf:about="#Medium"/>
+            </owl:oneOf>
+          </owl:Class>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasFlavor"/>
+        <owl:allValuesFrom>
+          <owl:Class>
+            <owl:oneOf rdf:parseType="Collection">
+              <owl:Thing rdf:about="#Moderate"/>
+              <owl:Thing rdf:about="#Strong"/>
+            </owl:oneOf>
+          </owl:Class>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="Winery"/>
+  
+  <owl:Class rdf:ID="WineDescriptor">
+    <rdfs:comment>Made WineDescriptor unionType of tastes and color</rdfs:comment>
+    <owl:unionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#WineTaste"/>
+      <owl:Class rdf:about="#WineColor"/>
+    </owl:unionOf>
+  </owl:Class>
+
+  <owl:Class rdf:ID="WineTaste">
+    <rdfs:subClassOf rdf:resource="#WineDescriptor"/>
+  </owl:Class>
+
+  <owl:Class rdf:ID="WineColor">
+    <rdfs:subClassOf rdf:resource="#WineDescriptor"/>
+    <owl:oneOf rdf:parseType="Collection">
+      <owl:Thing rdf:about="#White"/>
+      <owl:Thing rdf:about="#Rose"/>
+      <owl:Thing rdf:about="#Red"/>
+    </owl:oneOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="WineSugar">
+    <rdfs:subClassOf rdf:resource="#WineTaste"/>
+    <owl:oneOf rdf:parseType="Collection">
+      <owl:Thing rdf:about="#Sweet"/>
+      <owl:Thing rdf:about="#OffDry"/>
+      <owl:Thing rdf:about="#Dry"/>
+    </owl:oneOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="WineFlavor">
+    <rdfs:subClassOf rdf:resource="#WineTaste"/>
+    <owl:oneOf rdf:parseType="Collection">
+      <owl:Thing rdf:about="#Delicate"/>
+      <owl:Thing rdf:about="#Moderate"/>
+      <owl:Thing rdf:about="#Strong"/>
+    </owl:oneOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="WineBody">
+    <rdfs:subClassOf rdf:resource="#WineTaste"/>
+    <owl:oneOf rdf:parseType="Collection">
+      <owl:Thing rdf:about="#Light"/>
+      <owl:Thing rdf:about="#Medium"/>
+      <owl:Thing rdf:about="#Full"/>
+    </owl:oneOf>
+  </owl:Class>
+  
+  <Region rdf:ID="USRegion"/>
+  
+  <owl:Class rdf:ID="Tours">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#Loire"/>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#locatedIn"/>
+        <owl:hasValue rdf:resource="#ToursRegion"/>
+      </owl:Restriction>
+    </owl:intersectionOf>
+  </owl:Class>
+
+  <owl:Class rdf:about="#Tours">
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:hasValue rdf:resource="#CheninBlancGrape"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="TableWine">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#Wine"/>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasSugar"/>
+        <owl:hasValue rdf:resource="#Dry"/>
+      </owl:Restriction>
+    </owl:intersectionOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="SweetWine">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#Wine"/>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasSugar"/>
+        <owl:hasValue rdf:resource="#Sweet"/>
+      </owl:Restriction>
+    </owl:intersectionOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="SweetRiesling">
+    <rdfs:subClassOf rdf:resource="#DessertWine"/>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasBody"/>
+        <owl:hasValue rdf:resource="#Full"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasFlavor"/>
+        <owl:allValuesFrom>
+          <owl:Class>
+            <owl:oneOf rdf:parseType="Collection">
+              <owl:Thing rdf:about="#Moderate"/>
+              <owl:Thing rdf:about="#Strong"/>
+            </owl:oneOf>
+          </owl:Class>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#Riesling"/>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasSugar"/>
+        <owl:hasValue rdf:resource="#Sweet"/>
+      </owl:Restriction>
+    </owl:intersectionOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="StEmilion">
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasColor"/>
+        <owl:hasValue rdf:resource="#Red"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasFlavor"/>
+        <owl:hasValue rdf:resource="#Strong"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:hasValue rdf:resource="#CabernetSauvignonGrape"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#Bordeaux"/>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#locatedIn"/>
+        <owl:hasValue rdf:resource="#StEmilionRegion"/>
+      </owl:Restriction>
+    </owl:intersectionOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="SemillonOrSauvignonBlanc">
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasColor"/>
+        <owl:hasValue rdf:resource="#White"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasBody"/>
+        <owl:allValuesFrom>
+          <owl:Class>
+            <owl:oneOf rdf:parseType="Collection">
+              <owl:Thing rdf:about="#Medium"/>
+              <owl:Thing rdf:about="#Full"/>
+            </owl:oneOf>
+          </owl:Class>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#Wine"/>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:allValuesFrom>
+          <owl:Class>
+            <owl:oneOf rdf:parseType="Collection">
+              <owl:Thing rdf:about="#SemillonGrape"/>
+              <owl:Thing rdf:about="#SauvignonBlancGrape"/>
+            </owl:oneOf>
+          </owl:Class>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </owl:intersectionOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="Semillon">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#SemillonOrSauvignonBlanc"/>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:hasValue rdf:resource="#SemillonGrape"/>
+      </owl:Restriction>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
+      </owl:Restriction>
+    </owl:intersectionOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="SauvignonBlanc">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#SemillonOrSauvignonBlanc"/>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:hasValue rdf:resource="#SauvignonBlancGrape"/>
+      </owl:Restriction>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
+      </owl:Restriction>
+    </owl:intersectionOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="Sauternes">
+    <rdfs:subClassOf rdf:resource="#LateHarvest"/>
+    <rdfs:subClassOf rdf:resource="#Bordeaux"/>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#locatedIn"/>
+        <owl:hasValue rdf:resource="#SauterneRegion"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasBody"/>
+        <owl:hasValue rdf:resource="#Medium"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasColor"/>
+        <owl:hasValue rdf:resource="#White"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="Sancerre">
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasBody"/>
+        <owl:hasValue rdf:resource="#Medium"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasSugar"/>
+        <owl:hasValue rdf:resource="#OffDry"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasFlavor"/>
+        <owl:hasValue rdf:resource="#Delicate"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:hasValue rdf:resource="#SauvignonBlancGrape"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#Loire"/>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#locatedIn"/>
+        <owl:hasValue rdf:resource="#SancerreRegion"/>
+      </owl:Restriction>
+    </owl:intersectionOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="RoseWine">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#Wine"/>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasColor"/>
+        <owl:hasValue rdf:resource="#Rose"/>
+      </owl:Restriction>
+    </owl:intersectionOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="Riesling">
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasColor"/>
+        <owl:hasValue rdf:resource="#White"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#Wine"/>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:hasValue rdf:resource="#RieslingGrape"/>
+      </owl:Restriction>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
+      </owl:Restriction>
+    </owl:intersectionOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="RedWine">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#Wine"/>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasColor"/>
+        <owl:hasValue rdf:resource="#Red"/>
+      </owl:Restriction>
+    </owl:intersectionOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="RedTableWine">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#TableWine"/>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasColor"/>
+        <owl:hasValue rdf:resource="#Red"/>
+      </owl:Restriction>
+    </owl:intersectionOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="RedBurgundy">
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:hasValue rdf:resource="#PinotNoirGrape"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#Burgundy"/>
+      <owl:Class rdf:about="#RedWine"/>
+    </owl:intersectionOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="RedBordeaux">
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:allValuesFrom>
+          <owl:Class>
+            <owl:oneOf rdf:parseType="Collection">
+              <owl:Thing rdf:about="#CabernetSauvignonGrape"/>
+              <owl:Thing rdf:about="#MerlotGrape"/>
+            </owl:oneOf>
+          </owl:Class>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#Bordeaux"/>
+      <owl:Class rdf:about="#RedWine"/>
+    </owl:intersectionOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="Port">
+    <rdfs:subClassOf rdf:resource="#RedWine"/>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#locatedIn"/>
+        <owl:hasValue rdf:resource="#PortugalRegion"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasBody"/>
+        <owl:hasValue rdf:resource="#Full"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasFlavor"/>
+        <owl:hasValue rdf:resource="#Strong"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasSugar"/>
+        <owl:hasValue rdf:resource="#Sweet"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="PinotNoir">
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasColor"/>
+        <owl:hasValue rdf:resource="#Red"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#Wine"/>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:hasValue rdf:resource="#PinotNoirGrape"/>
+      </owl:Restriction>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
+      </owl:Restriction>
+    </owl:intersectionOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="PinotBlanc">
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasColor"/>
+        <owl:hasValue rdf:resource="#White"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#Wine"/>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:hasValue rdf:resource="#PinotBlancGrape"/>
+      </owl:Restriction>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
+      </owl:Restriction>
+    </owl:intersectionOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="PetiteSyrah">
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasColor"/>
+        <owl:hasValue rdf:resource="#Red"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasSugar"/>
+        <owl:hasValue rdf:resource="#Dry"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasFlavor"/>
+        <owl:allValuesFrom>
+          <owl:Class>
+            <owl:oneOf rdf:parseType="Collection">
+              <owl:Thing rdf:about="#Moderate"/>
+              <owl:Thing rdf:about="#Strong"/>
+            </owl:oneOf>
+          </owl:Class>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasBody"/>
+        <owl:allValuesFrom>
+          <owl:Class>
+            <owl:oneOf rdf:parseType="Collection">
+              <owl:Thing rdf:about="#Medium"/>
+              <owl:Thing rdf:about="#Full"/>
+            </owl:oneOf>
+          </owl:Class>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#Wine"/>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:hasValue rdf:resource="#PetiteSyrahGrape"/>
+      </owl:Restriction>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
+      </owl:Restriction>
+    </owl:intersectionOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="Pauillac">
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasBody"/>
+        <owl:hasValue rdf:resource="#Full"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasFlavor"/>
+        <owl:hasValue rdf:resource="#Strong"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:hasValue rdf:resource="#CabernetSauvignonGrape"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#Medoc"/>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#locatedIn"/>
+        <owl:hasValue rdf:resource="#PauillacRegion"/>
+      </owl:Restriction>
+    </owl:intersectionOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="Muscadet">
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasBody"/>
+        <owl:hasValue rdf:resource="#Light"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasFlavor"/>
+        <owl:hasValue rdf:resource="#Delicate"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasSugar"/>
+        <owl:hasValue rdf:resource="#Dry"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:hasValue rdf:resource="#PinotBlancGrape"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#Loire"/>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#locatedIn"/>
+        <owl:hasValue rdf:resource="#MuscadetRegion"/>
+      </owl:Restriction>
+    </owl:intersectionOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="Meursault">
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasBody"/>
+        <owl:hasValue rdf:resource="#Full"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#WhiteBurgundy"/>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#locatedIn"/>
+        <owl:hasValue rdf:resource="#MeursaultRegion"/>
+      </owl:Restriction>
+    </owl:intersectionOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="Merlot">
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasColor"/>
+        <owl:hasValue rdf:resource="#Red"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasSugar"/>
+        <owl:hasValue rdf:resource="#Dry"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasFlavor"/>
+        <owl:allValuesFrom>
+          <owl:Class>
+            <owl:oneOf rdf:parseType="Collection">
+              <owl:Thing rdf:about="#Moderate"/>
+              <owl:Thing rdf:about="#Delicate"/>
+            </owl:oneOf>
+          </owl:Class>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasBody"/>
+        <owl:allValuesFrom>
+          <owl:Class>
+            <owl:oneOf rdf:parseType="Collection">
+              <owl:Thing rdf:about="#Light"/>
+              <owl:Thing rdf:about="#Medium"/>
+            </owl:oneOf>
+          </owl:Class>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#Wine"/>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:hasValue rdf:resource="#MerlotGrape"/>
+      </owl:Restriction>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
+      </owl:Restriction>
+    </owl:intersectionOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="Meritage">
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasColor"/>
+        <owl:hasValue rdf:resource="#Red"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#Wine"/>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:allValuesFrom>
+          <owl:Class>
+            <owl:oneOf rdf:parseType="Collection">
+              <owl:Thing rdf:about="#CabernetSauvignonGrape"/>
+              <owl:Thing rdf:about="#CabernetFrancGrape"/>
+              <owl:Thing rdf:about="#MalbecGrape"/>
+              <owl:Thing rdf:about="#PetiteVerdotGrape"/>
+              <owl:Thing rdf:about="#MerlotGrape"/>
+            </owl:oneOf>
+          </owl:Class>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:minCardinality rdf:datatype="&xsd;nonNegativeInteger">2</owl:minCardinality>
+      </owl:Restriction>
+    </owl:intersectionOf>
+  </owl:Class>
+  
+  <Region rdf:ID="MedocRegion">
+    <locatedIn rdf:resource="#BordeauxRegion"/>
+  </Region>
+  
+  <owl:Class rdf:ID="Medoc">
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasColor"/>
+        <owl:hasValue rdf:resource="#Red"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasSugar"/>
+        <owl:hasValue rdf:resource="#Dry"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#Bordeaux"/>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#locatedIn"/>
+        <owl:hasValue rdf:resource="#MedocRegion"/>
+      </owl:Restriction>
+    </owl:intersectionOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="Margaux">
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasFlavor"/>
+        <owl:hasValue rdf:resource="#Delicate"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:hasValue rdf:resource="#MerlotGrape"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#Medoc"/>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#locatedIn"/>
+        <owl:hasValue rdf:resource="#MargauxRegion"/>
+      </owl:Restriction>
+    </owl:intersectionOf>
+  </owl:Class>
+  
+  <Region rdf:ID="LoireRegion">
+    <locatedIn rdf:resource="#FrenchRegion"/>
+  </Region>
+  
+  <owl:Class rdf:ID="Loire">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#Wine"/>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#locatedIn"/>
+        <owl:hasValue rdf:resource="#LoireRegion"/>
+      </owl:Restriction>
+    </owl:intersectionOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="LateHarvest">
+    <rdfs:subClassOf rdf:resource="#Wine"/>
+    <owl:disjointWith rdf:resource="#EarlyHarvest"/>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasSugar"/>
+        <owl:hasValue rdf:resource="#Sweet"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasFlavor"/>
+        <owl:allValuesFrom>
+          <owl:Class>
+            <owl:oneOf rdf:parseType="Collection">
+              <owl:Thing rdf:about="#Moderate"/>
+              <owl:Thing rdf:about="#Strong"/>
+            </owl:oneOf>
+          </owl:Class>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="ItalianWine">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#Wine"/>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#locatedIn"/>
+        <owl:hasValue rdf:resource="#ItalianRegion"/>
+      </owl:Restriction>
+    </owl:intersectionOf>
+  </owl:Class>
+  
+  <Region rdf:ID="ItalianRegion"/>
+  
+  <owl:Class rdf:ID="IceWine">
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasBody"/>
+        <owl:allValuesFrom>
+          <owl:Class>
+            <owl:oneOf rdf:parseType="Collection">
+              <owl:Thing rdf:about="#Medium"/>
+              <owl:Thing rdf:about="#Full"/>
+            </owl:oneOf>
+          </owl:Class>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasFlavor"/>
+        <owl:allValuesFrom>
+          <owl:Class>
+            <owl:oneOf rdf:parseType="Collection">
+              <owl:Thing rdf:about="#Moderate"/>
+              <owl:Thing rdf:about="#Strong"/>
+            </owl:oneOf>
+          </owl:Class>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#LateHarvest"/>
+      <owl:Class rdf:about="#DessertWine"/>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasColor"/>
+        <owl:hasValue rdf:resource="#White"/>
+      </owl:Restriction>
+    </owl:intersectionOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="GermanWine">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#Wine"/>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#locatedIn"/>
+        <owl:hasValue rdf:resource="#GermanyRegion"/>
+      </owl:Restriction>
+    </owl:intersectionOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="Gamay">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#Wine"/>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:hasValue rdf:resource="#GamayGrape"/>
+      </owl:Restriction>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
+      </owl:Restriction>
+    </owl:intersectionOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="FullBodiedWine">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#Wine"/>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasBody"/>
+        <owl:hasValue rdf:resource="#Full"/>
+      </owl:Restriction>
+    </owl:intersectionOf>
+  </owl:Class>
+  
+  <Region rdf:ID="FrenchRegion"/>
+  
+  <owl:Class rdf:ID="FrenchWine">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#Wine"/>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#locatedIn"/>
+        <owl:hasValue rdf:resource="#FrenchRegion"/>
+      </owl:Restriction>
+    </owl:intersectionOf>
+  </owl:Class>
+
+  <owl:Class rdf:ID="EarlyHarvest">
+    <rdfs:subClassOf rdf:resource="#Wine"/>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasSugar"/>
+        <owl:allValuesFrom>
+          <owl:Class>
+            <owl:oneOf rdf:parseType="Collection">
+              <owl:Thing rdf:about="#Dry"/>
+              <owl:Thing rdf:about="#OffDry"/>
+            </owl:oneOf>
+          </owl:Class>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="DryWine">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#Wine"/>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasSugar"/>
+        <owl:hasValue rdf:resource="#Dry"/>
+      </owl:Restriction>
+    </owl:intersectionOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="DryWhiteWine">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#DryWine"/>
+      <owl:Class rdf:about="#WhiteWine"/>
+    </owl:intersectionOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="DryRiesling">
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasColor"/>
+        <owl:hasValue rdf:resource="#White"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasFlavor"/>
+        <owl:hasValue rdf:resource="#Delicate"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasBody"/>
+        <owl:allValuesFrom>
+          <owl:Class>
+            <owl:oneOf rdf:parseType="Collection">
+              <owl:Thing rdf:about="#Light"/>
+              <owl:Thing rdf:about="#Medium"/>
+            </owl:oneOf>
+          </owl:Class>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#Riesling"/>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasSugar"/>
+        <owl:hasValue rdf:resource="#Dry"/>
+      </owl:Restriction>
+    </owl:intersectionOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="DryRedWine">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#DryWine"/>
+      <owl:Class rdf:about="#RedWine"/>
+    </owl:intersectionOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="DessertWine">
+    <rdfs:subClassOf rdf:resource="#Wine"/>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasSugar"/>
+        <owl:allValuesFrom>
+          <owl:Class>
+            <owl:oneOf rdf:parseType="Collection">
+              <owl:Thing rdf:about="#OffDry"/>
+              <owl:Thing rdf:about="#Sweet"/>
+            </owl:oneOf>
+          </owl:Class>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="CotesDOr">
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasFlavor"/>
+        <owl:hasValue rdf:resource="#Moderate"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#RedBurgundy"/>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#locatedIn"/>
+        <owl:hasValue rdf:resource="#CotesDOrRegion"/>
+      </owl:Restriction>
+    </owl:intersectionOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="Chianti">
+    <rdfs:subClassOf rdf:resource="#ItalianWine"/>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#locatedIn"/>
+        <owl:hasValue rdf:resource="#ChiantiRegion"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasColor"/>
+        <owl:hasValue rdf:resource="#Red"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:hasValue rdf:resource="#SangioveseGrape"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasFlavor"/>
+        <owl:hasValue rdf:resource="#Moderate"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasSugar"/>
+        <owl:hasValue rdf:resource="#Dry"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasBody"/>
+        <owl:allValuesFrom>
+          <owl:Class>
+            <owl:oneOf rdf:parseType="Collection">
+              <owl:Thing rdf:about="#Light"/>
+              <owl:Thing rdf:about="#Medium"/>
+            </owl:oneOf>
+          </owl:Class>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="CheninBlanc">
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasColor"/>
+        <owl:hasValue rdf:resource="#White"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasFlavor"/>
+        <owl:hasValue rdf:resource="#Moderate"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasBody"/>
+        <owl:allValuesFrom>
+          <owl:Class>
+            <owl:oneOf rdf:parseType="Collection">
+              <owl:Thing rdf:about="#Full"/>
+              <owl:Thing rdf:about="#Medium"/>
+            </owl:oneOf>
+          </owl:Class>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasSugar"/>
+        <owl:allValuesFrom>
+          <owl:Class>
+            <owl:oneOf rdf:parseType="Collection">
+              <owl:Thing rdf:about="#Dry"/>
+              <owl:Thing rdf:about="#OffDry"/>
+            </owl:oneOf>
+          </owl:Class>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#Wine"/>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:hasValue rdf:resource="#CheninBlancGrape"/>
+      </owl:Restriction>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
+      </owl:Restriction>
+    </owl:intersectionOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="Chardonnay">
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasColor"/>
+        <owl:hasValue rdf:resource="#White"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasBody"/>
+        <owl:allValuesFrom>
+          <owl:Class>
+            <owl:oneOf rdf:parseType="Collection">
+              <owl:Thing rdf:about="#Full"/>
+              <owl:Thing rdf:about="#Medium"/>
+            </owl:oneOf>
+          </owl:Class>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasFlavor"/>
+        <owl:allValuesFrom>
+          <owl:Class>
+            <owl:oneOf rdf:parseType="Collection">
+              <owl:Thing rdf:about="#Strong"/>
+              <owl:Thing rdf:about="#Moderate"/>
+            </owl:oneOf>
+          </owl:Class>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#Wine"/>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:hasValue rdf:resource="#ChardonnayGrape"/>
+      </owl:Restriction>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
+      </owl:Restriction>
+    </owl:intersectionOf>
+  </owl:Class>
+  
+  <Region rdf:ID="CaliforniaRegion">
+    <locatedIn rdf:resource="#USRegion"/>
+  </Region>
+  
+  <Region rdf:ID="TexasRegion">
+    <locatedIn rdf:resource="#USRegion"/>
+  </Region>
+  
+  <owl:Class rdf:ID="CaliforniaWine">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#Wine"/>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#locatedIn"/>
+        <owl:hasValue rdf:resource="#CaliforniaRegion"/>
+      </owl:Restriction>
+    </owl:intersectionOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="TexasWine">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#Wine"/>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#locatedIn"/>
+        <owl:hasValue rdf:resource="#TexasRegion"/>
+      </owl:Restriction>
+    </owl:intersectionOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="CabernetSauvignon">
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasColor"/>
+        <owl:hasValue rdf:resource="#Red"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasSugar"/>
+        <owl:hasValue rdf:resource="#Dry"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasFlavor"/>
+        <owl:allValuesFrom>
+          <owl:Class>
+            <owl:oneOf rdf:parseType="Collection">
+              <owl:Thing rdf:about="#Moderate"/>
+              <owl:Thing rdf:about="#Strong"/>
+            </owl:oneOf>
+          </owl:Class>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasBody"/>
+        <owl:allValuesFrom>
+          <owl:Class>
+            <owl:oneOf rdf:parseType="Collection">
+              <owl:Thing rdf:about="#Medium"/>
+              <owl:Thing rdf:about="#Full"/>
+            </owl:oneOf>
+          </owl:Class>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#Wine"/>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:hasValue rdf:resource="#CabernetSauvignonGrape"/>
+      </owl:Restriction>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
+      </owl:Restriction>
+    </owl:intersectionOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="CabernetFranc">
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasColor"/>
+        <owl:hasValue rdf:resource="#Red"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasFlavor"/>
+        <owl:hasValue rdf:resource="#Moderate"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasBody"/>
+        <owl:hasValue rdf:resource="#Medium"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasSugar"/>
+        <owl:hasValue rdf:resource="#Dry"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#Wine"/>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:hasValue rdf:resource="#CabernetFrancGrape"/>
+      </owl:Restriction>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
+      </owl:Restriction>
+    </owl:intersectionOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="Burgundy">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#Wine"/>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#locatedIn"/>
+        <owl:hasValue rdf:resource="#BourgogneRegion"/>
+      </owl:Restriction>
+    </owl:intersectionOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasSugar"/>
+        <owl:hasValue rdf:resource="#Dry"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+  </owl:Class>
+  
+  <Region rdf:ID="BourgogneRegion">
+    <locatedIn rdf:resource="#FrenchRegion"/>
+  </Region>
+  
+  <Region rdf:ID="BordeauxRegion">
+    <locatedIn rdf:resource="#FrenchRegion"/>
+  </Region>
+  
+  <owl:Class rdf:ID="Bordeaux">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#Wine"/>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#locatedIn"/>
+        <owl:hasValue rdf:resource="#BordeauxRegion"/>
+      </owl:Restriction>
+    </owl:intersectionOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="Beaujolais">
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasColor"/>
+        <owl:hasValue rdf:resource="#Red"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasBody"/>
+        <owl:hasValue rdf:resource="#Light"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasSugar"/>
+        <owl:hasValue rdf:resource="#Dry"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasFlavor"/>
+        <owl:hasValue rdf:resource="#Delicate"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:hasValue rdf:resource="#GamayGrape"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromGrape"/>
+        <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#Wine"/>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#locatedIn"/>
+        <owl:hasValue rdf:resource="#BeaujolaisRegion"/>
+      </owl:Restriction>
+    </owl:intersectionOf>
+  </owl:Class>
+  
+  <Region rdf:ID="AustralianRegion"/>
+  
+  <owl:Class rdf:ID="Anjou">
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasColor"/>
+        <owl:hasValue rdf:resource="#Rose"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasBody"/>
+        <owl:hasValue rdf:resource="#Light"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasFlavor"/>
+        <owl:hasValue rdf:resource="#Delicate"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasSugar"/>
+        <owl:hasValue rdf:resource="#OffDry"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#Loire"/>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#locatedIn"/>
+        <owl:hasValue rdf:resource="#AnjouRegion"/>
+      </owl:Restriction>
+    </owl:intersectionOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="AmericanWine">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#Wine"/>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#locatedIn"/>
+        <owl:hasValue rdf:resource="#USRegion"/>
+      </owl:Restriction>
+    </owl:intersectionOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="AlsatianWine">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#Wine"/>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#locatedIn"/>
+        <owl:hasValue rdf:resource="#AlsaceRegion"/>
+      </owl:Restriction>
+    </owl:intersectionOf>
+  </owl:Class>
+  
+  <WineBody rdf:ID="Full"/>
+  
+  <WineBody rdf:ID="Medium"/>
+  
+  <WineBody rdf:ID="Light"/>
+  
+  <WineColor rdf:ID="Red"/>
+  
+  <WineColor rdf:ID="Rose"/>
+  
+  <WineColor rdf:ID="White"/>
+  
+  <WineFlavor rdf:ID="Strong"/>
+  
+  <WineFlavor rdf:ID="Moderate"/>
+  
+  <WineFlavor rdf:ID="Delicate"/>
+  
+  <WineSugar rdf:ID="Dry"/>
+  
+  <WineSugar rdf:ID="OffDry">
+    <owl:differentFrom rdf:resource="#Dry"/>
+    <owl:differentFrom rdf:resource="#Sweet"/>
+  </WineSugar>
+  
+  <WineSugar rdf:ID="Sweet">
+    <owl:differentFrom rdf:resource="#Dry"/>
+  </WineSugar>
+  
+  <owl:AllDifferent>
+    <owl:distinctMembers rdf:parseType="Collection">
+      <vin:WineColor rdf:about="#Red"/>
+      <vin:WineColor rdf:about="#White"/>
+      <vin:WineColor rdf:about="#Rose"/>
+    </owl:distinctMembers>
+  </owl:AllDifferent>
+
+  <owl:AllDifferent>
+    <owl:distinctMembers rdf:parseType="Collection">
+      <vin:WineBody rdf:about="#Light"/>
+      <vin:WineBody rdf:about="#Medium"/>
+      <vin:WineBody rdf:about="#Full"/>
+    </owl:distinctMembers>
+  </owl:AllDifferent>
+
+  <owl:AllDifferent>
+    <owl:distinctMembers rdf:parseType="Collection">
+      <vin:WineFlavor rdf:about="#Delicate"/>
+      <vin:WineFlavor rdf:about="#Moderate"/>
+      <vin:WineFlavor rdf:about="#Strong"/>
+    </owl:distinctMembers>
+  </owl:AllDifferent>
+ 
+  <owl:AllDifferent>
+    <owl:distinctMembers rdf:parseType="Collection">
+      <vin:WineSugar rdf:about="#Sweet"/>
+      <vin:WineSugar rdf:about="#OffDry"/>
+      <vin:WineSugar rdf:about="#Dry"/>
+    </owl:distinctMembers>
+  </owl:AllDifferent>
+
+  <Region rdf:ID="AlsaceRegion">   
+    <locatedIn rdf:resource="#FrenchRegion"/>
+  </Region>
+
+  <Region rdf:ID="AnjouRegion">
+    <locatedIn rdf:resource="#LoireRegion"/>
+  </Region>
+  
+  <Region rdf:ID="ArroyoGrandeRegion">
+    <locatedIn rdf:resource="#CaliforniaRegion"/>
+  </Region>
+  
+  <Winery rdf:ID="Beringer"/>
+
+  <Winery rdf:ID="Bancroft"/>
+  
+  <Chardonnay rdf:ID="BancroftChardonnay">
+    <locatedIn rdf:resource="#NapaRegion"/>
+    <hasMaker  rdf:resource="#Bancroft" />
+    <hasSugar  rdf:resource="#Dry" />
+    <hasFlavor rdf:resource="#Moderate"/>
+    <hasBody   rdf:resource="#Medium" />
+  </Chardonnay>
+  
+  <Region rdf:ID="BeaujolaisRegion">
+    <locatedIn rdf:resource="#FrenchRegion"/>
+  </Region>
+  
+  <WineGrape rdf:ID="CabernetFrancGrape"/>
+  
+  <WineGrape rdf:ID="CabernetSauvignonGrape"/>
+  
+  <Region rdf:ID="CentralCoastRegion">
+    <locatedIn rdf:resource="#CaliforniaRegion"/>
+  </Region>
+  
+  <WineGrape rdf:ID="ChardonnayGrape"/>
+  
+  <Winery rdf:ID="ChateauChevalBlanc"/>
+  
+  <StEmilion rdf:ID="ChateauChevalBlancStEmilion">
+    <hasMaker  rdf:resource="#ChateauChevalBlanc" />
+  </StEmilion>
+  
+  <Winery rdf:ID="ChateauDYchem"/>
+  
+  <Sauternes rdf:ID="ChateauDYchemSauterne">
+    <madeFromGrape rdf:resource="#SauvignonBlancGrape"/>
+    <madeFromGrape rdf:resource="#SemillonGrape"/>
+    <hasFlavor rdf:resource="#Strong"/>
+    <hasMaker  rdf:resource="#ChateauDYchem" />
+  </Sauternes> 
+  
+  <Winery rdf:ID="ChateauDeMeursault"/>
+  
+  <Meursault rdf:ID="ChateauDeMeursaultMeursault">
+    <hasFlavor rdf:resource="#Moderate"/>
+    <hasMaker  rdf:resource="#ChateauDeMeursault" />
+  </Meursault>
+  
+  <Winery rdf:ID="ChateauLafiteRothschild"/>
+  
+  <Pauillac rdf:ID="ChateauLafiteRothschildPauillac">
+    <hasMaker  rdf:resource="#ChateauLafiteRothschild" />
+  </Pauillac>
+  
+  <Margaux rdf:ID="ChateauMargaux">
+    <hasMaker  rdf:resource="#ChateauMargauxWinery" />
+  </Margaux>
+  
+  <Winery rdf:ID="ChateauMargauxWinery"/>
+  
+  <Winery rdf:ID="ChateauMorgon"/>
+  
+  <Beaujolais rdf:ID="ChateauMorgonBeaujolais">
+    <hasMaker  rdf:resource="#ChateauMorgon" />
+  </Beaujolais>
+  
+  <WineGrape rdf:ID="CheninBlancGrape"/>
+
+  <WineGrape rdf:ID="ZinfandelGrape"/>
+
+  <Chianti rdf:ID="ChiantiClassico">
+    <hasBody   rdf:resource="#Medium" />
+    <hasMaker  rdf:resource="#McGuinnesso" />
+  </Chianti>
+  
+  <Region rdf:ID="ChiantiRegion">
+    <locatedIn rdf:resource="#ItalianRegion"/>
+  </Region>
+  
+  <Winery rdf:ID="ClosDeLaPoussie"/>
+  
+  <Sancerre rdf:ID="ClosDeLaPoussieSancerre">
+    <hasMaker  rdf:resource="#ClosDeLaPoussie" />
+  </Sancerre>
+  
+  <Winery rdf:ID="ClosDeVougeot"/>
+  
+  <CotesDOr rdf:ID="ClosDeVougeotCotesDOr">
+    <hasMaker  rdf:resource="#ClosDeVougeot" />
+  </CotesDOr>
+  
+  <Winery rdf:ID="CongressSprings"/>
+  
+  <Semillon rdf:ID="CongressSpringsSemillon">
+    <hasMaker  rdf:resource="#CongressSprings" />
+    <hasSugar  rdf:resource="#Dry" />
+    <hasFlavor rdf:resource="#Moderate"/>
+    <hasBody   rdf:resource="#Medium" />
+  </Semillon>
+
+  <Winery rdf:ID="Corbans"/>
+  
+  <Riesling rdf:ID="CorbansDryWhiteRiesling">
+    <locatedIn rdf:resource="#NewZealandRegion"/>
+    <hasMaker  rdf:resource="#Corbans" />
+    <hasSugar  rdf:resource="#OffDry" />
+    <hasFlavor rdf:resource="#Moderate"/>
+    <hasBody   rdf:resource="#Medium" />
+  </Riesling>
+  
+  <SauvignonBlanc rdf:ID="CorbansPrivateBinSauvignonBlanc">
+    <locatedIn rdf:resource="#NewZealandRegion"/>
+    <hasMaker  rdf:resource="#Corbans" />
+    <hasSugar  rdf:resource="#Dry" />
+    <hasFlavor rdf:resource="#Strong"/>
+    <hasBody   rdf:resource="#Full" />
+  </SauvignonBlanc>
+  
+  <SauvignonBlanc rdf:ID="CorbansSauvignonBlanc">
+    <locatedIn rdf:resource="#NewZealandRegion"/>
+    <hasMaker  rdf:resource="#Corbans" />
+    <hasSugar  rdf:resource="#Dry" />
+    <hasFlavor rdf:resource="#Strong"/>
+    <hasBody   rdf:resource="#Medium" />
+  </SauvignonBlanc>
+  
+  <Winery rdf:ID="CortonMontrachet"/>
+  
+  <WhiteBurgundy rdf:ID="CortonMontrachetWhiteBurgundy">
+    <hasMaker  rdf:resource="#CortonMontrachet" />
+    <hasSugar  rdf:resource="#Dry" />
+    <hasFlavor rdf:resource="#Strong"/>
+    <hasBody   rdf:resource="#Full" />
+  </WhiteBurgundy>
+  
+  <Region rdf:ID="CotesDOrRegion">
+    <locatedIn rdf:resource="#BourgogneRegion"/>
+  </Region>
+  
+  <Winery rdf:ID="Cotturi"/>
+  
+  <Zinfandel rdf:ID="CotturiZinfandel">
+    <locatedIn rdf:resource="#SonomaRegion"/>
+    <hasMaker  rdf:resource="#Cotturi" />
+    <hasSugar  rdf:resource="#Dry" />
+    <hasFlavor rdf:resource="#Strong"/>
+    <hasBody   rdf:resource="#Full" />
+  </Zinfandel>
+  
+  <Winery rdf:ID="DAnjou"/>
+  
+  <Region rdf:ID="EdnaValleyRegion">
+    <locatedIn rdf:resource="#CaliforniaRegion"/>
+  </Region>
+  
+  <Winery rdf:ID="Elyse"/>
+  
+  <Zinfandel rdf:ID="ElyseZinfandel">
+    <locatedIn rdf:resource="#NapaRegion"/>
+    <hasMaker  rdf:resource="#Elyse" />
+    <hasSugar  rdf:resource="#Dry" />
+    <hasFlavor rdf:resource="#Moderate"/>
+    <hasBody   rdf:resource="#Full" />
+  </Zinfandel>
+  
+  <Winery rdf:ID="Forman"/>
+  
+  <CabernetSauvignon rdf:ID="FormanCabernetSauvignon">
+    <locatedIn rdf:resource="#NapaRegion"/>
+    <hasMaker  rdf:resource="#Forman" />
+    <hasSugar  rdf:resource="#Dry" />
+    <hasFlavor rdf:resource="#Strong"/>
+    <hasBody   rdf:resource="#Medium" />
+  </CabernetSauvignon>
+
+  <CabernetSauvignon rdf:ID="BeringerCabernetSauvignon">
+    <hasMaker  rdf:resource="#Beringer" />
+  </CabernetSauvignon>
+  
+  <Chardonnay rdf:ID="FormanChardonnay">
+    <locatedIn rdf:resource="#NapaRegion"/>
+    <hasMaker  rdf:resource="#Forman" />
+    <hasSugar  rdf:resource="#Dry" />
+    <hasFlavor rdf:resource="#Moderate"/>
+    <hasBody   rdf:resource="#Full" />
+  </Chardonnay>
+  
+  <Winery rdf:ID="Foxen"/>
+  
+  <CheninBlanc rdf:ID="FoxenCheninBlanc">
+    <locatedIn rdf:resource="#SantaBarbaraRegion"/>
+    <hasMaker  rdf:resource="#Foxen" />
+    <hasSugar  rdf:resource="#Dry" />
+    <hasFlavor rdf:resource="#Moderate"/>
+    <hasBody   rdf:resource="#Full" />
+  </CheninBlanc>
+  
+  <WineGrape rdf:ID="GamayGrape"/>
+  
+  <Winery rdf:ID="GaryFarrell"/>
+  
+  <Merlot rdf:ID="GaryFarrellMerlot">
+    <locatedIn rdf:resource="#SonomaRegion"/>
+    <hasMaker  rdf:resource="#GaryFarrell" />
+    <hasSugar  rdf:resource="#Dry" />
+    <hasFlavor rdf:resource="#Moderate"/>
+    <hasBody   rdf:resource="#Medium" />
+  </Merlot>
+  
+  <Region rdf:ID="GermanyRegion"/>
+  
+  <Winery rdf:ID="Handley"/>
+  
+  <Winery rdf:ID="KalinCellars"/>
+  
+  <Semillon rdf:ID="KalinCellarsSemillon">
+    <hasMaker  rdf:resource="#KalinCellars" />
+    <hasSugar  rdf:resource="#Dry" />
+    <hasFlavor rdf:resource="#Strong"/>
+    <hasBody   rdf:resource="#Full" />
+  </Semillon>
+  
+  <Winery rdf:ID="KathrynKennedy"/>
+  
+  <Meritage rdf:ID="KathrynKennedyLateral">
+    <hasMaker  rdf:resource="#KathrynKennedy" />
+    <hasSugar  rdf:resource="#Dry" />
+    <hasFlavor rdf:resource="#Delicate"/>
+    <hasBody   rdf:resource="#Medium" />
+  </Meritage>
+  
+  <Winery rdf:ID="LaneTanner"/>
+  
+  <PinotNoir rdf:ID="LaneTannerPinotNoir">
+    <locatedIn rdf:resource="#SantaBarbaraRegion"/>
+    <hasMaker  rdf:resource="#LaneTanner" />
+    <hasSugar  rdf:resource="#Dry" />
+    <hasFlavor rdf:resource="#Delicate"/>
+    <hasBody   rdf:resource="#Light" />
+  </PinotNoir>
+  
+  <Winery rdf:ID="Longridge"/>
+  
+  <Merlot rdf:ID="LongridgeMerlot">
+    <locatedIn rdf:resource="#NewZealandRegion"/>
+    <hasMaker  rdf:resource="#Longridge" />
+    <hasSugar  rdf:resource="#Dry" />
+    <hasFlavor rdf:resource="#Moderate"/>
+    <hasBody   rdf:resource="#Light" />
+  </Merlot>
+  
+  <WineGrape rdf:ID="MalbecGrape"/>
+  
+  <Region rdf:ID="MargauxRegion">
+    <locatedIn rdf:resource="#MedocRegion"/>
+  </Region>
+  
+  <Winery rdf:ID="Marietta"/>
+  
+  <CabernetSauvignon rdf:ID="MariettaCabernetSauvignon">
+    <locatedIn rdf:resource="#SonomaRegion"/>
+    <hasMaker  rdf:resource="#Marietta" />
+    <hasSugar  rdf:resource="#Dry" />
+    <hasFlavor rdf:resource="#Moderate"/>
+    <hasBody   rdf:resource="#Medium" />
+  </CabernetSauvignon>
+  
+  <RedTableWine rdf:ID="MariettaOldVinesRed">
+    <locatedIn rdf:resource="#SonomaRegion"/>
+    <hasMaker  rdf:resource="#Marietta" />
+    <hasSugar  rdf:resource="#Dry" />
+    <hasFlavor rdf:resource="#Moderate"/>
+    <hasBody   rdf:resource="#Medium" />
+  </RedTableWine>
+  
+  <PetiteSyrah rdf:ID="MariettaPetiteSyrah">
+    <locatedIn rdf:resource="#SonomaRegion"/>
+    <hasMaker  rdf:resource="#Marietta" />
+    <hasSugar  rdf:resource="#Dry" />
+    <hasFlavor rdf:resource="#Moderate"/>
+    <hasBody   rdf:resource="#Medium" />
+  </PetiteSyrah>
+  
+  <Zinfandel rdf:ID="MariettaZinfandel">
+    <locatedIn rdf:resource="#SonomaRegion"/>
+    <hasMaker  rdf:resource="#Marietta" />
+    <hasSugar  rdf:resource="#Dry" />
+    <hasFlavor rdf:resource="#Moderate"/>
+    <hasBody   rdf:resource="#Medium" />
+  </Zinfandel>
+  
+  <Winery rdf:ID="McGuinnesso"/>
+  
+  <Region rdf:ID="MendocinoRegion">
+    <locatedIn rdf:resource="#CaliforniaRegion"/>
+    <adjacentRegion rdf:resource="#SonomaRegion"/>
+  </Region>
+  
+  <WineGrape rdf:ID="MerlotGrape"/>
+  
+  <Region rdf:ID="MeursaultRegion">
+    <locatedIn rdf:resource="#BourgogneRegion"/>
+  </Region>
+  
+  <Winery rdf:ID="MountEdenVineyard"/>
+  
+  <Chardonnay rdf:ID="MountEdenVineyardEdnaValleyChardonnay">
+    <locatedIn rdf:resource="#EdnaValleyRegion"/>
+    <hasMaker  rdf:resource="#MountEdenVineyard" />
+    <hasSugar  rdf:resource="#Dry" />
+    <hasFlavor rdf:resource="#Moderate"/>
+    <hasBody   rdf:resource="#Medium" />
+  </Chardonnay>
+  
+  <PinotNoir rdf:ID="MountEdenVineyardEstatePinotNoir">
+    <locatedIn rdf:resource="#EdnaValleyRegion"/>
+    <hasMaker  rdf:resource="#MountEdenVineyard" />
+    <hasSugar  rdf:resource="#Dry" />
+    <hasFlavor rdf:resource="#Strong"/>
+    <hasBody   rdf:resource="#Full" />
+  </PinotNoir>
+  
+  <Winery rdf:ID="Mountadam"/>
+  
+  <Chardonnay rdf:ID="MountadamChardonnay">
+    <locatedIn rdf:resource="#SouthAustraliaRegion"/>
+    <hasMaker  rdf:resource="#Mountadam" />
+    <hasSugar  rdf:resource="#Dry" />
+    <hasFlavor rdf:resource="#Strong"/>
+    <hasBody   rdf:resource="#Full" />
+  </Chardonnay>
+  
+  <PinotNoir rdf:ID="MountadamPinotNoir">
+    <locatedIn rdf:resource="#SouthAustraliaRegion"/>
+    <hasMaker  rdf:resource="#Mountadam" />
+    <hasSugar  rdf:resource="#Dry" />
+    <hasFlavor rdf:resource="#Moderate"/>
+    <hasBody   rdf:resource="#Medium" />
+  </PinotNoir>
+  
+  <DryRiesling rdf:ID="MountadamRiesling">
+    <locatedIn rdf:resource="#SouthAustraliaRegion"/>
+    <hasMaker  rdf:resource="#Mountadam" />
+    <hasSugar  rdf:resource="#Dry" />
+    <hasFlavor rdf:resource="#Delicate"/>
+    <hasBody   rdf:resource="#Medium" />
+  </DryRiesling>
+  
+  <Region rdf:ID="MuscadetRegion">
+    <locatedIn rdf:resource="#LoireRegion"/>
+  </Region>
+  
+  <Region rdf:ID="NapaRegion">
+    <locatedIn rdf:resource="#CaliforniaRegion"/>
+  </Region>
+  
+  <Region rdf:ID="NewZealandRegion"/>
+  
+  <Winery rdf:ID="PageMillWinery"/>  
+
+  <CabernetSauvignon rdf:ID="PageMillWineryCabernetSauvignon">
+    <locatedIn rdf:resource="#NapaRegion"/>
+    <hasMaker  rdf:resource="#PageMillWinery" />
+    <hasSugar  rdf:resource="#Dry" />
+    <hasFlavor rdf:resource="#Moderate"/>
+    <hasBody   rdf:resource="#Medium" />
+  </CabernetSauvignon>
+  
+  <Region rdf:ID="PauillacRegion">
+    <locatedIn rdf:resource="#MedocRegion"/>
+  </Region>
+  
+  <Winery rdf:ID="PeterMccoy"/>
+  
+  <Chardonnay rdf:ID="PeterMccoyChardonnay">
+    <locatedIn rdf:resource="#SonomaRegion"/>
+    <hasMaker  rdf:resource="#PeterMccoy" />
+    <hasSugar  rdf:resource="#Dry" />
+    <hasFlavor rdf:resource="#Moderate"/>
+    <hasBody   rdf:resource="#Medium" />
+  </Chardonnay>
+  
+  <WineGrape rdf:ID="PetiteSyrahGrape"/>
+  
+  <WineGrape rdf:ID="PetiteVerdotGrape"/>
+  
+  <WineGrape rdf:ID="PinotBlancGrape"/>
+  
+  <WineGrape rdf:ID="PinotNoirGrape"/>
+  
+  <Region rdf:ID="PortugalRegion"/>
+  
+  <Winery rdf:ID="PulignyMontrachet"/>
+  
+  <WhiteBurgundy rdf:ID="PulignyMontrachetWhiteBurgundy">
+    <hasMaker  rdf:resource="#PulignyMontrachet" />
+    <hasSugar  rdf:resource="#Dry" />
+    <hasFlavor rdf:resource="#Moderate"/>
+    <hasBody   rdf:resource="#Medium" />
+  </WhiteBurgundy>
+  
+  <WineGrape rdf:ID="RieslingGrape"/>
+  
+  <Anjou rdf:ID="RoseDAnjou">
+    <hasMaker  rdf:resource="#DAnjou" />
+  </Anjou>
+  
+  <Region rdf:ID="SancerreRegion">
+    <locatedIn rdf:resource="#LoireRegion"/>
+  </Region>
+  
+  <WineGrape rdf:ID="SangioveseGrape"/>
+  
+  <Region rdf:ID="SantaBarbaraRegion">
+    <locatedIn rdf:resource="#CaliforniaRegion"/>
+  </Region>
+  
+  <Winery rdf:ID="SantaCruzMountainVineyard"/>
+  
+  <CabernetSauvignon rdf:ID="SantaCruzMountainVineyardCabernetSauvignon">
+    <locatedIn rdf:resource="#SantaCruzMountainsRegion"/>
+    <hasMaker  rdf:resource="#SantaCruzMountainVineyard" />
+    <hasSugar  rdf:resource="#Dry" />
+    <hasFlavor rdf:resource="#Strong"/>
+    <hasBody   rdf:resource="#Full" />
+  </CabernetSauvignon>
+  
+  <Region rdf:ID="CentralTexasRegion">
+    <locatedIn rdf:resource="#TexasRegion"/>
+  </Region>
+
+  <Winery rdf:ID="StGenevieve"/>
+
+  <WhiteWine rdf:ID="StGenevieveTexasWhite">
+    <locatedIn rdf:resource="#CentralTexasRegion"/>
+    <hasMaker  rdf:resource="#StGenevieve" />
+    <hasSugar  rdf:resource="#Dry" />
+    <hasFlavor rdf:resource="#Moderate"/>
+  </WhiteWine>
+
+  <Region rdf:ID="SantaCruzMountainsRegion">
+    <locatedIn rdf:resource="#CaliforniaRegion"/>
+  </Region>
+  
+  <Winery rdf:ID="SaucelitoCanyon"/>
+  
+  <Zinfandel rdf:ID="SaucelitoCanyonZinfandel">
+    <locatedIn rdf:resource="#ArroyoGrandeRegion"/>
+    <hasMaker  rdf:resource="#SaucelitoCanyon" />
+    <hasSugar  rdf:resource="#Dry" />
+    <hasFlavor rdf:resource="#Moderate"/>
+    <hasBody   rdf:resource="#Medium" />
+  </Zinfandel>
+  
+  <Zinfandel rdf:ID="SaucelitoCanyonZinfandel1998">
+    <locatedIn rdf:resource="#ArroyoGrandeRegion"/>
+    <hasVintageYear rdf:resource="#Year1998"/>
+    <hasMaker  rdf:resource="#SaucelitoCanyon" />
+    <hasSugar  rdf:resource="#Dry" />
+    <hasFlavor rdf:resource="#Moderate"/>
+    <hasBody   rdf:resource="#Medium" />
+  </Zinfandel>
+
+  <Region rdf:ID="SauterneRegion">
+    <locatedIn rdf:resource="#BordeauxRegion"/>
+  </Region>
+  
+  <WineGrape rdf:ID="SauvignonBlancGrape"/>
+  
+  <Winery rdf:ID="SchlossRothermel"/>
+  
+  <SweetRiesling rdf:ID="SchlossRothermelTrochenbierenausleseRiesling">
+    <locatedIn rdf:resource="#GermanyRegion"/>
+    <hasMaker  rdf:resource="#SchlossRothermel" />
+    <hasSugar  rdf:resource="#Sweet" />
+    <hasFlavor rdf:resource="#Strong"/>
+    <hasBody   rdf:resource="#Full" />
+  </SweetRiesling>
+  
+  <Winery rdf:ID="SchlossVolrad"/>
+  
+  <SweetRiesling rdf:ID="SchlossVolradTrochenbierenausleseRiesling">
+    <locatedIn rdf:resource ="#GermanyRegion" />
+    <hasMaker  rdf:resource="#SchlossVolrad" />
+    <hasSugar  rdf:resource="#Sweet" />
+    <hasFlavor rdf:resource="#Moderate"/>
+    <hasBody   rdf:resource="#Full" />
+  </SweetRiesling>
+  
+  <Winery rdf:ID="SeanThackrey"/>
+  
+  <PetiteSyrah rdf:ID="SeanThackreySiriusPetiteSyrah">
+    <locatedIn rdf:resource="#NapaRegion"/>
+    <hasMaker  rdf:resource="#SeanThackrey" />
+    <hasSugar  rdf:resource="#Dry" />
+    <hasFlavor rdf:resource="#Strong"/>
+    <hasBody   rdf:resource="#Full" />
+  </PetiteSyrah>
+  
+  <Winery rdf:ID="Selaks"/>
+  
+  <IceWine rdf:ID="SelaksIceWine">
+    <locatedIn rdf:resource="#NewZealandRegion"/>
+    <hasMaker  rdf:resource="#Selaks" />
+    <hasFlavor rdf:resource="#Moderate"/>
+    <hasBody   rdf:resource="#Medium" />
+    <hasColor rdf:resource="#White"/>
+  </IceWine>
+  
+  <SauvignonBlanc rdf:ID="SelaksSauvignonBlanc">
+    <locatedIn rdf:resource="#NewZealandRegion"/>
+    <hasMaker  rdf:resource="#Selaks" />
+    <hasSugar  rdf:resource="#Dry" />
+    <hasFlavor rdf:resource="#Moderate"/>
+    <hasBody   rdf:resource="#Medium" />
+  </SauvignonBlanc>
+  
+  <WineGrape rdf:ID="SemillonGrape"/>
+  
+  <Winery rdf:ID="SevreEtMaine"/>
+  
+  <Muscadet rdf:ID="SevreEtMaineMuscadet">
+    <hasMaker  rdf:resource="#SevreEtMaine" />
+  </Muscadet>
+  
+  <Region rdf:ID="SonomaRegion">
+    <locatedIn rdf:resource="#CaliforniaRegion"/>
+  </Region>
+  
+  <Region rdf:ID="SouthAustraliaRegion">
+    <locatedIn rdf:resource="#AustralianRegion"/>
+  </Region>
+  
+  <Region rdf:ID="StEmilionRegion">
+    <locatedIn rdf:resource="#BordeauxRegion"/>
+  </Region>
+  
+  <Winery rdf:ID="Stonleigh"/>
+  
+  <SauvignonBlanc rdf:ID="StonleighSauvignonBlanc">
+    <locatedIn rdf:resource="#NewZealandRegion"/>
+    <hasMaker  rdf:resource="#Stonleigh" />
+    <hasSugar  rdf:resource="#Dry" />
+    <hasFlavor rdf:resource="#Delicate"/>
+    <hasBody   rdf:resource="#Medium" />
+  </SauvignonBlanc>
+  
+  <Winery rdf:ID="Taylor"/>
+  
+  <Port rdf:ID="TaylorPort">
+    <hasMaker  rdf:resource="#Taylor" />
+  </Port>
+  
+  <Region rdf:ID="ToursRegion">
+    <locatedIn rdf:resource="#LoireRegion"/>
+  </Region>
+  
+  <Winery rdf:ID="Ventana"/>
+  
+  <CheninBlanc rdf:ID="VentanaCheninBlanc">
+    <locatedIn rdf:resource="#CentralCoastRegion"/>
+    <hasMaker  rdf:resource="#Ventana" />
+    <hasSugar  rdf:resource="#OffDry" />
+    <hasFlavor rdf:resource="#Moderate"/>
+    <hasBody   rdf:resource="#Medium" />
+  </CheninBlanc>
+  
+  <Winery rdf:ID="WhitehallLane"/>
+  
+  <CabernetFranc rdf:ID="WhitehallLaneCabernetFranc">
+    <locatedIn rdf:resource="#NapaRegion"/>
+    <hasMaker  rdf:resource="#WhitehallLane" />
+    <hasSugar  rdf:resource="#Dry" />
+    <hasFlavor rdf:resource="#Moderate"/>
+    <hasBody   rdf:resource="#Medium" />
+  </CabernetFranc>
+  
+  <DessertWine rdf:ID="WhitehallLanePrimavera">
+    <locatedIn rdf:resource="#NapaRegion"/>
+    <hasSugar  rdf:resource="#Sweet" />
+    <hasFlavor rdf:resource="#Delicate"/>
+    <hasBody   rdf:resource="#Light" />
+  </DessertWine>
+  
+  <owl:AllDifferent>
+    <owl:distinctMembers rdf:parseType="Collection">
+      <vin:Winery rdf:about="#Bancroft"/>
+      <vin:Winery rdf:about="#ChateauChevalBlanc"/>
+      <vin:Winery rdf:about="#ChateauDYchem"/>
+      <vin:Winery rdf:about="#ChateauDeMeursault"/>
+      <vin:Winery rdf:about="#ChateauLafiteRothschild"/>
+      <vin:Winery rdf:about="#ChateauMargauxWinery"/>
+      <vin:Winery rdf:about="#ChateauMorgon"/>
+      <vin:Winery rdf:about="#ClosDeLaPoussie"/>
+      <vin:Winery rdf:about="#ClosDeVougeot"/>
+      <vin:Winery rdf:about="#CongressSprings"/>
+      <vin:Winery rdf:about="#Corbans"/>
+      <vin:Winery rdf:about="#CortonMontrachet"/>
+      <vin:Winery rdf:about="#Cotturi"/>
+      <vin:Winery rdf:about="#DAnjou"/>
+      <vin:Winery rdf:about="#Elyse"/>
+      <vin:Winery rdf:about="#Forman"/>
+      <vin:Winery rdf:about="#Foxen"/>
+      <vin:Winery rdf:about="#GaryFarrell"/>
+      <vin:Winery rdf:about="#KalinCellars"/>
+      <vin:Winery rdf:about="#KathrynKennedy"/>
+      <vin:Winery rdf:about="#LaneTanner"/>
+      <vin:Winery rdf:about="#Longridge"/>
+      <vin:Winery rdf:about="#Marietta"/>
+      <vin:Winery rdf:about="#McGuinnesso"/>
+      <vin:Winery rdf:about="#MountEdenVineyard"/>
+      <vin:Winery rdf:about="#Mountadam"/>
+      <vin:Winery rdf:about="#PageMillWinery"/>
+      <vin:Winery rdf:about="#PeterMccoy"/>
+      <vin:Winery rdf:about="#PulignyMontrachet"/>
+      <vin:Winery rdf:about="#SantaCruzMountainVineyard"/>
+      <vin:Winery rdf:about="#SaucelitoCanyon"/>
+      <vin:Winery rdf:about="#SchlossRothermel"/>
+      <vin:Winery rdf:about="#SchlossVolrad"/>
+      <vin:Winery rdf:about="#SeanThackrey"/>
+      <vin:Winery rdf:about="#Selaks"/>
+      <vin:Winery rdf:about="#SevreEtMaine"/>
+      <vin:Winery rdf:about="#StGenevieve"/>
+      <vin:Winery rdf:about="#Stonleigh"/>
+      <vin:Winery rdf:about="#Taylor"/>
+      <vin:Winery rdf:about="#Ventana"/>
+      <vin:Winery rdf:about="#WhitehallLane"/>
+    </owl:distinctMembers>
+  </owl:AllDifferent>
+
+</rdf:RDF>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ontology/DocExamples/jOWLBrowser_1.0/jOWLBrowser.html	Tue Mar 06 17:44:21 2012 +0100
@@ -0,0 +1,240 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:DC="http://purl.org/metadata/dublin_core_elements#" xml:lang="en" lang="en">
+<head>
+    <meta name="DC.creator" content="David Decraene" />
+	<meta name="DC.publisher" content="Ontology Online" />
+    <meta name="Keywords" content="OWL, Ubiquity, jQuery, jOWL, ontology, semantic web"/>
+    <meta name="Description" content="jOWL Ontology Browser, visualizes ontologies loaded with the ubiquity command 'view_ontology'"/>
+    <title>jOWL Ontology Browser - Ubiquity</title>
+	<link rel="stylesheet" href="http://ontologyonline.org/css/blueprint/screen.css" type="text/css" media="screen, projection"/>
+	<link rel="stylesheet" href="css/jOWL.css" type="text/css"/>
+	<link type="text/css" rel="stylesheet" href="css/jq/custom-theme/jquery-ui-1.7.custom.css"></link>
+
+    <style type="text/css">
+		img {border:0pt none;display:block}	
+
+		/** custom widget settings */
+		.jowl_link {text-decoration:underline;color:blue;cursor:pointer;}
+		.jowl_tooltip {text-decoration:underline;color:steelblue;}
+		#thingtooltip {border:0px;}
+		.stats {text-align:right;font-size:smaller;}
+		.resourcebox {text-align:left}
+    </style>
+    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>	
+	<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.0/jquery-ui.min.js"></script>
+	<script type="text/javascript" src="scripts/jquery.tooltip.js"></script>
+	<script type="text/javascript" src="scripts/jOWL.js"></script>
+	<script type="text/javascript" src="scripts/jOWL_UI.js"></script>
+	<script type="text/javascript" src="scripts/jOWLBrowser.js"></script>
+    <script type="text/javascript">
+/** 
+Modify this configuration object to fine-tune the visualisation of the jOWL browser.
+*/
+	var configuration = {
+		ontology : "data/ProvenanceOntology.owl", //the ontology to load
+		owlClass       : null, //The class to show when loading
+		classOverview  : true, //show or hide the class overview list.
+		propertiesTab  : true, //show or hide the properties panel
+		individualsTab : true, //show or hide the individuals panel
+		sparqldlTab    : true  //show or hide the sparq-dl panel
+	}
+
+/** 
+Do not Modify the code below unless you know what you are doing.
+*/
+$(document).ready(function() {
+	if(!configuration.propertiesTab) { $('#propertyPanel').remove();   $('#tab2').remove(); }
+	if(!configuration.individualsTab){ $('#thingwidget').appendTo("body").hide(); $('#individualPanel').remove(); $('#tab3').remove(); }
+	if(!configuration.sparqldlTab)   { $('#sparqldlPanel').remove();   $('#tab4').remove(); }
+
+	$("#tabs").tabs();
+
+	jOWL.load(configuration.ontology, initjOWL, {reason : true, locale : 'en' });
+});
+
+function initjOWL(){
+
+		createOntologyWidget();
+		var conceptWidget = createConceptWidget();
+
+		if(configuration.classOverview){
+			jOWLBrowser.views.push({query: "Class(?x)", element : $('#classlist'), widget : conceptWidget}); 
+			}
+
+		if(configuration.propertiesTab){
+			var propertyWidget = createPropertyWidget(); 
+			jOWLBrowser.views.push({query: "ObjectProperty(?x)", element : $('#OPlist'), widget : propertyWidget});
+			jOWLBrowser.views.push({query: "DatatypeProperty(?x)", element : $('#DPlist'), widget : propertyWidget});
+			}
+
+		if(configuration.individualsTab){
+			var thingWidget = createIndividualsWidget();
+
+			setTimeout(function(){//show individuals asynchronously
+				var arr = new jOWL.Ontology.Array();
+				for(key in jOWL.index('Thing')){
+						arr.concat(jOWL.index('Thing')[key], true);
+					}
+				showOverviewResults(arr, $('#thinglist'), thingWidget);
+			}, 200);
+			
+			}
+
+		if(configuration.sparqldlTab){
+			createSparqlDLWidget(); 
+			}
+
+		createOverviewWidget();
+}
+</script>
+	</head>
+	<body>
+	<div class="container">
+		<div class="column span-24">
+			<div class="resourcebox owl_UI" data-jowl="owl:Ontology" id="title" style="min-height:50px;">
+				<h2 class="propertybox title" data-jowl="rdfs:label">${rdfs:label}</h2>
+				<div class="propertybox owl_UI_content" data-jowl="rdfs:comment">${rdfs:comment}</div>
+			</div>
+			<hr class="space"/><hr />
+		</div>
+		<div class="column span-24">
+		<div id="tabs">
+			<ul>
+				<li><a href="#tab1">Classes</a></li>
+				<li id="propertyPanel"><a href="#tab2">Properties</a></li>
+				<li id="individualPanel"><a href="#tab3">Individuals</a></li>
+				<li id="sparqldlPanel"><a href="#tab4">SPARQL-DL</a></li>
+			</ul>
+			<div id="tab1">
+					<div id="classlist"></div>
+					<hr class="space"/>
+					<div id="conceptwidget">
+						<form action="">
+							Treeview: <input type="radio" name="visualisation" value="treeview" checked="checked"/>
+							Navigation Bar: <input type="radio" name="visualisation" value="navbar"/>
+						</form>
+						<table id="browser" style="width:100%"><tr>
+							<td style="width:50%;">
+								<div id="treeview" class="ui-widget-content">
+									<h4 class="ui-dialog-titlebar ui-state-default">Treeview</h4>
+								</div>
+								<div id="navbar" style="display:none" class="ui-widget-content">
+									<h4 class="ui-dialog-titlebar ui-state-default">Navbar</h4>
+								</div>
+								<input id="owlauto" type="text" size="40" style="display:block;width:99%;margin:5px 0px;" title="enter a search term"/>
+								<div style="color:#DCDCDC" class="info">Enter Search Terms here</div>
+							</td>
+							<td>
+								<div id="description" class="resourcebox ui-widget-content" data-jowl="owl:Class">
+									<h4 class="ui-dialog-titlebar  ui-state-default propertybox" data-jowl="rdfs:label">Description of <span>${rdfs:label}</span></h4>
+									<div class="jowl-content">
+										<div class="propertybox" data-jowl="rdfs:comment">${rdfs:comment}</div>
+										<div class="propertybox">
+											<b>Terms</b>: <span data-jowl="term">${term}</span>
+										</div>
+										<div class="propertybox" id="disjoints">
+											<b>Disjoint With</b>: <span data-jowl="owl:disjointWith">${owl:disjointWith}</span>
+										</div>
+										<div class="propertybox">
+											<b>Relations</b> 
+											<ul>
+												<li data-jowl="sparql-dl:PropertyValue(owl:Class, ?p, ?t)">
+													<span>${?p}</span><span>: </span><span>${?t}</span>
+												</li>
+											</ul>
+										</div>
+										<div id="individualsPropertyBox" class="propertybox" style="padding:5px;">
+											<b>Instances</b><br/>
+											<span class="valuebox" data-jowl="sparql-dl:DirectType(?i, owl:Class)">${?i}</span>
+										</div>
+									</div>
+								</div>
+							</td>
+						</tr></table>
+					</div>
+			</div>
+			<div id="tab2">
+				<div>
+					<p>
+						<b>ObjectProperties</b>
+						<div id="OPlist"></div>
+					</p>
+					<p>
+						<b>DatatypeProperties</b>
+						<div id="DPlist"></div>
+					</p>
+				</div>
+				<hr class="space"/>
+				<div id="propertywidget">
+					<div class="resourcebox ui-widget-content" data-jowl="rdf:Property">
+						<h4 class="ui-dialog-titlebar ui-state-default propertybox" data-jowl="rdfs:label">Description of <span>${rdfs:label}</span></h4>
+						<div class="jowl-content">
+							<div class="propertybox" data-jowl="rdfs:comment">${rdfs:comment}</div>
+							<div class="propertybox">
+								<b>Terms</b>: <span data-jowl="term">${term}</span>
+							</div>
+							<div class="propertybox">
+								<b>Domain</b>: <span data-jowl="rdfs:domain">${rdfs:domain}</span>
+							</div>
+							<div class="propertybox">
+								<b>Range</b>: <span data-jowl="rdfs:range">${rdfs:range}</span>
+							</div>
+						</div>
+					</div>
+				</div>
+			</div>
+			<div id="tab3">
+				<div id="thinglist"></div>
+				<hr class="space"/>
+				<div id="thingwidget">
+					<div class="resourcebox ui-widget-content" data-jowl="owl:Thing">
+						<h4 class="ui-dialog-titlebar ui-state-default propertybox" data-jowl="rdfs:label">Description of <span>${rdfs:label}</span></h4>			
+						<div class="jowl-content">
+							<div class="propertybox" style="margin-bottom:5px"><b>owl:Class</b> <span data-jowl="rdf:type">${rdf:type}</span></div>
+							<div class="propertybox" data-jowl="rdfs:comment">${rdfs:comment}</div>
+							<div class="propertybox" data-jowl="sparql-dl:PropertyValue(owl:Thing, ?p, ?t)">	
+								<span class="alt">${?p}</span><span>: </span><span>${?t}</span>
+							</div>
+						</div>
+					</div>
+				</div>
+			</div>
+			<div id="tab4">
+				<h4>Enter a query:</h4>
+				<form id="sparql"><input type="text" size="100"/></form>
+				<hr class="space"/>
+				<table style="width:100%"><tr>
+				<td style="width:50%;">
+					<h3>Results</h3>
+					<div class="loader hide" >
+						<div style="color:black">Querying, Please Stand By</div>
+						<img src="http://ontologyonline.org/img/ajax-loader.gif" alt="Loading Image"/>
+					</div>
+					<div id="sparqlresults" class="box"></div>
+				</td>
+				<td>
+					<h3>Syntax</h3>
+					<ul>
+						<li>Type(?a, ?b)</li>
+						<li>PropertyValue(?a, ?b, ?c)</li>
+						<li>Class(?a)</li>
+						<li>ObjectProperty(?a)</li>
+						<li>DatatypeProperty(?a)</li>
+					</ul>
+					Examples: see <a href="http://jowl.ontologyonline.org/SPARQL-DL.html">jOWL SPARQL-DL Test Suite page</a>
+				</td>
+				</tr></table>
+			</div>
+		</div>
+		</div>
+			
+		<hr class="space"/><hr />
+		<div class="column span-24">
+			<p>Powered by <a href="http://jowl.ontologyonline.org" title="jOWL" style="font-size:large">jOWL</a>, semantic javascript library.<br/>
+			Created by <a href="http://ontologyonline.org/DavidDecraene.html" style="text-decoration:none;">David Decraene</a>.</p>
+			<p><a href="http://ontologyonline.org" style="text-decoration:none;">OntologyOnline.org</a></p>
+		</div>		
+	</div>
+	</body>
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ontology/DocExamples/jOWLBrowser_1.0/scripts/jOWL.js	Tue Mar 06 17:44:21 2012 +0100
@@ -0,0 +1,2242 @@
+/**
+* jOWL - a jQuery plugin for traversing and visualizing OWL-DL documents.
+* Creator - David Decraene
+* Version 1.0
+* Website: 
+*	http://Ontologyonline.org
+* Licensed under the MIT license 
+*	http://www.opensource.org/licenses/mit-license.php
+* Verified with JSLint 
+*	http://www.jslint.com/
+*/
+
+jOWL = window.jOWL = function( resource, options ){ return jOWL.getResource( resource, options );  };
+jOWL.version = "1.0";
+
+/** for debugging compatibility */
+	try { console.log('...'); } catch(e) { console = window.console = { log: function() {} } }
+	if ($.browser.opera && opera.postError) { console = window.console = { log : function(){opera.postError(arguments); } }; }
+
+
+
+(function($){
+
+/** 
+* if no param: @return string of main namespaces
+* if 1 param: assume a documentElement, parse namespaces
+* if prefix & URI: Bind prefix to namespace URI 
+*/
+jOWL.NS = function(prefix, URI){
+	if(!arguments.length)
+	{ return "xmlns:"+jOWL.NS.owl.prefix+"='"+jOWL.NS.owl()+"' xmlns:"+jOWL.NS.rdf.prefix+"='"+jOWL.NS.rdf()+"' xmlns:"+jOWL.NS.rdfs.prefix+"='"+jOWL.NS.rdfs()+"' xmlns:"+jOWL.NS.xsd.prefix+" ='"+jOWL.NS.xsd()+"'";}
+
+	if(arguments.length == 1){
+		var attr = prefix.get(0).attributes;
+		for(var i=0;i<attr.length;i++){
+			var nn = attr[i].nodeName.split(':');
+			if(nn.length == 2){
+				if(attr[i].nodeValue == jOWL.NS.owl.URI){ jOWL.NS.owl.prefix = nn[1];}
+				else if(attr[i].nodeValue == jOWL.NS.rdf.URI){ jOWL.NS.rdf.prefix = nn[1];}
+				else if(attr[i].nodeValue == jOWL.NS.rdfs.URI){ jOWL.NS.rdfs.prefix = nn[1];}
+				else if(attr[i].nodeValue == jOWL.NS.xsd.URI){ jOWL.NS.xsd.prefix = nn[1];}
+				else { jOWL.NS(nn[1], attr[i].nodeValue);}
+			}
+		}
+		jOWL.namespace =  prefix.xmlAttr('xml:base') || prefix.xmlAttr('xmlns');
+		return;
+	}
+	jOWL.NS[prefix] = function(element){
+		if(element){
+			return (arguments.callee.prefix == 'base') ? element : arguments.callee.prefix + ":" + element;
+			}
+		return arguments.callee.URI;
+		};
+	jOWL.NS[prefix].prefix = prefix;
+	jOWL.NS[prefix].URI = URI;	
+};
+
+var __ = jOWL.NS;
+
+/** set Main namespaces */
+__("owl", "http://www.w3.org/2002/07/owl#");
+__("rdf", "http://www.w3.org/1999/02/22-rdf-syntax-ns#");
+__("rdfs", "http://www.w3.org/2000/01/rdf-schema#");
+__("xsd", "http://www.w3.org/2001/XMLSchema#");
+
+/** jQuery function additions for easy parsing of identities */
+$.fn.extend({
+	/** Used for Opera compatibility when parsing xml attributes, nodeName must be checked, in contrast to native jquery call attr() */
+	xmlAttr : function(nodeName){
+		var t = this[0].attributes; if(!t){ return;}
+		for(var i =0;i<t.length;i++){
+			if(t[i].nodeName == nodeName){ return t[i].nodeValue;}
+		}
+	},
+	RDF_ID : function(match){
+		var res = this.xmlAttr(__.rdf('ID'));
+		if(!res){ return false;}
+		res = jOWL.resolveURI(res);
+		if(match){
+			return res.toLowerCase() == (jOWL.resolveURI(match.toString())).toLowerCase();}
+		return res;
+		},
+	RDF_Resource : function(match){
+		function getClassName(dom){
+			var cl = jOWL.Xpath(__.owl("Class"), dom);
+			if(cl.length == 1){ return new jOWL.Ontology.Class(cl).URI;}
+			return false;
+		}
+		if(!this.length){ return false;}
+		var rsrc = this.xmlAttr(__.rdf('resource'));
+		if(!rsrc){
+			var dom = this.get(0);
+			switch(dom.nodeName){
+				case __.rdfs("subClassOf"): rsrc = getClassName(dom); break;
+				case __.owl("disjointWith"): rsrc = getClassName(dom); break;
+				case __.owl("allValuesFrom"): rsrc = getClassName(dom); break;
+				case __.owl("someValuesFrom"): rsrc = getClassName(dom); break;
+				case __.owl("onProperty"):
+					var t = jOWL.Xpath(__.owl("ObjectProperty"), dom);
+					if(t.length === 0){ t = jOWL.Xpath(__.owl("DatatypeProperty"), dom);}
+					if(t.length === 0){ t = jOWL.Xpath(__.owl("FunctionalProperty"), dom);}
+					rsrc = t.xmlAttr(__.rdf('about')); break;
+				default: return false;
+			}
+		}
+		if(!rsrc){ return false;}
+		rsrc = jOWL.resolveURI(rsrc);
+		if(match){ return rsrc.toLowerCase() == (jOWL.resolveURI(match.toString())).toLowerCase();}
+		return rsrc;
+		},
+	RDF_About : function(match){
+		var res = this.xmlAttr(__.rdf('about'));
+		if(!res){ return false;}
+		res = jOWL.resolveURI(res);
+		if(match){
+			return res.toLowerCase() == (jOWL.resolveURI(match.toString())).toLowerCase();}
+		return res;
+		}
+});
+
+/** Check XPath implementation */
+if( document.implementation.hasFeature("XPath", "3.0") ){
+	XMLDocument.prototype.selectNodes = function(cXPathString, xNode){
+		if( !xNode ){ xNode = this;}
+		var oNSResolver = this.createNSResolver(this.documentElement);
+		var aItems = this.evaluate(cXPathString, xNode, oNSResolver, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); var aResult = []; for( var i = 0; i < aItems.snapshotLength; i++){ aResult[i] = aItems.snapshotItem(i);}  
+		return aResult; 
+		};
+	Element.prototype.selectNodes = function(cXPathString){  
+		if(this.ownerDocument.selectNodes)  {  return this.ownerDocument.selectNodes(cXPathString, this);}
+		else{throw "For XML Elements Only";} 
+		}; 
+	XMLDocument.prototype.selectSingleNode = function(cXPathString, xNode){ if( !xNode ){ xNode = this;}
+		var xItems = this.selectNodes(cXPathString, xNode); if( xItems.length > 0 ){  return xItems[0];} else {  return null;}
+		};
+	Element.prototype.selectSingleNode = function(cXPathString){
+		if(this.ownerDocument.selectSingleNode)  {  return this.ownerDocument.selectSingleNode(cXPathString, this);}
+		else{throw "For XML Elements Only";} 
+		};  
+}
+
+/** @return A jQuery array of xml elements */
+jOWL.Xpath = function(selector, elem){
+	var node = null;
+	if(elem){ if(elem.each){ node = elem.get(0);} else { node = elem;} }
+	var arr = node ? node.selectNodes(selector) : jOWL.document.selectNodes(selector);
+	if($.browser.msie){ return $($.makeArray(arr));} return $(arr); //this is needed for IE, it returns a length of 1 on empty node array
+};
+
+/** @return a String array of class references */
+jOWL.Xpath.classes = function(jnode){
+	var cl = [];
+	jOWL.Xpath(__.rdfs("subClassOf"), jnode)
+		.each(function(){
+			var res = $(this).RDF_Resource();
+			if(res){ cl.push(res);}
+		});
+
+	jOWL.Xpath(__.owl("intersectionOf")+"/"+__.owl("Class"), jnode)
+		.each(function(){
+			var p = $(this).RDF_About(); if(p){ cl.push(p);}
+		});
+	return cl;
+};
+
+/** Functions stored in jOWL.priv are intended for local access only, to avoid a closure function */
+jOWL.priv = {
+	/** Arrray functions */
+	Array : {
+		isArray : function(array){
+			return Object.prototype.toString.call(array) === '[object Array]';
+		},
+		pushUnique : function(array, item){
+			if(jOWL.priv.Array.getIndex(array, item) === -1){	array.push(item); return true;}
+			return false;
+		},
+		getIndex : function(array, item){
+			for (var i=0; i<array.length; i++){ if(item == array[i]){ return i;} }
+			return -1;
+		},
+		/** Sorted array as input, returns the same array without duplicates. */
+		unique : function(array){
+			var result = []; var lastValue="";
+			for (var i=0; i<array.length; i++)
+			{
+				var curValue=array[i];
+				if(curValue != lastValue){ result[result.length] = curValue;}
+				lastValue=curValue;
+			}
+			return result;
+		}
+	}
+};
+
+/** Make values work with jOWL.Ontology.Array */
+jOWL.Literal = function(value){
+	this.name = value;
+};
+
+/** Access to the owl:Ontology element, also the main coding namespace for ontology objects */
+jOWL.Ontology = function(){
+	if(!(this instanceof arguments.callee)){ return new jOWL.Ontology();}
+	this.parse(jOWL.Xpath("/"+__.rdf("RDF")+"/"+__.owl("Ontology")));
+	return this;
+};
+
+/** 'superclass' for referencable ontology objects */
+jOWL.Ontology.Thing = function(jnode){
+	this.parse(jnode);
+};
+
+jOWL.Ontology.Thing.prototype = {
+	jOWL : jOWL.version,
+	equals : function(id){
+		var URI = (typeof id == "string") ? jOWL.resolveURI(id) : id.URI;
+		return URI === this.URI;
+	},
+	/** Initialization */
+	parse : function(jnode){
+		if(!jnode.length){ return;}
+		var identifier;
+		if(typeof jnode == 'string'){
+			identifier = jnode;
+			jnode = $();
+			}
+		else {
+			identifier = jnode.RDF_ID() || jnode.RDF_About();
+			if(!identifier){identifier = "anonymousOntologyObject";
+			this.isAnonymous = true;
+			}
+		}
+		identifier = jOWL.resolveURI(identifier);
+		this.isExternal = jOWL.isExternal(identifier);
+		if(this.isExternal){this.baseURI = this.isExternal[0]; this.name = this.isExternal[1]; this.URI = this.baseURI+this.name;}
+		else { this.baseURI = jOWL.namespace; this.name = identifier; this.URI = this.name;}
+		this.jnode = jnode;
+		this.type = jnode.get(0).nodeName;
+	},
+	/** @return A jQuery array of elements matching the annotation (qualified name or annotation Property) */
+	annotations : function(annotation){
+		return jOWL.Xpath(annotation, this.jnode);
+	},
+	/** @return rdfs:comment annotations */
+	description : function(){
+		return $.map(this.annotations(__.rdfs('comment')), function(n){ return $(n).text();});
+	},
+	/**
+	@return Array of Arrays, where secondary array is of form: [0] = term (rdfs:label) , [1] = identifier, [2] = language; [3] = type of object
+	example:
+	[
+		["bleu", "blue", "fr", "owl:Class"]
+	]
+	*/
+	terms : function(){
+		var terms = [], self = this;
+		if(jOWL.options.dictionary.addID && this.name != "anonymousOntologyObject"){ terms.push([this.name.beautify(), this.URI, jOWL.options.defaultlocale, this.type]);}
+		this.annotations(__.rdfs('label')).each(function(){
+			var lbl = $(this);
+			var locale = lbl.xmlAttr("xml:lang") || jOWL.options.defaultlocale;
+			var txt = lbl.text();
+			var match = false;
+			for(var i =0;i<terms.length;i++){
+			if(terms[i][0].toUpperCase() == txt.toUpperCase() && terms[i][2] == locale){ match = true;}
+			}
+			if(!match){ terms.push([lbl.text(), self.URI, locale, self.type]);}
+		});
+		return terms;
+	},
+	/** @return A representation name */
+	label : function(){
+		var label = false;
+		this.annotations(__.rdfs('label')).each(function(){
+			var $label = $(this);
+			if(jOWL.options.locale){
+				var lang = $label.xmlAttr('xml:lang') || jOWL.options.defaultlocale;
+				if(lang == jOWL.options.locale){ label = $label.text(); return false;}
+			} else { label = $label.text(); return false;}
+		});
+		if(label){ return label;}
+		if(this.name == "anonymousOntologyObject"){ return jOWL.Manchester(this) || "anonymous Object";}
+		if(jOWL.options.niceClassLabels && (this.isClass || this.isThing)){
+			return this.name.beautify();
+		}
+		return this.name;
+	},
+	/** Binds the Ontology element to the jQuery element for visual representation 
+	* @return jQuery Element
+	*/
+	bind : function(jqelem){
+		return jqelem.text(this.label()).attr('typeof', this.type).attr('title', this.URI);
+	}
+};
+
+jOWL.Ontology.prototype = jOWL.Ontology.Thing.prototype;
+
+/** used for jOWL.Ontology.Individual.sourceof */
+jOWL.priv.testObjectTarget = function(target, matchtarget){
+	if(target.isArray){
+		for(var i=0;i<target.length;i++){
+			if(jOWL.priv.testObjectTarget(target.get(i), matchtarget)){ return true;}
+		}
+		return false;
+	}
+	//if the target is a class, fetch individuals instead.
+	else if(target.isClass){
+		 var a = target.individuals();
+		 for(var i=0;i<a.length;i++){
+			if(a.get(i).URI == matchtarget){ return true;}
+		}
+	}
+	else if(target.URI == matchtarget){ return true;}
+	return false;
+};
+
+/** access to Individuals of the ontology*/
+jOWL.Ontology.Individual = function(jnode, owlclass){	
+	this.parse(jnode);
+	if(this.type == __.owl("Thing")){
+	var t = jOWL.Xpath(__.rdf('type'), this.jnode);
+		if(!t.length){ throw "unable to find a Class for the Individual "+this.name;}
+		this.Class = $(t[0]).RDF_Resource();
+	}
+	else {
+		this.Class = jOWL.resolveURI(jnode.get(0));
+	}
+	this.type = __.owl("Thing");
+	if(owlclass){ this.owlClass(owlclass);}
+};
+
+jOWL.Ontology.Individual.prototype = $.extend({}, jOWL.Ontology.Thing.prototype, {
+	isThing : true,
+	/** @return The owl:Class */
+	owlClass : function(owlclass){
+		if(owlclass){ jOWL.data(this.name, "class", owlclass);}
+		else {
+			var cl = jOWL.data(this.name, "class");
+			if(!cl){ cl = jOWL(this.Class); if(cl){ this.owlClass(cl);} }
+			return cl;
+		}
+	},
+	/** Access to restrictions */
+	sourceof : function(property, target, options){
+		options = $.extend({
+			inherited : true, // add restrictions specified on parents as well
+			transitive : true,
+			ignoreGenerics : false, //if a parent has an identical property, with another target 'Thing', skip that restriction
+			ignoreClasses : true,
+			valuesOnly : true
+		}, options);
+
+		var results = new jOWL.Ontology.Array();
+
+		this.jnode.children().filter(function(){return (this.prefix != __.rdfs.prefix && this.prefix != __.rdf.prefix && this.prefix != __.owl.prefix);})
+			.each(function(){
+			var restriction = new jOWL.Ontology.Restriction($(this));
+			var propertyMatch = property ? false : true;
+			var targetMatch = target ? false : true;
+
+			if(!propertyMatch){
+				if( property.isArray){ propertyMatch = property.contains(restriction.property);}
+				else { propertyMatch = (property.URI == restriction.property.URI);}
+				if(!propertyMatch){ return;}
+			}
+
+			if(!target){
+				if(options.transitive && restriction.property.isTransitive && !options.ignoreGenerics){
+					var rTarget = restriction.getTarget();
+					var transitives = rTarget.sourceof(restriction.property, null, options);
+					results.concat(transitives);
+				}
+			}
+			else {
+				if(restriction.property.isObjectProperty){
+					targetMatch = jOWL.priv.testObjectTarget(target, restriction.target);
+					if(!targetMatch && options.transitive && restriction.property.isTransitive){
+						var rTransitives = restriction.getTarget().sourceof(restriction.property, target, options);
+						if(rTransitives.length > 0){ targetMatch = true;}
+					}
+				}
+				else if(restriction.property.isDatatypeProperty){
+					targetMatch = restriction.property.assert(restriction.target, target);
+				}
+				else { targetMatch = (target == restriction.target);}
+			}
+			if(propertyMatch && targetMatch){ results.pushUnique(restriction);}
+
+		});
+		if(options.inherited){ 
+			var clRestrictions = this.owlClass().sourceof(property, target, options)
+				.each(function(){
+				//target can be a class, null, a duplicate individual...
+				var clRestr = this;
+				if(options.valuesOnly && clRestr.target === null){return;}
+				var clTarget = this.getTarget();
+				if(clTarget.isClass && options.ignoreClasses){ return;}
+
+				var containsProperty = false;
+				for(var i = 0;i<results.length;i++){
+					var restr = results.get(i);
+					if(restr.property.URI == clRestr.property.URI){
+						containsProperty = true;
+						if(!options.ignoreGenerics){
+							if(clRestr.target != restr.target){ results.pushUnique(clRestr);}
+						}
+					}
+				}
+				if(!containsProperty){ results.pushUnique(clRestr);}
+			});
+		}
+		return results;
+
+	},
+	localRestrictions : function(property, target){
+		return this.sourceof(property, target, {inherited : false, transitive : false });
+	},
+	/** Include generic will add transitivity reasoning */
+	valueRestrictions : function(includeGeneric){
+		return this.sourceof(null, null, {ignoreGenerics : !includeGeneric, valuesOnly : true });
+	}
+});
+
+/** jNode is of type owl:Restriction */
+jOWL.Ontology.Restriction = function(jnode){
+
+	var jprop, prop, op, restrtype;
+
+	this.cachedTarget = null;
+
+	if(jnode.get(0).nodeName != __.owl("Restriction")){
+		this.property = jOWL(jOWL.resolveURI(jnode.get(0)), {type: "property"});
+		this.target = jnode.RDF_Resource() || jnode.text();
+		restrtype = "Individual";
+	}
+	else
+	{
+		jprop = jOWL.Xpath(__.owl("onProperty"), jnode);
+		prop = jprop.RDF_Resource(); if(!prop){ throw "no property found for the given owl:restriction";}
+		op = jprop.siblings(); 
+		restrtype = op.get(0).nodeName;
+		this.property = jOWL(prop, {type: "property"});
+		this.target = null; //string only
+	}
+
+	this.restriction = { minCard: false, maxCard : false, some: [], all : [], value : false };
+	this.type = jnode.get(0).nodeName;
+	this.isAnonymous = true;
+	this.isValueRestriction = (restrtype == __.owl('someValuesFrom') || restrtype == __.owl('allValuesFrom') || restrtype == __.owl('hasValue'));
+	this.isCardinalityRestriction = (restrtype == __.owl('cardinality') || restrtype == __.owl('maxCardinality') || restrtype == __.owl('minCardinality'));
+
+	if(!this.property || !restrtype){ throw "badly formed owl:restriction";}
+	switch(restrtype){
+		case __.owl('cardinality'): this.restriction.minCard = this.restriction.maxCard = parseInt(op.text(), 10); break;
+		case __.owl('maxCardinality'): this.restriction.maxCard = parseInt(op.text(), 10); break;
+		case __.owl('minCardinality'): this.restriction.minCard = parseInt(op.text(), 10); break;
+		case __.owl('hasValue'): var res = op.RDF_Resource(); if(res){ this.target = res;} break;
+	}
+	if(this.property.isObjectProperty){
+		if(this.isCardinalityRestriction && this.property.range){ this.target = this.property.range;}
+		else if(this.isValueRestriction){
+			var t = op.RDF_Resource(); 
+			if(t == "anonymousOntologyObject"){//nested groupings, anonymous classes
+				this.cachedTarget = new jOWL.Ontology.Class(jOWL.Xpath(__.owl("Class"), op));
+			}
+			this.target = t;
+		}
+	}
+
+	var suffix = this.target || this.restrtype;
+	this.name = this.property.name+'#'+suffix;
+	return this;
+};
+
+jOWL.Ontology.Restriction.prototype = {
+	jOWL : jOWL.version,
+	isRestriction : true,
+	bind : function(){return null;},
+	merge : function(crit){
+		if(this.isCardinalityRestriction && crit.isValueRestriction ){ this.target = crit.target; return true;}
+		else if(this.isValueRestriction && crit.isCardinalityRestriction){
+			switch(crit.restrtype){
+			case __.owl('cardinality'): this.restriction.minCard = this.restriction.maxCard = crit.restriction.minCard; return true;
+			case __.owl('minCardinality'): this.restriction.minCard = crit.restriction.minCard; return true;
+			case __.owl('maxCardinality'): this.restriction.maxCard = crit.restriction.maxCard; return true;
+			}
+		}
+		return false;
+	},
+	getTarget : function(){
+		if(!this.target){ return jOWL('Thing');}
+		if(this.cachedTarget){ return this.cachedTarget;}
+		this.cachedTarget = (this.property.isObjectProperty) ? jOWL(this.target) : new jOWL.Literal(this.target);
+		return this.cachedTarget;	
+	},
+	equals : function(restr){
+		if(!restr.isRestriction){ return false;}
+		if(this.property.URI == restr.property.URI){
+			if(this.target == 'anonymousOntologyObject'){return false;}//oneof lists etc unsupported right now
+			if(this.target && this.target === restr.target){ return true;}
+		}
+		return false;
+	}
+};
+
+/** Datatype Logic, local functions */
+jOWL.priv.Dt = function(options){
+	this.settings = $.extend({base: null, pattern : null, assert: function(b){return true;}, match: function(a, b){return true;}}, options);
+	this.base = jOWL.Ontology.Datatype[this.settings.base];
+};
+
+jOWL.priv.Dt.prototype = {
+	sanitize : function(b){
+		if(this.settings.sanitize){ return this.settings.sanitize(b);}
+		if(this.base && this.base.sanitize){ return this.base.sanitize(b);}
+	},
+	assert : function(b){
+		var v = this.sanitize(b); if(v !== undefined){ b = v;}
+		if(this.base && !this.base.assert(b)){ return false;}
+		if(this.settings.pattern && !this.settings.pattern.test(b)){ return false;}
+		return this.settings.assert(b);
+	},
+	match : function(a, b){
+		var v = this.sanitize(b); if(v !== undefined){ b = v;}
+		if(!this.assert(b)){ return false;}
+		if(this.base && !this.base.match(a, b)){ return false;}
+		return this.settings.match(a, b);
+	}
+};
+
+jOWL.Ontology.Datatype = function(URI, options){
+	jOWL.Ontology.Datatype[URI] = new jOWL.priv.Dt(options);
+};
+
+/** Datatype Definitions */
+jOWL.Ontology.Datatype(__.xsd()+"integer", {sanitize : function(x){return  parseInt(x, 10);}, assert : function(x){ return Math.round(x) == x;}, match : function(a, b){
+	var check = parseInt(a, 10);
+	if(!isNaN(check)){ return check == b;}
+	var arr = a.split('&&');
+	for(var i=0;i<arr.length;i++){ arr[i] = b+arr[i];}
+	try {
+		return eval(arr.join(' && '));
+	} catch(e){ return false;}
+} });
+jOWL.Ontology.Datatype(__.xsd()+"positiveInteger", {base: __.xsd()+"integer", assert : function(x){ return x > 0;} });
+jOWL.Ontology.Datatype(__.xsd()+"decimal", {base: __.xsd()+"integer" });
+jOWL.Ontology.Datatype(__.xsd()+"float", {base: __.xsd()+"integer" });
+jOWL.Ontology.Datatype(__.xsd()+"double", {base: __.xsd()+"integer" });
+jOWL.Ontology.Datatype(__.xsd()+"negativeInteger", {base: __.xsd()+"integer", assert : function(x){ return x < 0;} });
+jOWL.Ontology.Datatype(__.xsd()+"nonNegativeInteger", {base: __.xsd()+"integer", assert : function(x){ return x >= 0;} });
+jOWL.Ontology.Datatype(__.xsd()+"nonPositiveInteger", {base: __.xsd()+"integer", assert : function(x){ return x <= 0;} });
+jOWL.Ontology.Datatype(__.xsd()+"string");
+
+var URIPattern = /^([a-z0-9+.\-]+):(?:\/\/(?:((?:[a-z0-9-._~!$&'()*+,;=:]|%[0-9A-F]{2})*)@)?((?:[a-z0-9-._~!$&'()*+,;=]|%[0-9A-F]{2})*)(?::(\d*))?(\/(?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*)?|(\/?(?:[a-z0-9-._~!$&'()*+,;=:@]|%[0-9A-F]{2})+(?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*)?)(?:\?((?:[a-z0-9-._~!$&'()*+,;=:\/?@]|%[0-9A-F]{2})*))?(?:#((?:[a-z0-9-._~!$&'()*+,;=:\/?@]|%[0-9A-F]{2})*))?$/i;    
+
+jOWL.Ontology.Datatype(__.xsd()+"anyURI", {base: __.xsd()+"string", pattern : URIPattern });
+jOWL.Ontology.Datatype(__.xsd()+"boolean", {sanitize : function(x){
+		if(typeof x == 'boolean'){ return x;}
+		if(x == 'true'){ return true;}
+		if(x == 'false'){ return false;}
+	}, assert : function(x){
+		return typeof x == 'boolean';
+	}, match: function(a, b){
+		if(a === "false"){ a = false;}
+		if(a === "true"){ a = true;}
+		return (a === b);
+}});
+
+/** 'superclass' for Properties */
+jOWL.Ontology.Property = function(jnode){
+	var r = this.parseProperty(jnode);
+	if(r){ return r;}
+};
+
+jOWL.Ontology.Property.prototype = $.extend({}, jOWL.Ontology.Thing.prototype,{
+	isProperty : true,
+	parseProperty : function(jnode){
+		if(!jnode || typeof jnode == 'string'){
+			this.domain = this.range = null;
+			this.parse(jnode);
+			return;
+		}
+		if(jOWL.options.cacheProperties && jOWL.indices.IDs){
+			var res = jnode.RDF_ID() || jnode.RDF_About();
+			var c = jOWL.index('property').get(res);
+			if(c){ return c;}
+		}
+		this.parse(jnode);
+		this.domain= $(this.jnode.get(0).selectSingleNode(__.rdfs('domain'))).RDF_Resource();
+		this.range = $(this.jnode.get(0).selectSingleNode(__.rdfs('range'))).RDF_Resource();	
+	}
+});
+
+/** access to Datatype properties */
+jOWL.Ontology.DatatypeProperty = function(jnode){
+	var r = this.parseProperty(jnode);
+	if(r){ return r;}
+	if(this.type == __.owl("AnnotationProperty")){ this.range = __.xsd()+"string";}
+};
+
+jOWL.Ontology.DatatypeProperty.prototype = $.extend({}, jOWL.Ontology.Thing.prototype, jOWL.Ontology.Property.prototype, {
+	isDatatypeProperty : true,
+	/** check datatype values against this */
+	assert : function(targetValue, value){
+		var self = this;
+		var dt = jOWL.Ontology.Datatype[this.range];
+		if(!dt){
+			console.log(this.range+" datatype reasoning not implemented");
+			return true;
+		}
+		if(value === undefined){ return dt.assert(targetValue);}
+		else {return dt.match(value, targetValue);}
+	}
+});
+
+/** access to Object properties */
+jOWL.Ontology.ObjectProperty = function(jnode){
+	var r = this.parseProperty(jnode);	
+	if(r){ return r;}
+	var self = this;
+	jOWL.Xpath(__.rdf('type'), this.jnode).each(function(){
+		if($(this).RDF_Resource() == __.owl()+"TransitiveProperty"){ self.isTransitive = true;}
+	});
+	if(this.jnode.get(0).nodeName == __.owl("TransitiveProperty")){ self.isTransitive = true;}
+};
+
+jOWL.Ontology.ObjectProperty.prototype = $.extend({}, jOWL.Ontology.Thing.prototype, jOWL.Ontology.Property.prototype, {
+	isObjectProperty : true
+});
+
+/** access to an owl:Class */
+jOWL.Ontology.Class = function(jnode){
+	this.parse(jnode);
+};
+
+/** @return jOWL Array of Restrictions */
+jOWL.Xpath.restrictions = function(jnode){
+	var result = new jOWL.Ontology.Array();
+	jOWL.Xpath(__.rdfs("subClassOf")+"/"+__.owl("Restriction"), jnode)
+		.add(jOWL.Xpath(__.owl("intersectionOf")+"/"+__.owl("Restriction"), jnode))
+		.each(function(){
+			result.push(new jOWL.Ontology.Restriction($(this)));
+		});
+	return result;
+};
+
+/** Internal Use */
+jOWL.Ontology.Intersection = function(jnode){
+	var self = this;
+	this.jnode = jnode;
+	this._arr = [];
+	this.URI = this.jnode.parent().RDF_ID();
+	this.matches = {};
+	jOWL.Xpath(__.owl("Restriction"), jnode).each(function(){
+		var restr = new jOWL.Ontology.Restriction($(this));
+		if(restr.isValueRestriction){self._arr.push(restr);}
+	});
+	jOWL.Xpath(__.owl('Class'), jnode).each(function(){
+		var uri = $(this).RDF_About();
+		if(uri){ self._arr.push(jOWL(uri));}
+	});
+};
+
+jOWL.Ontology.Intersection.prototype = {
+	isIntersection : true,
+	jOWL : jOWL.version,
+	match : function(id, cls, clRestr){
+		if(id == this.URI){ return false;}
+		if(this.matches[id] !== undefined){ return this.matches[id]; }//local cache
+
+		for(var i =0;i<this._arr.length;i++){
+			var entry = this._arr[i];
+			var m = false;
+			if(entry.isRestriction){
+				clRestr.each(function(){
+					if(this.equals(entry)){ m = true; return false;}
+				});
+				if(!m) {
+					this.matches[id] = false;
+					return false;
+				}
+			} else if(entry.isClass){
+				for(var j = 0;j<cls.length;j++){
+					if(entry.equals(cls[j])){m = true; break;}
+					var it = jOWL.index('ID')[cls[j]];
+					if(it){
+						var narr = jOWL.Xpath.classes(jOWL.index('ID')[cls[j]].jnode);
+						for (var z=0;z<narr.length ; z++){
+							if(entry.equals(narr[z])){m = true; break;}
+						}
+					}
+				}
+				if(!m){
+					this.matches[id] = false;
+					return false;
+				}
+			}
+		}
+		this.matches[id] = true;
+		return this.matches[id];
+	},
+	equals : function(isect){
+		if(!isect.isIntersection){ return false;}
+			for(var i =0;i<this._arr.length;i++){
+				var match = false;
+				for(var j = 0;j<isect._arr.length;j++){
+					if(isect._arr[j].equals(this._arr[i])){ match = true;}
+				}
+				if(!match){ return false;}
+			}
+		return true;
+	}
+};
+
+jOWL.Ontology.Class.prototype = $.extend({}, jOWL.Ontology.Thing.prototype, {
+	isClass : true,
+	/** @return A jOWL.Ontology.Array of individuals for this class & its subclasses */
+	individuals : function(){
+		var arr = new jOWL.Ontology.Array();
+		var q = new jOWL.SPARQL_DL("Type(?x, "+this.name+")").execute({async: false, onComplete: function(r){ arr = r.jOWLArray("?x");}  });
+		return arr;
+	},
+	/** @return A jOWL.Ontology.Array of individuals (if oneOf list) */
+	oneOf : function(){
+		var arr = new jOWL.Ontology.Array();
+		var oneOf = this.jnode.children().filter(function(){return this.tagName == __.owl("oneOf");});
+		oneOf.children().each(function(){
+			arr.push(jOWL($(this).RDF_About()));
+		});
+		return arr;
+	},
+	/** @return A jOWL.Ontology.Array of direct children */
+	children : function(){
+		var that = this;
+		var oChildren = jOWL.data(this.name, "children");
+		if(oChildren){ return oChildren;}
+		oChildren = new jOWL.Ontology.Array();
+		if(this.oneOf().length){return oChildren;}
+		var URI = this.URI;
+
+		for(x in jOWL.index('ID')){
+			if(x === this.URI){ continue;}
+			var node = jOWL.index('ID')[x]; 
+			if(!node.isClass){continue;}
+			var cls = jOWL.Xpath.classes(node.jnode); //direct subClasses
+			for(var i=0;i<cls.length;i++){
+				if(this.equals(cls[i])){
+					oChildren.push(node);
+				}
+			}
+			var clRestr = jOWL.Xpath.restrictions(node.jnode);
+			var intersections = jOWL.index("intersection")[URI];
+			if(intersections){
+				intersections.each(function(){//fully defined Subclasses
+					if(this.match(x, cls, clRestr)){oChildren.push(node);}
+				});
+			}
+		}
+		//an ObjectProperty mentions this as domain
+		jOWL.index("property").each(function(){
+		if(this.domain == that.name){
+			var nodes = jOWL.Xpath('//'+__.owl('onProperty')+'[@'+__.rdf('resource')+'="#'+this.name+'"]/parent::'+__.owl('Restriction')+'/..');
+			nodes.filter(function(){ return (this.nodeName == __.owl('intersectionOf') || this.nodeName == __.rdfs('subClassOf'));
+			}).each(function(){
+				var cl = jOWL($(this.selectSingleNode('parent::'+__.owl('Class'))));
+				if(!oChildren.contains(cl) && cl.name != that.name && cl.name !== undefined){ oChildren.push(cl);}
+				});
+			}
+			});
+		//filter out redundancies
+		oChildren.filter(function(){
+			this.hierarchy(false);
+			return (this.parents().contains(URI));
+		});
+		jOWL.data(this.name, "children", oChildren);
+		return oChildren;
+	},
+	setParents : function(parents){
+		jOWL.data(this.name, "parents", parents); return parents;
+	},
+	/** @return A jOWL.Ontology.Array of parents, includes redundancies, to exclude do a hierarchy search first.*/
+	parents : function(){
+		var self = this;
+		var oParents = jOWL.data(this.name, "parents");
+		if(oParents){ return oParents;}
+
+		var temp = [];
+
+		var cls = jOWL.Xpath.classes(this.jnode);
+			for(var i=0;i<cls.length;i++){ jOWL.priv.Array.pushUnique(temp, cls[i]);}
+
+		var restr = jOWL.Xpath.restrictions(this.jnode);
+			restr.each(function(){
+				if(this.property.domain && this.property.domain != self.name){ jOWL.priv.Array.pushUnique(temp, this.property.domain);
+			}
+		});
+
+		var iSectLoop = function(){
+			if(this.match(self.URI, cls, restr)){
+				jOWL.priv.Array.pushUnique(temp, this.URI);
+			}
+		
+		};
+
+		if(jOWL.options.reason){
+			for(resource in jOWL.index('intersection')){
+				jOWL.index('intersection')[resource].each(iSectLoop);
+			}
+		}
+
+		oParents = new jOWL.Ontology.Array( jOWL.getXML(temp), true);
+		if(!oParents.length){ oParents.push(jOWL('Thing'));}
+		else if(oParents.length > 1){ oParents.filter(function(){return this.name != ('Thing');});} //Remove Thing reference if other parents exist
+		jOWL.data(this.name, "parents", oParents);
+		return oParents;
+	},
+/** @return ancestors to the class in a jOWL.Ontology.Array */
+	ancestors : function(){
+		return this.hierarchy(false).flatindex;
+	},
+/**
+Constructs the entire (parent) hierarchy for a class
+@return a jOWL.Ontology.Array containing top nodes (classes directly subsumed by 'owl:Thing')
+@param addInverse add a variable invParents (jOWL.Ontology.Array of child references) to each node with exception of the leaves (original concept)
+*/
+	hierarchy : function(addInverse){
+		var endNodes = new jOWL.Ontology.Array();
+		var self = this;
+		endNodes.flatindex  = new jOWL.Ontology.Array();
+
+		function URIARR(p_arr, obj){
+			var add = true;
+			if(!obj){ obj = {}; add = false;}
+			if(p_arr.each){
+				p_arr.each(function(){
+					if(obj[this.URI]){return;}
+					if(this.URI == __.owl()+'Thing'){ return;}
+					if(add){ obj[this.URI] = true;}
+					if(this.parents){ URIARR(this.parents(), obj);}
+				});
+			}
+			return obj;
+		}
+
+		function traverse(concept){
+			var parents = concept.parents();
+			if(parents.length == 1 && parents.contains(__.owl()+'Thing')){ endNodes.pushUnique(concept); return;}
+			else
+			{
+				var asso = jOWL.options.reason ? URIARR(parents) : {};
+				parents.filter(function(){ return (!asso[this.URI]);}); //throw out redundancies
+				parents.each(function(){
+						var item = endNodes.flatindex.pushUnique(this);
+						if(addInverse){
+							if(!item.invParents){ item.invParents = new jOWL.Ontology.Array();}
+							item.invParents.pushUnique(concept);
+							}
+						traverse(item);
+					});
+				concept.setParents(parents);
+			}
+		}
+
+		traverse(this);
+		return endNodes;
+
+	},
+	/**
+	@param level depth to fetch children, Default 5 
+	@return jOWL array of classes that are descendant
+	*/
+	descendants : function(level){
+		level = (typeof level == 'number') ? level : 5;
+		var oDescendants = jOWL.data(this.name, "descendants");
+		if(oDescendants && oDescendants.level >= level){ return oDescendants;}
+		oDescendants = new jOWL.Ontology.Array();
+		oDescendants.level = level;
+
+		function descend(concept, i){
+			if(i <= level){
+				i++;
+				var ch = concept.children();
+				oDescendants.concat(ch);
+				ch.each(function(item){ descend(item, i);});
+			}
+		}
+
+		descend(this, 1);
+		jOWL.data(this.name, "descendants", oDescendants);
+		return oDescendants;
+	},
+	/** @return jOWL.Array of Restrictions, target is an individual, not a class or undefined (unless includeAll is specified) - deprecated */
+	valueRestrictions : function(includeAll, array){
+		return this.sourceof(null, null, {ignoreClasses : !includeAll});
+	},
+	/**
+	get all restrictions that satisfy the arguments
+	@param property property or array of properties, or null
+	@param target class, individuals of array of them, or null
+	@return jOWL.Array of Restrictions
+	*/
+	sourceof : function(property, target, options){
+		options = $.extend({
+			inherited : true, // add restrictions specified on parents as well
+			transitive : true, //expand on transitive relations too
+			ignoreGenerics : true, //if a parent has an identical property, with another target 'Thing', skip that restriction
+			ignoreClasses : false, //only individuals should return
+			valuesOnly : true //do not return valueless criteria
+		}, options);
+		var self = this;
+		var crit = jOWL.data(this.name, "sourceof");
+		var jnode = this.jnode;
+
+		if(!crit){
+			crit = new jOWL.Ontology.Array();
+			var arr = jOWL.Xpath(__.rdfs("subClassOf")+"/"+__.owl("Restriction"), jnode)
+				.add(jOWL.Xpath(__.owl("intersectionOf")+"/"+__.owl("Restriction"), jnode));
+			arr.each(function(index, entry){
+			var cr = new jOWL.Ontology.Restriction($(entry));
+				var dupe = false;
+				crit.each(function(item, i){
+						if(this.property.name == cr.property.name){ dupe = item;}
+				});
+				if(dupe){ if(!dupe.merge(cr)){ crit.push(cr);} }
+				else { crit.push(cr);}
+			});
+			jOWL.data(self.name, "sourceof", crit);
+		}
+		var results = new jOWL.Ontology.Array();
+
+		crit.each(function(){
+
+			var propertyMatch = property ? false : true;
+			var targetMatch = target ? false : true;
+
+			if(!propertyMatch){
+				if(property.isArray){	propertyMatch = property.contains(this.property);}
+				else { propertyMatch = (property.URI == this.property.URI);}
+			}
+
+			if(!target){
+				if(options.transitive && this.property.isTransitive){ 
+					var rTarget = this.getTarget();
+					var transitives = rTarget.sourceof(this.property, null, options);
+					results.concat(transitives);
+				}
+			}
+
+			if(!targetMatch && !this.target){
+				targetMatch = !options.valuesOnly;
+			} 
+
+			if(!targetMatch){
+				var targ = this.getTarget();
+				if(targ.isClass && options.ignoreClasses){ return;}
+				targetMatch = jOWL.priv.testObjectTarget(target, this.target);
+				if(!targetMatch && options.transitive && propertyMatch && this.property.isTransitive){
+					if(targ.isThing){
+						if(targ.sourceof(property, target).length){ targetMatch = true;}
+					}
+				}
+			}
+
+			if(propertyMatch && targetMatch){ results.pushUnique(this);}
+		});
+
+		if(!options.inherited){ return results;}
+
+		this.parents().each(function(){ 
+			if(this.sourceof){
+				this.sourceof(property, target, options).each(function(parentsource){
+					var ptarget = this.getTarget();
+					var containsProperty = false; 
+					var tempArray = new jOWL.Ontology.Array();
+					results.filter(function(){
+						var restr = this, keep = true;
+						if(restr.property.URI == parentsource.property.URI){
+							containsProperty = true;
+							if(!options.ignoreGenerics){
+								if(parentsource.target != restr.target){ tempArray.push(parentsource);}
+							} else {
+								if(ptarget.isThing){
+									keep = restr.getTarget().isThing && parentsource.target != restr.target;
+									tempArray.push(parentsource);
+								}
+							}
+						}
+						return keep;
+					});
+					if(!containsProperty){ results.push(parentsource);}
+					results.concat(tempArray);
+				});
+			}
+		});
+		return results;
+	}
+});
+
+/** Utility object */
+jOWL.Ontology.Array = function(arr, isXML){
+	var self = this;
+	this.items = [];
+	if(arr){
+		if(isXML){ $.each(arr, function(){
+			var entry = this.jOWL ? this : jOWL($(this));
+			self.items.push(entry);}); 
+			}
+		else { this.items = arr;}
+	}
+	this.length = this.items.length;
+};
+
+jOWL.Ontology.Array.prototype = {
+	jOWL : jOWL.version,
+	isArray : true,
+	bind : function(listitem, fn){
+		return this.map(function(){
+			var syntax = listitem ? listitem.clone(true) : $('<span/>');
+			var html  = this.bind(syntax).append(document.createTextNode(' '));
+			if(fn){ fn.call(html, html, this);}
+			return html.get(0);
+		});
+	},
+	concat : function(arr, ignoreUnique){
+		var self = this;
+		if(arr.each){ arr.each(function(){
+			if(ignoreUnique){ self.push(this); }
+			else { self.pushUnique(this); }
+			});
+			}
+		else { self.items = self.items.concat(arr.items); this.length = self.items.length;}
+		return this;
+	},
+	contains : function(o){
+		return this.get(o) ? true: false;
+	},
+	each : function(fn, reverse){
+		var i, self = this;
+		var stop = false;
+		if(reverse){
+			for(i=this.items.length - 1; i>=0;i--){ 
+				if(stop){ break;}
+				(function(){
+					var item = self.eq(i); 
+					if(fn.call(item, item, i) === false){ stop = true;}
+				})();
+			}
+		}
+		else {
+			for(i=0;i<this.items.length;i++){
+				if(stop){ break;}
+				(function(){
+					var item = self.eq(i); 
+					if(fn.call(item, item, i) === false){ stop = true;}
+				})();} 
+		}
+		return this;
+	},
+	eq : function(index){
+		if(index < 0 || index > this.items.length -1){ return null;}
+		return this.items[index];
+	},
+	filter : function(fn){
+		var self = this;
+		this.each(function(item, i){
+			var q = fn.call(item, item, i);
+			if(!q){ self.items.splice(i, 1);}
+			}, true);
+		this.length = this.items.length;
+		return this;
+	},
+	getIndex : function(o){
+		var found  = -1;
+		if(o.equals){
+			this.each(function(a, i){
+				if(this.equals && this.equals(o)){ found = i; return false;}
+			});
+		}
+		else {
+			if(typeof o == 'number'){ return o;}
+			var name = typeof o == "string" ? o : o.name;
+			var URI = o.URI || name;
+
+			this.each(function(a, i){
+				if(this.URI){ if(this.URI == URI){ found = i;}}
+				else if(this.name == name){ found = i;}
+			});
+		}
+		return found;
+	},
+	get : function(o){
+		return this.eq(this.getIndex(o));
+	},
+	map : function(fn){
+		var arr = [];
+		this.each(function(){ arr.push(fn.call(this, this));});
+		return arr;
+	},
+	push : function(o){
+		this.items.push(o);
+		this.length = this.items.length;
+		return this;
+	},
+	pushUnique : function(o){
+		return this.get(o) || this.push(o).get(o);
+	},
+	toString : function(){
+		return this.map(function(){return this.URI;}).join(', ');
+	},
+	/** Convert this array into an associative array with key = URI */
+	associative : function(){
+		var arr = {};
+		this.each(function(){
+			if(this.URI){ arr[this.URI] = this;}
+		});
+		return arr;
+	}
+};
+
+
+jOWL.options = {reason: true, locale:false, defaultlocale: 'en',
+	dictionary : { create: true, addID : true },
+	onParseError : function(msg){alert("jOWL parseError: "+msg);}, cacheProperties : true, niceClassLabels : true};
+jOWL.document = null;
+jOWL.namespace = null;
+jOWL.indices = { //internal indices
+	P : null, //jOWL array
+	data : {},
+	IDs : null,
+	I : null, //Intersection
+	T : null, //Thing
+	D : null, //dictionary
+	reset : function(){var i = jOWL.indices; i.data = {}; i.P = null; i.T = null; i.IDs = null; i.I = null;i.D = null;}
+};
+
+jOWL.index = function(type, wipe){
+		var i = jOWL.indices;
+		switch (type)
+		{
+		/**jOWL indexes all elements with rdf:ID, and first order ontology elements specified with rdf:about 
+		@return Associative array with key = URI and value = jOWL object.
+		*/
+		case "ID":
+			if(i.IDs === null || wipe){
+				if(wipe){ i.reset();}
+				i.IDs = {};
+				i.T = {};
+				var start = new Date();
+
+				var rID = jOWL.Xpath("//*[@"+__.rdf("ID")+"]").each(function(){
+					var jowl = jOWL.getResource($(this)); 
+					if(jowl){
+						i.IDs[jowl.URI] = jowl;
+						if(jowl.isThing){
+							if(!i.T[jowl.Class]){ i.T[jowl.Class] = new jOWL.Ontology.Array();}
+							i.T[jowl.Class].push(jowl);
+						}
+					}
+				});
+
+				var rAbout = jOWL.Xpath("/"+__.rdf("RDF")+"/*[@"+__.rdf("about")+"]").each(function(){
+					var jnode = $(this);
+					var jowl = jOWL.getResource($(this));
+					if(!jowl){ return;}
+						if(jowl.isClass || jowl.isProperty || jowl.isThing){
+							if(i.IDs[jowl.URI]){ jnode.children().appendTo(i.IDs[jowl.URI].jnode); return;}
+							i.IDs[jowl.URI] = jowl; 
+							if(jowl.isThing){
+								if(!i.T[jowl.Class]){ i.T[jowl.Class] = new jOWL.Ontology.Array();}
+								i.T[jowl.Class].push(jowl);
+							}
+							return; 
+						}
+				});
+				console.log("Loaded in "+(new Date().getTime() - start.getTime())+"ms");
+				}
+			return i.IDs;
+		/** Generated together with ID index.
+		* @return Associative Array, key = class, value = jOWL Array of individuals.
+		*/
+		case "Thing":
+			return i.T;
+		case "intersection":
+			if(i.I === null || wipe){
+				var temp =  new jOWL.Ontology.Array();
+				i.I  = {};
+				jOWL.Xpath("//"+__.owl("intersectionOf")).each(function(){
+					var isect = new jOWL.Ontology.Intersection($(this));
+					if(!isect.URI){return;}
+					var dupe = temp.get(isect);
+					if(dupe){
+						console.log("duplicate intersection found between : (Ignoring) "+isect.URI+"  and "+dupe.URI);
+					} else {
+						if(!i.I[isect.URI]){i.I[isect.URI] = new jOWL.Ontology.Array();}
+						temp.push(isect);
+						i.I[isect.URI].push(isect);
+					}
+				});
+				}
+			return i.I;
+		case "property":
+			if(i.P === null || wipe)
+			{
+			jOWL.options.cacheProperties = false;
+			i.P = new jOWL.Ontology.Array();
+			for(x in i.IDs){
+				var jowl = i.IDs[x];
+				if(jowl.isProperty){ i.P.push(jowl);}
+			}
+			jOWL.options.cacheProperties = true;
+			}
+			return i.P;
+		case "dictionary":
+			/**Dictionary: Array of Arrays, where secondary array is of form: [0] = term, [1] = rdfID, [2] = locale */
+			if(i.D === null || wipe)
+			{
+				i.D = [];
+				for(x in i.IDs){
+					var entry = i.IDs[x];
+					i.D = i.D.concat(entry.terms());
+				}
+			}
+			return i.D;
+		}
+};
+
+/** Internal Function, storing data in associative array (JSON),
+jquery data function cannot be used as expando data does not work in IE for ActiveX XMLhttprequest*/
+jOWL.data = function(rdfID, dtype, data){
+	var d = jOWL.indices.data;
+	if(!d[rdfID]){ d[rdfID] = {};}
+	if(!data){ return d[rdfID][dtype];}
+	d[rdfID][dtype] = data;
+};
+
+/**
+* Initialize jOWL with an OWL-RDFS document.
+* @param path relative path to xml document
+* @param callback callback function to be called when loaded.
+* @options : optional settings:
+*	onParseError : function(msg){} function to ba called when parsing fails
+*	reason : true/false, turns on additional reasoning at the expense of performance
+*	locale: set preferred language (if available), examples en, fr...
+*/
+jOWL.load = function(path, callback, options){
+	var that = this;
+	if($.browser.msie && location.toString().indexOf('file') === 0){ //IE won't load local xml files otherwise
+		var xml = document.createElement("xml");
+		xml.validateOnParse = false; //IE throws DTD errors (for 'rdf:') on perfectly defined OWL files otherwise
+		xml.src = path;
+		xml.onreadystatechange = function(){
+			if(xml.readyState == "interactive"){ var xmldoc = xml.XMLDocument; document.body.removeChild(xml);callback(that.parse(xmldoc, options));}
+			};
+		document.body.appendChild(xml);
+		}
+	else {
+		$.get(path, function(xml){callback(that.parse(xml, options));});
+	}
+};
+
+/**
+* initialize jOWL with some OWL-RDFS syntax
+* @param doc Either an xmlString or an xmlDocument
+* @param options optional, onParseError(msg) : function to execute when parse fails
+* @returns false on failure, or the jOWL object
+*/
+jOWL.parse = function(doc, options){
+	jOWL.document = null;
+	this.options = $.extend(jOWL.options, options);
+	if(typeof doc == 'string'){ doc = jOWL.fromString(doc);}
+	jOWL.document = doc;
+	if($.browser.msie){
+		if(doc.parseError.errorCode !== 0){ jOWL.options.onParseError(doc.parseError.reason); return false;}
+		}
+	else if(doc.documentElement.nodeName == 'parsererror'){jOWL.options.onParseError(doc.documentElement.firstChild.nodeValue); return false;}
+	var root = $(doc.documentElement);
+	jOWL.NS(root);
+	if($.browser.msie){
+		jOWL.document.setProperty("SelectionLanguage", "XPath");
+		jOWL.document.setProperty("SelectionNamespaces", __());
+	}
+	this.index('ID', true);
+	if(jOWL.options.cacheProperties){ this.index('property', true);}
+	if(jOWL.options.dictionary.create){ jOWL.index("dictionary");}
+	jOWL.Thing = new jOWL.Ontology.Thing($(jOWL.create(__.owl, "Class").attr(__.rdf, 'about', __.owl()+'Thing').node)); 
+	jOWL.Thing.type = false;	
+	return this;
+};
+
+/**
+* A String representation of the OWL-RDFS document
+* @param xmlNode optional, node to generate a string from, when unspecified the entire document
+*/
+jOWL.toString = function(xmlNode){
+	if(!xmlNode){ return jOWL.toString(jOWL.document);}
+	if($.browser.msie){ return xmlNode.xml;}
+	return new XMLSerializer().serializeToString(xmlNode);// Gecko-based browsers, Safari, Opera.
+};
+
+/** create a document from string */
+jOWL.fromString = function(doc){
+	var owldoc;
+	if(document.implementation.createDocument){ owldoc = new DOMParser().parseFromString(doc, "text/xml");} // Mozilla and Netscape browsers
+	else if(window.ActiveXObject){ // MSIE
+		var xmldoc = new ActiveXObject("Microsoft.XMLDOM");
+		xmldoc.async="false";
+		xmldoc.validateOnParse = false;
+		xmldoc.loadXML(doc);
+		owldoc = xmldoc;
+		}
+	return owldoc;
+};
+
+/** @return false if belongs to this namespace, or an array with length two, arr[0] == url, arr[1] == id */
+jOWL.isExternal = function(resource){
+	var r = jOWL.resolveURI(resource, true);
+	return r[0] != jOWL.namespace ? r : false;
+};
+
+/** 
+if a URI belongs to the loaded namespace, then strips the prefix url of, else preserves URI 
+also able to parse and reference html (or jquery) elements for their URI.
+*/
+jOWL.resolveURI = function(URI, array){
+	if(typeof URI != "string"){
+		var node = URI.jquery ? URI.get(0) : URI;
+		URI = node.localName || node.baseName;
+		if(node.namespaceURI){ URI = node.namespaceURI + URI;}
+		return jOWL.resolveURI(URI, array);
+	}
+	var rs = URI, ns = jOWL.namespace;
+	if(URI.indexOf('http') === 0){
+		var tr = URI.indexOf('#');
+		if(tr <= 0){ tr = URI.lastIndexOf('/');}
+		if(tr > 0)
+		{
+			ns = URI.substring(0, tr+1);
+			rs = URI.substring(tr+1);
+		}
+	} else if(URI.charAt(0) == '#'){ return URI.substring(1);}
+	if(array){ return [ns, rs];}
+	if(ns == jOWL.namespace){ return rs;}
+	return URI;
+};
+
+/**
+Main method to get an Ontology Object, access via jOWL(>String>, options);
+resource: rdfID/rdfResource<String> or jQuery node.
+*/
+jOWL.getResource = function(resource, options){
+	if(!jOWL.document){ throw "You must successfully load an ontology before you can find anything";}
+	if(!resource){ throw "No resource specified";}
+	var node;
+	var opts = $.extend({}, options);
+	if(typeof resource == 'string'){
+		resource = jOWL.resolveURI(resource);
+		if(resource == 'Thing' || resource == __.owl()+'Thing'){ return jOWL.Thing;}
+		if(opts.type == 'property' && jOWL.options.cacheProperties){
+			var c = jOWL.index('property').get(resource);
+			if(c){ return c;}
+			if(jOWL.isExternal(resource)){ console.log("undeclared resource: "+resource); return new jOWL.Ontology.Property(resource);}
+			}
+		var match = jOWL.index("ID")[resource];
+		if(!match){ //try case insensitive
+			for(caseIns in jOWL.index("ID")){
+				if(caseIns.toLowerCase() == resource.replace(/ /g, "").toLowerCase()){ match = jOWL.index("ID")[caseIns]; break;}
+			}
+		}
+		if(!match){
+			if(jOWL.isExternal(resource)){
+				console.log("undeclared resource: "+resource);
+				return new jOWL.Ontology.Thing(resource);
+			}
+			console.log(resource+" not found"); 
+			return null; 
+		}
+		return match;
+	}
+	node = resource.jquery ? resource : $(resource);
+	var jj = jOWL.type(node); if(!jj){ return null;}
+	return new (jj)(node);
+};
+
+/** 
+* @param node jquery or html element.
+* @return the ontology type of the object.
+*/
+jOWL.type = function(node){
+	var xmlNode = node.jquery ? node.get(0) : node;
+	switch(xmlNode.nodeName){
+		case __.owl("Class") : return jOWL.Ontology.Class;
+		case __.rdfs("Class") : return jOWL.Ontology.Class; //test
+		case __.owl("Ontology") : return jOWL.Ontology;
+		case __.owl("ObjectProperty") : return jOWL.Ontology.ObjectProperty;
+		case __.owl("DatatypeProperty") : return jOWL.Ontology.DatatypeProperty;
+		case __.owl("FunctionalProperty") : return jOWL.Ontology.Property;
+		case __.rdf("Property") : return jOWL.Ontology.Property;
+		case __.owl("InverseFunctionalProperty") : return jOWL.Ontology.ObjectProperty;
+		case __.owl("TransitiveProperty") : return jOWL.Ontology.ObjectProperty;
+		case __.owl("SymmetricProperty") : return jOWL.Ontology.ObjectProperty;
+		//jOWL currently treats annotationproperties as string datatypeproperties.
+		case __.owl("AnnotationProperty") : return jOWL.Ontology.DatatypeProperty;
+		default :
+			switch(xmlNode.namespaceURI){
+				case __.owl(): if(xmlNode.nodeName == __.owl("Thing") ){ return jOWL.Ontology.Individual;} return false;
+				case __.rdf(): return false;
+				case __.rdfs(): return false;
+				default : return jOWL.Ontology.Individual;
+			}
+	}
+};
+
+/**
+@param rdfID <String> or Array<String>
+@return Array of DOM (xml) Nodes
+*/
+jOWL.getXML = function(rdfID){
+	var node = [];
+	function fetchFromIndex(rdfID){ 
+		var el = jOWL.index("ID")[rdfID];
+		return el ? el : null;
+	}
+
+	if(typeof rdfID == 'string'){ var q = fetchFromIndex(rdfID); if(q){ node.push(q);} }
+	else if(jOWL.priv.Array.isArray(rdfID)){ //assume an array of string rdfIDs
+		$.each(rdfID, function(){  
+			var el = fetchFromIndex(this); if(el){ node.push(el);}
+			});
+	}
+	return node;
+};
+
+/** Create new ontology elements */
+jOWL.create = function(namespace, name, document){
+	var doc = document ? document : jOWL.document;
+
+	var el = {
+		attr : function(namespace, name, value){
+			if($.browser.msie){
+				var attribute = doc.createNode(2, namespace(name), namespace());
+				attribute.nodeValue = value;
+				this.node.setAttributeNode(attribute);
+			}
+			else { this.node.setAttributeNS(namespace(), namespace(name), value);}
+			return this;
+		},
+		appendTo : function(node){
+			var n = node.node ? node.node : node;
+			n.appendChild(this.node);
+			return this;
+		},
+		text : function(text, cdata){
+			var txt = cdata ? doc.createCDATASection(text) : doc.createTextNode(text);
+			this.node.appendChild(txt);
+			return this;
+		}
+	};
+
+	if($.browser.msie){ el.node = doc.createNode(1, namespace(name), namespace());}
+	else { el.node = doc.createElementNS(namespace(), namespace(name));}
+	return el;
+};
+
+/** Create a blank ontology document */
+jOWL.create.document = function(href){
+	var owl = [];
+	var base = href || window.location.href+"#";
+	owl.push('<?xml version="1.0"?>');
+	owl.push('<'+__.rdf('RDF')+' xml:base="'+base+'" xmlns="'+base+'" '+__()+'>');
+	owl.push('   <'+__.owl('Ontology')+' '+__.rdf('about')+'=""/>');
+	owl.push('</'+__.rdf('RDF')+'>');
+	return jOWL.fromString(owl.join('\n'));
+};
+
+/** Extracts RDFa syntax from current page and feeds it to jOWL, simple implementation, only classes for the time being */
+jOWL.parseRDFa = function(fn, options){
+	var entries = options.node ? $("[typeof]", options.node) : $("[typeof]");
+	var doc = jOWL.create.document();
+
+	 function property(p, node){
+		var arr = [];
+		$("[property="+p+"]", node).each(function(){ arr.push($(this).attr('content') || $(this).html());});
+		if(node.attr('property') === p){ arr.push(node.attr('content') || node.html());}
+		return arr;
+	}
+
+	function rel(p, node){
+		var arr = [];
+		$("[rel="+p+"]", node).each(function(){ arr.push($(this).attr('resource'));});
+		if(node.attr("rel") === p){ arr.push(node.attr('resource'));}
+		return arr;
+	}
+
+	function makeClass(node, ID){
+		var cl = jOWL.create(__.owl, "Class", doc).attr(__.rdf, 'about', ID).appendTo(doc.documentElement);
+
+		var parents = property(__.rdfs("subClassOf"), node).concat(rel(__.rdfs("subClassOf"), node));
+		for(var i = 0;i<parents.length;i++){
+			var p = jOWL.create(__.rdfs, "subClassOf", doc).attr(__.rdf, "resource", parents[i]).appendTo(cl);
+		}
+		return cl;
+	}
+
+	entries.each(function(){
+		var node = $(this);
+		var type = node.attr("typeof"), el;
+
+		if(type == __.owl("Class")){ el = makeClass(node, jOWL.resolveURI(node.attr("about")));}
+
+		$.each(property(__.rdfs('comment'), node), function(){
+			jOWL.create(__.rdfs, "comment", doc).appendTo(el).text(this, true);
+		});
+
+		$.each(property(__.rdfs('label'), node), function(){
+			jOWL.create(__.rdfs, "label", doc).appendTo(el).text(this);
+		});
+	});
+	jOWL.parse(doc, options);
+	fn();
+};
+
+/**
+Match part or whole of the rdfResource<String>
+Used for term searches, intend to (partially) replace it by a sparql-dl query later on
+options:
+    filter: filter on a specific type, possible values: Class, Thing, ObjectProperty, DatatypeProperty
+    exclude: exclude specific types, not fully implemented
+*/
+jOWL.query = function(match, options){
+	options = $.extend({exclude : false}, options);
+	if(options.filter == 'Class'){ options.filter = __.owl("Class");}
+	var that = this;
+	//filter : [], exclude : false
+	var items = new jOWL.Ontology.Array();
+	var jsonobj = {};
+	var test = jOWL.index("dictionary");
+
+	function store(item){
+			var include = false, i = 0;
+			if(options.filter){
+				if(typeof options.filter == 'string'){ include = (options.filter == item[3]);}
+				else { for(i = 0;i<options.filter.length;i++){ if(options.filter[i] == item[3]){ include = true;} } }
+				}
+			else if(options.exclude){
+				include = true;
+				if(typeof options.exclude == 'string'){ include = (options.exclude !== item[3]);}
+				else { for(i = 0;i<options.exclude.length;i++){ if(options.exclude[i] == item[3]){ include = false;} } }
+			}
+			else { include = true;}
+			if(!include){ return;}
+			if(!jsonobj[item[1]]){ jsonobj[item[1]] = [];}
+			jsonobj[item[1]].push( { term : item[0], locale: item[2], type: item[3] });
+	}
+
+	for(var y = 0;y<test.length;y++){
+		var item = test[y];
+		var bool = options.exclude;
+		var r = item[0].searchMatch(match);
+		if(r > -1){
+			if(options.locale){ if(options.locale == item[2]){ store(item);} }
+			else { store(item);}
+		}
+	}
+	return jsonobj;
+};
+
+/**
+allows asynchronous looping over arrays (prevent bowser freezing).
+arr the array to loop asynchonrously over.
+options.modify(item) things to do with each item of the array
+options.onUpdate array the size of chewsize or smaller, containing processed entries
+options.onComplete(array of results) function triggered when looping has completed
+*/
+jOWL.throttle =function(array, options){
+	options = $.extend({
+		modify : function(result){},
+		//onUpdate : function(arr){},
+		onComplete : function(arr){},
+		async : true,
+		chewsize : 5,
+		startIndex : 0,
+		timing : 5
+		}, options);
+	var temp = array.jOWL ? array.items : (array.jquery) ? $.makeArray(array) : array;
+	var items = options.startIndex ? temp.slice(startIndex) : temp.concat(); //clone the array
+	var results = [];
+
+	(function(){
+		var count = options.chewsize;
+		var a = [];
+		while (count > 0 && items.length > 0)
+		{
+			var item = items.shift(); count--;
+			var result = options.modify.call(item, item);
+			if(result){ results.push(result); a.push(result);}
+		}
+		if(options.onUpdate){ options.onUpdate(a);}
+
+		if(items.length> 0){
+			if(options.async){ setTimeout(arguments.callee, options.timing);}
+			else {arguments.callee();}
+		}
+		else{ options.onComplete(results);}
+	})();
+};
+
+/** Creates a new resultobj for the SPARQL-DL functionality */
+jOWL.SPARQL_DL_Result = function(){
+	this.assert = undefined;
+	this.head = {}; //associative array of query parameters, with value jOWL Array of results
+	this.results = []; //sparql-dl bindings
+	this.isBound = false;
+};
+
+jOWL.SPARQL_DL_Result.prototype = {
+	sort : function(param){
+		if(!param){ throw "parameter must be defined for sort function";}
+		function sortResults(a, b){
+			var o = a[param].name || a[param];
+			var p = b[param].name || b[param];
+			return (o < p) ? -1 : 1;
+		}
+		if(this.results){ this.results.sort(sortResults); }
+	},
+	jOWLArray : function(param){
+		if(!param){ throw "parameter must be defined for jOWLArray function";}
+		var arr = new jOWL.Ontology.Array();
+		for(var i=0;i<this.results.length;i++){
+		if(this.results[i][param]){ arr.pushUnique(this.results[i][param]);}
+		}
+		return arr;
+	},
+	/** Filter head Parameters */
+	filter : function(param, arr){
+		if(this.head[param] === undefined){this.head[param] = arr;}
+		else {
+			var self = this; 
+			this.head[param].filter(function(){ return (arr.contains(this));});
+			arr.filter(function(){ return (self.head[param].contains(this));});
+		}
+	},
+	/** Update result section, results = SPARQL_DL_Array */
+	bind : function(results){
+		if(!this.isBound){//new results
+			this.results = this.results.concat(results.arr);
+			this.isBound = true;
+			return;
+		}
+		var multimapping = -1;
+		for(x in results.mappings){ multimapping++; }
+		var toAdd = [];
+
+		for(x in results.mappings){
+			var otherKeys;
+			if(multimapping){
+				otherKeys = results.keyCentric(x);
+			}
+			for(var i = this.results.length-1;i>=0;i--){
+				var valueX = this.results[i][x];
+				if(valueX){
+					if(!results.mappings[x].contains(valueX)){
+						this.results.splice(i, 1);
+						continue;
+					}
+					if(multimapping){
+						var keyArr= otherKeys[valueX.URI];
+						//ignoring the opposite for now (assuming original key x is unique (limits statements))
+						//TODO: improve these result merging methods/flexibility
+						for(var oK = 0; oK < keyArr.length;oK++){
+							var obj = (oK === 0) ? this.results[i] : {};
+							var valueY = keyArr[oK];
+							obj[x] = valueX;
+							for(yK in valueY){ obj[yK] = valueY[yK]; }
+							toAdd.push(obj);
+						}
+						this.results.splice(i, 1);
+					}
+				}
+			}
+		}
+		this.results = this.results.concat(toAdd);
+	}
+};
+/** Creates a new query for the SPARQL-DL functionality */
+jOWL.SPARQL_DL_Query = function(syntax, parameters){
+		this.parse(syntax);
+		this.fill(parameters);
+		this.entries = this.entries.sort(this.sort);
+};
+
+jOWL.SPARQL_DL_Query.prototype = {
+	parse : function(syntax){
+		 var r2 = /(\w+)[(]([^)]+)[)]/;
+		 var entries = syntax.match(/(\w+[(][^)]+[)])/g);
+		 if(!entries){ this.error =  "invalid abstract sparql-dl syntax"; return;}
+		 entries = jOWL.priv.Array.unique(entries);
+		 for(var i = 0;i<entries.length;i++){
+			var y = entries[i].match(r2);
+			if(y.length != 3){ this.error = "invalid abstract sparql-dl syntax"; return;}
+			entries[i] = [y[1], y[2].replace(/ /g, "").split(',')];
+		 }
+		 this.entries = entries;
+	},
+	fill : function(parameters){
+		for(var i = 0;i<this.entries.length;i++){
+			for(var j =0; j<this.entries[i][1].length; j++){
+				var p = parameters[this.entries[i][1][j]];
+				if(p !== undefined)  { this.entries[i][1][j] = p;}
+				else {
+					p = this.entries[i][1][j];
+					if(p.charAt(0) != '?')
+					{
+						if(this.entries[i][0] == "PropertyValue" && j == 2)
+						{
+						var m = p.match(/^["'](.+)["']$/);
+						if(m && m.length == 2){ this.entries[i][1][j] = {test: m[1]}; break;}
+						}
+					this.entries[i][1][j] = jOWL(p);
+					if(this.entries[i][1][j] === null){this.entries.error = "a parameter in the query was not found"; return;}
+					}
+				}
+			}
+		}
+	},
+	sort : function(a, b){
+		var i;
+		if(a[1].length == 1){ return (b[0] == 'PropertyValue') ? 1 : -1;}
+		if(b[1].length == 1){ return (a[0] == 'PropertyValue') ? -1 : 1;}
+		var avar = 0; for(i = 0;i<a[1].length;i++){ if(typeof a[1][i] == 'string'){ avar++;} }
+		var bvar = 0; for(i = 0;i<a[1].length;i++){ if(typeof b[1][i] == 'string'){ bvar++;} }
+		if(avar != bvar){ return avar - bvar;}
+		if(a[0] == 'Type' && b[0] != 'Type'){ return -1;}
+		if(a[0] != 'Type' && b[0] == 'Type'){ return 1;}
+		return 0;
+	}
+};
+
+/** Private function */
+function _Binding(bindingarray){
+	this.value = {};
+	this.arr = bindingarray;
+}
+
+_Binding.prototype = {
+	bind : function(key, value){
+		this.value[key] = value;
+		if(!this.arr.mappings[key]){ this.arr.mappings[key] = new jOWL.Ontology.Array();}
+		this.arr.mappings[key].push(value);
+		return this;
+	}
+};
+
+/** Local Function, private access, Temp results */
+function SPARQL_DL_Array(keys){	
+	this.arr = [];
+	this.mappings = {};
+
+	if(keys){
+		for(var i =0;i<keys.length;i++){
+			if(keys[i]){this.mappings[keys[i]] = new jOWL.Ontology.Array();}
+		}
+	}
+}
+
+SPARQL_DL_Array.prototype = {
+	add : function(binding){
+		this.arr.push(binding.value);
+		return binding;
+	},
+	push : function(key, value){
+		var binding = new _Binding(this);
+		binding.bind(key, value);
+		this.arr.push(binding.value);
+		return binding;
+	},
+	keyCentric : function(keyX){
+		var arr = {};
+		for(var i = this.arr.length-1;i>=0;i--){
+			if(this.arr[i][keyX]){
+				if(!arr[this.arr[i][keyX].URI]){ arr[this.arr[i][keyX].URI] = []; }
+				arr[this.arr[i][keyX].URI].push(this.arr[i]);
+			}
+		}
+		return arr;
+	},
+	get : function(key)
+	{
+		return (this.mappings[key]) ? this.mappings[key] : new jOWL.Ontology.Array();
+	},
+	getArray : function(){
+		//check mappings for presence, discard arr entries based on that, return remainder.
+		for(var i = this.arr.length - 1;i>=0;i--){
+			var binding = this.arr[i], splice = false;
+			for(key in binding){
+				if(!splice){
+					splice = (!this.mappings[key] || !this.mappings[key].contains(binding[key]));
+				}
+			}
+			if(splice){
+				this.arr.splice(i, 1);
+			}
+		}
+		return this;
+	}
+};
+
+/**
+Support for abstract SPARQl-DL syntax
+options.onComplete: function triggered when all individuals have been looped over
+options.childDepth: depth to fetch children, default 5, impacts performance
+options.chewsize: arrays will be processed in smaller chunks (asynchronous), with size indicated by chewsize, default 10
+options.async: default true, query asynchronously
+parameters: prefill some sparql-dl parameters with jOWL objects
+execute: start query, results are passed through options.onComplete
+*/
+jOWL.SPARQL_DL = function(syntax, parameters, options){
+	if(!(this instanceof arguments.callee)){ return new jOWL.SPARQL_DL(syntax, parameters, options);}
+	var self = this;
+	this.parameters = $.extend({}, parameters);
+	this.query = new jOWL.SPARQL_DL_Query(syntax, this.parameters).entries;
+	this.result = new jOWL.SPARQL_DL_Result();
+	this.options = $.extend({onComplete: function(results){}}, options);
+};
+
+jOWL.SPARQL_DL.prototype = {
+	error: function(msg){ this.result.error = msg; return this.options.onComplete(this.result);},
+	/**
+	if(options.async == false) then this method returns the result of options.onComplete,
+	no matter what, result is always passed in options.onComplete
+	*/
+	execute : function(options){
+		var self = this;
+		this.options = $.extend(this.options, options);
+		if(this.query.error){ return this.error(this.query.error);}
+		
+		var resultobj = this.result;
+		var i = 0;  
+		var loopoptions = $.extend({}, this.options);
+		loopoptions.onComplete = function(results){ i++; resultobj = results; loop(i);};
+		
+		if(!this.query.length){
+			resultobj.error = "no query found or query did not parse properly";
+			return self.options.onComplete(resultobj);
+			}  
+			
+		function loop(i){
+			if(i < self.query.length){
+				self.process(self.query[i], resultobj, loopoptions );
+				}
+			else {
+				for(var j =0;j<resultobj.results.length;j++){ //Convert Literals into strings
+					var b = resultobj.results[j];
+					for(x in b){
+						if(b[x] instanceof jOWL.Literal){b[x] = b[x].name;}
+					}
+				}
+				return self.options.onComplete(resultobj);
+			}
+		} 
+		loop(i);
+	},
+	/** results are passed in the options.onComplete function */
+	process: function(entry, resultobj, options){
+		var self = this;
+		options = $.extend({chewsize: 10, async : true, onComplete : function(results){}}, options);
+		var q = entry[0];
+		var sizes = {
+			"Type": [__.owl('Thing'), __.owl('Class')],
+			"DirectType": [__.owl('Thing'), __.owl('Class')],
+			"PropertyValue" : [false, false, false],
+			"Class": [false],
+			"Thing": [false],
+			"ObjectProperty": [false],
+			"DatatypeProperty": [false],
+			"SubClassOf" : [__.owl('Class'), __.owl('Class')],
+			"DirectSubClassOf" : [__.owl('Class'), __.owl('Class')]
+			};
+		
+		if(!sizes[q]){ return self.error("'"+q+"' queries are not implemented");}
+		if(sizes[q].length != entry[1].length){ return self.error("invalid SPARQL-DL "+q+" specifications, "+sizes[q].length+" parameters required");}
+		for(var i = 0;i<entry[1].length;i++){
+			var v = sizes[q][i];
+			if(v){
+				var m = entry[1][i];
+				if(typeof m != 'string' && m.type != v){ return self.error("Parameter "+i+" in SPARQL-DL Query for "+q+" must be of the type: "+v);}
+			}
+		}
+		if(q == "DirectType"){ options.childDepth = 0; return self.fn.Type.call(self, entry[1], resultobj, options);}
+		else if(q == "DirectSubClassOf"){ options.childDepth = 1; return self.fn.SubClassOf.call(self, entry[1], resultobj, options);}
+		return self.fn[q].call(self, entry[1], resultobj, options);
+	},
+	fn : {
+			"SubClassOf" : function(syntax, resultobj, options){
+				var atom = new jOWL.SPARQL_DL.DoubleAtom(syntax, resultobj.head);
+				var results = new SPARQL_DL_Array();
+
+				if(atom.source.isURI() && atom.target.isURI()){//assert
+					if(resultobj.assert !== false){
+						var parents = atom.source.value.ancestors();
+						resultobj.assert = parents.contains(atom.target.value);
+					}
+					return options.onComplete(resultobj);
+				}
+				else if(atom.source.isURI()){//get parents
+					atom.source.value.ancestors().each(function(){
+						results.push(atom.target.value, this);
+						});
+					resultobj.filter(atom.target.value, results.get(atom.target.value));
+					resultobj.bind(results.getArray());
+					return options.onComplete(resultobj);
+				}
+				else if(atom.target.isURI()){//get children
+					atom.target.value.descendants(options.childDepth).each(function(){
+						results.push(atom.source.value, this);
+						});
+					resultobj.filter(atom.source.value, results.get(atom.source.value));
+					resultobj.bind(results.getArray());
+					return options.onComplete(resultobj);
+				}
+				else{//both undefined
+					return this.error('Unsupported SubClassOf query');
+				}
+			},
+			"Type" : function(syntax, resultobj, options){
+				var atom = new jOWL.SPARQL_DL.DoubleAtom(syntax, resultobj.head);
+			
+			function addIndividual(cl){
+				if(indivs[this.URI]){ return;}
+				var b = results.push(atom.source.value, this);
+				if(addTarget){  b.bind(atom.target.value, cl);}
+				indivs[this.URI] = true;
+			}
+
+			function traverse(node, match){
+					var a = node.parents();
+					var found = false;
+					if(a.contains(match)){ found = true;}
+					else { 
+						a.each(function(){
+							if(this == jOWL.Thing){ return;}
+							if(!found && traverse(this, match)){ found = true;} });
+						}
+					return found;
+				}
+				
+				if(atom.source.isURI() && atom.target.isURI()){//assert
+					return jOWL.SPARQL_DL.priv.assert(resultobj, function(){
+						var cl = atom.source.value.owlClass();
+						if(cl.URI == atom.target.value.URI){ return true;}
+						return traverse(cl, atom.target.value); 
+					}, options.onComplete);
+				}
+				else if(atom.source.getURIs() && !atom.target.getURIs()){//get class
+					var results = new SPARQL_DL_Array();
+					var addSource = !atom.source.isURI();
+					var addTarget = !atom.target.isURI();
+					 atom.source.getURIs().each(function(){
+						var b;
+						if(addTarget){ b = results.push(atom.target.value, this.owlClass());}
+						if(addSource){ 
+							if(addTarget){ b.bind(atom.source.value, this);}
+							else {results.push(atom.source.value, this);}
+						}
+					 });
+					if(addSource){  resultobj.filter(atom.source.value, results.get(atom.source.value));}
+					if(addTarget){  resultobj.filter(atom.target.value, results.get(atom.target.value));}
+					resultobj.bind(results.getArray());
+					return options.onComplete(resultobj);
+				}
+				else if(atom.target.getURIs()){//get Individuals, slow
+					var addTarget = !atom.target.isURI();
+					var classlist = atom.target.getURIs(),
+						classes = {}, indivs = {};
+
+						var results = new SPARQL_DL_Array();
+
+
+						classlist.each(function(){ //expand list of classes, not very fast!
+							if(classes[this.URI]){ return;}
+							var oneOf = this.oneOf(), cl = this;
+							if(oneOf.length){ oneOf.each(function(){ addIndividual.call(this, cl);});}
+							else{ this.descendants(options.childDepth).each(function(){ //this is the slower call
+								classes[this.URI] = true;
+							}); }
+							classes[this.URI] = true;
+						});
+
+						for(x in classes){
+							var individuals = jOWL.index("Thing")[x];
+							if(individuals){
+								var cl = jOWL.index('ID')[x];
+								if(options.onUpdate){ options.onUpdate(individuals);}
+								individuals.each(function(){
+									addIndividual.call(this, cl);
+								});
+							}
+						}
+						resultobj.filter(atom.source.value, results.get(atom.source.value));
+						resultobj.bind(results.getArray());
+						return options.onComplete(resultobj);
+				}
+				return this.error('Unsupported Type query');
+			},
+			"Thing" : function(syntax, resultobj, options){
+				jOWL.SPARQL_DL.priv.IDQuery(syntax[0], "isThing", resultobj, options);
+			},
+			"Class" : function(syntax, resultobj, options){ console.log('cl');
+				jOWL.SPARQL_DL.priv.IDQuery(syntax[0], "isClass", resultobj, options);
+			},
+			"ObjectProperty" : function(syntax, resultobj, options){
+				jOWL.SPARQL_DL.priv.PropertyQuery(syntax[0], jOWL.index("property").items, "isObjectProperty", resultobj, options);
+			},
+			"DatatypeProperty" : function(syntax, resultobj, options){
+				jOWL.SPARQL_DL.priv.PropertyQuery(syntax[0], jOWL.index("property").items, "isDatatypeProperty", resultobj, options);
+			},
+			"PropertyValue" : function(syntax, resultobj, options){
+				var atom = new jOWL.SPARQL_DL.TripleAtom(syntax, resultobj.head);
+				
+				if(atom.source.isURI() && atom.property.isURI() && atom.target.isURI()){//assert
+					if(resultobj.assert !== false){
+						jOWL.SPARQL_DL.priv.PropertyValuegetSourceInfo(atom.source.value, atom.property.value, atom.target.value, resultobj, { assert : true });
+					}
+					return options.onComplete(resultobj);
+				}
+
+				if(!atom.source.getURIs()){
+					jOWL.SPARQL_DL.priv.IDQuery(atom.source.value, ["isClass", "isThing"], resultobj, options);
+					return;
+				}
+				var filterTarget = atom.target.isVar() ? atom.target.value : false;
+				var filterProperty = atom.property.isVar() ? atom.property.value : false;
+				var filterSource = atom.source.isVar() ? atom.source.value : false;
+				jOWL.SPARQL_DL.priv.PropertyValuegetSourceInfo(atom.source.getURIs(), atom.property.getURIs(), atom.target.getURIs(), resultobj,
+					{
+						filterTarget : filterTarget, filterProperty : filterProperty, filterSource : filterSource
+					});
+				return options.onComplete(resultobj);
+			}
+		}
+};
+
+jOWL.SPARQL_DL.priv = {
+	assert : function(resultobj, fn, onComplete){
+		if(resultobj.assert !== false){
+			resultobj.assert = fn();
+		}
+		onComplete(resultobj);	
+	},
+	//reusable function
+	PropertyValuegetSourceInfo : function(jSource, property, target, resultobj, options){
+		if(!(jSource.isArray)){
+			return jOWL.SPARQL_DL.priv.PropertyValuegetSourceInfo(new jOWL.Ontology.Array([jSource]), property, target, resultobj, options);
+		}
+		
+		options = $.extend({}, options);
+		var results = new SPARQL_DL_Array([options.filterSource, options.filterProperty, options.filterTarget]), 
+			match = false;
+		jSource.each(function(){
+			var source = this;
+			if(target && target.isArray && target.length == 1){
+				var literal = target.get(0).test;
+				if(literal){ target = literal;}//unwrap literal expressions
+			}
+			var restrictions = source.sourceof(property, target);
+			if(options.assert){
+				if(restrictions.length > 0){ match = true;}
+				return;
+			}
+			if(!restrictions.length){ return;}
+			restrictions.each(function(){
+				var binding = new _Binding(results);
+				if(options.filterSource){
+					binding.bind(options.filterSource, source);
+					if(!options.filterProperty && !options.filterTarget){ results.add(binding); return false;}
+				}
+				if(options.filterProperty){
+					binding.bind(options.filterProperty, this.property);
+				}
+				if(options.filterTarget){
+					binding.bind(options.filterTarget, this.getTarget());
+				}
+				results.add(binding);
+			});
+			return true;
+		});
+		if(options.assert){
+			resultobj.assert = match;
+			return resultobj.assert;
+		}
+		if(options.filterSource){ resultobj.filter(options.filterSource, results.get(options.filterSource));}
+		if(options.filterProperty){ resultobj.filter(options.filterProperty, results.get(options.filterProperty));}
+		if(options.filterTarget)  { resultobj.filter(options.filterTarget, results.get(options.filterTarget));}
+		resultobj.bind(results.getArray());
+	},
+	hasClassID: function(match, classID){
+		if(Object.prototype.toString.call(classID) === '[object Array]'){
+			for(var i =0;i<classID.length;i++){
+				if(match[classID]){ return true;}
+			}
+		} else if(match[classID]){  return true;}
+		return false;	
+	},
+	IDQuery : function(parameter, classID, resultobj, options){
+		var atom = new jOWL.SPARQL_DL.Atom(parameter, resultobj.head);
+		if(atom.isURI()){
+			return jOWL.SPARQL_DL.priv.assert(resultobj, function(){
+				return jOWL.SPARQL_DL.priv.hasClassID(atom.getURIs().get(0), classID);
+			}, options.onComplete);
+		}
+		var results = new SPARQL_DL_Array();
+		for(x in jOWL.index("ID")){
+			var match = jOWL.index("ID")[x];
+			if(jOWL.SPARQL_DL.priv.hasClassID(match, classID)){ results.push(parameter, match);}
+		}
+		resultobj.filter(parameter, results.get(parameter));
+		resultobj.bind(results.getArray());
+		options.onComplete(resultobj);
+	},
+	PropertyQuery : function(parameter, index, className, resultobj, options){
+		var atom = new jOWL.SPARQL_DL.Atom(parameter, resultobj.head);
+		if(atom.isURI()){
+			return jOWL.SPARQL_DL.priv.assert(resultobj, function(){
+				return jOWL.SPARQL_DL.priv.hasClassID(atom.getURIs().get(0), className);
+			}, options.onComplete);
+		}
+		var results = new SPARQL_DL_Array();
+		var tr = new jOWL.throttle(index, $.extend({}, options, {
+			modify : function(result){
+				if(!result.jOWL){ result = jOWL(result);}
+				if(jOWL.SPARQL_DL.priv.hasClassID(result, className)){results.push(parameter, result);}
+				return false;
+			},
+			onComplete : function(){
+				resultobj.filter(parameter, results.get(parameter));
+				resultobj.bind(results.getArray());
+				options.onComplete(resultobj);
+			}
+		}));
+	}
+};
+
+jOWL.SPARQL_DL.TripleAtom = function(syntax, store){
+	this.source = new jOWL.SPARQL_DL.Atom(syntax[0], store);
+	this.property = new jOWL.SPARQL_DL.Atom(syntax[1], store);
+	this.target = new jOWL.SPARQL_DL.Atom(syntax[2], store);
+};
+
+jOWL.SPARQL_DL.DoubleAtom = function(syntax, store){
+	this.source = new jOWL.SPARQL_DL.Atom(syntax[0], store);
+	this.target = new jOWL.SPARQL_DL.Atom(syntax[1], store);
+};
+
+
+jOWL.SPARQL_DL.Atom = function(syntax, store){
+	this.value = syntax;
+	this.type = 0;
+	if(typeof syntax == 'string'){
+		if(syntax.indexOf('?') === 0){
+			this.type = this.VAR;
+			if(store && store[syntax]){ this.mappings = store[syntax];}
+		} else {
+			this.type = this.LITERAL;
+		}
+	} else {
+		this.type = this.URI;
+	}
+};
+
+jOWL.SPARQL_DL.Atom.prototype = {
+	URI : 1, LITERAL : 2, VAR : 3,
+	getURIs : function(){
+		if(this.isURI()){return new jOWL.Ontology.Array([this.value]);}
+		return this.mappings;
+	},
+	isVar : function(){return this.type == this.VAR;},
+	isLiteral :  function(){return this.type == this.LITERAL;},
+	isURI : function(){ return this.type == this.URI;}
+};
+
+/**
+* @return Associative array of parameters in the current documents URL 
+*/
+jOWL.getURLParameters = function(){
+	var href = window.location.href.split("?", 2), param = {};
+	if(href.length == 1){ return {};}
+	var qstr = href[1].split('&');
+	for(var i =0;i<qstr.length;i++){
+		var arr = qstr[i].split("=");
+		if(arr.length == 2){ param[arr[0]] = arr[1];}
+	}
+	return param;
+};
+
+/**
+Without arguments this function will parse the current url and see if any parameters are defined, returns a JOWL object
+@return With argument it will return a string that identifies the potential permalink fr the given entry
+*/
+jOWL.permalink = function(entry){
+	if(!entry){
+		var param = jOWL.getURLParameters();
+		if(param.owlClass){ return jOWL(unescape(param.owlClass));}
+	}
+	else {
+		if(!entry.URI){ return false;}
+		var href = window.location.href.split("?", 2);
+		if(window.location.search){ href = href[0];}
+		if(entry.isClass){ return href+'?owlClass='+escape(entry.URI);}
+	}
+	return false;
+};
+
+/** Convert an item into Manchester syntax, currently only for oneOf 
+* @return String
+*/
+jOWL.Manchester = function(owlElement){
+	var syntax = [];
+	if(owlElement.isClass){
+		var oneOf = owlElement.oneOf().map(function(){ return this.label();});
+		if(oneOf.length){ syntax.push("{ "+oneOf.join(", ")+" }");}
+	}
+	return syntax.join(", ");
+};
+
+})(jQuery);
+
+/**
+* @return 1 for exact match, 0 for partial match, -1 for no match.
+*/
+String.prototype.searchMatch = function(matchstring, exact){
+	if(this.search(new RegExp(matchstring, "i")) > -1){ return 1;} //contained within
+	var c = 0; var arr = matchstring.match(new RegExp("\\w+", "ig"));
+	for(var i = 0;i<arr.length;i++){ if(this.search(arr[i]) > -1){ c++;} }
+	if(c == arr.length){ return 0;} //word shift
+	return -1; //nomatch
+};
+/**
+* @return Modified String.
+*/
+String.prototype.beautify = function(){
+	var e1 = new RegExp("([a-z0-9])([A-Z])", "g");
+	var e2 = new RegExp("([A-Z])([A-Z0-9])([a-z])", "g");
+	var e3 = new RegExp("_", "g");
+	return this.replace(e1, "$1 $2").replace(e2, "$1 $2$3").replace(e3, " ");
+};
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ontology/DocExamples/jOWLBrowser_1.0/scripts/jOWLBrowser.js	Tue Mar 06 17:44:21 2012 +0100
@@ -0,0 +1,168 @@
+/**
+* jOWL Browser -extension to jOWL to easily visualize ontologies.
+* Creator - David Decraene
+* Version 1.0
+* Website: 
+*	http://jowl.ontologyonline.org
+*/
+
+var jOWLBrowser = {
+	isReady : false,
+	views : []
+};
+	
+function createSparqlDLWidget(){
+		function displayResults(obj){
+			var display = $('#sparqlresults');
+			if(obj.error){ display.text("Error: "+obj.error); }
+			else {
+				display.empty();
+				if(!obj.results || !obj.results.length) {  display.text("No results found"); $(".loader").hide(); return; }
+				display.append($('<div class="stats"/>').text("Number of results: "+obj.results.length));
+				
+				for(var i=0;i<obj.results.length;i++){
+					var txt = [];
+					for(x in obj.results[i]){ 
+							var str = (typeof obj.results[i][x] == 'string') ? obj.results[i][x] : obj.results[i][x].label();
+							txt.push(x+' : '+str);
+						}
+					display.append($('<div/>').text(txt.join(', ')));
+				}
+
+			}
+			$(".loader").hide();
+		}
+
+		$('#sparql').submit(function(){
+			var v = $('input', this).val(); 
+			$(".loader").show();
+			new jOWL.SPARQL_DL(v).execute({ onComplete : displayResults, expandQuery : true});	 
+			return false; 
+			});
+}
+
+function showOverviewResults(results, list, widget){
+	var maxcount = 50;
+	var hidden = $('<div/>').hide();
+	jOWL.throttle(results, {
+		limit : 200,
+		modify : function(item){
+			maxcount--;
+			var $el = item.bind($("<span class='jowl_link'/>"));
+			$el.click(function(){
+				if(widget && widget.propertyChange){ widget.propertyChange(jOWL(this.title)); }
+			});
+			if(maxcount > 0)  { if(maxcount != 49) list.append($("<span/>").text(",   ")); $el.appendTo(list); }
+			else if(maxcount === 0){ list.append(hidden); }
+			if(maxcount <=0) {if(maxcount != 0) hidden.append($("<span/>").text(",   "));  $el.appendTo(hidden);}
+		},
+		onComplete : function(arr){
+			if(maxcount < 0) list.append($("<div class='jowl_link' style='margin-top:5px;'/>").text("... ["+maxcount*-1+" more]").click(function(){hidden.slideDown(); $(this).hide(); }));
+		},
+		chewsize : 20,
+		timing : 5
+	})
+
+}
+
+function createOverviewWidget(){
+
+	function sparql(query, list, widget, cb){
+		var maxcount = 50; var hidden = $('<div/>').hide();
+		new jOWL.SPARQL_DL(query).execute({
+			limit : 200,
+			onComplete : function(res){
+				if(!res.results) {return; }
+				showOverviewResults(res.jOWLArray("?x"), list, widget);
+				if(cb){ cb();}
+			}
+		});
+	}
+
+	function triggerView(num){
+		var v = jOWLBrowser.views[num];
+		if(v){
+			sparql(v.query, v.element, v.widget, function(){
+				triggerView(num+1);
+			});
+		}
+	}
+	triggerView(0);
+
+};
+
+function createConceptWidget(){
+		var widget = {};
+		jOWL.UI.asBroadcaster(widget);
+		widget.propertyChange = function(item){ widget.broadcast(item); }
+
+		var jnode = $('#conceptwidget');
+
+		var descriptionpanel = $('.resourcebox', jnode).owl_propertyLens({
+			"term" : {split: ", "},
+			"sparql-dl:DirectType(?i, owl:Class)": {split: ", "},
+			"owl:disjointWith": {split: ", "},
+			onChange : {
+				"owl:Thing": function(source, target, resourcebox){	this.addClass("jowl_tooltip"); tooltip.display(target, this); },
+				"owl:Class": function(source, target, resourcebox){ resourcebox.link(source, target, this); }
+			}
+		});
+		
+		var tooltip = $('#thingwidget .resourcebox').clone(true).removeClass("owl_UI_box").addClass("owl_UI");
+		tooltip.children('.title').remove();
+		tooltip = tooltip.owl_propertyLens({tooltip: true});
+
+		//initialize UI components
+		var tree = $('#treeview').owl_treeview({addChildren: true, isStatic: true});
+		var autocomplete = $('#owlauto').owl_autocomplete({focus : true, chars : 2, filter : 'Class'});
+		var navbar = $('#navbar').owl_navbar();
+
+		widget.show = function(){
+			var concept = null;
+			if(configuration.owlClass){ concept = jOWL(configuration.owlClass);}
+			else {
+				for(x in jOWL.index("ID")){
+					var entry = jOWL.index("ID")[x];
+					if(entry.isClass)  { concept = entry; break; }
+				}
+			}
+			if(concept){
+				this.propertyChange(concept);
+			}
+		}
+
+		function toggleView(id){
+			switch (id)
+			{
+			case 'navbar': $('#navbar').show(); $('#treeview').hide(); break;
+			case 'treeview': $('#navbar').hide(); $('#treeview').show(); break;
+			} return this;
+		}
+		toggleView($(':radio:checked').val());
+		//show hint section
+		$('#owlauto').blur(function(){$(this).siblings('.info').show();}).focus(function(){$(this).siblings('.info').fadeOut(1000);}).blur();
+		$(':radio').change(function(){toggleView($(this).val());});
+		//making sure components respond to each others input:
+		widget.addListener([tree, navbar, descriptionpanel]);
+		autocomplete.addListener([tree, navbar, descriptionpanel]);
+		tree.addListener([navbar, descriptionpanel]);
+		navbar.addListener([tree, descriptionpanel]);
+		descriptionpanel.addListener([tree, navbar]);
+		widget.show();
+		return widget;
+	}
+
+function createPropertyWidget(){
+	$('#propertywidget').show();
+	return $('#propertywidget .resourcebox').owl_propertyLens({"term" : {split: ", "}});
+}
+
+function createIndividualsWidget(){
+	$('#thingwidget').show();
+	return $('#thingwidget .resourcebox').owl_propertyLens({"sparql-dl:PropertyValue(owl:Thing, ?p, ?t)" : {sort: "?p"}});
+}
+
+function createOntologyWidget(){
+	var ontologywidget = $('#title').owl_propertyLens();
+	ontologywidget.propertyChange(new jOWL.Ontology());
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ontology/DocExamples/jOWLBrowser_1.0/scripts/jOWL_Exhibit.js	Tue Mar 06 17:44:21 2012 +0100
@@ -0,0 +1,114 @@
+/*
+ * jOWL_Exhibit, Simile Exhibit plugin for jOWL, semantic javascript library
+ * Creator - David Decraene
+ * Version 1.0
+ * Website: http://Ontologyonline.org
+ * Licensed under the MIT license
+ * Verified with JSLint http://www.jslint.com/
+ */
+(function(){
+/**
+Loads an exhibit database with individuals matching the target owlclass
+make sure the script with src=http://static.simile.mit.edu/exhibit/api-2.0/exhibit-api.js?autoCreate=false is loaded on the page
+options:
+	status: jquery HTML element that displays status, child element with class msg is used for setting text.
+	facet: jquery HTML element to append exhibit facets (filters) to, if not defined then no facets are loaded
+	childDepth: number of children to drill down for individual reasoning (affects performance), default 4
+	labelforclass: representation name for owlclass in facet, default 'type'
+lenspanel css elements: jowl-criterium, jowl-property, jowl-target
+*/
+jOWL.Exhibit = function(owlclass, options){
+	$.extend(jOWL.Exhibit.defaults, options);
+	if(!owlclass) { throw "no owl:Class specified for Exhibit.jOWL()"; }
+	var jowl = owlclass.type ? owlclass : jOWL(owlclass, {type : "class"});
+
+	function configureDom(){
+
+			var facetpanel = false;
+			var lenspanel = false, lensclone = false, lenswrapper = false;
+
+			function configureCriteria(lens_el, property, label){
+				if(!label) { label = property; }
+				var x = lens_el.attr("ex:if-exists", "."+property);
+				$('.'+jOWL.Exhibit.defaults.css.property, x).text(label);
+				$('.'+jOWL.Exhibit.defaults.css.target, x).attr("ex:content", "."+property);
+				return x;
+			}
+			
+			if(jOWL.Exhibit.defaults.facet || jOWL.Exhibit.defaults.lens)
+			{
+				if(jOWL.Exhibit.defaults.facet) { facetpanel = 
+					jOWL.Exhibit.defaults.facet.empty().append($("<div ex:role='facet' ex:expression='.owlClass' ex:facetLabel='"+jOWL.Exhibit.defaults.labelforclass+"'/>")); 
+				}
+				if(jOWL.Exhibit.defaults.lens) { 
+					lenspanel = jOWL.Exhibit.defaults.lens.attr("ex:role", "lens");
+					var lbl = $('.'+jOWL.Exhibit.defaults.css.label).attr('ex:content', '.label');
+					if(!lbl.length) { throw 'Lens Template: no element found with attribute class="'+jOWL.Exhibit.defaults.css.label+'"'; }
+					var jowlcrit = $("."+jOWL.Exhibit.defaults.css.criterium, lenspanel);	
+					lensclone = jowlcrit.clone(true); 
+					lenswrapper = jowlcrit.parent();//.empty();	
+					jowlcrit.remove();					
+					var type = $('.'+jOWL.Exhibit.defaults.css.type, lenspanel);
+					if(type){ type.attr("ex:content", ".owlClass"); }
+				}
+				jowl.sourceof().each(function(item, i){
+					if(facetpanel){ facetpanel.append($("<div ex:role='facet' ex:expression='."+item.property.name+"' ex:facetLabel='"+item.property.name+"'/>")); }
+					if(lenspanel){ configureCriteria(lensclone.clone(true), item.property.name).appendTo(lenswrapper); }
+				});
+				if(lenspanel){ lenspanel.show(); }
+			}
+			jOWL.Exhibit.exhibit.configureFromDOM();
+		}
+
+	function loadJSON(jowl){
+		var itemLabel = jowl.label();
+		var query = new jOWL.SPARQL_DL("Type(?x, concept)", {"concept": jowl}).execute({
+			childDepth : jOWL.Exhibit.defaults.childDepth,
+			chewsize : 15,
+			onComplete : function(indarr){
+					var results = [];
+					indarr.jOWLArray ('?x').each(function(){
+						var entry = {};
+						this.valueRestrictions(true).each(function(){
+							if(!entry[this.property.URI]){ entry[this.property.URI] = []; }
+							entry[this.property.URI].push(this.target);
+						});
+						entry.label = this.label();
+						entry.type = itemLabel;
+						entry.owlClass = this.Class;
+						results.push(entry);
+					});
+					if(results.length){ jOWL.Exhibit.exhibit.getDatabase().loadData({items : results});	}
+					if(jOWL.Exhibit.defaults.status){ jOWL.Exhibit.defaults.status.hide(); }
+					jOWL.Exhibit.defaults.finalize(); 
+					}
+			}); 
+	}
+
+	function complete(){
+		configureDom();
+		if(jOWL.Exhibit.defaults.status){ $('.msg', jOWL.Exhibit.defaults.status).text("Reasoning over Individuals"); }
+		setTimeout(function(){loadJSON(jowl);}, 5); 
+	}
+
+	if(!jOWL.Exhibit.init) {
+			jOWL.index("Thing");
+			setTimeout(function(){
+				jOWL.Exhibit.database = Exhibit.Database.create();					
+				jOWL.Exhibit.exhibit = Exhibit.create();
+				jOWL.Exhibit.init = true;
+				setTimeout(complete, 5);
+				}, 5);
+	}
+	else  { 
+		jOWL.Exhibit.exhibit.getDatabase().removeAllStatements(); //endif
+		setTimeout(complete, 5);
+		}
+	
+
+	};
+jOWL.Exhibit.defaults = {childDepth:  4, labelforclass : "type",
+	css : { label : 'exhibit-lens-title', criterium : 'jowl-criterium', property : 'jowl-property', target : 'jowl-target', type : 'jowl-type' },
+	finalize : function(){}
+};
+})();
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ontology/DocExamples/jOWLBrowser_1.0/scripts/jOWL_UI.js	Tue Mar 06 17:44:21 2012 +0100
@@ -0,0 +1,698 @@
+/*
+ * jOWL_UI, User Interface Elements for jOWL, semantic javascript library
+ * Creator - David Decraene
+ * Version 1.0
+ * Website: http://Ontologyonline.org
+ * Licensed under the MIT license
+ * Verified with JSLint http://www.jslint.com/
+ */
+(function($){
+
+jOWL.UI = {
+	broadcaster : function(){
+		var listeners = [];
+		this.addListener = function(obj){
+			function add(obj){if(obj.propertyChange) { listeners.push(obj); } }
+			if(obj.constructor == Array){for(var i=0;i<obj.length;i++){ add(obj[i]); } }
+			else { add(obj); }
+			return this; 
+		};
+		this.broadcast = function(item){ for(var i=0;i<listeners.length;i++){ listeners[i].propertyChange.call(item, item); } };
+		if(!this.propertyChange){ this.propertyChange = function(item){}; }
+	},
+	asBroadcaster : function(ui_elem){ ui_elem.broadcaster = jOWL.UI.broadcaster; ui_elem.broadcaster(); },
+	defaults : {
+		contentClass: "jowl-content",
+		focusClass: "ui-state-hover",
+		wrapperClass : "ui-widget-content"
+	}
+};
+
+/** 
+WIDGETS 
+all widgets: 
+	addListener : add an object with a propertyChange function, will be triggered on select
+	propertyChange: update the widget with a new jowl object
+Events:
+	onSelect: (look into propertylens click), return false to suppress the event, this = jquery element, first argument = jOWL object
+CSS:
+	wrapperClass: css class(es) for main element, the el itself
+	contentClass: css class(es) for main content element, accessible by el.content
+	focusClass: css class(es) for element in focus,
+*/
+$.fn.extend({
+/* 
+owl_navbar
+options:
+	onSelect : this element refers to jquery node, first argument = jOWL object
+*/
+	owl_navbar: function(options){
+		options = $.extend({
+			contentClass : jOWL.UI.defaults.contentClass,
+			focusClass : jOWL.UI.defaults.focusClass,
+			onSelect : function(item){},
+			onPropertyChange : function(item){}
+		}, options);
+		var self = this;
+		this.addClass("jowl-navbar");
+		this.content = $("."+options.contentClass, this).empty();
+			if(!this.content.length) { this.content = $("<div/>").addClass(options.contentClass).appendTo(this); }
+		this.parents =  $('<div/>').appendTo(this.content);
+		this.focus = $('<div/>').addClass(options.focusClass).appendTo(this.content);
+		this.children = $('<div/>').appendTo(this.content);
+		var listnode = $('<span/>').click(function(){
+			var node = $(this);
+			var res = jOWL(node.attr('title'));
+			if(options.onSelect.call(node, res) === false) { return; }
+			if(res && res.isClass) { self.propertyChange.call(res, res); self.broadcast(res); }
+		});
+
+		jOWL.UI.asBroadcaster(this);
+
+		this.propertyChange = function(item){
+			if(options.onPropertyChange.call(this, item) === false) { return; }
+			if(item.isClass){
+				item.bind(self.focus);
+				if(jOWL.options.reason) { item.hierarchy();}
+				self.parents.empty().append(item.parents().bind(listnode));
+				self.children.empty().append(item.children().bind(listnode));
+			}
+		};
+		return this;
+	},
+/** 
+autocomplete field.
+*/
+	owl_autocomplete : function(options){
+		options = $.extend({
+			time:500, //responsetime to check for new keystrokes, default 500
+			chars:3, //number of characters needed before autocomplete starts searching
+			focus:false, //put cursor on the input field when loading
+			limit:10, //limit size of result list to given amount
+			contentClass : "ui-widget-content",
+			focusClass : jOWL.UI.defaults.focusClass,
+			hintClass : "ui-autocomplete-hint",
+			hint: false, //Message (if any) to show when unfocused.
+			onSelect : function(item){}, //function that can be overridden
+			formatListItem : function(listitem, type, identifier, termarray){ //formatting of results, can be overridden
+				if(type){ listitem.append($('<div class="type"/>').text(type)); }
+				listitem.append($('<div class="name"/>').text(identifier));
+				if(termarray.length) { listitem.append($('<div class="terms"/>').text(termarray.join(', '))
+					.prepend($('<span/>').addClass('termlabel').text("Terms: ")));
+			}
+		}}, options);
+		jOWL.UI.asBroadcaster(this);
+
+		this.showHint = function(){
+			this.hinted = true;
+			if(options.hint){
+				this.addClass(options.hintClass).val(options.hint);
+			}
+			else {this.val(''); }
+		};
+		this.showHint();
+
+		var self = this; var old = ''; var open = false; self.val('');
+		var results = $('<ul/>').addClass(options.contentClass).addClass("jowl_autocomplete_results");
+		var div = $("<div/>").addClass(options.wrapperClass).append(results); this.after(div);
+		results.cache = {};
+		results.isEmpty = function(){ for(x in results.cache) { return false; } return true; };
+		results.close = function(){this.hide();};
+		results.open = function(q, cache){
+			this.show(); 
+			if(q){
+				if(!cache || results.isEmpty()) { results.cache = jOWL.query(q, options); }
+				else { 
+					var newcache = {};
+					for(x in results.cache){
+						var entry = results.cache[x]; 
+						var found = false;
+						var newentries = [];
+						if(x.searchMatch(q) > -1) { found = true; }
+						for(var i = 0;i<entry.length;i++){
+							if(entry[i].term.searchMatch(q) > -1) { found = true; newentries.push(entry[i]); }
+						}
+						if(found) { newcache[x] = newentries; }
+						}
+					results.cache = newcache;
+					}
+				this.populate(results.cache);
+				}
+		};
+
+		results.populate = function(data){
+			var res = this; this.empty(); var count =0;
+			var clickFunction = function(){
+				var node = $(this), res = jOWL(node.data("jowltype"));
+				if(options.onSelect.call(node, res) === false) { return; }
+				self.broadcast(res);
+			};
+
+			var onHover = function(){ $(this).addClass(options.focusClass); };
+			var offHover = function(){$(this).removeClass(options.focusClass);};
+
+			for(x in data){
+				if(count < options.limit){
+					var item = data[x];
+					var v = jOWL.isExternal(x);
+					v = v ? v[1] : x;
+					var list = $('<li/>').data("jowltype", x)
+					.click(clickFunction).hover(onHover, offHover)
+					.appendTo(res);
+					var terms = [];
+					for(var l = 0;l<item.length;l++){ 
+						var found = false; var newterm = item[l].term;
+						for(var y=0; y < terms.length;y++){ if(terms[y].toLowerCase() == newterm.toLowerCase()) { found = true; } }
+						if(!found) { terms.push(newterm); }
+						}
+					options.formatListItem.call(list, list, item[0].type, v, terms);
+
+				}
+				count++;
+			}
+		};
+
+		setInterval(function(){
+			var newvalue = self.val();
+			var cache = true;
+			if(old != newvalue){
+				var longervalue = newvalue.length > old.length && newvalue.indexOf(old) === 0;
+				if(!old) { cache = false; }
+				old = newvalue; 
+				if(newvalue.length < options.chars && open){ results.close();open = false;}
+				else if(newvalue.length >=options.chars && newvalue.length > 0){
+					if(cache) { cache = longervalue && newvalue.length > options.chars; }
+					results.open(newvalue, cache);
+					open = true;
+					}
+				
+			}
+		}, options.time);
+
+		self.bind('keyup', function(){ if(!this.value.length){ results.close(); open = false; } });
+		self.bind('blur', function(){
+			if(open){setTimeout(function(){results.close();}, 200);open = false;}
+			if(!self.val().length){self.showHint();}
+			});
+		//timeout for registering clicks on results.
+		self.bind('focus', function(){
+			if(self.hinted){
+				self.hinted = false;
+				$(this).removeClass(options.hintClass).val('');
+			}
+			if(self.val().length && !open){results.open('', open);open = true;}});
+		//reopen, but do not get results
+		return this;
+	},
+/** 
+Tree View
+*/
+	owl_treeview : function(options){
+		options = $.extend({
+			contentClass : jOWL.UI.defaults.contentClass,
+			focusClass: "focus",
+			nameClass: "name",
+			treeClass: "jowl-treeview",
+			rootClass: "root",
+			onSelect : function(item){}, //function that can be overwritten to specfy behavior when something is selected
+			rootThing : false, //if true then topnode is (owl) 'Thing'
+			isStatic : false, // if static then selections will refresh the entire tree
+			addChildren : false //add a given objects children to the treeview as well
+		}, options);
+
+		/** construct the hierarchy & make a tree of it */
+		function TreeModel(owlobject){
+			
+			function clear(el){ //reset invParents, for later use.
+				if(el.parents) { el.parents().each(function(){
+					this.invParents = null; clear(this);
+				}); }
+			}
+
+			function leaf(node){
+				node.jnode.addClass(options.focusClass);
+				if(options.addChildren){
+					var entry = jOWL(node.$name.attr('title'));
+					if(entry && entry.children){ entry.children().each(function(){ node.add(this); }); } }
+			}
+
+			function traverse(itemarray, appendto){
+				if(!itemarray) { return; }
+				itemarray.each(function(){
+					var node = appendto.add(this);
+					if(this.invParents){ traverse(this.invParents, node); }
+					else { leaf(node); }
+				});
+
+			}	
+
+			var h = owlobject.hierarchy(true);
+			if(options.rootThing) { traverse(h, tree.root(jOWL("Thing"))); }
+			else { 
+				var root = tree.root(h); 
+				for(var i=0;i<root.length;i++){ 
+						traverse(root[i].invParents, root[i]);
+						if(!root[i].invParents) { leaf(root[i]); }
+					}
+
+				}
+			clear(owlobject);
+
+		}
+
+		/**
+		var tree = $(selector).owl_treeview();
+		var root = tree.root("node");
+		root.add("node2").add("child");
+		*/
+		function Tree(node, treemodel, options){
+			var rack = $('<ul/>').addClass(options.treeClass).appendTo(node);
+			var tree = this;
+			/**item can be text, a jOWL object, or a jOWL array */
+			this.root = function(item){
+				var rt = null; //root
+				rack.empty();  
+				if(item && item.each) {
+					rt = [];
+					item.each(function(it){
+						var x =  new fn.node(it, true); 
+						x.wrapper.addClass("tv");
+						x.jnode.appendTo(rack);
+						x.invParents = it.invParents; it.invParents = null;	//reset for later use
+						rt.push(x);
+					}); 
+					return rt;
+				}
+				rt = new fn.node(item, true);
+				rt.wrapper.addClass("tv"); 
+				rt.jnode.appendTo(rack);
+				return rt;
+			};
+
+			var fn = {};
+			fn.node = function(text, isRoot){ //creates a new node
+				this.jnode = isRoot ? $('<li/>').addClass(options.rootClass) : $('<li class="tvi"/>');
+				this.$name = null;
+				if(text){
+					this.$name = $('<span/>').addClass(options.nameClass);
+					if(typeof text == "string") { this.$name.html(text); }
+					else if(text.bind) { text.bind(this.$name); }
+					var n = this.$name; 
+					this.$name.appendTo(this.jnode).click(function(){
+						var entry = jOWL(n.attr('title'));
+						if(entry && options.onSelect.call(n, entry) === false) { return; }
+						tree.broadcast(entry); 
+						if(options.isStatic) { tree.propertyChange(entry); }
+						return false;});
+				}
+				
+				this.wrapper = $('<ul/>').appendTo(this.jnode);
+				var self = this;
+					self.jnode.click(function(){toggle(); return false;});
+
+				this.add = function(text){
+					var nn = new fn.node(text);
+					if(!self.wrapper.children().length) { toNode();	}
+					else { 
+						var lastchild = self.wrapper.children(':last'); 
+						lastchild.swapClass("tvilc", "tvic");
+						lastchild.swapClass("tvile", "tvie");
+						lastchild.swapClass("tvil", "tvi");
+						
+						}//children - change end of list
+					self.wrapper.append(nn.jnode.swapClass('tvi', 'tvil'));
+					return nn;
+					};
+
+				function toggle(){ 
+					var t = self.jnode.hasClass("tvic") || self.jnode.hasClass("tvie") || self.jnode.hasClass("tvilc") || self.jnode.hasClass("tvile");
+					if(!t) { return; }
+					self.jnode.swapClass('tvic', 'tvie'); self.jnode.swapClass('tvilc', 'tvile');
+					self.wrapper.slideToggle();
+					}
+
+				function toNode(){ 
+					self.jnode.swapClass('tvil', 'tvilc');
+					self.jnode.swapClass('tvi', 'tvic');
+					}
+				};
+				return this;
+		}// end Tree
+
+		this.addClass("jowl-tree");
+		this.content = $("."+options.contentClass, this).empty();
+		if(!this.content.length){ this.content = $('<div/>').addClass(options.contentClass).appendTo(this); }
+		var tree = new Tree(this.content, null, options);
+		jOWL.UI.asBroadcaster(tree);
+		tree.propertyChange = function(item){ if(item.isClass) { var m = new TreeModel(item); } };
+		return tree;
+	},
+/** Uses templating 	
+options: 
+onChange: owl:Class, owl:Thing, etc..., tell the widget what to do with the different kinds of Ontology Objects.
+"data-jowl" : {split: ",  ", "somevariable" : function_triggered_for_each_result } 
+   example: "rdfs:label" : {split: ",  ", "rdfs:label" : function(){ //'this' keyword refers to HTML element}} )
+   example: "sparql-dl:PropertyValue(owl:Class, ?p, ?x)" : {"?p": function(){ //'this' keyword refers to HTML element }}
+   //prefil: for sparql-dl queries
+   //onComplete: function to trigger when the specific propertybox query is completed, this refers to the HTML element for propertybox
+   //sort: sort results on specified parameter, for sparql-dl results.
+onUpdate: called when the widget updates itself
+*/
+		owl_propertyLens : function(options){ 
+			var self = this;
+			self.options = $.extend({
+				backlinkClass : "backlink",
+				split: {},
+				disable : {},
+				click : {}},
+				options);
+			self.resourcetype = this.attr('data-jowl') || "owl:Class";
+			var propertyboxes = [];
+			$('.propertybox', this).each(function(){
+				var node = new jOWL.UI.PropertyBox($(this), self);
+				propertyboxes.push(node);
+				node.el.hide();
+			});
+			var backlink = $('.backlink', this).hide();
+			if(!backlink.length) { backlink = $('<div class="jowl_link"/>').addClass(self.options.backlinkClass).text("Back").hide().appendTo(this); }
+			jOWL.UI.asBroadcaster(this);
+
+			/** fn: optional function to execute*/
+			this.link = function(source, target, htmlel, fn){
+				htmlel.addClass("jowl_link").click(function(){
+				if(fn) { fn(); }
+				self.broadcast(target);
+				self.propertyChange(target);
+				backlink.source = source.name;
+				backlink.show().unbind('click').click(function(){
+					self.broadcast(source); self.propertyChange(source); backlink.hide();
+				});
+
+				});
+
+			};
+
+			var action = {
+				"rdfs:label": function(item){ return [{"rdfs:label": item.label() }]; },
+				"rdf:ID" : function(item){ return [{"rdf:ID": [item.name, item] }]; },
+				"rdfs:comment" : function(item){
+					return $.map(item.description(), function(n){return {"rdfs:comment":n }; });
+					},
+				"rdf:type" : function(item){
+					if(item.owlClass) { return [{"rdf:type": item.owlClass() }]; }
+					return [{"rdf:type": item.type }];
+				},
+				"term" : function(item){
+					return $.map(item.terms(), function(n, i){ return { "term" : n[0] }; });
+				},
+				"rdfs:range": function(item){if(item.range) { return [{"rdfs:range": item.range }]; } },
+				"rdfs:domain": function(item){if(item.domain) { return [{"rdfs:domain": item.domain }]; } },
+				"permalink": function(item){
+					var href = jOWL.permalink(item);
+					return [{"permalink": "<a href='"+href+"'>Permalink</a>" }];
+				},
+				"owl:disjointWith": function(item){
+					if(!(item.isClass)) { return; }
+					return $.map(
+							jOWL.Xpath('*', item.jnode)
+								.filter(function(){return this.nodeName == "owl:disjointWith"; }), 
+							function(n, i){ return {"owl:disjointWith": jOWL($(n).RDF_Resource())};
+							});	
+				},
+				"default" : function(item){
+					var type = this.attr("data-jowl");
+					return $.map(
+								jOWL.Xpath('*', item.jnode).filter(function(){return this.nodeName == type; }),
+								function(n, i){ var x = {}; x[type] = $(n).text(); return x; }
+								);	
+				}
+			};
+
+			this.propertyChange = function(item){ 
+				if(!item) { return; }
+				self.property = item;
+				if(backlink.source != item.name) { backlink.hide(); } else { backlink.source = false; }
+				
+				if(item.type != self.resourcetype){
+					if(item.isDatatypeProperty && self.resourcetype == "rdf:Property") {}
+					else if(item.isObjectProperty && self.resourcetype == "rdf:Property"){}
+					else { return; }
+				}
+
+				for(var i = 0;i<propertyboxes.length;i++){
+					var pbox = propertyboxes[i];
+					pbox.clear();
+					if(!pbox.actiontype){return; }
+					var actiontype = pbox.actiontype;
+					if(self.options.disable[actiontype]) { return; }
+
+					if(!self.options[actiontype]) { self.options[actiontype] = {}; }
+
+					if(actiontype.indexOf("sparql-dl:") === 0){ 
+						var query = actiontype.split("sparql-dl:", 2)[1];
+						var fill = {}; fill[self.resourcetype] = item;
+						if(self.options[actiontype].prefill) { $.extend(fill, self.options[actiontype].prefill); }
+						var qr = new jOWL.SPARQL_DL(query, fill).execute({onComplete : function(r){
+							if(self.options[actiontype].sort) { r.sort(self.options[actiontype].sort); }
+							pbox.setResults(r.results, item);
+							}});
+					}
+					else {
+						var choice = (action[actiontype]) ? actiontype : "default";
+						var results = action[choice].call(pbox.valuebox, item);
+						pbox.setResults(results, item);
+					}
+				}
+					
+					if(self.options.onUpdate) { self.options.onUpdate.call(this, item); }
+			}; //end property change
+		
+		if(self.options.tooltip){
+			var lens = this.remove();
+			this.display = function(element, htmlel){
+				htmlel.tooltip({
+					title: element.label(), 
+					html: function(){	lens.propertyChange(element); backlink.hide(); return lens.get(0); }
+				}); 
+			};
+		}
+		return this;
+		},
+
+/**
+Use propertyChange to set the class
+Use addField to add property refinements
+Use serialize to serialize input
+*/
+	owl_datafield: function(options){
+		options = $.extend({
+			selectorClass : "jowl-datafield-selector",
+			messageClass : "jowl-datafield-message",
+			labelClass : "jowl-datafield-property-label"
+		}, options);
+		var self = this;
+		var pArray = {}; //associative array for properties.
+		this.messages = {};
+		this.messages[jOWL.NS.xsd()+"positiveInteger"] = "Allowed values: positive numbers or comparisons like  '>5 && <15' ";
+
+		this.addClass("owl_UI");
+		jOWL.UI.asBroadcaster(this);
+
+		this.property = null;
+
+		this.propertyChange = function(item){
+			if(item.isClass){
+				this.property = item;
+					for(x in pArray){//reset all properties
+						if(pArray[x].remove){ pArray[x].remove(); delete pArray[x]; }
+					}
+			}
+		};
+
+		/** Sets up a new field */
+        this.addField = function(property){
+            if(pArray[property.URI]){
+                //allow for multiple fields?
+				return;
+            }
+
+			var $content = $("<div/>");
+				 pArray[property.URI] = $content;
+
+			var $title = property.bind($("<div/>")).addClass(options.labelClass).appendTo($content).click(function(){ $content.remove(); delete pArray[property.URI]; });
+
+            if(property.isObjectProperty){
+
+				var sp = new jOWL.SPARQL_DL("Type(?t, ?c),PropertyValue(concept, property, ?c)", {concept : self.property, property : property }).execute({ 
+					onComplete : function(obj){
+						if(!obj.results.length){ return; } //modify to deal with non value results
+						obj.sort("?t");
+						
+						$select = $("<select class='"+options.selectorClass+"'/>").appendTo($content);
+
+						for(var i=0;i<obj.results.length;i++){
+							obj.results[i]['?t'].bind($("<option/>")).appendTo($select);
+						}
+
+						$content.appendTo(self);
+					}});
+
+            }
+            else if(property.isDatatypeProperty){
+				var msg ="";
+				if(self.messages[property.range]){ msg = self.messages[property.range];	}
+
+				var $input = $('<div/>').addClass(options.selectorClass).attr("title", property.range).append($('<input type="text" style="font-size:11px;width:100px;"/>'));
+				var $message = $('<div/>').addClass(options.messageClass).text(msg).appendTo($input);
+
+				$content.append($input).appendTo(self);
+				$('input', $content).focus(function(){
+					$message.animate({opacity: 1.0}, 1500).fadeOut();
+				});
+
+				
+			}
+
+		};
+
+		this.serialize = function(){
+			var q = { "Type": self.property, "PropertyValue" : [] };
+
+			$('.'+options.selectorClass, self).each(function(){
+				var $this = $(this);
+				var $prop = $this.siblings('.'+options.labelClass);
+				var prop = $prop.attr('title');
+				if( $this.is("select")){
+						var s = $this.get(0);
+						var thing = $(s[s.selectedIndex]).attr('title');
+						q.PropertyValue.push([prop, thing]);
+					}
+				else {
+					var $input = $this.find("input");
+					var datatype = $this.attr('title');
+					var entry = $input.get(0).value;
+					if(entry) { q.PropertyValue.push([prop, '"'+entry+'"']); }
+				}
+			});
+			return q;
+		};
+
+		return this;
+	}
+});
+
+/** Used by owl_PropertyLens */
+jOWL.UI.PropertyBox = function($el, resourcebox){
+	var v = $('[data-jowl]', $el);
+	if(v.length){	this.descendant = true;}
+
+	this.el = $el;
+	this.resourcebox = resourcebox;
+	this.valuebox = v.length ? v : $el;
+	this.actiontype = this.valuebox.attr('data-jowl'); 
+};
+
+jOWL.UI.PropertyBox.prototype = {
+	setResults : function(results, item){
+		var nodes = jOWL.UI.Template(results, this.valuebox, this.resourcebox.options[this.actiontype].split);
+		this.complete(nodes, item);
+		if(nodes && nodes.length && this.descendant) { this.el.show(); this.valuebox.hide(); } 
+		if(this.resourcebox.options[this.actiontype].onComplete) { this.resourcebox.options[this.actiontype].onComplete.call(this.el.get(0)); }	
+	},
+	complete : function(nodes, item){
+		var res = this.resourcebox;
+		if(!nodes || !nodes.length) { return; }
+		var v = $.data(nodes, "parameters"); 
+		for(x in v){ 
+			if(v[x].length && typeof res.options[this.actiontype][x] == "function") {
+				v[x].each(res.options[this.actiontype][x]);
+			}}
+		for(x in res.options.onChange){
+			var data = $('[typeof='+x+']', nodes).add(nodes.filter('[typeof='+x+']'));
+			if(x.charAt(0) == "." || x.charAt(0) == "#"){ data = data.add($(x, nodes));}
+			data.each(function(){
+				var node = $(this);
+				$.data(node, 'data-jowl', x);
+				var id = node.attr('title');
+				if(id != "anonymousOntologyObject") { res.options.onChange[$.data(node, 'data-jowl')].call(node, item, jOWL(id), res); }
+			});
+		}
+	},
+	clear : function(){
+		var prev = this.valuebox.prev('.jowl-template-result');
+		if(!prev.length){ prev = this.valuebox.prev('.jowl-template-splitter');}
+		if(prev.length) { prev.remove(); this.clear(this.valuebox); }
+	}
+};
+
+/**arr: associative array of variablrd, jqel: node for which variables need to be substituted,  */
+jOWL.UI.Template = function(arr, jqel, splitter){
+	var options = {
+		resultClass : "jowl-template-result",
+		splitterClass : "jowl-template-splitter"
+	};
+	if(!arr) { return; }
+
+	function bindObject(value, jnode){
+		var bound = false;
+		if(!value) { return false; }
+		if(typeof value == 'string') { jnode.html(value); bound = true;}
+		else if(value.constructor == Array){ 
+			if(value.length == 2) { value[1].bind(jnode).text(value[0]); bound = true;	} 
+			}
+		else if(value.bind){ value.bind(jnode); bound = true; }
+		return bound;
+	}
+	var count = 0, a = [], b = {};
+	var remnantFn = function(){
+		var txt = $(this).text(); 
+		if(txt.indexOf('${') === 0 && txt.lastIndexOf('}') == txt.length-1 ) { $(this).hide(); }
+	};
+	for(var i=0;i<arr.length;i++){ 
+		var x = jqel.clone(true).wrapInner("<"+jqel.get(0).nodeName+" class='"+options.resultClass+"'/>").children();
+		/** copy style settings */
+			x.addClass(jqel.attr('class')).removeClass('propertybox');
+		/** accepted obj types= string, array["string", "jowlobject"], jowlobject*/
+		for(obj in arr[i]){
+			if(!b[obj]) { b[obj] = []; }
+			var occurrences = $(':contains(${'+obj+'})', x);
+			if(!occurrences.length){
+				if(x.text() == "${"+obj+"}") { if(bindObject(arr[i][obj], x)) {
+					count++; b[obj].push(x.get(0));
+				}}
+			}
+			else { 
+				occurrences.each(function(){	
+					if(this.innerHTML == "${"+obj+"}") { var node = $(this); if(bindObject(arr[i][obj], node)) { count++;  b[obj].push(this); }	}
+				});
+			}
+		}
+		var remnants = $(':contains(${)', x); //hide parameters that weren't substituted
+			remnants.each(remnantFn);
+		if(count){
+			x.insertBefore(jqel);
+			a.push(x.get(0));
+			if(count > 1 && splitter) { 
+				$splitter = (splitter.indexOf('<') === 0) ? $(splitter) : $("<span/>").text(splitter);
+				$splitter.addClass(options.splitterClass).insertBefore(x);
+				}
+		}
+	}
+	for(x in b){ if(b[x].length) { b[x] = $(b[x]); } }
+	var nodes = $(a);
+	$.data(nodes, "parameters", b);
+	return nodes;
+};
+
+/** 
+Supporting functionality
+*/
+
+$.fn.swapClass = function(c1,c2) {
+	return this.each(function() {
+		if ($(this).hasClass(c1)) { $(this).removeClass(c1); $(this).addClass(c2);} 
+		else if ($(this).hasClass(c2)) {$(this).removeClass(c2);$(this).addClass(c1);}
+		});
+};
+
+})(jQuery);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ontology/DocExamples/jOWLBrowser_1.0/scripts/jquery.tooltip.js	Tue Mar 06 17:44:21 2012 +0100
@@ -0,0 +1,69 @@
+/**
+ * Creator : David Decraene
+ * Version: 2009-02-18
+ * Creates a tooltip pointing to the selected HTML element, shown when the element is hovered over.
+ * Usage: 
+ *   $('myelement').tooltip({html : "someHTML", title : "someTitle"});
+ *   $('myelement').tooltip({html : function(){ return $('otherElement').html(); } });
+ * Dependency: jQuery 1.2.6 or later
+ */
+$.fn.extend({
+tooltip: function(options) {
+	var defaults = {
+		/** Defines content: string OR function that returns html content ('this' keyword = wrapper element), return false if you wish to handle it yourself */
+		html : "options.html undefined", 
+		/** width of the tooltip */
+		width : 250,
+		/** title of the tooltip */
+		title : "Description",
+		/** whether or not to parse the title from the anchor element instead (title atrribute or text content for '<a href=""></a>'. */
+		parseTitle : false,
+		/** CSS style settings */
+		css : { 
+			anchor : {cursor:'pointer'},
+			wrapper : {"font-size" : "12px", "position": "absolute", "z-index": "5", "border" : "2px solid #CCCCCC", "background-color" : "#fff" },
+			arrow : {"position": "absolute", "z-index":"101", "height":"23px", "background-repeat": "no-repeat", "background-position": "left top", "left": "-12px"},
+			arrow_left : {"background-image": "url(img/tooltip/arrow_left.gif)",  "width":"10px", "top":"-3px" },
+			arrow_right : {"background-image": "url(img/tooltip/arrow_right.gif)", "width":"11px", "top":"-2px" },
+			title : {"background-color": "#CCCCCC", "text-align": "left", "padding-left": "8px", "padding-bottom": "5px", "padding-top": "2px", "font-weight":"bold"},
+			content : {"padding":"10px", "color":"#333333"},
+			loader : {"background-image": "url(img/tooltip/loader.gif)", "background-repeat": "no-repeat", "background-position": "center center", "width":"100%", "height":"12px" }
+		}
+	}
+	var settings = $.extend({}, defaults, options);
+	var wrapper = null;
+	var node = $(this).css(settings.css.anchor).hover(function(){ show(this); }, function(){if(wrapper.remove) { wrapper.remove(); } });
+
+	/** Displays the tooltip */
+	function show(el){
+
+		var pos = node.offset();
+		var X = 0;
+
+		if(settings.parseTitle){
+			if(el.title){ settings.title = el.title; }
+			else if(el.nodeName == 'A'){settings.title = el.innerHTML;}
+		}
+		
+		wrapper = $("<div/>").css(settings.css.wrapper).width(settings.width).appendTo("body");
+		var content = $("<div/>").css(settings.css.content)
+			.append($("<div/>").css(settings.css.loader));
+		var Arrow = $("<div/>").css(settings.css.arrow); 
+		if($(document).width() - pos.left > settings.width+75){
+			Arrow.css(settings.css.arrow_left); 
+			X = pos.left + node.width() + 11;
+		}else{
+			Arrow.css(settings.css.arrow_right); 
+			X = pos.left - (settings.width + 15);
+		}
+		wrapper.append(Arrow)
+			.append($("<div/>").text(settings.title).css(settings.css.title))
+			.append(content).css({left: X+"px",  top: (pos.top - 3)+"px"}).show();
+		if(typeof settings.html == 'string') { content.html(settings.html); }
+		else if(typeof settings.html == 'function'){ 
+			var h = settings.html.call(wrapper);
+			if(h){ content.empty().append(h); }
+		}
+	}
+}
+});
\ No newline at end of file