--- /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">“</span>asdf”
+ (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 'stop' and start describing the Entity. This helps 'Activity-centric' modeling as opposed to 'Entity-centric' 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 "some characterized entity is transformed from, created from, or affected by another characterized entity."</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 'an identifiable activity, which performs a piece of work.'</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'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">'Instants are, intuitively, point-like in that they have no interior points'
+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