trill_on_swish/commit

trill_on_swish v. 2.0

authorrzese
Fri Jul 15 12:19:33 2016 +0200
committerrzese
Fri Jul 15 12:19:33 2016 +0200
commit548de31b39b068258ec1e5efb4e17d9b9181ed5a
tree078575a5d18fd272fcbc8487b15468df8363b57d
parente9cdf8884b6869c54e1aa125322f2d9df4fe5255
Diff style: patch stat
diff --git a/Makefile b/Makefile
index 61d1be4..adf9222 100644
--- a/Makefile
+++ b/Makefile
@@ -1,19 +1,23 @@
 # Create a ClioPatria SWISH package from the SWISH distribution.
 
 FONTDIR=web/bower_components/bootstrap/dist/fonts
-DIRS=lib/trill_on_swish lib/trill_on_swish/render web/icons web/help client $(FONTDIR)
+DIRS=lib/trill_on_swish lib/trill_on_swish/render web/icons web/help client $(FONTDIR) \
+     web/bower_components/codemirror/mode/htmlmixed \
+     web/bower_components/codemirror/mode/css \
+     web/bower_components/codemirror/mode/javascript
 SWISHLIB=storage.pl page.pl help.pl examples.pl config.pl gitty.pl \
 	 highlight.pl render.pl template_hint.pl search.pl form.pl \
-	 include.pl csv.pl logging.pl trace.pl markdown.pl \
-	 translate_rdf.pl trill/trill.pl
+	 include.pl swish_csv.pl logging.pl trace.pl markdown.pl \
+	 gitty_driver_files.pl gitty_driver_bdb.pl gitty_tools.pl \
+	 swish_debug.pl profiles.pl procps.pl
 RENDER=table.pl graphviz.pl c3.pl
 LIBS=	$(addprefix lib/trill_on_swish/, $(SWISHLIB)) \
 	$(addprefix lib/trill_on_swish/render/, $(RENDER))
-JS=web/js/trill_on_swish-min.js web/js/trill_on_swish-min.js.gz web/js/require.js
-CSS=web/css/trill_on_swish-min.css web/css/trill_on_swish-min.css.gz web/css/print.css
+JS=web/js/swish-min.js web/js/swish-min.js.gz web/js/require.js
+CSS=web/css/swish-min.css web/css/swish-min.css.gz web/css/print.css
 ICON_FILES=dead.png error.png running.gif page-fold-20.png \
 	   red_bird.svg red_bird_op.svg pl.png swinb.png owl.png \
-	   select.png favicon.ico trill-touch-icon.png
+	   select.png  wip.png rb_favicon.ico trill-touch-icon.png
 ICONS=$(addprefix web/icons/, $(ICON_FILES))
 HELP=$(addprefix web/help/, $(notdir $(wildcard src/web/help/*.html)))
 FONTFILES=glyphicons-halflings-regular.ttf \
@@ -21,10 +25,21 @@ FONTFILES=glyphicons-halflings-regular.ttf \
 	  glyphicons-halflings-regular.woff \
 	  glyphicons-halflings-regular.woff2
 FONTS=$(addprefix $(FONTDIR)/, $(FONTFILES))
-CLIENTFILES=trill_on_swish-ask.sh README.md sin-table.html
+CLIENTFILES=swish-ask.sh README.md sin-table.html
 CLIENTS=$(addprefix client/, $(CLIENTFILES))
+EXAMPLESFILES=biopaxLevel3.pl BRCA.pl DBPedia.pl examples.swinb \
+              peoplePets.pl vicodi.pl commander.pl johnEmployee.pl index.json
+EXAMPLES=$(addprefix examples/, $(EXAMPLESFILES))
+PROFILESFILES=00-Empty.pl 00-Empty.swinb 10-Non-Probabilistic.pl \
+             10-Non-Probabilistic.swinb 20-Probabilistic.pl 20-Probabilistic.swinb
+PROFILES=$(addprefix profiles/, $(PROFILESFILES))
+CMFILES=mode/htmlmixed/htmlmixed.js \
+	mode/javascript/javascript.js \
+	mode/css/css.js
+CM=$(addprefix web/bower_components/codemirror/, $(CMFILES))
 
-all:	$(DIRS) $(LIBS) $(JS) $(CSS) $(ICONS) $(HELP) $(FONTS) $(CLIENTS)
+all:	$(DIRS) $(LIBS) $(JS) $(CSS) $(ICONS) $(HELP) $(FONTS) $(CLIENTS) \
+	$(CM) $(EXAMPLES) $(PROFILES)
 
 $(DIRS):
 	mkdir -p $@
@@ -33,13 +48,13 @@ lib/trill_on_swish/%: src/lib/%
 	rsync -u $< $@
 client/%: src/client/%
 	rsync -u $< $@
-client/trill_on_swish-ask.sh: src/client/trill_on_swish-ask.sh
+client/swish-ask.sh: src/client/swish-ask.sh
 	sed -e 's/:3050}/:3020}/' -e 's/-prolog}/-rdf}/' $< > $@
 	chmod +x $@
 
-web/js/trill_on_swish-min.js: src/web/js/trill_on_swish-min.js
+web/js/swish-min.js: src/web/js/swish-min.js
 	rsync -u $< $@
-web/js/trill_on_swish-min.js.gz: src/web/js/trill_on_swish-min.js.gz
+web/js/swish-min.js.gz: src/web/js/swish-min.js.gz
 	rsync -u $< $@
 web/js/require.js: src/web/bower_components/requirejs/require.js
 	rsync -u $< $@
@@ -53,8 +68,17 @@ web/icons/%: src/web/icons/%
 web/help/%: src/web/help/%
 	rsync -u $< $@
 
+examples/%: src/examples/%
+	rsync -u $< $@
+
+profiles/%: src/profiles/%
+	rsync -u $< $@
+
 $(FONTDIR)/%: src/$(FONTDIR)/%
 	rsync -u $< $@
 
+web/bower_components/codemirror/%: src/web/bower_components/codemirror/%
+	rsync -u $< $@
+
 clean::
 	rm -f $(LIBS) $(JS) $(CSS) $(ICONS) $(HELP)
diff --git a/applications/trill_on_swish.pl b/applications/trill_on_swish.pl
index 3be8999..4ce55aa 100644
--- a/applications/trill_on_swish.pl
+++ b/applications/trill_on_swish.pl
@@ -27,10 +27,11 @@
     the GNU General Public License.
 */
 
-:- module(trill_on_swish_app,
+:- module(swish_app,
 	  [
 	  ]).
 :- use_module(library(pengines)).
+:- use_module(library(option)).
 :- use_module(library(http/http_dispatch)).
 :- use_module(library(http/http_server_files)).
 :- use_module(library(http/http_json)).
@@ -40,8 +41,9 @@
 :- use_module(library(trill_on_swish/page), []).
 :- use_module(library(trill_on_swish/storage)).
 :- use_module(library(trill_on_swish/include)).
-:- use_module(library(trill_on_swish/csv)).
+:- use_module(library(trill_on_swish/swish_csv)).
 :- use_module(library(trill_on_swish/examples)).
+:- use_module(library(trill_on_swish/profiles)).
 :- use_module(library(trill_on_swish/help)).
 :- use_module(library(trill_on_swish/highlight)).
 :- use_module(library(trill_on_swish/markdown)).
@@ -53,8 +55,9 @@
 		 *	       PATHS		*
 		 *******************************/
 
-http:location(trill_on_swish, root(trill_on_swish), []).
+http:location(swish, root(trill_on_swish), []).
 
+user:file_search_path(swish, cp_application(cpack/trill_on_swish)).
 user:file_search_path(render, library(trill_on_swish/render)).
 
 
@@ -63,13 +66,13 @@ user:file_search_path(render, library(trill_on_swish/render)).
 		 *******************************/
 
 :- multifile
-	trill_on_swish_config:config/2,
-	trill_on_swish_config:source_alias/2.
+	swish_config:config/2,
+	swish_config:source_alias/2.
 
-%%	trill_on_swish_config:config(?Config, ?Value) is nondet.
+%%	swish_config:config(?Config, ?Value) is nondet.
 %
 %	All solutions of this predicate are  available in the JavaScript
-%	object config.trill_on_swish.Config. Config must be an  atom that is also
+%	object config.swish.Config. Config must be an  atom that is also
 %	a valid JavaScript identifier. Value  must   be  a value that is
 %	valid for json_write_dict/2. Most configurations  are also saved
 %	in the application preferences. These   are  marked [P]. Defined
@@ -90,14 +93,21 @@ user:file_search_path(render, library(trill_on_swish/render)).
 %        only running queries and saving files is restricted. Note
 %        that this flag has no effect if no authentication module is
 %        loaded.
-
-trill_on_swish_config:config(show_beware,    false).
-trill_on_swish_config:config(tabled_results, false).
-trill_on_swish_config:config(application,    trill_on_swish).
-trill_on_swish_config:config(csv_formats,    [rdf, prolog]).
-trill_on_swish_config:config(public_access,  true).
-
-%%     trill_on_swish_config:source_alias(Alias, Options) is nondet.
+%        - ping
+%        Ping pengine status every N seconds.  Updates sparkline
+%        chart with stack usage.
+%         - nb_eval_script
+%         Evaluate scripts in HTML cells of notebooks?
+
+swish_config:config(show_beware,    false).
+swish_config:config(tabled_results, false).
+swish_config:config(application,    swish).
+swish_config:config(csv_formats,    [rdf, prolog]).
+swish_config:config(public_access,  true).
+swish_config:config(ping,           10).
+swish_config:config(notebook,       _{eval_script: true}).
+
+%%     swish_config:source_alias(Alias, Options) is nondet.
 %
 %      Specify access for files below a given _alias_. Options define
 %
@@ -113,9 +123,11 @@ trill_on_swish_config:config(public_access,  true).
 		 *	        CSV		*
 		 *******************************/
 
-:- multifile trill_on_swish_csv:write_answers/2.
+:- multifile
+	swish_csv:write_answers/2,
+	swish_csv:write_answers/3.
 
-trill_on_swish_csv:write_answers(Answers, VarTerm) :-
+swish_csv:write_answers(Answers, VarTerm) :-
         Answers = [H|_],
         functor(H, rdf, _), !,
         sparql_write_csv_result(
@@ -123,6 +135,33 @@ trill_on_swish_csv:write_answers(Answers, VarTerm) :-
             select(VarTerm, Answers),
             []).
 
+swish_csv:write_answers(Answers, VarTerm, Options) :-
+        Answers = [H|_],
+        functor(H, rdf, _),
+	option(page(1), Options), !,
+        sparql_write_csv_result(
+            current_output,
+            select(VarTerm, Answers),
+            [ bnode_state(_-BNodes)
+	    ]),
+	nb_setval(rdf_csv_bnodes, BNodes).
+swish_csv:write_answers(Answers, VarTerm, Options) :-
+        Answers = [H|_],
+        functor(H, rdf, _),
+	option(page(Page), Options),
+	Page > 1, !,
+	nb_getval(rdf_csv_bnodes, BNodes0),
+        sparql_write_csv_result(
+            current_output,
+            select(VarTerm, Answers),
+            [ http_header(false),
+	      header_row(false),
+	      bnode_state(BNodes0-BNodes)
+	    ]),
+	nb_setval(rdf_csv_bnodes, BNodes).
+swish_csv:write_answers(Answers, VarTerm, _Options) :-
+	swish_csv:write_answers(Answers, VarTerm).
+
 
                  /*******************************
                  *   CREATE SWISH APPLICATION   *
@@ -131,17 +170,18 @@ trill_on_swish_csv:write_answers(Answers, VarTerm) :-
 :- multifile
 	pengines:prepare_module/3.
 
-:- pengine_application(trill_on_swish).
-:- use_rendering(trill_on_swish:rdf).
-:- use_module(trill_on_swish:library(trill_on_swish/render)).
-:- use_module(trill_on_swish:library(trill_on_swish/trace)).
-:- use_module(trill_on_swish:library(pengines_io)).
-:- use_module(trill_on_swish:library(semweb/rdf_db)).
-:- use_module(trill_on_swish:library(semweb/rdfs)).
-:- use_module(trill_on_swish:library(semweb/rdf_optimise)).
-:- use_module(trill_on_swish:library(semweb/rdf_litindex)).
-:- use_module(trill_on_swish:library(aggregate)).
-pengines:prepare_module(Module, trill_on_swish, _Options) :-
+:- pengine_application(swish).
+:- use_rendering(swish:rdf).
+:- use_module(swish:library(trill_on_swish/render)).
+:- use_module(swish:library(trill_on_swish/trace)).
+:- use_module(swish:library(pengines_io)).
+:- use_module(swish:library(semweb/rdf_db)).
+:- use_module(swish:library(semweb/rdfs)).
+:- use_module(swish:library(semweb/rdf_optimise)).
+:- use_module(swish:library(semweb/rdf_litindex)).
+:- use_module(swish:library(solution_sequences)).
+:- use_module(swish:library(aggregate)).
+pengines:prepare_module(Module, swish, _Options) :-
 	pengines_io:pengine_bind_io_to_html(Module).
 
 % Libraries that are nice to have in SWISH, but cannot be loaded
@@ -150,6 +190,9 @@ pengines:prepare_module(Module, trill_on_swish, _Options) :-
 
 :- use_module(library(clpfd), []).
 :- use_module(library(clpb), []).
+:- if(exists_source(library(semweb/rdf11))).
+:- use_module(library(semweb/rdf11), []).
+:- endif.
 
 % rendering libraries
 
@@ -157,3 +200,5 @@ pengines:prepare_module(Module, trill_on_swish, _Options) :-
 :- use_module(library(trill_on_swish/render/rdf),      []).
 :- use_module(library(trill_on_swish/render/graphviz), []).
 :- use_module(library(trill_on_swish/render/c3),	      []).
+
+:- use_module(library(trill)).
diff --git a/client/trill_on_swish-ask.sh b/client/trill_on_swish-ask.sh
deleted file mode 100755
index d009dd5..0000000
--- a/client/trill_on_swish-ask.sh
+++ /dev/null
@@ -1,86 +0,0 @@
-#!/bin/bash
-#
-# Ask information from a Pengines/SWISH server from the shell.
-#
-# This program allows you to download query  results from a SWISH server
-# as CSV data.
-
-server=${SWISH_SERVER-http://localhost:3020}
-srctext=
-format=${SWISH_FORMAT-rdf}
-program=$(basename $0)
-
-usage()
-{
-cat << _EOM_
-Usage: $program "[--server=URL] [--format=rdf|prolog]" file.pl ... projection query
-
-Where
-
-  - server is by default "$server".  Environment: SWISH_SERVER
-  - format is by default "$format".  Environment: SWISH_FORMAT
-  - file.pl ... are files saved in SWISH.  Zero or more files are allowed
-  - projection is a comma-separated list of Prolog variables that define
-    the CSV columns.
-  - query is a Prolog goal using the variables from projection.
-
-For example
-
-  $program X 'X is 1<<100'
-  X
-  1267650600228229401496703205376
-
-  $program factbook.pl Code,Country 'country(Country,Code)'
-  Code,Country
-  af,http://www4.wiwiss.fu-berlin.de/factbook/resource/Afghanistan
-  ax,http://www4.wiwiss.fu-berlin.de/factbook/resource/Akrotiri
-  ...
-_EOM_
-}
-
-done=false
-while [ $done = false ]; do
-    case "$1" in
-        --server=*)
-            server=$(echo $1 | sed 's/.*=//')
-            shift
-            ;;
-	--format=*)
-	    format=$(echo $1 | sed 's/.*=//')
-	    case "$format" in
-	        rdf|prolog)
-		    ;;
-		*)
-		    usage
-		    exit 1
-		    ;;
-	    esac
-            shift
-            ;;
-	*.pl)
-            script=$(echo $1 | sed 's/.*=//')
-	    srctext+=":- include('$script'). "
-	    shift
-	    ;;
-	*)
-	    done=true
-	    ;;
-    esac
-done
-
-vars="$1"
-query="$2"
-
-if [ -z "$vars" -o -z "$query" ]; then
-  usage
-  exit 1
-fi
-
-curl -s \
-     -d ask="$query" \
-     -d template="$format($vars)" \
-     -d application="swish" \
-     -d src_text="$srctext" \
-     -d format=csv \
-     -d chunk=100000000 \
-     $server/pengine/create
diff --git a/config-available/trill_on_swish.pl b/config-available/trill_on_swish.pl
index 4b5f7c3..e27586a 100644
--- a/config-available/trill_on_swish.pl
+++ b/config-available/trill_on_swish.pl
@@ -1,4 +1,4 @@
-:- module(conf_trill_on_swish, []).
+:- module(conf_swish, []).
 :- use_module(cliopatria(hooks)).
 
 /** <module> Add Prolog interaction to ClioPatria
@@ -6,30 +6,34 @@
 
 :- multifile
 	user:file_search_path/2,
-	trill_on_swish_config:config/2.
+	swish_config:config/2.
 
-% tell trill_on_swish where to find its parts.   The last clause allows adding an
+% tell SWISH where to find its parts.   The last clause allows adding an
 % =examples=  directory  in  the  main   directory  holding  application
 % specific examples.
 
-user:file_search_path(trill_on_swish_web, web(.)).
+user:file_search_path(swish_web, web(.)).
 user:file_search_path(example,   cpacks(trill_on_swish/examples)).
-%user:file_search_path(example,	 examples).
+user:file_search_path(example,	 examples).
 
-% Load trill_on_swish.  You need this.
+% Load swish.  You need this.
 :- use_module(applications(trill_on_swish)).
 % Load the authentication hook. When loaded, ClioPatria users with admin
-% rights can use trill_on_swish without sandboxing security
+% rights can use SWISH without sandboxing security
 :- use_module(library(trill_on_swish/cp_authenticate)).
-% Enable logging of trill_on_swish queries and sources if HTTP logging is enabled
+% Enable logging of SWISH queries and sources if HTTP logging is enabled
 :- use_module(library(trill_on_swish/logging)).
+% Make side-effect-free RDF predicates safe
+:- if(exists_source(library(semweb/rdf_sandbox))).
+:- use_module(library(semweb/rdf_sandbox)).
+:- endif.
 
 % Allows users to extend the Examples menu by ticking the Example
 % checkbox.
-trill_on_swish_config:config(community_examples, false).
+swish_config:config(community_examples, true).
 
 %%      cliopatria:menu_item(-Item, -Label) is nondet.
 %
-%       Add trill_on_swish to the Query menu.
+%       Add TRILL on SWISH to the Query menu.
 
-cliopatria:menu_item(300=query/trill_on_swish, 'TRILL on SWISH Prolog shell').
+cliopatria:menu_item(300=query/swish, 'TRILL on SWISH Prolog shell').
diff --git a/examples/BRCA.owl b/examples/BRCA.owl
deleted file mode 100644
index 0d5747f..0000000
--- a/examples/BRCA.owl
+++ /dev/null
@@ -1,2474 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-Model of risk factor of breast cancer, from
-Klinov, P., Parsia, B.: Optimization and evaluation of reasoning in probabilistic
-description logic: Towards a systematic approach. In: International Semantic Web
-Conference. LNCS, vol. 5318, pp. 213–228. Springer (2008)
-
-/** <examples>
-
-?- prob_instanceOf(\'cancer_ra:WomanUnderLifetimeBRCRisk\',\'cancer_ra:Helen\',Prob).
-?- instanceOf(\'cancer_ra:WomanUnderLifetimeBRCRisk\',\'cancer_ra:Helen\',ListExpl).
-
-?- prob_sub_class(\'WomanAged3040\',\'WomanUnderLifetimeBRCRisk\',Prob).
-?- sub_class(\'WomanAged3040\',\'WomanUnderLifetimeBRCRisk\',ListExpl).
-
-*/
--->
-
-<!DOCTYPE rdf:RDF [
-    <!ENTITY owl "http://www.w3.org/2002/07/owl#" >
-    <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
-    <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
-    <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
-    <!ENTITY cancer_ra "http://clarkparsia.com/pronto/cancer_ra.owl#" >
-    <!ENTITY bundle "https://sites.google.com/a/unife.it/ml/bundle#" >
-    <!ENTITY disponte "https://sites.google.com/a/unife.it/ml/disponte#" >
-]>
-
-
-<rdf:RDF xmlns="&cancer_ra;"
-     xml:base="http://clarkparsia.com/pronto/cancer_ra.owl#"
-     xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
-     xmlns:cancer_ra="http://clarkparsia.com/pronto/cancer_ra.owl#"
-     xmlns:owl="http://www.w3.org/2002/07/owl#"
-     xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
-     xmlns:bundle="https://sites.google.com/a/unife.it/ml/bundle#"
-     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-     xmlns:disponte="https://sites.google.com/a/unife.it/ml/disponte#">
-    <owl:Ontology rdf:about="file:examples/brc/ontologies/cancer_ra.owl"/>
-    
-
-
-    <!-- 
-    ///////////////////////////////////////////////////////////////////////////////////////
-    //
-    // Annotation properties
-    //
-    ///////////////////////////////////////////////////////////////////////////////////////
-     -->
-
-    
-
-
-    <!-- https://sites.google.com/a/unife.it/ml/disponte#probability -->
-
-    <owl:AnnotationProperty rdf:about="&disponte;probability"/>
-    
-
-
-    <!-- 
-    ///////////////////////////////////////////////////////////////////////////////////////
-    //
-    // Object Properties
-    //
-    ///////////////////////////////////////////////////////////////////////////////////////
-     -->
-
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#hasAge -->
-
-    <owl:ObjectProperty rdf:about="&cancer_ra;hasAge">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:range rdf:resource="&cancer_ra;Age"/>
-        <rdfs:domain rdf:resource="&cancer_ra;Person"/>
-        <rdfs:subPropertyOf rdf:resource="&cancer_ra;hasRiskFactor"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#hasGender -->
-
-    <owl:ObjectProperty rdf:about="&cancer_ra;hasGender">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:range rdf:resource="&cancer_ra;Gender"/>
-        <rdfs:domain rdf:resource="&cancer_ra;Person"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#hasRace -->
-
-    <owl:ObjectProperty rdf:about="&cancer_ra;hasRace">
-        <rdfs:range rdf:resource="&cancer_ra;Ethnicity"/>
-        <rdfs:domain rdf:resource="&cancer_ra;Person"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#hasRisk -->
-
-    <owl:ObjectProperty rdf:about="&cancer_ra;hasRisk">
-        <rdfs:domain rdf:resource="&cancer_ra;Person"/>
-        <rdfs:range rdf:resource="&cancer_ra;Risk"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#hasRiskFactor -->
-
-    <owl:ObjectProperty rdf:about="&cancer_ra;hasRiskFactor">
-        <rdfs:domain rdf:resource="&cancer_ra;Person"/>
-        <rdfs:range rdf:resource="&cancer_ra;RiskFactor"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#relatedToDisease -->
-
-    <owl:ObjectProperty rdf:about="&cancer_ra;relatedToDisease">
-        <rdfs:range rdf:resource="&cancer_ra;Disease"/>
-        <rdfs:domain rdf:resource="&cancer_ra;RiskFactor"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#riskCategory -->
-
-    <owl:ObjectProperty rdf:about="&cancer_ra;riskCategory">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:domain rdf:resource="&cancer_ra;Risk"/>
-        <rdfs:range rdf:resource="&cancer_ra;RiskCategory"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#riskOf -->
-
-    <owl:ObjectProperty rdf:about="&cancer_ra;riskOf">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:range rdf:resource="&cancer_ra;Disease"/>
-        <rdfs:domain rdf:resource="&cancer_ra;RiskType"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#riskType -->
-
-    <owl:ObjectProperty rdf:about="&cancer_ra;riskType">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:domain rdf:resource="&cancer_ra;Risk"/>
-        <rdfs:range rdf:resource="&cancer_ra;RiskType"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#willDevelop -->
-
-    <owl:ObjectProperty rdf:about="&cancer_ra;willDevelop">
-        <rdfs:range rdf:resource="&cancer_ra;Disease"/>
-        <rdfs:domain rdf:resource="&cancer_ra;Person"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#willDevelopInLongTerm -->
-
-    <owl:ObjectProperty rdf:about="&cancer_ra;willDevelopInLongTerm">
-        <rdfs:range rdf:resource="&cancer_ra;Disease"/>
-        <rdfs:domain rdf:resource="&cancer_ra;Person"/>
-        <rdfs:subPropertyOf rdf:resource="&cancer_ra;willDevelop"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#willDevelopInShortTerm -->
-
-    <owl:ObjectProperty rdf:about="&cancer_ra;willDevelopInShortTerm">
-        <rdfs:range rdf:resource="&cancer_ra;Disease"/>
-        <rdfs:domain rdf:resource="&cancer_ra;Person"/>
-        <rdfs:subPropertyOf rdf:resource="&cancer_ra;willDevelop"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- 
-    ///////////////////////////////////////////////////////////////////////////////////////
-    //
-    // Data properties
-    //
-    ///////////////////////////////////////////////////////////////////////////////////////
-     -->
-
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#increaseFactor -->
-
-    <owl:DatatypeProperty rdf:about="&cancer_ra;increaseFactor">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:domain rdf:resource="&cancer_ra;RelativeRiskCategory"/>
-        <rdfs:range rdf:resource="&xsd;decimal"/>
-    </owl:DatatypeProperty>
-    
-
-
-    <!-- http://www.w3.org/2006/12/owl11#maxExclusive -->
-
-    <owl:DatatypeProperty rdf:about="http://www.w3.org/2006/12/owl11#maxExclusive"/>
-    
-
-
-    <!-- http://www.w3.org/2006/12/owl11#minExclusive -->
-
-    <owl:DatatypeProperty rdf:about="http://www.w3.org/2006/12/owl11#minExclusive"/>
-    
-
-
-    <!-- 
-    ///////////////////////////////////////////////////////////////////////////////////////
-    //
-    // Classes
-    //
-    ///////////////////////////////////////////////////////////////////////////////////////
-     -->
-
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#AbsoluteBRCRisk -->
-
-    <owl:Class rdf:about="&cancer_ra;AbsoluteBRCRisk">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;BRCRisk"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;riskCategory"/>
-                        <owl:allValuesFrom rdf:resource="&cancer_ra;AbsoluteRiskCategory"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;BRCRisk"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#AbsoluteRiskCategory -->
-
-    <owl:Class rdf:about="&cancer_ra;AbsoluteRiskCategory">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;RiskCategory"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#AfricanAmerican -->
-
-    <owl:Class rdf:about="&cancer_ra;AfricanAmerican">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Ethnicity"/>
-        <owl:disjointWith rdf:resource="&cancer_ra;AshkenaziJew"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#AfricanAmericanWoman -->
-
-    <owl:Class rdf:about="&cancer_ra;AfricanAmericanWoman">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;Woman"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRace"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;AfricanAmerican"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Woman"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#AfterMenopause -->
-
-    <owl:Class rdf:about="&cancer_ra;AfterMenopause">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;KnownFactor"/>
-        <owl:disjointWith rdf:resource="&cancer_ra;BeforeMenopause"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#Age -->
-
-    <owl:Class rdf:about="&cancer_ra;Age">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;KnownFactor"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#Age2030 -->
-
-    <owl:Class rdf:about="&cancer_ra;Age2030">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;AgeUnder50"/>
-        <owl:disjointWith rdf:resource="&cancer_ra;Age3040"/>
-        <owl:disjointWith rdf:resource="&cancer_ra;Age4050"/>
-        <owl:disjointWith rdf:resource="&cancer_ra;Age5060"/>
-        <owl:disjointWith rdf:resource="&cancer_ra;Age6070"/>
-        <owl:disjointWith rdf:resource="&cancer_ra;Age70Plus"/>
-        <owl:disjointWith rdf:resource="&cancer_ra;AgeUnder20"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#Age3040 -->
-
-    <owl:Class rdf:about="&cancer_ra;Age3040">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;AgeUnder50"/>
-        <owl:disjointWith rdf:resource="&cancer_ra;Age4050"/>
-        <owl:disjointWith rdf:resource="&cancer_ra;Age5060"/>
-        <owl:disjointWith rdf:resource="&cancer_ra;Age6070"/>
-        <owl:disjointWith rdf:resource="&cancer_ra;Age70Plus"/>
-        <owl:disjointWith rdf:resource="&cancer_ra;AgeUnder20"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#Age4050 -->
-
-    <owl:Class rdf:about="&cancer_ra;Age4050">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;AgeUnder50"/>
-        <owl:disjointWith rdf:resource="&cancer_ra;Age5060"/>
-        <owl:disjointWith rdf:resource="&cancer_ra;Age6070"/>
-        <owl:disjointWith rdf:resource="&cancer_ra;Age70Plus"/>
-        <owl:disjointWith rdf:resource="&cancer_ra;AgeUnder20"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#Age5060 -->
-
-    <owl:Class rdf:about="&cancer_ra;Age5060">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Age"/>
-        <owl:disjointWith rdf:resource="&cancer_ra;Age6070"/>
-        <owl:disjointWith rdf:resource="&cancer_ra;Age70Plus"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#Age50Plus -->
-
-    <owl:Class rdf:about="&cancer_ra;Age50Plus">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:unionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;Age5060"/>
-                    <rdf:Description rdf:about="&cancer_ra;Age6070"/>
-                    <rdf:Description rdf:about="&cancer_ra;Age70Plus"/>
-                </owl:unionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Age"/>
-        <owl:disjointWith rdf:resource="&cancer_ra;AgeUnder50"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#Age6070 -->
-
-    <owl:Class rdf:about="&cancer_ra;Age6070">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Age"/>
-        <owl:disjointWith rdf:resource="&cancer_ra;Age70Plus"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#Age70Plus -->
-
-    <owl:Class rdf:about="&cancer_ra;Age70Plus">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Age"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#AgeUnder20 -->
-
-    <owl:Class rdf:about="&cancer_ra;AgeUnder20">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;AgeUnder50"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#AgeUnder50 -->
-
-    <owl:Class rdf:about="&cancer_ra;AgeUnder50">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Age"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#Alcohol -->
-
-    <owl:Class rdf:about="&cancer_ra;Alcohol">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;KnownFactor"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#AshkenaziJew -->
-
-    <owl:Class rdf:about="&cancer_ra;AshkenaziJew">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Ethnicity"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#AshkenaziJewishWoman -->
-
-    <owl:Class rdf:about="&cancer_ra;AshkenaziJewishWoman">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;Woman"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRace"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;AshkenaziJew"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Woman"/>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;WomanWithBRCAMutation"/>
-    </owl:Class>
-    <owl:Axiom>
-        <disponte:probability rdf:datatype="&xsd;decimal">0.025</disponte:probability>
-        <owl:annotatedSource rdf:resource="&cancer_ra;AshkenaziJewishWoman"/>
-        <owl:annotatedTarget rdf:resource="&cancer_ra;WomanWithBRCAMutation"/>
-        <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/>
-    </owl:Axiom>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#AtypicalHyperplasia -->
-
-    <owl:Class rdf:about="&cancer_ra;AtypicalHyperplasia">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;BenignBreastDisease"/>
-        <owl:disjointWith rdf:resource="&cancer_ra;UsualHyperplasia"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#BRCA1Mutation -->
-
-    <owl:Class rdf:about="&cancer_ra;BRCA1Mutation">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;BRCAMutation"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#BRCA2Mutation -->
-
-    <owl:Class rdf:about="&cancer_ra;BRCA2Mutation">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;BRCAMutation"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#BRCAMutation -->
-
-    <owl:Class rdf:about="&cancer_ra;BRCAMutation">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;InferredFactor"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#BRCRType -->
-
-    <owl:Class rdf:about="&cancer_ra;BRCRType">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;RiskType"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;riskOf"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;BreastCancer"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#BRCRisk -->
-
-    <owl:Class rdf:about="&cancer_ra;BRCRisk">
-        <rdfs:subClassOf>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;Risk"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;riskType"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;BRCRType"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </rdfs:subClassOf>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#BeforeMenopause -->
-
-    <owl:Class rdf:about="&cancer_ra;BeforeMenopause">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;KnownFactor"/>
-        <owl:disjointWith rdf:resource="&cancer_ra;LateMenopause"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#BenignBreastDisease -->
-
-    <owl:Class rdf:about="&cancer_ra;BenignBreastDisease">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;InferredFactor"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#BirthControlPills -->
-
-    <owl:Class rdf:about="&cancer_ra;BirthControlPills">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;KnownFactor"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#BreastCancer -->
-
-    <owl:Class rdf:about="&cancer_ra;BreastCancer">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Cancer"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#Cancer -->
-
-    <owl:Class rdf:about="&cancer_ra;Cancer">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Disease"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#CarcinomaInSitu -->
-
-    <owl:Class rdf:about="&cancer_ra;CarcinomaInSitu">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;InferredFactor"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#Disease -->
-
-    <owl:Class rdf:about="&cancer_ra;Disease">
-        <rdfs:subClassOf rdf:resource="&owl;Thing"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#EarlyFirstChild -->
-
-    <owl:Class rdf:about="&cancer_ra;EarlyFirstChild">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;KnownFactor"/>
-        <owl:disjointWith rdf:resource="&cancer_ra;LateFirstChild"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#EarlyMenopause -->
-
-    <owl:Class rdf:about="&cancer_ra;EarlyMenopause">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;KnownFactor"/>
-        <owl:disjointWith rdf:resource="&cancer_ra;LateMenopause"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#Estrogen -->
-
-    <owl:Class rdf:about="&cancer_ra;Estrogen">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;PostmenopausalHormones"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#EstrogenProgestin -->
-
-    <owl:Class rdf:about="&cancer_ra;EstrogenProgestin">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;Estrogen"/>
-                    <rdf:Description rdf:about="&cancer_ra;Progestin"/>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;PostmenopausalHormones"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#EstrogenTestosterone -->
-
-    <owl:Class rdf:about="&cancer_ra;EstrogenTestosterone">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;Estrogen"/>
-                    <rdf:Description rdf:about="&cancer_ra;Testosterone"/>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;PostmenopausalHormones"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#Ethnicity -->
-
-    <owl:Class rdf:about="&cancer_ra;Ethnicity">
-        <rdfs:subClassOf rdf:resource="&owl;Thing"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#FamilyCancerHistory -->
-
-    <owl:Class rdf:about="&cancer_ra;FamilyCancerHistory">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;KnownFactor"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#Female -->
-
-    <owl:Class rdf:about="&cancer_ra;Female">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Gender"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#FirstPeriodBefore12 -->
-
-    <owl:Class rdf:about="&cancer_ra;FirstPeriodBefore12">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;KnownFactor"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#Gender -->
-
-    <owl:Class rdf:about="&cancer_ra;Gender">
-        <rdfs:subClassOf rdf:resource="&owl;Thing"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#HighBoneDensity -->
-
-    <owl:Class rdf:about="&cancer_ra;HighBoneDensity">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;InferredFactor"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#HighBreastDensity -->
-
-    <owl:Class rdf:about="&cancer_ra;HighBreastDensity">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;InferredFactor"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#HighLevelOfEstrogen -->
-
-    <owl:Class rdf:about="&cancer_ra;HighLevelOfEstrogen">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;InferredFactor"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#IncreasedBRCRisk -->
-
-    <owl:Class rdf:about="&cancer_ra;IncreasedBRCRisk">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;RelativeBRCRisk"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;riskCategory"/>
-                        <owl:allValuesFrom rdf:resource="&cancer_ra;IncreasedRiskCategory"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;RelativeBRCRisk"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#IncreasedRiskCategory -->
-
-    <owl:Class rdf:about="&cancer_ra;IncreasedRiskCategory">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;RelativeRiskCategory"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#InferredFactor -->
-
-    <owl:Class rdf:about="&cancer_ra;InferredFactor">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;RiskFactor"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#KnownFactor -->
-
-    <owl:Class rdf:about="&cancer_ra;KnownFactor">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;RiskFactor"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#LackOfExercise -->
-
-    <owl:Class rdf:about="&cancer_ra;LackOfExercise">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;KnownFactor"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#LateFirstChild -->
-
-    <owl:Class rdf:about="&cancer_ra;LateFirstChild">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;KnownFactor"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#LateMenopause -->
-
-    <owl:Class rdf:about="&cancer_ra;LateMenopause">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;KnownFactor"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#LifetimeBRCRisk -->
-
-    <owl:Class rdf:about="&cancer_ra;LifetimeBRCRisk">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;AbsoluteBRCRisk"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#Male -->
-
-    <owl:Class rdf:about="&cancer_ra;Male">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Gender"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#ModerateDecrease -->
-
-    <owl:Class rdf:about="&cancer_ra;ModerateDecrease">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;ReducedRiskCategory"/>
-        <owl:disjointWith rdf:resource="&cancer_ra;StrongDecrease"/>
-        <owl:disjointWith rdf:resource="&cancer_ra;WeakDecrease"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#ModerateIncrease -->
-
-    <owl:Class rdf:about="&cancer_ra;ModerateIncrease">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;IncreasedRiskCategory"/>
-        <owl:disjointWith rdf:resource="&cancer_ra;StrongIncrease"/>
-        <owl:disjointWith rdf:resource="&cancer_ra;WeakIncrease"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#ModeratelyIncreasedBRCRisk -->
-
-    <owl:Class rdf:about="&cancer_ra;ModeratelyIncreasedBRCRisk">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;IncreasedBRCRisk"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;riskCategory"/>
-                        <owl:allValuesFrom rdf:resource="&cancer_ra;ModerateIncrease"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;IncreasedBRCRisk"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#ModeratelyReducedBRCRisk -->
-
-    <owl:Class rdf:about="&cancer_ra;ModeratelyReducedBRCRisk">
-        <owl:equivalentClass>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="&cancer_ra;riskCategory"/>
-                <owl:allValuesFrom rdf:resource="&cancer_ra;ModerateDecrease"/>
-            </owl:Restriction>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;ReducedBRCRisk"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#MotherAffected -->
-
-    <owl:Class rdf:about="&cancer_ra;MotherAffected">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;FamilyCancerHistory"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#MotherAffectedAfterAge60 -->
-
-    <owl:Class rdf:about="&cancer_ra;MotherAffectedAfterAge60">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;MotherAffected"/>
-        <owl:disjointWith rdf:resource="&cancer_ra;MotherAffectedBeforeAge60"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#MotherAffectedBeforeAge60 -->
-
-    <owl:Class rdf:about="&cancer_ra;MotherAffectedBeforeAge60">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;MotherAffected"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#NoBreastfeeding -->
-
-    <owl:Class rdf:about="&cancer_ra;NoBreastfeeding">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;KnownFactor"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#NoChildren -->
-
-    <owl:Class rdf:about="&cancer_ra;NoChildren">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;NoBreastfeeding"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#Overweight -->
-
-    <owl:Class rdf:about="&cancer_ra;Overweight">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;KnownFactor"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#OverweightWoman -->
-
-    <owl:Class rdf:about="&cancer_ra;OverweightWoman">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;Woman"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRiskFactor"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;Overweight"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Woman"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#Person -->
-
-    <owl:Class rdf:about="&cancer_ra;Person">
-        <rdfs:subClassOf rdf:resource="&owl;Thing"/>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="&cancer_ra;hasGender"/>
-                <owl:someValuesFrom rdf:resource="&cancer_ra;Gender"/>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#PersonUnderRisk -->
-
-    <owl:Class rdf:about="&cancer_ra;PersonUnderRisk">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;Person"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRisk"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;Risk"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#PersonalBRCHistory -->
-
-    <owl:Class rdf:about="&cancer_ra;PersonalBRCHistory">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;KnownFactor"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#PostmenopausalHormones -->
-
-    <owl:Class rdf:about="&cancer_ra;PostmenopausalHormones">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;KnownFactor"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#PostmenopausalWoman -->
-
-    <owl:Class rdf:about="&cancer_ra;PostmenopausalWoman">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;Woman"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRiskFactor"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;AfterMenopause"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Woman"/>
-        <owl:disjointWith rdf:resource="&cancer_ra;PremenopausalWoman"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#PostmenopausalWomanTakingEstrogen -->
-
-    <owl:Class rdf:about="&cancer_ra;PostmenopausalWomanTakingEstrogen">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;PostmenopausalWoman"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRiskFactor"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;Estrogen"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;WomanUnderModeratelyIncreasedBRCRisk"/>
-    </owl:Class>
-    <owl:Axiom>
-        <disponte:probability rdf:datatype="&xsd;decimal">0.67</disponte:probability>
-        <owl:annotatedSource rdf:resource="&cancer_ra;PostmenopausalWomanTakingEstrogen"/>
-        <owl:annotatedTarget rdf:resource="&cancer_ra;WomanUnderModeratelyIncreasedBRCRisk"/>
-        <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/>
-    </owl:Axiom>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#PostmenopausalWomanTakingEstrogenAndProgestin -->
-
-    <owl:Class rdf:about="&cancer_ra;PostmenopausalWomanTakingEstrogenAndProgestin">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRiskFactor"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;Estrogen"/>
-                    </owl:Restriction>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRiskFactor"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;Progestin"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;PostmenopausalWoman"/>
-    </owl:Class>
-    <owl:Axiom>
-        <disponte:probability rdf:datatype="&xsd;decimal">0.35</disponte:probability>
-        <owl:annotatedTarget rdf:resource="&cancer_ra;PostmenopausalWoman"/>
-        <owl:annotatedSource rdf:resource="&cancer_ra;PostmenopausalWomanTakingEstrogenAndProgestin"/>
-        <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/>
-    </owl:Axiom>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#PostmenopausalWomanTakingEstrogenAndTestosterone -->
-
-    <owl:Class rdf:about="&cancer_ra;PostmenopausalWomanTakingEstrogenAndTestosterone">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;PostmenopausalWoman"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRiskFactor"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;Estrogen"/>
-                    </owl:Restriction>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRiskFactor"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;Testosterone"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;PostmenopausalWoman"/>
-    </owl:Class>
-    <owl:Axiom>
-        <disponte:probability rdf:datatype="&xsd;decimal">0.91</disponte:probability>
-        <owl:annotatedTarget rdf:resource="&cancer_ra;PostmenopausalWoman"/>
-        <owl:annotatedSource rdf:resource="&cancer_ra;PostmenopausalWomanTakingEstrogenAndTestosterone"/>
-        <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/>
-    </owl:Axiom>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#PostmenopausalWomanTakingProgestin -->
-
-    <owl:Class rdf:about="&cancer_ra;PostmenopausalWomanTakingProgestin">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;PostmenopausalWoman"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRiskFactor"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;Progestin"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-    </owl:Class>
-    <owl:Axiom>
-        <disponte:probability rdf:datatype="&xsd;decimal">0.13</disponte:probability>
-        <owl:annotatedSource rdf:resource="&cancer_ra;PostmenopausalWomanTakingProgestin"/>
-        <owl:annotatedProperty rdf:resource="&owl;equivalentClass"/>
-        <owl:annotatedTarget>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;PostmenopausalWoman"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRiskFactor"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;Progestin"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:annotatedTarget>
-    </owl:Axiom>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#PostmenopausalWomanTakingTestosterone -->
-
-    <owl:Class rdf:about="&cancer_ra;PostmenopausalWomanTakingTestosterone">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;PostmenopausalWoman"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRiskFactor"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;Testosterone"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-    </owl:Class>
-    <owl:Axiom>
-        <disponte:probability rdf:datatype="&xsd;decimal">0.85</disponte:probability>
-        <owl:annotatedSource rdf:resource="&cancer_ra;PostmenopausalWomanTakingTestosterone"/>
-        <owl:annotatedProperty rdf:resource="&owl;equivalentClass"/>
-        <owl:annotatedTarget>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;PostmenopausalWoman"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRiskFactor"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;Testosterone"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:annotatedTarget>
-    </owl:Axiom>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#PostmenopausalWomanWithHighLevelOfEstrogen -->
-
-    <owl:Class rdf:about="&cancer_ra;PostmenopausalWomanWithHighLevelOfEstrogen">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;PostmenopausalWoman"/>
-                    <rdf:Description rdf:about="&cancer_ra;WomanWithHighLevelOfEstrogen"/>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Woman"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#PremenopausalWoman -->
-
-    <owl:Class rdf:about="&cancer_ra;PremenopausalWoman">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;Woman"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRiskFactor"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;BeforeMenopause"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Woman"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#Progestin -->
-
-    <owl:Class rdf:about="&cancer_ra;Progestin">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;PostmenopausalHormones"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#RadiationExposureDuringYouth -->
-
-    <owl:Class rdf:about="&cancer_ra;RadiationExposureDuringYouth">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;KnownFactor"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#ReducedBRCRisk -->
-
-    <owl:Class rdf:about="&cancer_ra;ReducedBRCRisk">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;RelativeBRCRisk"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;riskCategory"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;ReducedRiskCategory"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;RelativeBRCRisk"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#ReducedRiskCategory -->
-
-    <owl:Class rdf:about="&cancer_ra;ReducedRiskCategory">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;RelativeRiskCategory"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#RelativeBRCRisk -->
-
-    <owl:Class rdf:about="&cancer_ra;RelativeBRCRisk">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;BRCRisk"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;riskCategory"/>
-                        <owl:allValuesFrom rdf:resource="&cancer_ra;RelativeRiskCategory"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;BRCRisk"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#RelativeRiskCategory -->
-
-    <owl:Class rdf:about="&cancer_ra;RelativeRiskCategory">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;RiskCategory"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#Risk -->
-
-    <owl:Class rdf:about="&cancer_ra;Risk">
-        <rdfs:subClassOf rdf:resource="&owl;Thing"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#RiskCategory -->
-
-    <owl:Class rdf:about="&cancer_ra;RiskCategory">
-        <rdfs:subClassOf rdf:resource="&owl;Thing"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#RiskFactor -->
-
-    <owl:Class rdf:about="&cancer_ra;RiskFactor">
-        <rdfs:subClassOf rdf:resource="&owl;Thing"/>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="&cancer_ra;relatedToDisease"/>
-                <owl:allValuesFrom rdf:resource="&cancer_ra;Disease"/>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#RiskType -->
-
-    <owl:Class rdf:about="&cancer_ra;RiskType">
-        <rdfs:subClassOf>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&owl;Thing"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;riskOf"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;Disease"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </rdfs:subClassOf>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#SeniorWomanWithMotherBRCAffected -->
-
-    <owl:Class rdf:about="&cancer_ra;SeniorWomanWithMotherBRCAffected">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <owl:Class>
-                        <owl:intersectionOf rdf:parseType="Collection">
-                            <rdf:Description rdf:about="&cancer_ra;Woman"/>
-                            <owl:Restriction>
-                                <owl:onProperty rdf:resource="&cancer_ra;hasRiskFactor"/>
-                                <owl:someValuesFrom rdf:resource="&cancer_ra;MotherAffected"/>
-                            </owl:Restriction>
-                        </owl:intersectionOf>
-                    </owl:Class>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasAge"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;Age50Plus"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Woman"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#ShortTermBRCRisk -->
-
-    <owl:Class rdf:about="&cancer_ra;ShortTermBRCRisk">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;AbsoluteBRCRisk"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#StrongDecrease -->
-
-    <owl:Class rdf:about="&cancer_ra;StrongDecrease">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;ReducedRiskCategory"/>
-        <owl:disjointWith rdf:resource="&cancer_ra;WeakDecrease"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#StrongIncrease -->
-
-    <owl:Class rdf:about="&cancer_ra;StrongIncrease">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;IncreasedRiskCategory"/>
-        <owl:disjointWith rdf:resource="&cancer_ra;WeakIncrease"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#StronglyIncreasedBRCRisk -->
-
-    <owl:Class rdf:about="&cancer_ra;StronglyIncreasedBRCRisk">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;IncreasedBRCRisk"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;riskCategory"/>
-                        <owl:allValuesFrom rdf:resource="&cancer_ra;StrongIncrease"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;IncreasedBRCRisk"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#StronglyReducedBRCRisk -->
-
-    <owl:Class rdf:about="&cancer_ra;StronglyReducedBRCRisk">
-        <owl:equivalentClass>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="&cancer_ra;riskCategory"/>
-                <owl:allValuesFrom rdf:resource="&cancer_ra;StrongDecrease"/>
-            </owl:Restriction>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;ReducedBRCRisk"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#Testosterone -->
-
-    <owl:Class rdf:about="&cancer_ra;Testosterone">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;PostmenopausalHormones"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#TwoImmediateRelativesAffected -->
-
-    <owl:Class rdf:about="&cancer_ra;TwoImmediateRelativesAffected">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;FamilyCancerHistory"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#UsualHyperplasia -->
-
-    <owl:Class rdf:about="&cancer_ra;UsualHyperplasia">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;BenignBreastDisease"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WeakDecrease -->
-
-    <owl:Class rdf:about="&cancer_ra;WeakDecrease">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;ReducedRiskCategory"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WeakIncrease -->
-
-    <owl:Class rdf:about="&cancer_ra;WeakIncrease">
-        <rdfs:subClassOf rdf:resource="&cancer_ra;IncreasedRiskCategory"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WeakelyIncreasedBRCRisk -->
-
-    <owl:Class rdf:about="&cancer_ra;WeakelyIncreasedBRCRisk">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;IncreasedBRCRisk"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;riskCategory"/>
-                        <owl:allValuesFrom rdf:resource="&cancer_ra;WeakIncrease"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;IncreasedBRCRisk"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WeakelyReducedBRCRisk -->
-
-    <owl:Class rdf:about="&cancer_ra;WeakelyReducedBRCRisk">
-        <owl:equivalentClass>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="&cancer_ra;riskCategory"/>
-                <owl:allValuesFrom rdf:resource="&cancer_ra;WeakDecrease"/>
-            </owl:Restriction>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;ReducedBRCRisk"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#Woman -->
-
-    <owl:Class rdf:about="&cancer_ra;Woman">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;Person"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasGender"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;Female"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;WomanUnderLifetimeBRCRisk"/>
-        <rdfs:subClassOf rdf:resource="&owl;Thing"/>
-    </owl:Class>
-    <owl:Axiom>
-        <disponte:probability rdf:datatype="&xsd;decimal">0.123</disponte:probability>
-        <owl:annotatedSource rdf:resource="&cancer_ra;Woman"/>
-        <owl:annotatedTarget rdf:resource="&cancer_ra;WomanUnderLifetimeBRCRisk"/>
-        <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/>
-    </owl:Axiom>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanAbusingAlcohol -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanAbusingAlcohol">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;Woman"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRiskFactor"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;Alcohol"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Woman"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanAged2030 -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanAged2030">
-        <owl:equivalentClass>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="&cancer_ra;hasAge"/>
-                <owl:someValuesFrom rdf:resource="&cancer_ra;Age2030"/>
-            </owl:Restriction>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Woman"/>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;WomanUnderShortTermBRCRisk"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanAged3040 -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanAged3040">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;Woman"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasAge"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;Age3040"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Woman"/>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;WomanUnderShortTermBRCRisk"/>
-    </owl:Class>
-    <owl:Axiom>
-        <disponte:probability rdf:datatype="&xsd;decimal">0.112</disponte:probability>
-        <owl:annotatedSource rdf:resource="&cancer_ra;WomanAged3040"/>
-        <owl:annotatedTarget rdf:resource="&cancer_ra;WomanUnderShortTermBRCRisk"/>
-        <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/>
-    </owl:Axiom>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanAged4050 -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanAged4050">
-        <owl:equivalentClass>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="&cancer_ra;hasAge"/>
-                <owl:someValuesFrom rdf:resource="&cancer_ra;Age4050"/>
-            </owl:Restriction>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Woman"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanAged5060 -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanAged5060">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;Woman"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasAge"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;Age5060"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Woman"/>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;WomanUnderShortTermBRCRisk"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanAged50Plus -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanAged50Plus">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;Woman"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasAge"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;Age50Plus"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanAged6070 -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanAged6070">
-        <owl:equivalentClass>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="&cancer_ra;hasAge"/>
-                <owl:someValuesFrom rdf:resource="&cancer_ra;Age6070"/>
-            </owl:Restriction>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Woman"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanAged70Plus -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanAged70Plus">
-        <owl:equivalentClass>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="&cancer_ra;hasAge"/>
-                <owl:someValuesFrom rdf:resource="&cancer_ra;Age70Plus"/>
-            </owl:Restriction>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Woman"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanAgedUnder20 -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanAgedUnder20">
-        <owl:equivalentClass>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="&cancer_ra;hasAge"/>
-                <owl:someValuesFrom rdf:resource="&cancer_ra;AgeUnder20"/>
-            </owl:Restriction>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Woman"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanAgedUnder50 -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanAgedUnder50">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;Woman"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasAge"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;AgeUnder50"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;WomanWithRiskFactors"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanExposedToRadiationDuringYouth -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanExposedToRadiationDuringYouth">
-        <owl:equivalentClass>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="&cancer_ra;hasRiskFactor"/>
-                <owl:someValuesFrom rdf:resource="&cancer_ra;RadiationExposureDuringYouth"/>
-            </owl:Restriction>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Woman"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanHavingFirstPeriodBefore12 -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanHavingFirstPeriodBefore12">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;Woman"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRiskFactor"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;FirstPeriodBefore12"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Woman"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanLackingExercise -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanLackingExercise">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;Woman"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRiskFactor"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;LackOfExercise"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Woman"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanTakingBirthControlPills -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanTakingBirthControlPills">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;Woman"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRiskFactor"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;BirthControlPills"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Woman"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanTakingEstrogen -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanTakingEstrogen">
-        <owl:equivalentClass>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="&cancer_ra;hasRiskFactor"/>
-                <owl:someValuesFrom rdf:resource="&cancer_ra;Estrogen"/>
-            </owl:Restriction>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Woman"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanTakingPostmenopausalHormones -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanTakingPostmenopausalHormones">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;Woman"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRiskFactor"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;PostmenopausalHormones"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Woman"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanTakingProgestin -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanTakingProgestin">
-        <owl:equivalentClass>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="&cancer_ra;hasRiskFactor"/>
-                <owl:someValuesFrom rdf:resource="&cancer_ra;Progestin"/>
-            </owl:Restriction>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Woman"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanUnderAbsoluteBRCRisk -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanUnderAbsoluteBRCRisk">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;Woman"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRisk"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;AbsoluteBRCRisk"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanUnderBRCRisk -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanUnderBRCRisk">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;Woman"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRisk"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;BRCRisk"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanUnderIncreasedBRCRisk -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanUnderIncreasedBRCRisk">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;WomanUnderBRCRisk"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRisk"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;IncreasedBRCRisk"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <owl:disjointWith rdf:resource="&cancer_ra;WomanUnderReducedBRCRisk"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanUnderLifetimeBRCRisk -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanUnderLifetimeBRCRisk">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;Woman"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRisk"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;LifetimeBRCRisk"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;WomanUnderAbsoluteBRCRisk"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanUnderModeratelyIncreasedBRCRisk -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanUnderModeratelyIncreasedBRCRisk">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;WomanUnderIncreasedBRCRisk"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRisk"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;ModeratelyIncreasedBRCRisk"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;WomanUnderIncreasedBRCRisk"/>
-        <owl:disjointWith rdf:resource="&cancer_ra;WomanUnderStronglyIncreasedBRCRisk"/>
-        <owl:disjointWith rdf:resource="&cancer_ra;WomanUnderWeakelyIncreasedBRCRisk"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanUnderModeratelyReducedBRCRisk -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanUnderModeratelyReducedBRCRisk">
-        <owl:equivalentClass>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="&cancer_ra;hasRisk"/>
-                <owl:someValuesFrom rdf:resource="&cancer_ra;ModeratelyReducedBRCRisk"/>
-            </owl:Restriction>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;WomanUnderReducedBRCRisk"/>
-        <owl:disjointWith rdf:resource="&cancer_ra;WomanUnderStronglyReducedBRCRisk"/>
-        <owl:disjointWith rdf:resource="&cancer_ra;WomanUnderWeakelyReducedBRCRisk"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanUnderReducedBRCRisk -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanUnderReducedBRCRisk">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;WomanUnderBRCRisk"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRisk"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;ReducedBRCRisk"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanUnderRelativeBRCRisk -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanUnderRelativeBRCRisk">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;Woman"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRisk"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;RelativeBRCRisk"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Woman"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanUnderShortTermBRCRisk -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanUnderShortTermBRCRisk">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;Woman"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRisk"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;ShortTermBRCRisk"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;WomanUnderAbsoluteBRCRisk"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanUnderStronglyIncreasedBRCRisk -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanUnderStronglyIncreasedBRCRisk">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;WomanUnderIncreasedBRCRisk"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRisk"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;StronglyIncreasedBRCRisk"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;WomanUnderIncreasedBRCRisk"/>
-        <owl:disjointWith rdf:resource="&cancer_ra;WomanUnderWeakelyIncreasedBRCRisk"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanUnderStronglyReducedBRCRisk -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanUnderStronglyReducedBRCRisk">
-        <owl:equivalentClass>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="&cancer_ra;hasRisk"/>
-                <owl:someValuesFrom rdf:resource="&cancer_ra;StronglyReducedBRCRisk"/>
-            </owl:Restriction>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;WomanUnderReducedBRCRisk"/>
-        <owl:disjointWith rdf:resource="&cancer_ra;WomanUnderWeakelyReducedBRCRisk"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanUnderWeakelyIncreasedBRCRisk -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanUnderWeakelyIncreasedBRCRisk">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;WomanUnderIncreasedBRCRisk"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRisk"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;WeakelyIncreasedBRCRisk"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;WomanUnderIncreasedBRCRisk"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanUnderWeakelyReducedBRCRisk -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanUnderWeakelyReducedBRCRisk">
-        <owl:equivalentClass>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="&cancer_ra;hasRisk"/>
-                <owl:someValuesFrom rdf:resource="&cancer_ra;WeakelyReducedBRCRisk"/>
-            </owl:Restriction>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;WomanUnderReducedBRCRisk"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanWithAtypicalHyperplasia -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanWithAtypicalHyperplasia">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;Woman"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRiskFactor"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;AtypicalHyperplasia"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Woman"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanWithBRCA1Mutation -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanWithBRCA1Mutation">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;Woman"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRiskFactor"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;BRCA1Mutation"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;WomanUnderLifetimeBRCRisk"/>
-    </owl:Class>
-    <owl:Axiom>
-        <disponte:probability rdf:datatype="&xsd;decimal">0.8</disponte:probability>
-        <owl:annotatedTarget rdf:resource="&cancer_ra;WomanUnderLifetimeBRCRisk"/>
-        <owl:annotatedSource rdf:resource="&cancer_ra;WomanWithBRCA1Mutation"/>
-        <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/>
-    </owl:Axiom>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanWithBRCA2Mutation -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanWithBRCA2Mutation">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;Woman"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRiskFactor"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;BRCA2Mutation"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanWithBRCAMutation -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanWithBRCAMutation">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;Woman"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRiskFactor"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;BRCAMutation"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;WomanUnderLifetimeBRCRisk"/>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;WomanWithRiskFactors"/>
-    </owl:Class>
-    <owl:Axiom>
-        <disponte:probability rdf:datatype="&xsd;decimal">0.85</disponte:probability>
-        <owl:annotatedTarget rdf:resource="&cancer_ra;WomanUnderLifetimeBRCRisk"/>
-        <owl:annotatedSource rdf:resource="&cancer_ra;WomanWithBRCAMutation"/>
-        <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/>
-    </owl:Axiom>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanWithCarcinomaInSitu -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanWithCarcinomaInSitu">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;Woman"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRiskFactor"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;CarcinomaInSitu"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Woman"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanWithEarlyFirstChild -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanWithEarlyFirstChild">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;Woman"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRiskFactor"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;EarlyFirstChild"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Woman"/>
-        <owl:disjointWith rdf:resource="&cancer_ra;WomanWithLateFirstChild"/>
-        <owl:disjointWith rdf:resource="&cancer_ra;WomanWithoutChildren"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanWithEarlyFirstPeriodAndLateMenopause -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanWithEarlyFirstPeriodAndLateMenopause">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;WomanHavingFirstPeriodBefore12"/>
-                    <rdf:Description rdf:about="&cancer_ra;WomanWithLateMenopause"/>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Woman"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanWithEarlyMenopause -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanWithEarlyMenopause">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;Woman"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRiskFactor"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;EarlyMenopause"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;PostmenopausalWoman"/>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Woman"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanWithFamilyBRCHistory -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanWithFamilyBRCHistory">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;Woman"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRiskFactor"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;FamilyCancerHistory"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Woman"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanWithHighBoneDensity -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanWithHighBoneDensity">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;Woman"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRiskFactor"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;HighBreastDensity"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Woman"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanWithHighBreastDensity -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanWithHighBreastDensity">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;Woman"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRiskFactor"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;HighBreastDensity"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Woman"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanWithHighLevelOfEstrogen -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanWithHighLevelOfEstrogen">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;Woman"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRiskFactor"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;HighLevelOfEstrogen"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Woman"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanWithImmediateRelativesBRCAffected -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanWithImmediateRelativesBRCAffected">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;Woman"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRiskFactor"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;TwoImmediateRelativesAffected"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Woman"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanWithLateFirstChild -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanWithLateFirstChild">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;Woman"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRiskFactor"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;LateFirstChild"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Woman"/>
-        <owl:disjointWith rdf:resource="&cancer_ra;WomanWithoutChildren"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanWithLateMenopause -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanWithLateMenopause">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;Woman"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRiskFactor"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;LateMenopause"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;PostmenopausalWoman"/>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Woman"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanWithMotherAffectedAfterAge60 -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanWithMotherAffectedAfterAge60">
-        <owl:equivalentClass>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="&cancer_ra;hasRiskFactor"/>
-                <owl:someValuesFrom rdf:resource="&cancer_ra;MotherAffectedAfterAge60"/>
-            </owl:Restriction>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;WomanWithMotherBRCAffected"/>
-    </owl:Class>
-    <owl:Axiom>
-        <disponte:probability rdf:datatype="&xsd;decimal">0.9</disponte:probability>
-        <owl:annotatedSource rdf:resource="&cancer_ra;WomanWithMotherAffectedAfterAge60"/>
-        <owl:annotatedTarget rdf:resource="&cancer_ra;WomanWithMotherBRCAffected"/>
-        <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/>
-    </owl:Axiom>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanWithMotherAffectedBeforeAge60 -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanWithMotherAffectedBeforeAge60">
-        <owl:equivalentClass>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="&cancer_ra;hasRiskFactor"/>
-                <owl:someValuesFrom rdf:resource="&cancer_ra;MotherAffectedBeforeAge60"/>
-            </owl:Restriction>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;WomanUnderModeratelyIncreasedBRCRisk"/>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;WomanWithMotherBRCAffected"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanWithMotherBRCAffected -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanWithMotherBRCAffected">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;Woman"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRiskFactor"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;MotherAffected"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Woman"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanWithPersonalBRCHistory -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanWithPersonalBRCHistory">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;Woman"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRiskFactor"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;PersonalBRCHistory"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;WomanUnderModeratelyIncreasedBRCRisk"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanWithRiskFactors -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanWithRiskFactors">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;Woman"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRiskFactor"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;RiskFactor"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Woman"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanWithUsualHyperplasia -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanWithUsualHyperplasia">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;Woman"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRiskFactor"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;UsualHyperplasia"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Woman"/>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;WomanUnderModeratelyIncreasedBRCRisk"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanWithoutBreastfeeding -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanWithoutBreastfeeding">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;Woman"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRiskFactor"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;NoBreastfeeding"/>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Woman"/>
-    </owl:Class>
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#WomanWithoutChildren -->
-
-    <owl:Class rdf:about="&cancer_ra;WomanWithoutChildren">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="&cancer_ra;Woman"/>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRiskFactor"/>
-                        <owl:someValuesFrom rdf:resource="&cancer_ra;NoChildren"/>
-                    </owl:Restriction>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="&cancer_ra;hasRiskFactor"/>
-                        <owl:someValuesFrom>
-                            <owl:Class>
-                                <owl:unionOf rdf:parseType="Collection">
-                                    <rdf:Description rdf:about="&cancer_ra;Age3040"/>
-                                    <rdf:Description rdf:about="&cancer_ra;Age4050"/>
-                                    <rdf:Description rdf:about="&cancer_ra;Age50Plus"/>
-                                </owl:unionOf>
-                            </owl:Class>
-                        </owl:someValuesFrom>
-                    </owl:Restriction>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-        <rdfs:subClassOf rdf:resource="&cancer_ra;Woman"/>
-    </owl:Class>
-    
-
-
-    <!-- http://www.w3.org/2002/07/owl#Thing -->
-
-    <owl:Class rdf:about="&owl;Thing"/>
-    
-
-
-    <!-- 
-    ///////////////////////////////////////////////////////////////////////////////////////
-    //
-    // Individuals
-    //
-    ///////////////////////////////////////////////////////////////////////////////////////
-     -->
-
-    
-
-
-    <!-- http://clarkparsia.com/pronto/cancer_ra.owl#Helen -->
-
-    <owl:NamedIndividual rdf:about="&cancer_ra;Helen">
-        <rdf:type rdf:resource="&cancer_ra;PostmenopausalWoman"/>
-        <rdf:type rdf:resource="&cancer_ra;Woman"/>
-        <rdf:type rdf:resource="&cancer_ra;WomanAged3040"/>
-        <rdf:type rdf:resource="&cancer_ra;WomanTakingEstrogen"/>
-        <rdfs:label>Helen</rdfs:label>
-    </owl:NamedIndividual>
-</rdf:RDF>
-
-
-
-<!-- Generated by the OWL API (version 3.5.0) http://owlapi.sourceforge.net -->
-
diff --git a/examples/DBPedia.owl b/examples/DBPedia.owl
deleted file mode 100644
index 480bbea..0000000
--- a/examples/DBPedia.owl
+++ /dev/null
@@ -1,1260 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-An extract of the DBPedia ontology, it contains structured information from Wikipedia.
-http://dbpedia.org/
-
-/** <examples>
-
-?- prob_sub_class(\'Village\',\'PopulatedPlace\',Prob).
-?- sub_class(\'Village\',\'PopulatedPlace\',ListExpl).
-
-*/
--->
-
-<!DOCTYPE rdf:RDF [
-    <!ENTITY owl "http://www.w3.org/2002/07/owl#" >
-    <!ENTITY Work "http://dbpedia.org/ontology/Work/" >
-    <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
-    <!ENTITY Lake "http://dbpedia.org/ontology/Lake/" >
-    <!ENTITY Drug "http://dbpedia.org/ontology/Drug/" >
-    <!ENTITY Canal "http://dbpedia.org/ontology/Canal/" >
-    <!ENTITY Bridge "http://dbpedia.org/ontology/Bridge/" >
-    <!ENTITY owl2xml "http://www.w3.org/2006/12/owl2-xml#" >
-    <!ENTITY Stream "http://dbpedia.org/ontology/Stream/" >
-    <!ENTITY School "http://dbpedia.org/ontology/School/" >
-    <!ENTITY Weapon "http://dbpedia.org/ontology/Weapon/" >
-    <!ENTITY Person "http://dbpedia.org/ontology/Person/" >
-    <!ENTITY Rocket "http://dbpedia.org/ontology/Rocket/" >
-    <!ENTITY Planet "http://dbpedia.org/ontology/Planet/" >
-    <!ENTITY Software "http://dbpedia.org/ontology/Software/" >
-    <!ENTITY Building "http://dbpedia.org/ontology/Building/" >
-    <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
-    <!ENTITY Mountain "http://dbpedia.org/ontology/Mountain/" >
-    <!ENTITY GrandPrix "http://dbpedia.org/ontology/GrandPrix/" >
-    <!ENTITY Astronaut "http://dbpedia.org/ontology/Astronaut/" >
-    <!ENTITY Automobile "http://dbpedia.org/ontology/Automobile/" >
-    <!ENTITY Spacecraft "http://dbpedia.org/ontology/Spacecraft/" >
-    <!ENTITY wgs84_pos "http://www.w3.org/2003/01/geo/wgs84_pos#" >
-    <!ENTITY LunarCrater "http://dbpedia.org/ontology/LunarCrater/" >
-    <!ENTITY SpaceShuttle "http://dbpedia.org/ontology/SpaceShuttle/" >
-    <!ENTITY SpaceStation "http://dbpedia.org/ontology/SpaceStation/" >
-    <!ENTITY SpaceMission "http://dbpedia.org/ontology/SpaceMission/" >
-    <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
-    <!ENTITY PopulatedPlace "http://dbpedia.org/ontology/PopulatedPlace/" >
-    <!ENTITY Infrastructure "http://dbpedia.org/ontology/Infrastructure/" >
-    <!ENTITY AutomobileEngine "http://dbpedia.org/ontology/AutomobileEngine/" >
-    <!ENTITY ChemicalCompound "http://dbpedia.org/ontology/ChemicalCompound/" >
-    <!ENTITY disponte "https://sites.google.com/a/unife.it/ml/disponte#" >
-    <!ENTITY MeanOfTransportation "http://dbpedia.org/ontology/MeanOfTransportation/" >
-    <!ENTITY GeopoliticalOrganisation "http://dbpedia.org/ontology/GeopoliticalOrganisation/" >
-]>
-
-
-<rdf:RDF xmlns="http://dbpedia.org/ontology/"
-     xml:base="http://dbpedia.org/ontology/"
-     xmlns:Software="http://dbpedia.org/ontology/Software/"
-     xmlns:Astronaut="http://dbpedia.org/ontology/Astronaut/"
-     xmlns:SpaceStation="http://dbpedia.org/ontology/SpaceStation/"
-     xmlns:Building="http://dbpedia.org/ontology/Building/"
-     xmlns:Bridge="http://dbpedia.org/ontology/Bridge/"
-     xmlns:Work="http://dbpedia.org/ontology/Work/"
-     xmlns:GrandPrix="http://dbpedia.org/ontology/GrandPrix/"
-     xmlns:Spacecraft="http://dbpedia.org/ontology/Spacecraft/"
-     xmlns:MeanOfTransportation="http://dbpedia.org/ontology/MeanOfTransportation/"
-     xmlns:Infrastructure="http://dbpedia.org/ontology/Infrastructure/"
-     xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
-     xmlns:owl2xml="http://www.w3.org/2006/12/owl2-xml#"
-     xmlns:PopulatedPlace="http://dbpedia.org/ontology/PopulatedPlace/"
-     xmlns:Drug="http://dbpedia.org/ontology/Drug/"
-     xmlns:ChemicalCompound="http://dbpedia.org/ontology/ChemicalCompound/"
-     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-     xmlns:disponte="https://sites.google.com/a/unife.it/ml/disponte#"
-     xmlns:SpaceShuttle="http://dbpedia.org/ontology/SpaceShuttle/"
-     xmlns:Lake="http://dbpedia.org/ontology/Lake/"
-     xmlns:LunarCrater="http://dbpedia.org/ontology/LunarCrater/"
-     xmlns:School="http://dbpedia.org/ontology/School/"
-     xmlns:Rocket="http://dbpedia.org/ontology/Rocket/"
-     xmlns:wgs84_pos="http://www.w3.org/2003/01/geo/wgs84_pos#"
-     xmlns:GeopoliticalOrganisation="http://dbpedia.org/ontology/GeopoliticalOrganisation/"
-     xmlns:AutomobileEngine="http://dbpedia.org/ontology/AutomobileEngine/"
-     xmlns:Automobile="http://dbpedia.org/ontology/Automobile/"
-     xmlns:Canal="http://dbpedia.org/ontology/Canal/"
-     xmlns:SpaceMission="http://dbpedia.org/ontology/SpaceMission/"
-     xmlns:Planet="http://dbpedia.org/ontology/Planet/"
-     xmlns:Stream="http://dbpedia.org/ontology/Stream/"
-     xmlns:Weapon="http://dbpedia.org/ontology/Weapon/"
-     xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
-     xmlns:owl="http://www.w3.org/2002/07/owl#"
-     xmlns:Person="http://dbpedia.org/ontology/Person/"
-     xmlns:Mountain="http://dbpedia.org/ontology/Mountain/">
-    <owl:Ontology rdf:about="http://dbpedia.org/ontology/">
-        <owl:versionInfo xml:lang="en">Version 3.5</owl:versionInfo>
-    </owl:Ontology>
-    
-
-
-    <!-- 
-    ///////////////////////////////////////////////////////////////////////////////////////
-    //
-    // Annotation properties
-    //
-    ///////////////////////////////////////////////////////////////////////////////////////
-     -->
-
-    
-
-
-    <!-- https://sites.google.com/a/unife.it/ml/disponte#probability -->
-
-    <owl:AnnotationProperty rdf:about="&disponte;probability"/>
-    
-
-
-    <!-- 
-    ///////////////////////////////////////////////////////////////////////////////////////
-    //
-    // Classes
-    //
-    ///////////////////////////////////////////////////////////////////////////////////////
-     -->
-
-    
-
-
-    <!-- http://dbpedia.org/ontology/Actor -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Actor">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/AdministrativeRegion -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/AdministrativeRegion">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/>
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/PopulatedPlace"/>
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/A0_144_"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/AdultActor -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/AdultActor">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Airport -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Airport">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Album -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Album">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Work"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Ambassador -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Ambassador">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/AmericanFootballPlayer -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/AmericanFootballPlayer">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Architect -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Architect">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Artist -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Artist">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Astronaut -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Astronaut">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Athlete -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Athlete">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/BadmintonPlayer -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/BadmintonPlayer">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/BaseballPlayer -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/BaseballPlayer">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/BasketballPlayer -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/BasketballPlayer">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/BodyOfWater -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/BodyOfWater">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Book -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Book">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Work"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Boxer -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Boxer">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Bridge -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Bridge">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/BritishRoyalty -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/BritishRoyalty">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Building -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Building">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Canal -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Canal">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Cardinal -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Cardinal">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Cave -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Cave">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Chancellor -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Chancellor">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/ChristianBishop -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/ChristianBishop">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/City -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/City">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/>
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/PopulatedPlace"/>
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Settlement"/>
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/A0_144_"/>
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/A73_A0_"/>
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/A73_A0_144_"/>
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/A73_144_"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Cleric -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Cleric">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/CollegeCoach -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/CollegeCoach">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Comedian -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Comedian">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/ComicsCharacter -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/ComicsCharacter">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/ComicsCreator -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/ComicsCreator">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Congressman -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Congressman">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Continent -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Continent">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/>
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/PopulatedPlace"/>
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/A0_144_"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Country -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Country">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/>
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/PopulatedPlace"/>
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/A0_144_"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Cricketer -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Cricketer">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Criminal -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Criminal">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Cyclist -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Cyclist">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/EurovisionSongContestEntry -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/EurovisionSongContestEntry">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Work"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/FictionalCharacter -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/FictionalCharacter">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/FigureSkater -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/FigureSkater">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Film -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Film">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Work"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/FormulaOneRacer -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/FormulaOneRacer">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/GaelicGamesPlayer -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/GaelicGamesPlayer">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Governor -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Governor">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/GridironFootballPlayer -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/GridironFootballPlayer">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/HistoricPlace -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/HistoricPlace">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Hospital -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Hospital">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/IceHockeyPlayer -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/IceHockeyPlayer">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Island -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Island">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/>
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/PopulatedPlace"/>
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/A0_144_"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Journalist -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Journalist">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Judge -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Judge">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Lake -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Lake">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/LaunchPad -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/LaunchPad">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Lighthouse -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Lighthouse">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/LunarCrater -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/LunarCrater">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Magazine -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Magazine">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Work"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Mayor -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Mayor">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/MemberOfParliament -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/MemberOfParliament">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/MilitaryPerson -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/MilitaryPerson">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Model -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Model">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Monarch -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Monarch">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Monument -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Monument">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Mountain -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Mountain">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/MountainRange -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/MountainRange">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Musical -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Musical">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Work"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/MusicalArtist -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/MusicalArtist">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/MusicalWork -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/MusicalWork">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Work"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/NascarDriver -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/NascarDriver">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/NationalCollegiateAthleticAssociationAthlete -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/NationalCollegiateAthleticAssociationAthlete">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Newspaper -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Newspaper">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Work"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/OfficeHolder -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/OfficeHolder">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Park -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Park">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Person -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Person"/>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Philosopher -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Philosopher">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Place -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Place">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/PopulatedPlace"/>
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Settlement"/>
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/A73_A0_"/>
-    </owl:Class>
-    <owl:Axiom>
-        <disponte:probability rdf:datatype="&xsd;decimal">0.31</disponte:probability>
-        <owl:annotatedSource rdf:resource="http://dbpedia.org/ontology/Place"/>
-        <owl:annotatedTarget rdf:resource="http://dbpedia.org/ontology/A73_A0_"/>
-        <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/>
-    </owl:Axiom>
-    <owl:Axiom>
-        <disponte:probability rdf:datatype="&xsd;decimal">0.71</disponte:probability>
-        <owl:annotatedSource rdf:resource="http://dbpedia.org/ontology/Place"/>
-        <owl:annotatedTarget rdf:resource="http://dbpedia.org/ontology/PopulatedPlace"/>
-        <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/>
-    </owl:Axiom>
-    <owl:Axiom>
-        <disponte:probability rdf:datatype="&xsd;decimal">0.32</disponte:probability>
-        <owl:annotatedSource rdf:resource="http://dbpedia.org/ontology/Place"/>
-        <owl:annotatedTarget rdf:resource="http://dbpedia.org/ontology/Settlement"/>
-        <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/>
-    </owl:Axiom>
-    
-
-
-    <!-- http://dbpedia.org/ontology/PlayboyPlaymate -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/PlayboyPlaymate">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/PokerPlayer -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/PokerPlayer">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Politician -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Politician">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Pope -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Pope">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/PopulatedPlace -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/PopulatedPlace">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/>
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Settlement"/>
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/A73_144_"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/President -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/President">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/PrimeMinister -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/PrimeMinister">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/ProtectedArea -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/ProtectedArea">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/River -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/River">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/RugbyPlayer -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/RugbyPlayer">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Saint -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Saint">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Scientist -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Scientist">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Senator -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Senator">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Settlement -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Settlement">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/>
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/PopulatedPlace"/>
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/A0_144_"/>
-    </owl:Class>
-    <owl:Axiom>
-        <disponte:probability rdf:datatype="&xsd;decimal">0.11</disponte:probability>
-        <owl:annotatedTarget rdf:resource="http://dbpedia.org/ontology/Place"/>
-        <owl:annotatedSource rdf:resource="http://dbpedia.org/ontology/Settlement"/>
-        <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/>
-    </owl:Axiom>
-    <owl:Axiom>
-        <disponte:probability rdf:datatype="&xsd;decimal">0.81</disponte:probability>
-        <owl:annotatedSource rdf:resource="http://dbpedia.org/ontology/Settlement"/>
-        <owl:annotatedTarget rdf:resource="http://dbpedia.org/ontology/A0_144_"/>
-        <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/>
-    </owl:Axiom>
-    <owl:Axiom>
-        <disponte:probability rdf:datatype="&xsd;decimal">0.41</disponte:probability>
-        <owl:annotatedTarget rdf:resource="http://dbpedia.org/ontology/PopulatedPlace"/>
-        <owl:annotatedSource rdf:resource="http://dbpedia.org/ontology/Settlement"/>
-        <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/>
-    </owl:Axiom>
-    
-
-
-    <!-- http://dbpedia.org/ontology/ShoppingMall -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/ShoppingMall">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Single -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Single">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Work"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/SiteOfSpecialScientificInterest -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/SiteOfSpecialScientificInterest">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/SkiArea -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/SkiArea">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Skyscraper -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Skyscraper">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/SoccerManager -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/SoccerManager">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/SoccerPlayer -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/SoccerPlayer">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Software -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Software">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Work"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Song -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Song">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Work"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Stadium -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Stadium">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Station -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Station">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Stream -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Stream">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/TelevisionEpisode -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/TelevisionEpisode">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Work"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/TelevisionShow -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/TelevisionShow">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Work"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/TennisPlayer -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/TennisPlayer">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Town -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Town">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/>
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/PopulatedPlace"/>
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Settlement"/>
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/A0_144_"/>
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/A73_A0_"/>
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/A73_A0_144_"/>
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/A73_144_"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Valley -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Valley">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/VideoGame -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/VideoGame">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Work"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Village -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Village">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/>
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/PopulatedPlace"/>
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Settlement"/>
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/A0_144_"/>
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/A73_A0_"/>
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/A73_A0_144_"/>
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/A73_144_"/>
-    </owl:Class>
-    <owl:Axiom>
-        <disponte:probability rdf:datatype="&xsd;decimal">0.23</disponte:probability>
-        <owl:annotatedTarget rdf:resource="http://dbpedia.org/ontology/PopulatedPlace"/>
-        <owl:annotatedSource rdf:resource="http://dbpedia.org/ontology/Village"/>
-        <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/>
-    </owl:Axiom>
-    <owl:Axiom>
-        <disponte:probability rdf:datatype="&xsd;decimal">0.9</disponte:probability>
-        <owl:annotatedSource rdf:resource="http://dbpedia.org/ontology/Village"/>
-        <owl:annotatedTarget rdf:resource="http://dbpedia.org/ontology/A0_144_"/>
-        <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/>
-    </owl:Axiom>
-    <owl:Axiom>
-        <disponte:probability rdf:datatype="&xsd;decimal">0.32</disponte:probability>
-        <owl:annotatedTarget rdf:resource="http://dbpedia.org/ontology/Place"/>
-        <owl:annotatedSource rdf:resource="http://dbpedia.org/ontology/Village"/>
-        <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/>
-    </owl:Axiom>
-    <owl:Axiom>
-        <disponte:probability rdf:datatype="&xsd;decimal">0.21</disponte:probability>
-        <owl:annotatedSource rdf:resource="http://dbpedia.org/ontology/Village"/>
-        <owl:annotatedTarget rdf:resource="http://dbpedia.org/ontology/A73_A0_144_"/>
-        <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/>
-    </owl:Axiom>
-    <owl:Axiom>
-        <disponte:probability rdf:datatype="&xsd;decimal">0.3</disponte:probability>
-        <owl:annotatedSource rdf:resource="http://dbpedia.org/ontology/Village"/>
-        <owl:annotatedTarget rdf:resource="http://dbpedia.org/ontology/A73_A0_"/>
-        <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/>
-    </owl:Axiom>
-    <owl:Axiom>
-        <disponte:probability rdf:datatype="&xsd;decimal">0.91</disponte:probability>
-        <owl:annotatedTarget rdf:resource="http://dbpedia.org/ontology/Settlement"/>
-        <owl:annotatedSource rdf:resource="http://dbpedia.org/ontology/Village"/>
-        <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/>
-    </owl:Axiom>
-    <owl:Axiom>
-        <disponte:probability rdf:datatype="&xsd;decimal">0.67</disponte:probability>
-        <owl:annotatedSource rdf:resource="http://dbpedia.org/ontology/Village"/>
-        <owl:annotatedTarget rdf:resource="http://dbpedia.org/ontology/A73_144_"/>
-        <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/>
-    </owl:Axiom>
-    
-
-
-    <!-- http://dbpedia.org/ontology/VoiceActor -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/VoiceActor">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/WineRegion -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/WineRegion">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Work -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Work"/>
-    
-
-
-    <!-- http://dbpedia.org/ontology/WorldHeritageSite -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/WorldHeritageSite">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Place"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Wrestler -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Wrestler">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/Writer -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/Writer">
-        <rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>
-    </owl:Class>
-    
-
-
-    <!-- http://dbpedia.org/ontology/A0_144_ -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/A0_144_">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="http://dbpedia.org/ontology/Place"/>
-                    <rdf:Description rdf:about="http://dbpedia.org/ontology/PopulatedPlace"/>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-    </owl:Class>
-    <owl:Axiom>
-        <disponte:probability rdf:datatype="&xsd;decimal">0.71</disponte:probability>
-        <owl:annotatedSource rdf:resource="http://dbpedia.org/ontology/A0_144_"/>
-        <owl:annotatedProperty rdf:resource="&owl;equivalentClass"/>
-        <owl:annotatedTarget>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="http://dbpedia.org/ontology/Place"/>
-                    <rdf:Description rdf:about="http://dbpedia.org/ontology/PopulatedPlace"/>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:annotatedTarget>
-    </owl:Axiom>
-    
-
-
-    <!-- http://dbpedia.org/ontology/A73_A0_ -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/A73_A0_">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="http://dbpedia.org/ontology/PopulatedPlace"/>
-                    <rdf:Description rdf:about="http://dbpedia.org/ontology/Settlement"/>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-    </owl:Class>
-    <owl:Axiom>
-        <disponte:probability rdf:datatype="&xsd;decimal">0.7</disponte:probability>
-        <owl:annotatedSource rdf:resource="http://dbpedia.org/ontology/A73_A0_"/>
-        <owl:annotatedProperty rdf:resource="&owl;equivalentClass"/>
-        <owl:annotatedTarget>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="http://dbpedia.org/ontology/PopulatedPlace"/>
-                    <rdf:Description rdf:about="http://dbpedia.org/ontology/Settlement"/>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:annotatedTarget>
-    </owl:Axiom>
-    
-
-
-    <!-- http://dbpedia.org/ontology/A73_A0_144_ -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/A73_A0_144_">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="http://dbpedia.org/ontology/Place"/>
-                    <rdf:Description rdf:about="http://dbpedia.org/ontology/PopulatedPlace"/>
-                    <rdf:Description rdf:about="http://dbpedia.org/ontology/Settlement"/>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-    </owl:Class>
-    <owl:Axiom>
-        <disponte:probability rdf:datatype="&xsd;decimal">0.81</disponte:probability>
-        <owl:annotatedSource rdf:resource="http://dbpedia.org/ontology/A73_A0_144_"/>
-        <owl:annotatedProperty rdf:resource="&owl;equivalentClass"/>
-        <owl:annotatedTarget>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="http://dbpedia.org/ontology/Place"/>
-                    <rdf:Description rdf:about="http://dbpedia.org/ontology/PopulatedPlace"/>
-                    <rdf:Description rdf:about="http://dbpedia.org/ontology/Settlement"/>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:annotatedTarget>
-    </owl:Axiom>
-    
-
-
-    <!-- http://dbpedia.org/ontology/A73_144_ -->
-
-    <owl:Class rdf:about="http://dbpedia.org/ontology/A73_144_">
-        <owl:equivalentClass>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="http://dbpedia.org/ontology/Place"/>
-                    <rdf:Description rdf:about="http://dbpedia.org/ontology/Settlement"/>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:equivalentClass>
-    </owl:Class>
-    <owl:Axiom>
-        <disponte:probability rdf:datatype="&xsd;decimal">0.51</disponte:probability>
-        <owl:annotatedSource rdf:resource="http://dbpedia.org/ontology/A73_144_"/>
-        <owl:annotatedProperty rdf:resource="&owl;equivalentClass"/>
-        <owl:annotatedTarget>
-            <owl:Class>
-                <owl:intersectionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="http://dbpedia.org/ontology/Place"/>
-                    <rdf:Description rdf:about="http://dbpedia.org/ontology/Settlement"/>
-                </owl:intersectionOf>
-            </owl:Class>
-        </owl:annotatedTarget>
-    </owl:Axiom>
-</rdf:RDF>
-
-
-
-<!-- Generated by the OWL API (version 3.4.2) http://owlapi.sourceforge.net -->
-
diff --git a/examples/biopaxLevel3.owl b/examples/biopaxLevel3.owl
deleted file mode 100644
index 520c805..0000000
--- a/examples/biopaxLevel3.owl
+++ /dev/null
@@ -1,3063 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-Model of metabolic pathways.
-http://www.biopax.org/
-
-/** <examples>
-
-?- prob_sub_class(\'TransportWithBiochemicalReaction\',\'Entity\',Prob).
-?- sub_class(\'TransportWithBiochemicalReaction\',\'Entity\',ListExpl).
-
-*/
--->
-
-<!DOCTYPE rdf:RDF [
-    <!ENTITY owl "http://www.w3.org/2002/07/owl#" >
-    <!ENTITY swrl "http://www.w3.org/2003/11/swrl#" >
-    <!ENTITY swrlb "http://www.w3.org/2003/11/swrlb#" >
-    <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
-    <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
-    <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
-    <!ENTITY protege "http://protege.stanford.edu/plugins/owl/protege#" >
-    <!ENTITY disponte "https://sites.google.com/a/unife.it/ml/disponte#" >
-    <!ENTITY xsp "http://www.owl-ontologies.com/2005/08/07/xsp.owl#" >
-]>
-
-
-<rdf:RDF xmlns="http://www.biopax.org/release/biopax-level3.owl#"
-     xml:base="http://www.biopax.org/release/biopax-level3.owl"
-     xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
-     xmlns:swrl="http://www.w3.org/2003/11/swrl#"
-     xmlns:protege="http://protege.stanford.edu/plugins/owl/protege#"
-     xmlns:xsp="http://www.owl-ontologies.com/2005/08/07/xsp.owl#"
-     xmlns:owl="http://www.w3.org/2002/07/owl#"
-     xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
-     xmlns:swrlb="http://www.w3.org/2003/11/swrlb#"
-     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-     xmlns:disponte="https://sites.google.com/a/unife.it/ml/disponte#">
-    <owl:Ontology rdf:about="http://www.biopax.org/release/biopax-level3.owl">
-        <rdfs:comment rdf:datatype="&xsd;string">This is version 1.0 of the BioPAX Level 3 ontology.  The goal of the BioPAX group is to develop a common exchange format for biological pathway data.  More information is available at http://www.biopax.org.  This ontology is freely available under the LGPL (http://www.gnu.org/copyleft/lesser.html).</rdfs:comment>
-    </owl:Ontology>
-    
-
-
-    <!-- 
-    ///////////////////////////////////////////////////////////////////////////////////////
-    //
-    // Annotation properties
-    //
-    ///////////////////////////////////////////////////////////////////////////////////////
-     -->
-
-    
-
-
-    <!-- https://sites.google.com/a/unife.it/ml/disponte#probability -->
-
-    <owl:AnnotationProperty rdf:about="&disponte;probability"/>
-    
-
-
-    <!-- 
-    ///////////////////////////////////////////////////////////////////////////////////////
-    //
-    // Object Properties
-    //
-    ///////////////////////////////////////////////////////////////////////////////////////
-     -->
-
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#absoluteRegion -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#absoluteRegion">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Absolute location as defined by the referenced sequence database record. E.g. an operon has a absolute region on the DNA molecule referenced by the UnificationXref.</rdfs:comment>
-        <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceLocation"/>
-        <rdfs:domain>
-            <owl:Class>
-                <owl:unionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#DnaRegionReference"/>
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#RnaRegionReference"/>
-                </owl:unionOf>
-            </owl:Class>
-        </rdfs:domain>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#bindsTo -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#bindsTo">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdf:type rdf:resource="&owl;InverseFunctionalProperty"/>
-        <rdf:type rdf:resource="&owl;SymmetricProperty"/>
-        <rdfs:comment rdf:datatype="&xsd;string">A binding feature represents a &quot;half&quot; of the bond between two entities. This property points to another binding feature which represents the other half. The bond can be covalent or non-covalent.</rdfs:comment>
-        <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#BindingFeature"/>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#BindingFeature"/>
-        <owl:inverseOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#bindsTo"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#cellType -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#cellType">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:comment xml:lang="en">A cell type, e.g. &apos;HeLa&apos;. This should reference a term in a controlled vocabulary of cell types. Best practice is to refer to OBO Cell Ontology. http://www.obofoundry.org/cgi-bin/detail.cgi?id=cell</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#BioSource"/>
-        <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#CellVocabulary"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#cellularLocation -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#cellularLocation">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:comment rdf:datatype="&xsd;string">A cellular location, e.g. &apos;cytoplasm&apos;. This should reference a term in the Gene Ontology Cellular Component ontology. The location referred to by this property should be as specific as is known. If an interaction is known to occur in multiple locations, separate interactions (and physicalEntities) must be created for each different location.  If the location of a participant in a complex is unspecified, it may be assumed to be the same location as that of the complex. 
-
- A molecule in two different cellular locations are considered two different physical entities.</rdfs:comment>
-        <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#CellularLocationVocabulary"/>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#cofactor -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#cofactor">
-        <rdfs:comment xml:lang="en">Any cofactor(s) or coenzyme(s) required for catalysis of the conversion by the enzyme. COFACTOR is a sub-property of PARTICIPANTS.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Catalysis"/>
-        <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/>
-        <rdfs:subPropertyOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#participant"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#component -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#component">
-        <rdf:type rdf:resource="&owl;InverseFunctionalProperty"/>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Complex"/>
-        <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#componentStoichiometry -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#componentStoichiometry">
-        <rdfs:comment rdf:datatype="&xsd;string">The stoichiometry of components in a complex</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Complex"/>
-        <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Stoichiometry"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#confidence -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#confidence">
-        <rdfs:comment rdf:datatype="&xsd;string">Confidence in the containing instance.  Usually a statistical measure.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Evidence"/>
-        <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Score"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#controlled -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#controlled">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:comment xml:lang="en">The entity that is controlled, e.g., in a biochemical reaction, the reaction is controlled by an enzyme. CONTROLLED is a sub-property of PARTICIPANTS.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Control"/>
-        <rdfs:subPropertyOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#participant"/>
-        <rdfs:range>
-            <owl:Class>
-                <owl:unionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#Interaction"/>
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#Pathway"/>
-                </owl:unionOf>
-            </owl:Class>
-        </rdfs:range>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#controller -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#controller">
-        <rdfs:comment xml:lang="en">The controlling entity, e.g., in a biochemical reaction, an enzyme is the controlling entity of the reaction. CONTROLLER is a sub-property of PARTICIPANTS.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Control"/>
-        <rdfs:subPropertyOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#participant"/>
-        <rdfs:range>
-            <owl:Class>
-                <owl:unionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#Pathway"/>
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/>
-                </owl:unionOf>
-            </owl:Class>
-        </rdfs:range>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#dataSource -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#dataSource">
-        <rdfs:comment rdf:datatype="&xsd;string">A free text description of the source of this data, e.g. a database or person name. This property should be used to describe the source of the data. This is meant to be used by databases that export their data to the BioPAX format or by systems that are integrating data from multiple sources. The granularity of use (specifying the data source in many or few instances) is up to the user. It is intended that this property report the last data source, not all data sources that the data has passed through from creation.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Entity"/>
-        <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Provenance"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#deltaG -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#deltaG">
-        <rdfs:comment rdf:datatype="&xsd;string">For biochemical reactions, this property refers to the standard transformed Gibbs energy change for a reaction written in terms of biochemical reactants (sums of species), delta-G
-
-Since Delta-G can change based on multiple factors including ionic strength and temperature a reaction can have multiple DeltaG values.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#BiochemicalReaction"/>
-        <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DeltaG"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#entityFeature -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#entityFeature">
-        <rdf:type rdf:resource="&owl;InverseFunctionalProperty"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Variable features that are observed for this entity - such as known PTM or methylation sites and non-covalent bonds.</rdfs:comment>
-        <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityFeature"/>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityReference"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#entityReference -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#entityReference">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Reference entity for this physical entity.</rdfs:comment>
-        <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityReference"/>
-        <rdfs:domain>
-            <owl:Class>
-                <owl:unionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#Dna"/>
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#DnaRegion"/>
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#Protein"/>
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#Rna"/>
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#RnaRegion"/>
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#SmallMolecule"/>
-                </owl:unionOf>
-            </owl:Class>
-        </rdfs:domain>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#entityReferenceType -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#entityReferenceType">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:comment rdf:datatype="&xsd;string">A controlled vocabulary term that is used to describe the type of grouping such as homology or functional group.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityReference"/>
-        <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityReferenceTypeVocabulary"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#evidence -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#evidence">
-        <rdfs:comment rdf:datatype="&xsd;string">Scientific evidence supporting the existence of the entity as described.</rdfs:comment>
-        <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Evidence"/>
-        <rdfs:domain>
-            <owl:Class>
-                <owl:unionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#Entity"/>
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#EntityFeature"/>
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#EntityReference"/>
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#PathwayStep"/>
-                </owl:unionOf>
-            </owl:Class>
-        </rdfs:domain>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#evidenceCode -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#evidenceCode">
-        <rdfs:comment rdf:datatype="&xsd;string">A pointer to a term in an external controlled vocabulary, such as the GO, PSI-MI or BioCyc evidence codes, that describes the nature of the support, such as &apos;traceable author statement&apos; or &apos;yeast two-hybrid&apos;.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Evidence"/>
-        <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EvidenceCodeVocabulary"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#experimentalFeature -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#experimentalFeature">
-        <rdfs:comment rdf:datatype="&xsd;string">A feature of the experimental form of the participant of the interaction, such as a protein tag. It is not expected to occur in vivo or be necessary for the interaction.</rdfs:comment>
-        <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityFeature"/>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ExperimentalForm"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#experimentalForm -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#experimentalForm">
-        <rdfs:comment rdf:datatype="&xsd;string">The experimental forms associated with an evidence instance.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Evidence"/>
-        <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ExperimentalForm"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#experimentalFormDescription -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#experimentalFormDescription">
-        <rdfs:comment rdf:datatype="&xsd;string">Descriptor of this experimental form from a controlled vocabulary.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ExperimentalForm"/>
-        <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ExperimentalFormVocabulary"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#experimentalFormEntity -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#experimentalFormEntity">
-        <rdfs:comment rdf:datatype="&xsd;string">The gene or physical entity that this experimental form describes.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ExperimentalForm"/>
-        <rdfs:range>
-            <owl:Class>
-                <owl:unionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#Gene"/>
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/>
-                </owl:unionOf>
-            </owl:Class>
-        </rdfs:range>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#feature -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#feature">
-        <rdfs:comment rdf:datatype="&xsd;string">Sequence features of the owner physical entity.</rdfs:comment>
-        <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityFeature"/>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#featureLocation -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#featureLocation">
-        <rdfs:comment rdf:datatype="&xsd;string">Location of the feature on the sequence of the interactor. One feature may have more than one location, used e.g. for features which involve sequence positions close in the folded, three-dimensional state of a protein, but non-continuous along the sequence.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityFeature"/>
-        <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceLocation"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#featureLocationType -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#featureLocationType">
-        <rdfs:comment rdf:datatype="&xsd;string">A controlled vocabulary term describing the type of the sequence location such as C-Terminal or SH2 Domain.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityFeature"/>
-        <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceRegionVocabulary"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#interactionScore -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#interactionScore">
-        <rdfs:comment rdf:datatype="&xsd;string">The score of an interaction e.g. a genetic interaction score.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#GeneticInteraction"/>
-        <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Score"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#interactionType -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#interactionType">
-        <rdfs:comment rdf:datatype="&xsd;string">External controlled vocabulary annotating the interaction type, for example &quot;phosphorylation&quot;. This is annotation useful for e.g. display on a web page or database searching, but may not be suitable for other computing tasks, like reasoning.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Interaction"/>
-        <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#InteractionVocabulary"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#kEQ -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#kEQ">
-        <rdfs:comment rdf:datatype="&xsd;string">This quantity is dimensionless and is usually a single number. The measured equilibrium constant for a biochemical reaction, encoded by the slot KEQ, is actually the apparent equilibrium constant, K&apos;.  Concentrations in the equilibrium constant equation refer to the total concentrations of  all forms of particular biochemical reactants. For example, in the equilibrium constant equation for the biochemical reaction in which ATP is hydrolyzed to ADP and inorganic phosphate:
-
-K&apos; = [ADP][P&lt;sub&gt;i&lt;/sub&gt;]/[ATP],
-
-The concentration of ATP refers to the total concentration of all of the following species:
-
-[ATP] = [ATP&lt;sup&gt;4-&lt;/sup&gt;] + [HATP&lt;sup&gt;3-&lt;/sup&gt;] + [H&lt;sub&gt;2&lt;/sub&gt;ATP&lt;sup&gt;2-&lt;/sup&gt;] + [MgATP&lt;sup&gt;2-&lt;/sup&gt;] + [MgHATP&lt;sup&gt;-&lt;/sup&gt;] + [Mg&lt;sub&gt;2&lt;/sub&gt;ATP].
-
-The apparent equilibrium constant is formally dimensionless, and can be kept so by inclusion of as many of the terms (1 mol/dm&lt;sup&gt;3&lt;/sup&gt;) in the numerator or denominator as necessary.  It is a function of temperature (T), ionic strength (I), pH, and pMg (pMg = -log&lt;sub&gt;10&lt;/sub&gt;[Mg&lt;sup&gt;2+&lt;/sup&gt;]). Therefore, these quantities must be specified to be precise, and values for KEQ for biochemical reactions may be represented as 5-tuples of the form (K&apos; T I pH pMg).  This property may have multiple values, representing different measurements for K&apos; obtained under the different experimental conditions listed in the 5-tuple. (This definition adapted from EcoCyc)</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#BiochemicalReaction"/>
-        <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#KPrime"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#left -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#left">
-        <rdfs:comment rdf:datatype="&xsd;string">The participants on the left side of the conversion interaction. Since conversion interactions may proceed in either the left-to-right or right-to-left direction, occupants of the LEFT property may be either reactants or products. LEFT is a sub-property of PARTICIPANTS.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Conversion"/>
-        <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/>
-        <rdfs:subPropertyOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#participant"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#memberEntityReference -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#memberEntityReference">
-        <rdfs:comment rdf:datatype="&xsd;string">An entity reference that qualifies for the definition of this group. For example a member of a PFAM protein family.</rdfs:comment>
-        <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityReference"/>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityReference"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#memberFeature -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#memberFeature">
-        <rdf:type rdf:resource="&owl;TransitiveProperty"/>
-        <rdfs:comment rdf:datatype="&xsd;string">An entity feature  that belongs to this homology grouping. Example: a homologous phosphorylation site across a protein family.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityFeature"/>
-        <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityFeature"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#memberPhysicalEntity -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#memberPhysicalEntity">
-        <rdf:type rdf:resource="&owl;TransitiveProperty"/>
-        <rdfs:comment rdf:datatype="&xsd;string">This property stores the members of a generic physical entity. 
-
-For representing homology generics a better way is to use generic entity references and generic features. However not all generic logic can be captured by this, such as complex generics or rare cases where feature cardinality is variable. Usages of this property should be limited to such cases.</rdfs:comment>
-        <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#modificationType -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#modificationType">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Description and classification of the feature.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ModificationFeature"/>
-        <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceModificationVocabulary"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#nextStep -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#nextStep">
-        <rdfs:comment rdf:datatype="&xsd;string">The next step(s) of the pathway.  Contains zero or more pathwayStep instances.  If there is no next step, this property is empty. Multiple pathwayStep instances indicate pathway branching.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PathwayStep"/>
-        <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PathwayStep"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#notFeature -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#notFeature">
-        <rdfs:comment rdf:datatype="&xsd;string">Sequence features where the owner physical entity has a feature. If not specified, other potential features are not known.</rdfs:comment>
-        <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityFeature"/>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#organism -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#organism">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:comment xml:lang="en">An organism, e.g. &apos;Homo sapiens&apos;. This is the organism that the entity is found in. Pathways may not have an organism associated with them, for instance, reference pathways from KEGG. Sequence-based entities (DNA, protein, RNA) may contain an xref to a sequence database that contains organism information, in which case the information should be consistent with the value for ORGANISM.</rdfs:comment>
-        <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#BioSource"/>
-        <rdfs:domain>
-            <owl:Class>
-                <owl:unionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#DnaReference"/>
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#DnaRegionReference"/>
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#Gene"/>
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#Pathway"/>
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#ProteinReference"/>
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#RnaReference"/>
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#RnaRegionReference"/>
-                </owl:unionOf>
-            </owl:Class>
-        </rdfs:domain>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#participant -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#participant">
-        <rdfs:comment rdf:datatype="&xsd;string">This property lists the entities that participate in this interaction. For example, in a biochemical reaction, the participants are the union of the reactants and the products of the reaction. This property has a number of sub-properties, such as LEFT and RIGHT used in the biochemicalInteraction class. Any participant listed in a sub-property will automatically be assumed to also be in PARTICIPANTS by a number of software systems, including Protege, so this property should not contain any instances if there are instances contained in a sub-property.</rdfs:comment>
-        <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Entity"/>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Interaction"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#participantStoichiometry -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#participantStoichiometry">
-        <rdfs:comment rdf:datatype="&xsd;string">Stoichiometry of the left and right participants.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Conversion"/>
-        <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Stoichiometry"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#pathwayComponent -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#pathwayComponent">
-        <rdfs:comment rdf:datatype="&xsd;string">The set of interactions and/or pathwaySteps in this pathway/network. Each instance of the pathwayStep class defines: 1) a set of interactions that together define a particular step in the pathway, for example a catalysis instance and the conversion that it catalyzes; 2) an order relationship to one or more other pathway steps (via the NEXT-STEP property). Note: This ordering is not necessarily temporal - the order described may simply represent connectivity between adjacent steps. Temporal ordering information should only be inferred from the direction of each interaction.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Pathway"/>
-        <rdfs:range>
-            <owl:Class>
-                <owl:unionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#Interaction"/>
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#Pathway"/>
-                </owl:unionOf>
-            </owl:Class>
-        </rdfs:range>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#pathwayOrder -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#pathwayOrder">
-        <rdfs:comment rdf:datatype="&xsd;string">The ordering of components (interactions and pathways) in the context of this pathway. This is useful to specific circular or branched pathways or orderings when component biochemical reactions are normally reversible, but are directed in the context of this pathway.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Pathway"/>
-        <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PathwayStep"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#phenotype -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#phenotype">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:comment rdf:datatype="&xsd;string">The phenotype quality used to define this genetic interaction e.g. viability.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#GeneticInteraction"/>
-        <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhenotypeVocabulary"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#physicalEntity -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#physicalEntity">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:comment xml:lang="en">The physical entity to be annotated with stoichiometry.</rdfs:comment>
-        <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Stoichiometry"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#product -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#product">
-        <rdfs:comment rdf:datatype="&xsd;string">The product of a template reaction.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#TemplateReaction"/>
-        <rdfs:subPropertyOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#participant"/>
-        <rdfs:range>
-            <owl:Class>
-                <owl:unionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#Dna"/>
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#Protein"/>
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#Rna"/>
-                </owl:unionOf>
-            </owl:Class>
-        </rdfs:range>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#regionType -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#regionType">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceRegionVocabulary"/>
-        <rdfs:domain>
-            <owl:Class>
-                <owl:unionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#DnaRegionReference"/>
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#RnaRegionReference"/>
-                </owl:unionOf>
-            </owl:Class>
-        </rdfs:domain>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#relationshipType -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#relationshipType">
-        <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RelationshipTypeVocabulary"/>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RelationshipXref"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#right -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#right">
-        <rdfs:comment rdf:datatype="&xsd;string">The participants on the right side of the conversion interaction. Since conversion interactions may proceed in either the left-to-right or right-to-left direction, occupants of the RIGHT property may be either reactants or products. RIGHT is a sub-property of PARTICIPANTS.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Conversion"/>
-        <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/>
-        <rdfs:subPropertyOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#participant"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#scoreSource -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#scoreSource">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Provenance"/>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Score"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#sequenceIntervalBegin -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#sequenceIntervalBegin">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:comment rdf:datatype="&xsd;string">The begin position of a sequence interval.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceInterval"/>
-        <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceSite"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#sequenceIntervalEnd -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#sequenceIntervalEnd">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:comment rdf:datatype="&xsd;string">The end position of a sequence interval.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceInterval"/>
-        <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceSite"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#stepConversion -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#stepConversion">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:comment rdf:datatype="&xsd;string">The central process that take place at this step of the biochemical pathway.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#BiochemicalPathwayStep"/>
-        <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Conversion"/>
-        <rdfs:subPropertyOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#stepProcess"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#stepProcess -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#stepProcess">
-        <rdfs:comment rdf:datatype="&xsd;string">An interaction or a pathway that are a part of this pathway step.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PathwayStep"/>
-        <rdfs:range>
-            <owl:Class>
-                <owl:unionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#Interaction"/>
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#Pathway"/>
-                </owl:unionOf>
-            </owl:Class>
-        </rdfs:range>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#structure -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#structure">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:comment xml:lang="en">Defines the chemical structure and other information about this molecule, using an instance of class chemicalStructure.</rdfs:comment>
-        <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ChemicalStructure"/>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SmallMoleculeReference"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#subRegion -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#subRegion">
-        <rdfs:comment rdf:datatype="&xsd;string">The sub region of a region or nucleic acid molecule. The sub region must be wholly part of the region, not outside of it.</rdfs:comment>
-        <rdfs:range>
-            <owl:Class>
-                <owl:unionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#DnaRegionReference"/>
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#RnaRegionReference"/>
-                </owl:unionOf>
-            </owl:Class>
-        </rdfs:range>
-        <rdfs:domain>
-            <owl:Class>
-                <owl:unionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#DnaReference"/>
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#DnaRegionReference"/>
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#RnaReference"/>
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#RnaRegionReference"/>
-                </owl:unionOf>
-            </owl:Class>
-        </rdfs:domain>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#template -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#template">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:comment rdf:datatype="&xsd;string">The template molecule that is used in this template reaction.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#TemplateReaction"/>
-        <rdfs:subPropertyOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#participant"/>
-        <rdfs:range>
-            <owl:Class>
-                <owl:unionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#Dna"/>
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#DnaRegion"/>
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#Rna"/>
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#RnaRegion"/>
-                </owl:unionOf>
-            </owl:Class>
-        </rdfs:range>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#tissue -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#tissue">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:comment xml:lang="en">An external controlled vocabulary of tissue types.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#BioSource"/>
-        <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#TissueVocabulary"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#xref -->
-
-    <owl:ObjectProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#xref">
-        <rdfs:comment xml:lang="en">Values of this property define external cross-references from this entity to entities in external databases.</rdfs:comment>
-        <rdfs:range rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Xref"/>
-        <rdfs:domain>
-            <owl:Class>
-                <owl:unionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#BioSource"/>
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#ControlledVocabulary"/>
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#Entity"/>
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#EntityReference"/>
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#Evidence"/>
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#Provenance"/>
-                </owl:unionOf>
-            </owl:Class>
-        </rdfs:domain>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- 
-    ///////////////////////////////////////////////////////////////////////////////////////
-    //
-    // Data properties
-    //
-    ///////////////////////////////////////////////////////////////////////////////////////
-     -->
-
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#author -->
-
-    <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#author">
-        <rdfs:comment xml:lang="en">The authors of this publication, one per property value.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PublicationXref"/>
-        <rdfs:range rdf:resource="&xsd;string"/>
-    </owl:DatatypeProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#availability -->
-
-    <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#availability">
-        <rdfs:comment xml:lang="en">Describes the availability of this data (e.g. a copyright statement).</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Entity"/>
-        <rdfs:range rdf:resource="&xsd;string"/>
-    </owl:DatatypeProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#catalysisDirection -->
-
-    <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#catalysisDirection">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:comment rdf:datatype="&xsd;string">This property represents the direction of this catalysis under all
-physiological conditions if there is one.
-
-Note that chemically a catalyst will increase the rate of the reaction
-in both directions. In biology, however, there are cases where the
-enzyme is expressed only when the controlled bidirectional conversion is
-on one side of the chemical equilibrium [todo : example]. If that is the
-case and the controller, under biological conditions, is always
-catalyzing the conversion in one direction then this fact can be
-captured using this property. If the enzyme is active for both
-directions, or the conversion is not bidirectional, this property should
-be left empty.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Catalysis"/>
-        <rdfs:range>
-            <rdfs:Datatype>
-                <owl:oneOf>
-                    <rdf:Description>
-                        <rdf:type rdf:resource="&rdf;List"/>
-                        <rdf:first rdf:datatype="&xsd;string">LEFT-TO-RIGHT</rdf:first>
-                        <rdf:rest>
-                            <rdf:Description>
-                                <rdf:type rdf:resource="&rdf;List"/>
-                                <rdf:first rdf:datatype="&xsd;string">RIGHT-TO-LEFT</rdf:first>
-                                <rdf:rest rdf:resource="&rdf;nil"/>
-                            </rdf:Description>
-                        </rdf:rest>
-                    </rdf:Description>
-                </owl:oneOf>
-            </rdfs:Datatype>
-        </rdfs:range>
-    </owl:DatatypeProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#chemicalFormula -->
-
-    <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#chemicalFormula">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:comment rdf:datatype="&xsd;string">The chemical formula of the small molecule. Note: chemical formula can also be stored in the STRUCTURE property (in CML). In case of disagreement between the value of this property and that in the CML file, the CML value takes precedence.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SmallMoleculeReference"/>
-        <rdfs:range rdf:resource="&xsd;string"/>
-    </owl:DatatypeProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#comment -->
-
-    <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#comment">
-        <rdfs:comment rdf:datatype="&xsd;string">Comment on the data in the container class. This property should be used instead of the OWL documentation elements (rdfs:comment) for instances because information in &apos;comment&apos; is data to be exchanged, whereas the rdfs:comment field is used for metadata about the structure of the BioPAX ontology.</rdfs:comment>
-        <rdfs:range rdf:resource="&xsd;string"/>
-        <rdfs:domain>
-            <owl:Class>
-                <owl:unionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#Entity"/>
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#UtilityClass"/>
-                </owl:unionOf>
-            </owl:Class>
-        </rdfs:domain>
-    </owl:DatatypeProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#controlType -->
-
-    <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#controlType">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Defines the nature of the control relationship between the CONTROLLER and the CONTROLLED entities.
-
-The following terms are possible values:
-
-ACTIVATION: General activation. Compounds that activate the specified enzyme activity by an unknown mechanism. The mechanism is defined as unknown, because either the mechanism has yet to be elucidated in the experimental literature, or the paper(s) curated thus far do not define the mechanism, and a full literature search has yet to be performed.
-
-The following term can not be used in the catalysis class:
-INHIBITION: General inhibition. Compounds that inhibit the specified enzyme activity by an unknown mechanism. The mechanism is defined as unknown, because either the mechanism has yet to be elucidated in the experimental literature, or the paper(s) curated thus far do not define the mechanism, and a full literature search has yet to be performed.
-
-The following terms can only be used in the modulation class (these definitions from EcoCyc):
-INHIBITION-ALLOSTERIC
-Allosteric inhibitors decrease the specified enzyme activity by binding reversibly to the enzyme and inducing a conformational change that decreases the affinity of the enzyme to its substrates without affecting its VMAX. Allosteric inhibitors can be competitive or noncompetitive inhibitors, therefore, those inhibition categories can be used in conjunction with this category.
-
-INHIBITION-COMPETITIVE
-Competitive inhibitors are compounds that competitively inhibit the specified enzyme activity by binding reversibly to the enzyme and preventing the substrate from binding. Binding of the inhibitor and substrate are mutually exclusive because it is assumed that the inhibitor and substrate can both bind only to the free enzyme. A competitive inhibitor can either bind to the active site of the enzyme, directly excluding the substrate from binding there, or it can bind to another site on the enzyme, altering the conformation of the enzyme such that the substrate can not bind to the active site.
-
-INHIBITION-IRREVERSIBLE
-Irreversible inhibitors are compounds that irreversibly inhibit the specified enzyme activity by binding to the enzyme and dissociating so slowly that it is considered irreversible. For example, alkylating agents, such as iodoacetamide, irreversibly inhibit the catalytic activity of some enzymes by modifying cysteine side chains.
-
-INHIBITION-NONCOMPETITIVE
-Noncompetitive inhibitors are compounds that noncompetitively inhibit the specified enzyme by binding reversibly to both the free enzyme and to the enzyme-substrate complex. The inhibitor and substrate may be bound to the enzyme simultaneously and do not exclude each other. However, only the enzyme-substrate complex (not the enzyme-substrate-inhibitor complex) is catalytically active.
-
-INHIBITION-OTHER
-Compounds that inhibit the specified enzyme activity by a mechanism that has been characterized, but that cannot be clearly classified as irreversible, competitive, noncompetitive, uncompetitive, or allosteric.
-
-INHIBITION-UNCOMPETITIVE
-Uncompetitive inhibitors are compounds that uncompetitively inhibit the specified enzyme activity by binding reversibly to the enzyme-substrate complex but not to the enzyme alone.
-
-ACTIVATION-NONALLOSTERIC
-Nonallosteric activators increase the specified enzyme activity by means other than allosteric.
-
-ACTIVATION-ALLOSTERIC
-Allosteric activators increase the specified enzyme activity by binding reversibly to the enzyme and inducing a conformational change that increases the affinity of the enzyme to its substrates without affecting its VMAX.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Control"/>
-        <rdfs:range>
-            <rdfs:Datatype>
-                <owl:oneOf>
-                    <rdf:Description>
-                        <rdf:type rdf:resource="&rdf;List"/>
-                        <rdf:first rdf:datatype="&xsd;string">ACTIVATION</rdf:first>
-                        <rdf:rest>
-                            <rdf:Description>
-                                <rdf:type rdf:resource="&rdf;List"/>
-                                <rdf:first rdf:datatype="&xsd;string">ACTIVATION-ALLOSTERIC</rdf:first>
-                                <rdf:rest>
-                                    <rdf:Description>
-                                        <rdf:type rdf:resource="&rdf;List"/>
-                                        <rdf:first rdf:datatype="&xsd;string">ACTIVATION-NONALLOSTERIC</rdf:first>
-                                        <rdf:rest>
-                                            <rdf:Description>
-                                                <rdf:type rdf:resource="&rdf;List"/>
-                                                <rdf:first rdf:datatype="&xsd;string">INHIBITION</rdf:first>
-                                                <rdf:rest>
-                                                    <rdf:Description>
-                                                        <rdf:type rdf:resource="&rdf;List"/>
-                                                        <rdf:first rdf:datatype="&xsd;string">INHIBITION-ALLOSTERIC</rdf:first>
-                                                        <rdf:rest>
-                                                            <rdf:Description>
-                                                                <rdf:type rdf:resource="&rdf;List"/>
-                                                                <rdf:first rdf:datatype="&xsd;string">INHIBITION-COMPETITIVE</rdf:first>
-                                                                <rdf:rest>
-                                                                    <rdf:Description>
-                                                                        <rdf:type rdf:resource="&rdf;List"/>
-                                                                        <rdf:first rdf:datatype="&xsd;string">INHIBITION-IRREVERSIBLE</rdf:first>
-                                                                        <rdf:rest>
-                                                                            <rdf:Description>
-                                                                                <rdf:type rdf:resource="&rdf;List"/>
-                                                                                <rdf:first rdf:datatype="&xsd;string">INHIBITION-NONCOMPETITIVE</rdf:first>
-                                                                                <rdf:rest>
-                                                                                    <rdf:Description>
-                                                                                        <rdf:type rdf:resource="&rdf;List"/>
-                                                                                        <rdf:first rdf:datatype="&xsd;string">INHIBITION-OTHER</rdf:first>
-                                                                                        <rdf:rest>
-                                                                                            <rdf:Description>
-                                                                                                <rdf:type rdf:resource="&rdf;List"/>
-                                                                                                <rdf:first rdf:datatype="&xsd;string">INHIBITION-UNCOMPETITIVE</rdf:first>
-                                                                                                <rdf:rest rdf:resource="&rdf;nil"/>
-                                                                                            </rdf:Description>
-                                                                                        </rdf:rest>
-                                                                                    </rdf:Description>
-                                                                                </rdf:rest>
-                                                                            </rdf:Description>
-                                                                        </rdf:rest>
-                                                                    </rdf:Description>
-                                                                </rdf:rest>
-                                                            </rdf:Description>
-                                                        </rdf:rest>
-                                                    </rdf:Description>
-                                                </rdf:rest>
-                                            </rdf:Description>
-                                        </rdf:rest>
-                                    </rdf:Description>
-                                </rdf:rest>
-                            </rdf:Description>
-                        </rdf:rest>
-                    </rdf:Description>
-                </owl:oneOf>
-            </rdfs:Datatype>
-        </rdfs:range>
-    </owl:DatatypeProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#conversionDirection -->
-
-    <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#conversionDirection">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:comment rdf:datatype="&xsd;string">This property represents the direction of the reaction. If a reaction is fundamentally irreversible, then it will run in a single direction under all contexts. Otherwise it is reversible.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Conversion"/>
-        <rdfs:range>
-            <rdfs:Datatype>
-                <owl:oneOf>
-                    <rdf:Description>
-                        <rdf:type rdf:resource="&rdf;List"/>
-                        <rdf:first rdf:datatype="&xsd;string">LEFT-TO-RIGHT</rdf:first>
-                        <rdf:rest>
-                            <rdf:Description>
-                                <rdf:type rdf:resource="&rdf;List"/>
-                                <rdf:first rdf:datatype="&xsd;string">REVERSIBLE</rdf:first>
-                                <rdf:rest>
-                                    <rdf:Description>
-                                        <rdf:type rdf:resource="&rdf;List"/>
-                                        <rdf:first rdf:datatype="&xsd;string">RIGHT-TO-LEFT</rdf:first>
-                                        <rdf:rest rdf:resource="&rdf;nil"/>
-                                    </rdf:Description>
-                                </rdf:rest>
-                            </rdf:Description>
-                        </rdf:rest>
-                    </rdf:Description>
-                </owl:oneOf>
-            </rdfs:Datatype>
-        </rdfs:range>
-    </owl:DatatypeProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#db -->
-
-    <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#db">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:comment xml:lang="en">The name of the external database to which this xref refers.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Xref"/>
-        <rdfs:range rdf:resource="&xsd;string"/>
-    </owl:DatatypeProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#dbVersion -->
-
-    <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#dbVersion">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:comment xml:lang="en">The version of the external database in which this xref was last known to be valid. Resources may have recommendations for referencing dataset versions. For instance, the Gene Ontology recommends listing the date the GO terms were downloaded.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Xref"/>
-        <rdfs:range rdf:resource="&xsd;string"/>
-    </owl:DatatypeProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#deltaGPrime0 -->
-
-    <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#deltaGPrime0">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:comment rdf:datatype="&xsd;string">For biochemical reactions, this property refers to the standard transformed Gibbs energy change for a reaction written in terms of biochemical reactants (sums of species), delta-G&apos;&lt;sup&gt;o&lt;/sup&gt;.
-
-  delta-G&apos;&lt;sup&gt;o&lt;/sup&gt; = -RT lnK&apos;
-and
-  delta-G&apos;&lt;sup&gt;o&lt;/sup&gt; = delta-H&apos;&lt;sup&gt;o&lt;/sup&gt; - T delta-S&apos;&lt;sup&gt;o&lt;/sup&gt;
-
-delta-G&apos;&lt;sup&gt;o&lt;/sup&gt; has units of kJ/mol.  Like K&apos;, it is a function of temperature (T), ionic strength (I), pH, and pMg (pMg = -log&lt;sub&gt;10&lt;/sub&gt;[Mg&lt;sup&gt;2+&lt;/sup&gt;]). Therefore, these quantities must be specified, and values for DELTA-G for biochemical reactions are represented as 5-tuples of the form (delta-G&apos;&lt;sup&gt;o&lt;/sup&gt; T I pH pMg).
-
-(This definition from EcoCyc)</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DeltaG"/>
-        <rdfs:range rdf:resource="&xsd;float"/>
-    </owl:DatatypeProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#deltaH -->
-
-    <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#deltaH">
-        <rdfs:comment rdf:datatype="&xsd;string">For biochemical reactions, this property refers to the standard transformed enthalpy change for a reaction written in terms of biochemical reactants (sums of species), delta-H&apos;&lt;sup&gt;o&lt;/sup&gt;.
-
-  delta-G&apos;&lt;sup&gt;o&lt;/sup&gt; = delta-H&apos;&lt;sup&gt;o&lt;/sup&gt; - T delta-S&apos;&lt;sup&gt;o&lt;/sup&gt;
-
-Units: kJ/mole
-
-(This definition from EcoCyc)</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#BiochemicalReaction"/>
-        <rdfs:range rdf:resource="&xsd;float"/>
-    </owl:DatatypeProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#deltaS -->
-
-    <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#deltaS">
-        <rdfs:comment rdf:datatype="&xsd;string">For biochemical reactions, this property refers to the standard transformed entropy change for a reaction written in terms of biochemical reactants (sums of species), delta-S&apos;&lt;sup&gt;o&lt;/sup&gt;.
-
-  delta-G&apos;&lt;sup&gt;o&lt;/sup&gt; = delta-H&apos;&lt;sup&gt;o&lt;/sup&gt; - T delta-S&apos;&lt;sup&gt;o&lt;/sup&gt;
-
-(This definition from EcoCyc)</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#BiochemicalReaction"/>
-        <rdfs:range rdf:resource="&xsd;float"/>
-    </owl:DatatypeProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#displayName -->
-
-    <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#displayName">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:comment rdf:datatype="&xsd;string">An abbreviated name for this entity, preferably a name that is short enough to be used in a visualization application to label a graphical element that represents this entity. If no short name is available, an xref may be used for this purpose by the visualization application.</rdfs:comment>
-        <rdfs:subPropertyOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#name"/>
-        <rdfs:range rdf:resource="&xsd;string"/>
-    </owl:DatatypeProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#eCNumber -->
-
-    <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#eCNumber">
-        <rdfs:comment rdf:datatype="&xsd;string">The unique number assigned to a reaction by the Enzyme Commission of the International Union of Biochemistry and Molecular Biology.
-
-Note that not all biochemical reactions currently have EC numbers assigned to them.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#BiochemicalReaction"/>
-        <rdfs:range rdf:resource="&xsd;string"/>
-    </owl:DatatypeProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#id -->
-
-    <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#id">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:comment xml:lang="en">The primary identifier in the external database of the object to which this xref refers.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Xref"/>
-        <rdfs:range rdf:resource="&xsd;string"/>
-    </owl:DatatypeProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#idVersion -->
-
-    <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#idVersion">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:comment rdf:datatype="&xsd;string">The version number of the identifier (ID). E.g. The RefSeq accession number NM_005228.3 should be split into NM_005228 as the ID and 3 as the ID-VERSION.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Xref"/>
-        <rdfs:range rdf:resource="&xsd;string"/>
-    </owl:DatatypeProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#intraMolecular -->
-
-    <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#intraMolecular">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:comment rdf:datatype="&xsd;string">This flag represents whether the binding feature is within the same molecule or not.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#BindingFeature"/>
-        <rdfs:range rdf:resource="&xsd;boolean"/>
-    </owl:DatatypeProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#ionicStrength -->
-
-    <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#ionicStrength">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:comment rdf:datatype="&xsd;string">The ionic strength is defined as half of the total sum of the concentration (ci) of every ionic species (i) in the solution times the square of its charge (zi). For example, the ionic strength of a 0.1 M solution of CaCl2 is 0.5 x (0.1 x 22 + 0.2 x 12) = 0.3 M
-(Definition from http://www.lsbu.ac.uk/biology/enztech/ph.html)</rdfs:comment>
-        <rdfs:range rdf:resource="&xsd;float"/>
-        <rdfs:domain>
-            <owl:Class>
-                <owl:unionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#DeltaG"/>
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#KPrime"/>
-                </owl:unionOf>
-            </owl:Class>
-        </rdfs:domain>
-    </owl:DatatypeProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#kPrime -->
-
-    <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#kPrime">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:comment rdf:datatype="&xsd;string">The apparent equilibrium constant K&apos;. Concentrations in the equilibrium constant equation refer to the total concentrations of  all forms of particular biochemical reactants. For example, in the equilibrium constant equation for the biochemical reaction in which ATP is hydrolyzed to ADP and inorganic phosphate:
-
-K&apos; = [ADP][P&lt;sub&gt;i&lt;/sub&gt;]/[ATP],
-
-The concentration of ATP refers to the total concentration of all of the following species:
-
-[ATP] = [ATP&lt;sup&gt;4-&lt;/sup&gt;] + [HATP&lt;sup&gt;3-&lt;/sup&gt;] + [H&lt;sub&gt;2&lt;/sub&gt;ATP&lt;sup&gt;2-&lt;/sup&gt;] + [MgATP&lt;sup&gt;2-&lt;/sup&gt;] + [MgHATP&lt;sup&gt;-&lt;/sup&gt;] + [Mg&lt;sub&gt;2&lt;/sub&gt;ATP].
-
-The apparent equilibrium constant is formally dimensionless, and can be kept so by inclusion of as many of the terms (1 mol/dm&lt;sup&gt;3&lt;/sup&gt;) in the numerator or denominator as necessary.  It is a function of temperature (T), ionic strength (I), pH, and pMg (pMg = -log&lt;sub&gt;10&lt;/sub&gt;[Mg&lt;sup&gt;2+&lt;/sup&gt;]).
-(Definition from EcoCyc)</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#KPrime"/>
-        <rdfs:range rdf:resource="&xsd;float"/>
-    </owl:DatatypeProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#molecularWeight -->
-
-    <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#molecularWeight">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:comment xml:lang="en">Defines the molecular weight of the molecule, in daltons.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SmallMoleculeReference"/>
-        <rdfs:range rdf:resource="&xsd;float"/>
-    </owl:DatatypeProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#name -->
-
-    <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#name">
-        <rdfs:comment xml:lang="en">One or more synonyms for the name of this individual. This should include the values of the standardName and displayName property so that it is easy to find all known names in one place.</rdfs:comment>
-        <rdfs:range rdf:resource="&xsd;string"/>
-        <rdfs:domain>
-            <owl:Class>
-                <owl:unionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#BioSource"/>
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#Entity"/>
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#EntityReference"/>
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#Provenance"/>
-                </owl:unionOf>
-            </owl:Class>
-        </rdfs:domain>
-    </owl:DatatypeProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#pMg -->
-
-    <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#pMg">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:comment rdf:datatype="&xsd;string">A measure of the concentration of magnesium (Mg) in solution. (pMg = -log&lt;sub&gt;10&lt;/sub&gt;[Mg&lt;sup&gt;2+&lt;/sup&gt;])</rdfs:comment>
-        <rdfs:range rdf:resource="&xsd;float"/>
-        <rdfs:domain>
-            <owl:Class>
-                <owl:unionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#DeltaG"/>
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#KPrime"/>
-                </owl:unionOf>
-            </owl:Class>
-        </rdfs:domain>
-    </owl:DatatypeProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#patoData -->
-
-    <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#patoData">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:comment rdf:datatype="&xsd;string">The phenotype data from PATO, formatted as PhenoXML (defined at http://www.fruitfly.org/~cjm/obd/formats.html)</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhenotypeVocabulary"/>
-        <rdfs:range rdf:resource="&xsd;string"/>
-    </owl:DatatypeProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#ph -->
-
-    <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#ph">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:comment rdf:datatype="&xsd;string">A measure of acidity and alkalinity of a solution that is a number on a scale on which a value of 7 represents neutrality and lower numbers indicate increasing acidity and higher numbers increasing alkalinity and on which each unit of change represents a tenfold change in acidity or alkalinity and that is the negative logarithm of the effective hydrogen-ion concentration or hydrogen-ion activity in gram equivalents per liter of the solution. (Definition from Merriam-Webster Dictionary)</rdfs:comment>
-        <rdfs:range rdf:resource="&xsd;float"/>
-        <rdfs:domain>
-            <owl:Class>
-                <owl:unionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#DeltaG"/>
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#KPrime"/>
-                </owl:unionOf>
-            </owl:Class>
-        </rdfs:domain>
-    </owl:DatatypeProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#positionStatus -->
-
-    <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#positionStatus">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:comment rdf:datatype="&xsd;string">The confidence status of the sequence position. This could be:
-EQUAL: The SEQUENCE-POSITION is known to be at the SEQUENCE-POSITION.
-GREATER-THAN: The site is greater than the SEQUENCE-POSITION.
-LESS-THAN: The site is less than the SEQUENCE-POSITION.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceSite"/>
-        <rdfs:range>
-            <rdfs:Datatype>
-                <owl:oneOf>
-                    <rdf:Description>
-                        <rdf:type rdf:resource="&rdf;List"/>
-                        <rdf:first rdf:datatype="&xsd;string">EQUAL</rdf:first>
-                        <rdf:rest>
-                            <rdf:Description>
-                                <rdf:type rdf:resource="&rdf;List"/>
-                                <rdf:first rdf:datatype="&xsd;string">GREATER-THAN</rdf:first>
-                                <rdf:rest>
-                                    <rdf:Description>
-                                        <rdf:type rdf:resource="&rdf;List"/>
-                                        <rdf:first rdf:datatype="&xsd;string">LESS-THAN</rdf:first>
-                                        <rdf:rest rdf:resource="&rdf;nil"/>
-                                    </rdf:Description>
-                                </rdf:rest>
-                            </rdf:Description>
-                        </rdf:rest>
-                    </rdf:Description>
-                </owl:oneOf>
-            </rdfs:Datatype>
-        </rdfs:range>
-    </owl:DatatypeProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#sequence -->
-
-    <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#sequence">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:comment xml:lang="en">Polymer sequence in uppercase letters. For DNA, usually A,C,G,T letters representing the nucleosides of adenine, cytosine, guanine and thymine, respectively; for RNA, usually A, C, U, G; for protein, usually the letters corresponding to the 20 letter IUPAC amino acid code.</rdfs:comment>
-        <rdfs:range rdf:resource="&xsd;string"/>
-        <rdfs:domain>
-            <owl:Class>
-                <owl:unionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#DnaReference"/>
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#DnaRegionReference"/>
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#ProteinReference"/>
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#RnaReference"/>
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#RnaRegionReference"/>
-                </owl:unionOf>
-            </owl:Class>
-        </rdfs:domain>
-    </owl:DatatypeProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#sequencePosition -->
-
-    <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#sequencePosition">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:comment rdf:datatype="&xsd;string">The integer listed gives the position. The first base or amino acid is position 1. In combination with the numeric value, the property &apos;POSITION-STATUS&apos; allows to express fuzzy positions, e.g. &apos;less than 4&apos;.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceSite"/>
-        <rdfs:range rdf:resource="&xsd;int"/>
-    </owl:DatatypeProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#source -->
-
-    <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#source">
-        <rdfs:comment rdf:datatype="&xsd;string">The source  in which the reference was published, such as: a book title, or a journal title and volume and pages.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PublicationXref"/>
-        <rdfs:range rdf:resource="&xsd;string"/>
-    </owl:DatatypeProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#spontaneous -->
-
-    <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#spontaneous">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Specifies whether a conversion occurs spontaneously or not. If the spontaneity is not known, the SPONTANEOUS property should be left empty.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Conversion"/>
-        <rdfs:range rdf:resource="&xsd;boolean"/>
-    </owl:DatatypeProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#standardName -->
-
-    <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#standardName">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:comment xml:lang="en">The preferred full name for this entity.</rdfs:comment>
-        <rdfs:subPropertyOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#name"/>
-        <rdfs:range rdf:resource="&xsd;string"/>
-    </owl:DatatypeProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#stepDirection -->
-
-    <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#stepDirection">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Direction of the conversion in this particular pathway context. 
-This property can be used for annotating direction of enzymatic activity. Even if an enzyme catalyzes a reaction reversibly, the flow of matter through the pathway will force the equilibrium in a given direction for that particular pathway.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#BiochemicalPathwayStep"/>
-        <rdfs:range>
-            <rdfs:Datatype>
-                <owl:oneOf>
-                    <rdf:Description>
-                        <rdf:type rdf:resource="&rdf;List"/>
-                        <rdf:first rdf:datatype="&xsd;string">LEFT-TO-RIGHT</rdf:first>
-                        <rdf:rest>
-                            <rdf:Description>
-                                <rdf:type rdf:resource="&rdf;List"/>
-                                <rdf:first rdf:datatype="&xsd;string">REVERSIBLE</rdf:first>
-                                <rdf:rest>
-                                    <rdf:Description>
-                                        <rdf:type rdf:resource="&rdf;List"/>
-                                        <rdf:first rdf:datatype="&xsd;string">RIGHT-TO-LEFT</rdf:first>
-                                        <rdf:rest rdf:resource="&rdf;nil"/>
-                                    </rdf:Description>
-                                </rdf:rest>
-                            </rdf:Description>
-                        </rdf:rest>
-                    </rdf:Description>
-                </owl:oneOf>
-            </rdfs:Datatype>
-        </rdfs:range>
-    </owl:DatatypeProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#stoichiometricCoefficient -->
-
-    <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#stoichiometricCoefficient">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Stoichiometric coefficient for one of the entities in an interaction or complex. This value can be any rational number. Generic values such as &quot;n&quot; or &quot;n+1&quot; should not be used - polymers are currently not covered.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Stoichiometry"/>
-        <rdfs:range rdf:resource="&xsd;float"/>
-    </owl:DatatypeProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#structureData -->
-
-    <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#structureData">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:comment rdf:datatype="&xsd;string">This property holds a string of data defining chemical structure or other information, in either the CML or SMILES format, as specified in property Structure-Format. If, for example, the CML format is used, then the value of this property is a string containing the XML encoding of the CML data.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ChemicalStructure"/>
-        <rdfs:range rdf:resource="&xsd;string"/>
-    </owl:DatatypeProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#structureFormat -->
-
-    <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#structureFormat">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:comment xml:lang="en">This property specifies which format is used to define chemical structure data.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ChemicalStructure"/>
-        <rdfs:range>
-            <rdfs:Datatype>
-                <owl:oneOf>
-                    <rdf:Description>
-                        <rdf:type rdf:resource="&rdf;List"/>
-                        <rdf:first rdf:datatype="&xsd;string">CML</rdf:first>
-                        <rdf:rest>
-                            <rdf:Description>
-                                <rdf:type rdf:resource="&rdf;List"/>
-                                <rdf:first rdf:datatype="&xsd;string">InChI</rdf:first>
-                                <rdf:rest>
-                                    <rdf:Description>
-                                        <rdf:type rdf:resource="&rdf;List"/>
-                                        <rdf:first rdf:datatype="&xsd;string">SMILES</rdf:first>
-                                        <rdf:rest rdf:resource="&rdf;nil"/>
-                                    </rdf:Description>
-                                </rdf:rest>
-                            </rdf:Description>
-                        </rdf:rest>
-                    </rdf:Description>
-                </owl:oneOf>
-            </rdfs:Datatype>
-        </rdfs:range>
-    </owl:DatatypeProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#temperature -->
-
-    <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#temperature">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Temperature in Celsius</rdfs:comment>
-        <rdfs:range rdf:resource="&xsd;float"/>
-        <rdfs:domain>
-            <owl:Class>
-                <owl:unionOf rdf:parseType="Collection">
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#DeltaG"/>
-                    <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#KPrime"/>
-                </owl:unionOf>
-            </owl:Class>
-        </rdfs:domain>
-    </owl:DatatypeProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#templateDirection -->
-
-    <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#templateDirection">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:comment rdf:datatype="&xsd;string">The direction of the template reaction on the template.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#TemplateReaction"/>
-        <rdfs:range>
-            <rdfs:Datatype>
-                <owl:oneOf>
-                    <rdf:Description>
-                        <rdf:type rdf:resource="&rdf;List"/>
-                        <rdf:first rdf:datatype="&xsd;string">FORWARD</rdf:first>
-                        <rdf:rest>
-                            <rdf:Description>
-                                <rdf:type rdf:resource="&rdf;List"/>
-                                <rdf:first rdf:datatype="&xsd;string">REVERSE</rdf:first>
-                                <rdf:rest rdf:resource="&rdf;nil"/>
-                            </rdf:Description>
-                        </rdf:rest>
-                    </rdf:Description>
-                </owl:oneOf>
-            </rdfs:Datatype>
-        </rdfs:range>
-    </owl:DatatypeProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#term -->
-
-    <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#term">
-        <rdfs:comment rdf:datatype="&xsd;string">The external controlled vocabulary term.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ControlledVocabulary"/>
-        <rdfs:range rdf:resource="&xsd;string"/>
-    </owl:DatatypeProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#title -->
-
-    <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#title">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:comment xml:lang="en">The title of the publication.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PublicationXref"/>
-        <rdfs:range rdf:resource="&xsd;string"/>
-    </owl:DatatypeProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#url -->
-
-    <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#url">
-        <rdfs:comment xml:lang="en">The URL at which the publication can be found, if it is available through the Web.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PublicationXref"/>
-        <rdfs:range rdf:resource="&xsd;string"/>
-    </owl:DatatypeProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#value -->
-
-    <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#value">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:comment rdf:datatype="&xsd;string">The value of the score.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Score"/>
-        <rdfs:range rdf:resource="&xsd;string"/>
-    </owl:DatatypeProperty>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#year -->
-
-    <owl:DatatypeProperty rdf:about="http://www.biopax.org/release/biopax-level3.owl#year">
-        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-        <rdfs:comment xml:lang="en">The year in which this publication was published.</rdfs:comment>
-        <rdfs:domain rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PublicationXref"/>
-        <rdfs:range rdf:resource="&xsd;int"/>
-    </owl:DatatypeProperty>
-    
-
-
-    <!-- 
-    ///////////////////////////////////////////////////////////////////////////////////////
-    //
-    // Classes
-    //
-    ///////////////////////////////////////////////////////////////////////////////////////
-     -->
-
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#BindingFeature -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#BindingFeature">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityFeature"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#FragmentFeature"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition : An entity feature that represent the bound state of a physical entity. A pair of binding features represents a bond. 
-
-Rationale: A physical entity in a molecular complex is considered as a new state of an entity as it is structurally and functionally different. Binding features provide facilities for describing these states. Similar to other features, a molecule can have bound and not-bound states. 
-
-Usage: Typically, binding features are present in pairs, each describing the binding characteristic for one of the interacting physical entities. One exception is using a binding feature with no paired feature to describe any potential binding. For example, an unbound receptor can be described by using a &quot;not-feature&quot; property with an unpaired binding feature as its value.  BindingSiteType and featureLocation allows annotating the binding location.
-
-IntraMolecular property should be set to &quot;true&quot; if the bond links two parts of the same molecule. A pair of binding features are still used where they are owned by the same physical entity. 
-
-If the binding is due to the covalent interactions, for example in the case of lipoproteins, CovalentBindingFeature subclass should be used instead of this class.</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#BioSource -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#BioSource">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#UtilityClass"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ChemicalStructure"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ControlledVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DeltaG"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityFeature"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityReference"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Evidence"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ExperimentalForm"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#KPrime"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PathwayStep"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Provenance"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Score"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceLocation"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Stoichiometry"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Xref"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: The biological source (organism, tissue or cell type) of an Entity. 
-
-Usage: Some entities are considered source-neutral (e.g. small molecules), and the biological source of others can be deduced from their constituentss (e.g. complex, pathway).
-
-Instances: HeLa cells, Homo sapiens, and mouse liver tissue.</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#BiochemicalPathwayStep -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#BiochemicalPathwayStep">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PathwayStep"/>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#stepProcess"/>
-                <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Control"/>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: Imposes ordering on a step in a biochemical pathway. 
-Retionale: A biochemical reaction can be reversible by itself, but can be physiologically directed in the context of a pathway, for instance due to flux of reactants and products. 
-Usage: Only one conversion interaction can be ordered at a time, but multiple catalysis or modulation instances can be part of one step.</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#BiochemicalReaction -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#BiochemicalReaction">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Conversion"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ComplexAssembly"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Degradation"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: A conversion in which molecules of one or more physicalEntity pools, undergo covalent modifications and become a member of one or more other physicalEntity pools. The substrates of biochemical reactions are defined in terms of sums of species. This is a convention in biochemistry, and, in principle, all EC reactions should be biochemical reactions.
-
-Examples: ATP + H2O = ADP + Pi
-
-Comment: In the example reaction above, ATP is considered to be an equilibrium mixture of several species, namely ATP4-, HATP3-, H2ATP2-, MgATP2-, MgHATP-, and Mg2ATP. Additional species may also need to be considered if other ions (e.g. Ca2+) that bind ATP are present. Similar considerations apply to ADP and to inorganic phosphate (Pi). When writing biochemical reactions, it is not necessary to attach charges to the biochemical reactants or to include ions such as H+ and Mg2+ in the equation. The reaction is written in the direction specified by the EC nomenclature system, if applicable, regardless of the physiological direction(s) in which the reaction proceeds. Polymerization reactions involving large polymers whose structure is not explicitly captured should generally be represented as unbalanced reactions in which the monomer is consumed but the polymer remains unchanged, e.g. glycogen + glucose = glycogen. A better coverage for polymerization will be developed.</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#Catalysis -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#Catalysis">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Control"/>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#controlled"/>
-                <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Conversion"/>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#controlType"/>
-                <owl:hasValue rdf:datatype="&xsd;string">ACTIVATION</owl:hasValue>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Modulation"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#TemplateReactionRegulation"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: A control interaction in which a physical entity (a catalyst) increases the rate of a conversion interaction by lowering its activation energy. Instances of this class describe a pairing between a catalyzing entity and a catalyzed conversion.
-Rationale: Catalysis, theoretically, is always bidirectional since it acts by lowering the activation energy. Physiologically, however, it can have a direction because of the concentration of the participants. For example, the oxidative decarboxylation catalyzed by Isocitrate dehydrogenase always happens in one direction under physiological conditions since the produced carbon dioxide is constantly removed from the system.
-   
-Usage: A separate catalysis instance should be created for each different conversion that a physicalEntity may catalyze and for each different physicalEntity that may catalyze a conversion. For example, a bifunctional enzyme that catalyzes two different biochemical reactions would be linked to each of those biochemical reactions by two separate instances of the catalysis class. Also, catalysis reactions from multiple different organisms could be linked to the same generic biochemical reaction (a biochemical reaction is generic if it only includes small molecules). Generally, the enzyme catalyzing a conversion is known and the use of this class is obvious, however, in the cases where a catalyzed reaction is known to occur but the enzyme is not known, a catalysis instance can be created without a controller specified.
-Synonyms: facilitation, acceleration.
-Examples: The catalysis of a biochemical reaction by an enzyme, the enabling of a transport interaction by a membrane pore complex, and the facilitation of a complex assembly by a scaffold protein. Hexokinase -&gt; (The &quot;Glucose + ATP -&gt; Glucose-6-phosphate +ADP&quot; reaction). A plasma membrane Na+/K+ ATPase is an active transporter (antiport pump) using the energy of ATP to pump Na+ out of the cell and K+ in. Na+ from cytoplasm to extracellular space would be described in a transport instance. K+ from extracellular space to cytoplasm would be described in a transport instance. The ATPase pump would be stored in a catalysis instance controlling each of the above transport instances. A biochemical reaction that does not occur by itself under physiological conditions, but has been observed to occur in the presence of cell extract, likely via one or more unknown enzymes present in the extract, would be stored in the CONTROLLED property, with the CONTROLLER property empty.</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#CellVocabulary -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#CellVocabulary">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ControlledVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#CellularLocationVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityReferenceTypeVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EvidenceCodeVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ExperimentalFormVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#InteractionVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhenotypeVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RelationshipTypeVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceModificationVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceRegionVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#TissueVocabulary"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: A reference to the Cell Type Ontology (CL). Homepage at http://obofoundry.org/cgi-bin/detail.cgi?cell.  Browse at http://www.ebi.ac.uk/ontology-lookup/browse.do?ontName=CL</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#CellularLocationVocabulary -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#CellularLocationVocabulary">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ControlledVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityReferenceTypeVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EvidenceCodeVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ExperimentalFormVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#InteractionVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhenotypeVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RelationshipTypeVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceModificationVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceRegionVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#TissueVocabulary"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: A reference to the Gene Ontology Cellular Component (GO CC) ontology. Homepage at http://www.geneontology.org.  Browse at http://www.ebi.ac.uk/ontology-lookup/browse.do?ontName=GO</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#ChemicalStructure -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#ChemicalStructure">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#UtilityClass"/>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#structureData"/>
-                <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#structureFormat"/>
-                <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ControlledVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DeltaG"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityFeature"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityReference"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Evidence"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ExperimentalForm"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#KPrime"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PathwayStep"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Provenance"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Score"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceLocation"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Stoichiometry"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Xref"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: The chemical structure of a small molecule. 
-
-Usage: Structure information is stored in the property structureData, in one of three formats: the CML format (see URL www.xml-cml.org), the SMILES format (see URL www.daylight.com/dayhtml/smiles/) or the InChI format (http://www.iupac.org/inchi/). The structureFormat property specifies which format is used.
-
-Examples: The following SMILES string describes the structure of glucose-6-phosphate:
-&apos;C(OP(=O)(O)O)[CH]1([CH](O)[CH](O)[CH](O)[CH](O)O1)&apos;.</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#Complex -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#Complex">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#memberPhysicalEntity"/>
-                <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Complex"/>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Dna"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DnaRegion"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Protein"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Rna"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RnaRegion"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SmallMolecule"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: A physical entity whose structure is comprised of other physical entities bound to each other covalently or non-covalently, at least one of which is a macromolecule (e.g. protein, DNA, or RNA) and the Stoichiometry of the components are known. 
-
-Comment: Complexes must be stable enough to function as a biological unit; in general, the temporary association of an enzyme with its substrate(s) should not be considered or represented as a complex. A complex is the physical product of an interaction (complexAssembly) and is not itself considered an interaction.
-The boundaries on the size of complexes described by this class are not defined here, although possible, elements of the cell  such a mitochondria would typically not be described using this class (later versions of this ontology may include a cellularComponent class to represent these). The strength of binding cannot be described currently, but may be included in future versions of the ontology, depending on community need.
-Examples: Ribosome, RNA polymerase II. Other examples of this class include complexes of multiple protein monomers and complexes of proteins and small molecules.</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#ComplexAssembly -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#ComplexAssembly">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Conversion"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Degradation"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Transport"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: A conversion interaction in which a set of physical entities, at least one being a macromolecule (e.g. protein, RNA, DNA), aggregate to from a complex physicalEntity. One of the participants of a complexAssembly must be an instance of the class Complex. The modification of the physicalentities involved in the ComplexAssembly is captured via BindingFeature class.
-
-Usage: This class is also used to represent complex disassembly. The assembly or disassembly of a complex is often a spontaneous process, in which case the direction of the complexAssembly (toward either assembly or disassembly) should be specified via the SPONTANEOUS property. Conversions in which participants obtain or lose CovalentBindingFeatures ( e.g. glycolysation of proteins) should be modeled with BiochemicalReaction.
-
-Synonyms: aggregation, complex formation
-
-Examples: Assembly of the TFB2 and TFB3 proteins into the TFIIH complex, and assembly of the ribosome through aggregation of its subunits.</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#Control -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#Control">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Interaction"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Conversion"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#GeneticInteraction"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#MolecularInteraction"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#TemplateReaction"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: An interaction in which one entity regulates, modifies, or otherwise influences a continuant entity, i.e. pathway or interaction. 
-
-Usage: Conceptually, physical entities are involved in interactions (or events) and the events are controlled or modified, not the physical entities themselves. For example, a kinase activating a protein is a frequent event in signaling pathways and is usually represented as an &apos;activation&apos; arrow from the kinase to the substrate in signaling diagrams. This is an abstraction, called &quot;Activity Flow&quot; representation,  that can be ambiguous without context. In BioPAX, this information should be captured as the kinase catalyzing (via an instance of the catalysis class) a Biochemical Reaction in which the substrate is phosphorylated. 
-Subclasses of control define types specific to the biological process that is being controlled and should be used instead of the generic &quot;control&quot; class when applicable. 
-
-A control can potentially have multiple controllers. This acts as a logical AND, i.e. both controllers are needed to regulate the  controlled event. Alternatively multiple controllers can control the same event and this acts as a logical OR, i.e. any one of them is sufficient to regulate the controlled event. Using this structure it is possible to describe arbitrary control logic using BioPAX.
-
-Rationale: Control can be temporally non-atomic, for example a pathway can control another pathway in BioPAX.  
-Synonyms: regulation, mediation
-
-Examples: A small molecule that inhibits a pathway by an unknown mechanism.</rdfs:comment>
-    </owl:Class>
-    <owl:Axiom>
-        <disponte:probability rdf:datatype="&xsd;decimal">0.7</disponte:probability>
-        <owl:annotatedSource rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Control"/>
-        <owl:annotatedTarget rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Interaction"/>
-        <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/>
-    </owl:Axiom>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#ControlledVocabulary -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#ControlledVocabulary">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#UtilityClass"/>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#xref"/>
-                <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#UnificationXref"/>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DeltaG"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityFeature"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityReference"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Evidence"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ExperimentalForm"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#KPrime"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PathwayStep"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Provenance"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Score"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceLocation"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Stoichiometry"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Xref"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Used to reference terms from external controlled vocabularies (CVs) from the ontology. To support consistency and compatibility, open, freely available CVs should be used whenever possible, such as the Gene Ontology (GO)15 or other open biological CVs listed on the OBO website (http://obo.sourceforge.net/). See the section on controlled vocabularies in Section 4 for more information.</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#Conversion -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#Conversion">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Interaction"/>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#participant"/>
-                <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#GeneticInteraction"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: An interaction in which molecules of one or more physicalEntity pools are physically transformed and become a member of one or more other physicalEntity pools.
-
-Comments: Conversions in BioPAX are stoichiometric and closed world, i.e. it is assumed that all of the participants are listed. Both properties are due to the law of mass conservation. 
-
-Usage: Subclasses of conversion represent different types of transformation reflected by the properties of different physicalEntity. BiochemicalReactions will change the ModificationFeatures on a PhysicalEntity , Transport will change the CellularLocation and ComplexAssembly will change BindingFeatures. Generic Conversion class should only be used when the modification does not fit into one of these classes. 
-
-Example: Opening of a voltage gated channel.</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#CovalentBindingFeature -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#CovalentBindingFeature">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#BindingFeature"/>
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ModificationFeature"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition : An entity feature that represent the covalently bound state of  a physical entity. 
-
-Rationale: Most frequent covalent modifications to proteins and DNA, such as phosphorylation and metylation are covered by the ModificationFeature class. In these cases, the added groups are simple and stateless therefore they can be captured by a controlled vocabulary. In other cases, such as ThiS-Thilacyl-disulfide, the covalently linked molecules are best represented as a molecular complex. CovalentBindingFeature should be used to model such covalently linked complexes.
-
-Usage: Using this construct, it is possible to represent small molecules as a covalent complex of two other small molecules. The demarcation of small molecules is a general problem and is delegated to small molecule databases.The best practice is not to model using covalent complexes unless at least one of the participants is a protein, DNA or RNA.
-
-Examples:
-disulfide bond
-UhpC + glc-6P -&gt; Uhpc-glc-6p
-acetyl-ACP -&gt; decenoyl-ACP
-charged tRNA</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#Degradation -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#Degradation">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Conversion"/>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#conversionDirection"/>
-                <owl:hasValue rdf:datatype="&xsd;string">LEFT-TO-RIGHT</owl:hasValue>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Transport"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: A conversion in which a pool of macromolecules are degraded into their elementary units.
-
-Usage: This conversion always has a direction of left-to-right and is irreversible. Degraded molecules are always represented on the left, degradation products on the right. 
-
-Comments: Degradation is a complex abstraction over multiple reactions. Although it obeys law of mass conservation and stoichiometric, the products are rarely specified since they are ubiquitous.
-
-Example:  Degradation of a protein to amino acids.</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#DeltaG -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#DeltaG">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#UtilityClass"/>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#deltaGPrime0"/>
-                <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityFeature"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityReference"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Evidence"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ExperimentalForm"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#KPrime"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PathwayStep"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Provenance"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Score"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceLocation"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Stoichiometry"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Xref"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: Standard transformed Gibbs energy change for a reaction written in terms of biochemical reactants.  
-Usage: Delta-G is represented as a 5-tuple of delta-G&apos;&lt;sup&gt;0&lt;/sup&gt;, temperature, ionic strength , pH, and pMg . A conversion in BioPAX may have multiple Delta-G values, representing different measurements for delta-G&apos;&lt;sup&gt;0&lt;/sup&gt; obtained under the different experimental conditions.</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#Dna -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#Dna">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#entityReference"/>
-                <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DnaReference"/>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#memberPhysicalEntity"/>
-                <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Dna"/>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DnaRegion"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Protein"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Rna"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RnaRegion"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SmallMolecule"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: A physical entity consisting of a sequence of deoxyribonucleotide monophosphates; a deoxyribonucleic acid.
-Usage: DNA should be used for pools of individual DNA molecules. For describing subregions on those molecules use DNARegion.
-Examples: a chromosome, a plasmid. A specific example is chromosome 7 of Homo sapiens.</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#DnaReference -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#DnaReference">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityReference"/>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#memberEntityReference"/>
-                <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DnaReference"/>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#subRegion"/>
-                <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DnaRegionReference"/>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DnaRegionReference"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ProteinReference"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RnaReference"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RnaRegionReference"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SmallMoleculeReference"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: A DNA reference is a grouping of several DNA entities that are common in sequence.  Members can differ in celular location, sequence features, SNPs, mutations and bound partners.
-
-Comments : Note that this is not a reference gene. Genes are non-physical,stateless continuants. Their physical manifestations can span multiple DNA molecules, sometimes even across chromosomes due to regulatory regions. Similarly a gene is not necessarily made up of deoxyribonucleic acid and can be present in multiple copies ( which are different DNA regions).</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#DnaRegion -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#DnaRegion">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#memberPhysicalEntity"/>
-                <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DnaRegion"/>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#entityReference"/>
-                <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DnaRegionReference"/>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Protein"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Rna"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RnaRegion"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SmallMolecule"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: A region on a DNA molecule. 
-Usage:  DNARegion is not a pool of independent molecules but a subregion on these molecules. As such, every DNARegion has a defining DNA molecule.  
-Examples: Protein encoding region, promoter</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#DnaRegionReference -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#DnaRegionReference">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityReference"/>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#subRegion"/>
-                <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#DnaRegionReference"/>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ProteinReference"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RnaReference"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RnaRegionReference"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SmallMoleculeReference"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: A DNARegionReference is a grouping of several DNARegion entities that are common in sequence and genomic position.  Members can differ in cellular location, sequence features, SNPs, mutations and bound partners.</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#Entity -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#Entity">
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: A discrete biological unit used when describing pathways. 
-
-Rationale: Entity is the most abstract class for representing interacting 
-    elements in a pathway. It includes both occurents (interactions and 
-    pathways) and continuants (physical entities and genes). Loosely speaking, 
-    BioPAX Entity is an atomic scientific statement with an associated source, 
-    evidence and references. 
-Synonyms: element, thing, object, bioentity, statement.</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#EntityFeature -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#EntityFeature">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#UtilityClass"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityReference"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Evidence"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ExperimentalForm"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#KPrime"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PathwayStep"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Provenance"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Score"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceLocation"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Stoichiometry"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Xref"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Description: A characteristic of a physical entity that can change while the entity still retains its biological identity. 
-
-Rationale: Two phosphorylated forms of a protein are strictly speaking different chemical  molecules. It is, however, standard in biology to treat them as different states of the same entity, where the entity is loosely defined based on sequence. Entity Feature class and its subclassses captures these variable characteristics. A Physical Entity in BioPAX represents a pool of  molecules rather than an individual molecule. This is a notion imported from chemistry( See PhysicalEntity). Pools are defined by a set of Entity Features in the sense that a single molecule must have all of the features in the set in order to be considered a member of the pool. Since it is impossible to list and experimentally test all potential features for an  entity, features that are not listed in the selection criteria is neglected Pools can also be defined by the converse by specifying features  that are known to NOT exist in a specific context. As DNA, RNA and Proteins can be hierarchicaly organized into families based on sequence homology so can entity features. The memberFeature property allows capturing such hierarchical classifications among entity features.
-
-
-Usage: Subclasses of entity feature describe most common biological instances and should be preferred whenever possible. One common usecase for instantiating  entity feature is, for describing active/inactive states of proteins where more specific feature information is not available.  
-
-Examples: Open/close conformational state of channel proteins, &quot;active&quot;/&quot;inactive&quot; states, excited states of photoreactive groups.</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#EntityReference -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#EntityReference">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#UtilityClass"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Evidence"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ExperimentalForm"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#KPrime"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PathwayStep"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Provenance"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Score"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceLocation"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SmallMolecule"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Stoichiometry"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Xref"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: An entity reference is a grouping of several physical entities across different contexts and molecular states, that share common physical properties and often named and treated as a single entity with multiple states by biologists. 
-
-Rationale:   Many protein, small molecule and gene databases share this point of view, and such a grouping is an important prerequisite for interoperability with those databases. Biologists would often group different pools of molecules in different contexts under the same name. For example cytoplasmic and extracellular calcium have different effects on the cell&apos;s behavior, but they are still called calcium. For DNA, RNA and Proteins the grouping is defined based on a wildtype sequence, for small molecules it is defined by the chemical structure.
-
-Usage: Entity references store the information common to a set of molecules in various states described in the BioPAX document, including database cross-references. For instance, the P53 protein can be phosphorylated in multiple different ways. Each separate P53 protein (pool) in a phosphorylation state would be represented as a different protein (child of physicalEntity) and all things common to all P53 proteins, including all possible phosphorylation sites, the sequence common to all of them and common references to protein databases containing more information about P53 would be stored in a Entity Reference.  
-
-Comments: This grouping has three semantic implications:
-
-1.  Members of different pools share many physical and biochemical properties. This includes their chemical structure, sequence, organism and set of molecules they react with. They will also share a lot of secondary information such as their names, functional groupings, annotation terms and database identifiers.
-
-2. A small number of transitions seperates these pools. In other words it is relatively easy and frequent for a molecule to transform from one physical entity to another that belong to the same reference entity. For example an extracellular calcium can become cytoplasmic, and p53 can become phosphorylated. However no calcium virtually becomes sodium, or no p53 becomes mdm2. In the former it is the sheer energy barrier of a nuclear reaction, in the latter sheer statistical improbability of synthesizing the same sequence without a template. If one thinks about the biochemical network as molecules transforming into each other, and remove edges that respond to transcription, translation, degradation and covalent modification of small molecules, each remaining component is a reference entity.
-
-3. Some of the pools in the same group can overlap. p53-p@ser15 can overlap with p53-p@thr18. Most of the experiments in molecular biology will only check for one state variable, rarely multiple, and never for the all possible combinations. So almost all statements that refer to the state of the molecule talk about a pool that can overlap with other pools. However no overlaps is possible between molecules of different groups.</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#EntityReferenceTypeVocabulary -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#EntityReferenceTypeVocabulary">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ControlledVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EvidenceCodeVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ExperimentalFormVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#InteractionVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhenotypeVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RelationshipTypeVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceModificationVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceRegionVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#TissueVocabulary"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definiiton: A reference to a term from an entity reference group ontology. As of the writing of this documentation, there is no standard ontology of these terms, though a common type is ‘homology’.</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#Evidence -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#Evidence">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#UtilityClass"/>
-        <rdfs:subClassOf>
-            <owl:Class>
-                <owl:unionOf rdf:parseType="Collection">
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#confidence"/>
-                        <owl:minCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:minCardinality>
-                    </owl:Restriction>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#evidenceCode"/>
-                        <owl:minCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:minCardinality>
-                    </owl:Restriction>
-                    <owl:Restriction>
-                        <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#experimentalForm"/>
-                        <owl:minCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:minCardinality>
-                    </owl:Restriction>
-                </owl:unionOf>
-            </owl:Class>
-        </rdfs:subClassOf>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ExperimentalForm"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#KPrime"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PathwayStep"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Provenance"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Score"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceLocation"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Stoichiometry"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Xref"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: The support for a particular assertion, such as the existence of an interaction or pathway. 
-Usage: At least one of confidence, evidenceCode, or experimentalForm must be instantiated when creating an evidence instance. XREF may reference a publication describing the experimental evidence using a publicationXref or may store a description of the experiment in an experimental description database using a unificationXref (if the referenced experiment is the same) or relationshipXref (if it is not identical, but similar in some way e.g. similar in protocol). Evidence is meant to provide more information than just an xref to the source paper.
-Examples: A description of a molecular binding assay that was used to detect a protein-protein interaction.</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#EvidenceCodeVocabulary -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#EvidenceCodeVocabulary">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ControlledVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ExperimentalFormVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#InteractionVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhenotypeVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RelationshipTypeVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceModificationVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceRegionVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#TissueVocabulary"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: A reference to the PSI Molecular Interaction ontology (MI) experimental method types, including &quot;interaction detection method&quot;, &quot;participant identification method&quot;, &quot;feature detection method&quot;. Homepage at http://www.psidev.info/.  Browse at http://www.ebi.ac.uk/ontology-lookup/browse.do?ontName=MI
-
-Terms from the Pathway Tools Evidence Ontology may also be used. Homepage http://brg.ai.sri.com/evidence-ontology/</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#ExperimentalForm -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#ExperimentalForm">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#UtilityClass"/>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#experimentalFormDescription"/>
-                <owl:minCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:minCardinality>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#KPrime"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PathwayStep"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Provenance"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Score"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceLocation"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Stoichiometry"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Xref"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: The form of a physical entity in a particular experiment, as it may be modified for purposes of experimental design.
-Examples: A His-tagged protein in a binding assay. A protein can be tagged by multiple tags, so can have more than 1 experimental form type terms</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#ExperimentalFormVocabulary -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#ExperimentalFormVocabulary">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ControlledVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#InteractionVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhenotypeVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RelationshipTypeVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceModificationVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceRegionVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#TissueVocabulary"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: A reference to the PSI Molecular Interaction ontology (MI) participant identification method (e.g. mass spectrometry), experimental role (e.g. bait, prey), experimental preparation (e.g. expression level) type. Homepage at http://www.psidev.info/.  Browse http://www.ebi.ac.uk/ontology-lookup/browse.do?ontName=MI&amp;termId=MI%3A0002&amp;termName=participant%20identification%20method
-
-http://www.ebi.ac.uk/ontology-lookup/browse.do?ontName=MI&amp;termId=MI%3A0495&amp;termName=experimental%20role
-
-http://www.ebi.ac.uk/ontology-lookup/browse.do?ontName=MI&amp;termId=MI%3A0346&amp;termName=experimental%20preparation</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#FragmentFeature -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#FragmentFeature">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityFeature"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ModificationFeature"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: An entity feature that represents the resulting physical entity subsequent to a cleavage or degradation event. 
-
-Usage: Fragment Feature can be used to cover multiple types of modfications to the sequence of the physical entity: 
-1.    A protein with a single cleavage site that converts the protein into two fragments (e.g. pro-insulin converted to insulin and C-peptide). TODO: CV term for sequence fragment?  PSI-MI CV term for cleavage site?
-2.    A protein with two cleavage sites that removes an internal sequence e.g. an intein i.e. ABC -&gt; A
-3.    Cleavage of a circular sequence e.g. a plasmid.
-
-In the case of removal ( e.g. intron)  the fragment that is *removed* is specified in the feature location property. In the case of a &quot;cut&quot; (e.g. restriction enzyme cut site) the location of the cut is specified instead.
-Examples: Insulin Hormone</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#Gene -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#Gene">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Entity"/>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#organism"/>
-                <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Interaction"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Pathway"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: A continuant that encodes information that can be inherited through replication. 
-Rationale: Gene is an abstract continuant that can be best described as a &quot;schema&quot;, a common conception commonly used by biologists to demark a component within genome. In BioPAX, Gene is considered a generalization over eukaryotic and prokaryotic genes and is used only in genetic interactions.  Gene is often confused with DNA and RNA fragments, however, these are considered the physical encoding of a gene.  N.B. Gene expression regulation makes use of DNA and RNA physical entities and not this class.
-Usage: Gene should only be used for describing GeneticInteractions.</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#GeneticInteraction -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#GeneticInteraction">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Interaction"/>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#interactionType"/>
-                <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#phenotype"/>
-                <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#participant"/>
-                <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Gene"/>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#participant"/>
-                <owl:minCardinality rdf:datatype="&xsd;nonNegativeInteger">2</owl:minCardinality>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#MolecularInteraction"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#TemplateReaction"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition : Genetic interactions between genes occur when two genetic perturbations (e.g. mutations) have a combined phenotypic effect not caused by either perturbation alone. A gene participant in a genetic interaction represents the gene that is perturbed. Genetic interactions are not physical interactions but logical (AND) relationships. Their physical manifestations can be complex and span an arbitarily long duration. 
-
-Rationale: Currently,  BioPAX provides a simple definition that can capture most genetic interactions described in the literature. In the future, if required, the definition can be extended to capture other logical relationships and different, participant specific phenotypes. 
-
-Example: A synthetic lethal interaction occurs when cell growth is possible without either gene A OR B, but not without both gene A AND B. If you knock out A and B together, the cell will die.</rdfs:comment>
-    </owl:Class>
-    <owl:Axiom>
-        <disponte:probability rdf:datatype="&xsd;decimal">0.7</disponte:probability>
-        <owl:annotatedSource rdf:resource="http://www.biopax.org/release/biopax-level3.owl#GeneticInteraction"/>
-        <owl:annotatedTarget rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Interaction"/>
-        <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/>
-    </owl:Axiom>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#Interaction -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#Interaction">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Entity"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Pathway"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: A biological relationship between two or more entities. 
-
-Rationale: In BioPAX, interactions are atomic from a database modeling perspective, i.e. interactions can not be decomposed into sub-interactions. When representing non-atomic continuants with explicit subevents the pathway class should be used instead. Interactions are not necessarily  temporally atomic, for example genetic interactions cover a large span of time. Interactions as a formal concept is a continuant, it retains its identitiy regardless of time, or any differences in specific states or properties.
-
-Usage: Interaction is a highly abstract class and in almost all cases it is more appropriate to use one of the subclasses of interaction. 
-It is partially possible to define generic reactions by using generic participants. A more comprehensive method is planned for BioPAX L4 for covering all generic cases like oxidization of a generic alcohol.   
-
-Synonyms: Process, relationship, event.
-
-Examples: protein-protein interaction, biochemical reaction, enzyme catalysis</rdfs:comment>
-    </owl:Class>
-    <owl:Axiom>
-        <disponte:probability rdf:datatype="&xsd;decimal">0.89</disponte:probability>
-        <owl:annotatedSource rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Interaction"/>
-        <owl:annotatedTarget rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Pathway"/>
-        <owl:annotatedProperty rdf:resource="&owl;disjointWith"/>
-    </owl:Axiom>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#InteractionVocabulary -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#InteractionVocabulary">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ControlledVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhenotypeVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RelationshipTypeVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceModificationVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceRegionVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#TissueVocabulary"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: A reference to the PSI Molecular Interaction ontology (MI) interaction type. Homepage at http://www.psidev.info/.  Browse at http://www.ebi.ac.uk/ontology-lookup/browse.do?ontName=MI&amp;termId=MI%3A0190&amp;termName=interaction%20type</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#KPrime -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#KPrime">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#UtilityClass"/>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#kPrime"/>
-                <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PathwayStep"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Provenance"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Score"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceLocation"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Stoichiometry"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Xref"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: The apparent equilibrium constant, K&apos;, and associated values. 
-Usage: Concentrations in the equilibrium constant equation refer to the total concentrations of  all forms of particular biochemical reactants. For example, in the equilibrium constant equation for the biochemical reaction in which ATP is hydrolyzed to ADP and inorganic phosphate:
-
-K&apos; = [ADP][P&lt;sub&gt;i&lt;/sub&gt;]/[ATP],
-
-The concentration of ATP refers to the total concentration of all of the following species:
-
-[ATP] = [ATP&lt;sup&gt;4-&lt;/sup&gt;] + [HATP&lt;sup&gt;3-&lt;/sup&gt;] + [H&lt;sub&gt;2&lt;/sub&gt;ATP&lt;sup&gt;2-&lt;/sup&gt;] + [MgATP&lt;sup&gt;2-&lt;/sup&gt;] + [MgHATP&lt;sup&gt;-&lt;/sup&gt;] + [Mg&lt;sub&gt;2&lt;/sub&gt;ATP].
-
-The apparent equilibrium constant is formally dimensionless, and can be kept so by inclusion of as many of the terms (1 mol/dm&lt;sup&gt;3&lt;/sup&gt;) in the numerator or denominator as necessary.  It is a function of temperature (T), ionic strength (I), pH, and pMg (pMg = -log&lt;sub&gt;10&lt;/sub&gt;[Mg&lt;sup&gt;2+&lt;/sup&gt;]). Therefore, these quantities must be specified to be precise, and values for KEQ for biochemical reactions may be represented as 5-tuples of the form (K&apos; T I pH pMg).  This property may have multiple values, representing different measurements for K&apos; obtained under the different experimental conditions listed in the 5-tuple. (This definition adapted from EcoCyc)
-
-See http://www.chem.qmul.ac.uk/iubmb/thermod/ for a thermodynamics tutorial.</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#ModificationFeature -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#ModificationFeature">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityFeature"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: An entity feature that represents  the covalently modified state of a dna, rna or a protein. 
-
-Rationale: In Biology, identity of DNA, RNA and Protein entities are defined around a wildtype sequence. Covalent modifications to this basal sequence are represented using modificaton features. Since small molecules are identified based on their chemical structure, not sequence, a covalent modification to a small molecule would result in a different molecule. 
-
-Usage: The added groups should be simple and stateless, such as phosphate or methyl groups and are captured by the modificationType controlled vocabulary. In other cases, such as covalently linked proteins, use CovalentBindingFeature instead. 
-
-Instances: A phosphorylation on a protein, a methylation on a DNA.</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#Modulation -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#Modulation">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Control"/>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#controller"/>
-                <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#controlled"/>
-                <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Catalysis"/>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#TemplateReactionRegulation"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: A control interaction in which a physical entity modulates a catalysis interaction. 
-
-Rationale: Biologically, most modulation interactions describe an interaction in which a small molecule alters the ability of an enzyme to catalyze a specific reaction. Instances of this class describe a pairing between a modulating entity and a catalysis interaction.
-
-Usage:  A typical modulation instance has a small molecule as the controller entity and a catalysis instance as the controlled entity. A separate modulation instance should be created for each different catalysis instance that a physical entity may modulate, and for each different physical entity that may modulate a catalysis instance.
-Examples: Allosteric activation and competitive inhibition of an enzyme&apos;s ability to catalyze a specific reaction.</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#MolecularInteraction -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#MolecularInteraction">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Interaction"/>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#participant"/>
-                <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: An interaction in which participants bind physically to each other, directly or indirectly through intermediary molecules.
-
-Rationale: There is a large body of interaction data, mostly produced by high throughput systems, that does not satisfy the level of detail required to model them with ComplexAssembly class. Specifically, what is lacking is the stoichiometric information and completeness (closed-world) of participants required to model them as chemical processes. Nevertheless interaction data is extremely useful and can be captured in BioPAX using this class. 
- 
-Usage: This class should be used by default for representing molecular interactions such as those defined by PSI-MI level 2.5. The participants in a molecular interaction should be listed in the PARTICIPANT slot. Note that this is one of the few cases in which the PARTICPANT slot should be directly populated with instances (see comments on the PARTICPANTS property in the interaction class description). If all participants are known with exact stoichiometry, ComplexAssembly class should be used instead.
-
-Example: Two proteins observed to interact in a yeast-two-hybrid experiment where there is not enough experimental evidence to suggest that the proteins are forming a complex by themselves without any indirect involvement of other proteins. This is the case for most large-scale yeast two-hybrid screens.</rdfs:comment>
-    </owl:Class>
-    <owl:Axiom>
-        <disponte:probability rdf:datatype="&xsd;decimal">0.2</disponte:probability>
-        <owl:annotatedSource rdf:resource="http://www.biopax.org/release/biopax-level3.owl#MolecularInteraction"/>
-        <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/>
-        <owl:annotatedTarget>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#participant"/>
-                <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/>
-            </owl:Restriction>
-        </owl:annotatedTarget>
-    </owl:Axiom>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#Pathway -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#Pathway">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Entity"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: A set or series of interactions, often forming a network, which biologists have found useful to group together for organizational, historic, biophysical or other reasons.
-
-Usage: Pathways can be used for demarcating any subnetwork of a BioPAX model. It is also possible to define a pathway without specifying the interactions within the pathway. In this case, the pathway instance could consist simply of a name and could be treated as a &apos;black box&apos;.  Pathways can also soverlap, i.e. a single interaction might belong to multiple pathways. Pathways can also contain sub-pathways. Pathways are continuants.
-
-Synonyms: network, module, cascade,  
-Examples: glycolysis, valine biosynthesis, EGFR signaling</rdfs:comment>
-    </owl:Class>
-    <owl:Axiom>
-        <disponte:probability rdf:datatype="&xsd;decimal">0.89</disponte:probability>
-        <owl:annotatedSource rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Interaction"/>
-        <owl:annotatedTarget rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Pathway"/>
-        <owl:annotatedProperty rdf:resource="&owl;disjointWith"/>
-    </owl:Axiom>
-    <owl:Axiom>
-        <disponte:probability rdf:datatype="&xsd;decimal">0.9</disponte:probability>
-        <owl:annotatedTarget rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Entity"/>
-        <owl:annotatedSource rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Pathway"/>
-        <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/>
-    </owl:Axiom>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#PathwayStep -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#PathwayStep">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#UtilityClass"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Provenance"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Score"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceLocation"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Stoichiometry"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Xref"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: A step in an ordered pathway.
-Rationale: Some pathways can have a temporal order. For example,  if the pathway boundaries are based on a perturbation phenotype link, the pathway might start with the perturbing agent and end at gene expression leading to the observed changes. Pathway steps can represent directed compound graphs.
-Usage: Multiple interactions may occur in a pathway step, each should be listed in the stepProcess property. Order relationships between pathway steps may be established with the nextStep slot. If the reaction contained in the step is a reversible biochemical reaction but physiologically has a direction in the context of this pathway, use the subclass BiochemicalPathwayStep.
-
-Example: A metabolic pathway may contain a pathway step composed of one biochemical reaction (BR1) and one catalysis (CAT1) instance, where CAT1 describes the catalysis of BR1. The M phase of the cell cycle, defined as a pathway, precedes the G1 phase, also defined as a pathway.</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#PhenotypeVocabulary -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#PhenotypeVocabulary">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ControlledVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RelationshipTypeVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceModificationVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceRegionVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#TissueVocabulary"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: The phenotype measured in the experiment e.g. growth rate or viability of a cell. This is only the type, not the value e.g. for a synthetic lethal interaction, the phenotype is viability, specified by ID: PATO:0000169, &quot;viability&quot;, not the value (specified by ID: PATO:0000718, &quot;lethal (sensu genetics)&quot;. A single term in a phenotype controlled vocabulary can be referenced using the xref, or the PhenoXML describing the PATO EQ model phenotype description can be stored as a string in PATO-DATA.</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Entity"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: A pool of molecules or molecular complexes. 
-
-Comments: Each PhysicalEntity is defined by a  sequence or structure based on an EntityReference AND any set of Features that are given. For example,  ser46 phosphorylated p53 is a physical entity in BioPAX defined by the p53 sequence and the phosphorylation feature on the serine at position 46 in the sequence.  Features are any combination of cellular location, covalent and non-covalent bonds with other molecules and covalent modifications.  
-
-For a specific molecule to be a member of the pool it has to satisfy all of the specified features. Unspecified features are treated as unknowns or unneccesary. Features that are known to not be on the molecules should be explicitly stated with the &quot;not feature&quot; property. 
-A physical entity in BioPAX  never represents a specific molecular instance. 
-
-Physical Entity can be heterogenous and potentially overlap, i.e. a single molecule can be counted as a member of multiple pools. This makes BioPAX semantics different than regular chemical notation but is necessary for dealing with combinatorial complexity. 
-
-Synonyms: part, interactor, object, species
-
-Examples: extracellular calcium, ser 64 phosphorylated p53</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#Protein -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#Protein">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#entityReference"/>
-                <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ProteinReference"/>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#memberPhysicalEntity"/>
-                <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Protein"/>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Rna"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RnaRegion"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SmallMolecule"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: A physical entity consisting of a sequence of amino acids; a protein monomer; a single polypeptide chain.
-Examples: The epidermal growth factor receptor (EGFR) protein.</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#ProteinReference -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#ProteinReference">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityReference"/>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#memberEntityReference"/>
-                <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ProteinReference"/>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RnaReference"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RnaRegionReference"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SmallMoleculeReference"/>
-        <rdfs:comment rdf:datatype="&xsd;string">A protein reference is a grouping of several protein entities that are encoded by the same gene.  Members can differ in celular location, sequence features and bound partners. Currently conformational states (such as open and closed) are not covered.</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#Provenance -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#Provenance">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#UtilityClass"/>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#xref"/>
-                <owl:allValuesFrom>
-                    <owl:Class>
-                        <owl:unionOf rdf:parseType="Collection">
-                            <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#PublicationXref"/>
-                            <rdf:Description rdf:about="http://www.biopax.org/release/biopax-level3.owl#UnificationXref"/>
-                        </owl:unionOf>
-                    </owl:Class>
-                </owl:allValuesFrom>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Score"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceLocation"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Stoichiometry"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Xref"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: The direct source of pathway data or score.
-Usage: This does not store the trail of sources from the generation of the data to this point, only the last known source, such as a database, tool or algorithm. The xref property may contain a publicationXref referencing a publication describing the data source (e.g. a database publication). A unificationXref may be used when pointing to an entry in a database of databases describing this database.
-Examples: A database, scoring method or person name.</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#PublicationXref -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#PublicationXref">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Xref"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#UnificationXref"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: An xref that defines a reference to a publication such as a book, journal article, web page, or software manual.
-Usage:  The reference may or may not be in a database, although references to PubMed are preferred when possible. The publication should make a direct reference to the instance it is attached to. Publication xrefs should make use of PubMed IDs wherever possible. The DB property of an xref to an entry in PubMed should use the string &quot;PubMed&quot; and not &quot;MEDLINE&quot;.
-Examples: PubMed:10234245</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#RelationshipTypeVocabulary -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#RelationshipTypeVocabulary">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ControlledVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceModificationVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceRegionVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#TissueVocabulary"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: Vocabulary for defining relationship Xref types. A reference to the PSI Molecular Interaction ontology (MI) Cross Reference type. Homepage at http://www.psidev.info/.  Browse at http://www.ebi.ac.uk/ontology-lookup/browse.do?ontName=MI&amp;termId=MI%3A0353&amp;termName=cross-reference%20type</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#RelationshipXref -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#RelationshipXref">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Xref"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: An xref that defines a reference to an entity in an external resource that does not have the same biological identity as the referring entity.
-Usage: There is currently no controlled vocabulary of relationship types for BioPAX, although one will be created in the future if a need develops.
-Examples: A link between a gene G in a BioPAX data collection, and the protein product P of that gene in an external database. This is not a unification xref because G and P are different biological entities (one is a gene and one is a protein). Another example is a relationship xref for a protein that refers to the Gene Ontology biological process, e.g. &apos;immune response,&apos; that the protein is involved in.</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#Rna -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#Rna">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#entityReference"/>
-                <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RnaReference"/>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#memberPhysicalEntity"/>
-                <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Rna"/>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RnaRegion"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SmallMolecule"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: A physical entity consisting of a sequence of ribonucleotide monophosphates; a ribonucleic acid.
-Usage: RNA should be used for pools of individual RNA molecules. For describing subregions on those molecules use RNARegion.
-Examples: messengerRNA, microRNA, ribosomalRNA. A specific example is the let-7 microRNA.</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#RnaReference -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#RnaReference">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityReference"/>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#subRegion"/>
-                <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RnaRegionReference"/>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#memberEntityReference"/>
-                <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RnaReference"/>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RnaRegionReference"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SmallMoleculeReference"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Defintion: A RNA  reference is a grouping of several RNA entities that are either encoded by the same gene or replicates of the same genome.  Members can differ in celular location, sequence features and bound partners. Currently conformational states (such as hairpin) are not covered.</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#RnaRegion -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#RnaRegion">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#entityReference"/>
-                <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RnaRegionReference"/>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#memberPhysicalEntity"/>
-                <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RnaRegion"/>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SmallMolecule"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: A region on a RNA molecule. 
-Usage: RNARegion is not a pool of independent molecules but a subregion on these molecules. As such, every RNARegion has a defining RNA molecule.  
-Examples: CDS, 3&apos; UTR, Hairpin</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#RnaRegionReference -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#RnaRegionReference">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityReference"/>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#subRegion"/>
-                <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#RnaRegionReference"/>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SmallMoleculeReference"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: A RNARegion reference is a grouping of several RNARegion entities that are common in sequence and genomic position.  Members can differ in celular location, sequence features, mutations and bound partners.</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#Score -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#Score">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#UtilityClass"/>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#value"/>
-                <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceLocation"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Stoichiometry"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Xref"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: A score associated with a publication reference describing how the score was determined, the name of the method and a comment briefly describing the method.
-Usage:  The xref must contain at least one publication that describes the method used to determine the score value. There is currently no standard way of describing  values, so any string is valid.
-Examples: The statistical significance of a result, e.g. &quot;p&lt;0.05&quot;.</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#SequenceInterval -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#SequenceInterval">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceLocation"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceSite"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: An interval on a sequence. 
-Usage: Interval is defined as an ordered pair of SequenceSites. All of the sequence from the begin site to the end site (inclusive) is described, not any subset.</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#SequenceLocation -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#SequenceLocation">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#UtilityClass"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Stoichiometry"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Xref"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: A location on a nucleotide or amino acid sequence.
-Usage: For most purposes it is more appropriate to use subclasses of this class. Direct instances of SequenceLocation can be used for uknown locations that can not be classified neither as an interval nor a site.</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#SequenceModificationVocabulary -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#SequenceModificationVocabulary">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ControlledVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceRegionVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#TissueVocabulary"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definiiton: A reference to the PSI Molecular Interaction ontology (MI) of covalent sequence modifications. Homepage at http://www.psidev.info/.  Browse at http://www.ebi.ac.uk/ontology-lookup/browse.do?ontName=MI&amp;termId=MI%3A0252&amp;termName=biological%20feature. Only children that are covelent modifications at specific positions can be used.</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#SequenceRegionVocabulary -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#SequenceRegionVocabulary">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ControlledVocabulary"/>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#TissueVocabulary"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: A reference to a controlled vocabulary of sequence regions, such as InterPro or Sequence Ontology (SO). Homepage at http://www.sequenceontology.org/.  Browse at http://www.ebi.ac.uk/ontology-lookup/browse.do?ontName=SO</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#SequenceSite -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#SequenceSite">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SequenceLocation"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: Describes a site on a sequence, i.e. the position of a single nucleotide or amino acid.
-Usage: A sequence site is always defined based on the reference sequence of the owning entity. For DNARegion and RNARegion it is relative to the region itself not the genome or full RNA molecule.</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#SmallMolecule -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#SmallMolecule">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#feature"/>
-                <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#BindingFeature"/>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#notFeature"/>
-                <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#BindingFeature"/>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#entityReference"/>
-                <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SmallMoleculeReference"/>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#memberPhysicalEntity"/>
-                <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SmallMolecule"/>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: A pool of molecules that are neither complexes nor are genetically encoded.
-
-Rationale: Identity of small molecules are based on structure, rather than sequence as in the case of DNA, RNA or Protein. A small molecule reference is a grouping of several small molecule entities  that have the same chemical structure.  
-
-Usage : Smalle Molecules can have a cellular location and binding features. They can&apos;t have modification features as covalent modifications of small molecules are not considered as state changes but treated as different molecules.
-Some non-genomic macromolecules, such as large complex carbohydrates are currently covered by small molecules despite they lack a static structure. Better coverage for such molecules require representation of generic stoichiometry and polymerization, currently planned for BioPAX level 4.
-
-Examples: glucose, penicillin, phosphatidylinositol</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#SmallMoleculeReference -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#SmallMoleculeReference">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#EntityReference"/>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#memberEntityReference"/>
-                <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#SmallMoleculeReference"/>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <rdfs:comment rdf:datatype="&xsd;string">A small molecule reference is a grouping of several small molecule entities  that have the same chemical structure.  Members can differ in celular location and bound partners. Covalent modifications of small molecules are not considered as state changes but treated as different molecules.</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#Stoichiometry -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#Stoichiometry">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#UtilityClass"/>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#stoichiometricCoefficient"/>
-                <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#physicalEntity"/>
-                <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <owl:disjointWith rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Xref"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: Stoichiometric coefficient of a physical entity in the context of a conversion or complex.
-Usage: For each participating element there must be 0 or 1 stoichiometry element. A non-existing stoichiometric element is treated as unknown.
-This is an n-ary bridge for left, right and component properties. Relative stoichiometries ( e.g n, n+1) often used for describing polymerization is not supported.</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#TemplateReaction -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#TemplateReaction">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Interaction"/>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#participant"/>
-                <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <rdfs:comment rdf:datatype="&xsd;string">Definiton: An interaction where a macromolecule is polymerized from a 
-    template macromolecule. 
-
-Rationale: This is an abstraction over multiple (not explicitly stated) biochemical 
-    reactions. The ubiquitous molecules (NTP and amino acids) consumed are also usually
-    omitted. Template reaction is non-stoichiometric, does not obey law of 
-    mass conservation and temporally non-atomic. It, however, provides a 
-    mechanism to capture processes that are central to all living organisms.  
-
-Usage: Regulation of TemplateReaction, e.g. via a transcription factor can be 
-    captured using TemplateReactionRegulation. TemplateReaction can also be 
-    indirect  for example, it is not necessary to represent intermediary mRNA 
-    for describing expression of a protein. It was decided to not subclass 
-    TemplateReaction to subtypes such as transcription of translation for the 
-    sake of  simplicity. If needed these subclasses can be added in the 
-    future. 
-
-Examples: Transcription, translation, replication, reverse transcription. E.g. 
-    DNA to RNA is transcription, RNA to protein is translation and DNA to 
-    protein is protein expression from DNA.</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#TemplateReactionRegulation -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#TemplateReactionRegulation">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Control"/>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#controlled"/>
-                <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#TemplateReaction"/>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#controlType"/>
-                <owl:allValuesFrom>
-                    <rdfs:Datatype>
-                        <owl:oneOf>
-                            <rdf:Description>
-                                <rdf:type rdf:resource="&rdf;List"/>
-                                <rdf:first rdf:datatype="&xsd;string">ACTIVATION</rdf:first>
-                                <rdf:rest>
-                                    <rdf:Description>
-                                        <rdf:type rdf:resource="&rdf;List"/>
-                                        <rdf:first rdf:datatype="&xsd;string">INHIBITION</rdf:first>
-                                        <rdf:rest rdf:resource="&rdf;nil"/>
-                                    </rdf:Description>
-                                </rdf:rest>
-                            </rdf:Description>
-                        </owl:oneOf>
-                    </rdfs:Datatype>
-                </owl:allValuesFrom>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#controller"/>
-                <owl:allValuesFrom rdf:resource="http://www.biopax.org/release/biopax-level3.owl#PhysicalEntity"/>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: Regulation of an expression reaction by a controlling element such as a transcription factor or microRNA. 
-
-Usage: To represent the binding of the transcription factor to a regulatory element in the TemplateReaction, create a complex of the transcription factor and the regulatory element and set that as the controller.</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#TissueVocabulary -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#TissueVocabulary">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#ControlledVocabulary"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: A reference to the BRENDA (BTO). Homepage at http://www.brenda-enzymes.info/.  Browse at http://www.ebi.ac.uk/ontology-lookup/browse.do?ontName=BTO</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#Transport -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#Transport">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Conversion"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: An conversion in which molecules of one or more physicalEntity pools change their subcellular location and become a member of one or more other physicalEntity pools. A transport interaction does not include the transporter entity, even if one is required in order for the transport to occur. Instead, transporters are linked to transport interactions via the catalysis class.
-
-Usage: If there is a simultaneous chemical modification of the participant(s), use transportWithBiochemicalReaction class.
-
-Synonyms: translocation.
-
-Examples: The movement of Na+ into the cell through an open voltage-gated channel.</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#TransportWithBiochemicalReaction -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#TransportWithBiochemicalReaction">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#BiochemicalReaction"/>
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Transport"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: A conversion interaction that is both a biochemicalReaction and a transport. In transportWithBiochemicalReaction interactions, one or more of the substrates changes both their location and their physical structure. Active transport reactions that use ATP as an energy source fall under this category, even if the only covalent change is the hydrolysis of ATP to ADP.
-
-Rationale: This class was added to support a large number of transport events in pathway databases that have a biochemical reaction during the transport process. It is not expected that other double inheritance subclasses will be added to the ontology at the same level as this class.
-
-Examples: In the PEP-dependent phosphotransferase system, transportation of sugar into an E. coli cell is accompanied by the sugar&apos;s phosphorylation as it crosses the plasma membrane.</rdfs:comment>
-    </owl:Class>
-    <owl:Axiom>
-        <disponte:probability rdf:datatype="&xsd;decimal">0.9</disponte:probability>
-        <owl:annotatedTarget rdf:resource="http://www.biopax.org/release/biopax-level3.owl#BiochemicalReaction"/>
-        <owl:annotatedSource rdf:resource="http://www.biopax.org/release/biopax-level3.owl#TransportWithBiochemicalReaction"/>
-        <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/>
-    </owl:Axiom>
-    <owl:Axiom>
-        <disponte:probability rdf:datatype="&xsd;decimal">0.8</disponte:probability>
-        <owl:annotatedTarget rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Transport"/>
-        <owl:annotatedSource rdf:resource="http://www.biopax.org/release/biopax-level3.owl#TransportWithBiochemicalReaction"/>
-        <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/>
-    </owl:Axiom>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#UnificationXref -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#UnificationXref">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#Xref"/>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#db"/>
-                <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <rdfs:subClassOf>
-            <owl:Restriction>
-                <owl:onProperty rdf:resource="http://www.biopax.org/release/biopax-level3.owl#id"/>
-                <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
-            </owl:Restriction>
-        </rdfs:subClassOf>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: A unification xref defines a reference to an entity in an external resource that has the same biological identity as the referring entity
-Rationale: Unification xrefs are critically important for data integration. In the future they may be replaced by direct miriam links and rdf:id based identity management. 
-
-Usage: For example, if one wished to link from a database record, C, describing a chemical compound in a BioPAX data collection to a record, C&apos;, describing the same chemical compound in an external database, one would use a unification xref since records C and C&apos; describe the same biological identity. Generally, unification xrefs should be used whenever possible, although there are cases where they might not be useful, such as application to application data exchange.Identity of interactions can be computed based on the  identity of its participants. An xref in a protein pointing to a gene, e.g. in the LocusLink database17, would not be a unification xref since the two entities do not have the same biological identity (one is a protein, the other is a gene). Instead, this link should be a captured as a relationship xref. References to an external controlled vocabulary term within the OpenControlledVocabulary class should use a unification xref where possible (e.g. GO:0005737).
-Examples: An xref in a protein instance pointing to an entry in the Swiss-Prot database, and an xref in an RNA instance pointing to the corresponding RNA sequence in the RefSeq database..</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#UtilityClass -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#UtilityClass">
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: This is a placeholder for classes, used for annotating the &quot;Entity&quot; and its subclasses. Mostly, these are not  an &quot;Entity&quot; themselves. Examples include references to external databases, controlled vocabularies, evidence and provenance.
-
-Rationale: Utility classes are created when simple slots are insufficient to describe an aspect of an entity or to increase compatibility of this ontology with other standards.  
-
-Usage: The utilityClass class is actually a metaclass and is only present to organize the other helper classes under one class hierarchy; instances of utilityClass should never be created.</rdfs:comment>
-    </owl:Class>
-    
-
-
-    <!-- http://www.biopax.org/release/biopax-level3.owl#Xref -->
-
-    <owl:Class rdf:about="http://www.biopax.org/release/biopax-level3.owl#Xref">
-        <rdfs:subClassOf rdf:resource="http://www.biopax.org/release/biopax-level3.owl#UtilityClass"/>
-        <rdfs:comment rdf:datatype="&xsd;string">Definition: A reference from an instance of a class in this ontology to an object in an external resource.
-Rationale: Xrefs in the future can be removed in the future in favor of explicit miram links. 
-Usage: For most cases one of the subclasses of xref should be used.</rdfs:comment>
-    </owl:Class>
-</rdf:RDF>
-
-
-
-<!-- Generated by the OWL API (version 3.5.0) http://owlapi.sourceforge.net -->
-
diff --git a/examples/examples.swinb b/examples/examples.swinb
index 96c2b02..e8cb0a0 100644
--- a/examples/examples.swinb
+++ b/examples/examples.swinb
@@ -1,17 +1,19 @@
 <div class="notebook">
 
 <div class="nb-cell markdown">
-# Welcome to SWISH
+# Welcome to TRILL on SWISH
 
-You are reading a SWISH _notebook_.  A notebook is a mixture of _text_, _programs_ and _queries_.  This notebook gives an overview of example programs shipped with SWISH.
+You are reading a TRILL on SWISH _notebook_.  A notebook is a mixture of _text_, _programs_ and _queries_.  This notebook gives an overview of example programs shipped with TRILL on SWISH.
 
 - *Examples*
-  - [Biopax](example/biopaxLevel3.owl) models metabolic pathways ([Home Page](http://www.biopax.org/)).
-  - [BRCA](example/BRCA.owl) models risk factor of breast cancer, from Klinov, P., Parsia, B.: _Optimization and evaluation of reasoning in probabilistic
+  - [Biopax](example/biopaxLevel3.pl) models metabolic pathways ([Home Page](http://www.biopax.org/)).
+  - [BRCA](example/BRCA.pl) models risk factor of breast cancer, from Klinov, P., Parsia, B.: _Optimization and evaluation of reasoning in probabilistic
     description logic: Towards a systematic approach_. In: International Semantic Web Conference. LNCS, vol. 5318, pp. 213-228. Springer (2008).
-  - [DBPedia](example/DBPedia.owl) is an extract of the DBPedia ontology, it contains structured information from Wikipedia ([Home Page](http://dbpedia.org/)).
-  - [people+pets](example/peoplePets.owl) is inpired by the people+pets ontology from Patel-Schneider, P, F., Horrocks, I., and Bechhofer, S. 2003. _Tutorial  on OWL_. The knowledge base indicates that the individuals that own an animal which is a pet are nature lovers, from Zese, R.: _Reasoning with Probabilistic Logics_. ArXiv e-prints 1405.0915v3. Doctoral Consortium of the 30th International Conference on Logic Programming (ICLP 2014), July 19-22, Vienna, Austria.
-  - [Vicodi](example/vicodi.owl) is an extract of the Vicodi knowledge base that contains information on European history ([Home Page](http://www.vicodi.org/)).
+  - [DBPedia](example/DBPedia.pl) is an extract of the DBPedia ontology, it contains structured information from Wikipedia ([Home Page](http://dbpedia.org/)).
+  - [people+pets](example/peoplePets.pl) uses both RDF/XML and Prolog syntax. It is inpired by the people+pets ontology from Patel-Schneider, P, F., Horrocks, I., and Bechhofer, S. 2003. _Tutorial  on OWL_. The knowledge base indicates that the individuals that own an animal which is a pet are nature lovers, from Zese, R.: _Reasoning with Probabilistic Logics_. ArXiv e-prints 1405.0915v3. Doctoral Consortium of the 30th International Conference on Logic Programming (ICLP 2014), July 19-22, Vienna, Austria.
+  - [Vicodi](example/vicodi.pl) is an extract of the Vicodi knowledge base that contains information on European history ([Home Page](http://www.vicodi.org/)).
+  - [Commander](example/commander.pl) is an example using only Prolog syntax.
+  - [John employee](example/johnEmployee.pl) is the example shown in help.
 </div>
 
 </div>
diff --git a/examples/index.json b/examples/index.json
index dd23c25..faf211d 100644
--- a/examples/index.json
+++ b/examples/index.json
@@ -3,9 +3,11 @@
 [
 { "file":"examples.swinb",	"title":"Example programs" },
 "--",
-{ "file":"biopaxLevel3.owl",	"title":"Biopax" },
-{ "file":"BRCA.owl",		"title":"BRCA" },
-{ "file":"DBPedia.owl",		"title":"DBPedia" },
-{ "file":"peoplePets.owl",	"title":"people+pets" },
-{ "file":"vicodi.owl",		"title":"Vicodi" },
+{ "file":"biopaxLevel3.pl",	"title":"Biopax" },
+{ "file":"BRCA.pl",		"title":"BRCA" },
+{ "file":"DBPedia.pl",		"title":"DBPedia" },
+{ "file":"peoplePets.pl",	"title":"people+pets" },
+{ "file":"vicodi.pl",		"title":"Vicodi" },
+{ "file":"commander.pl",	"title":"Commander" },
+{ "file":"johnEmployee.pl",	"title":"John employee"}
 ]
diff --git a/examples/peoplePets.owl b/examples/peoplePets.owl
deleted file mode 100644
index 9dbcf44..0000000
--- a/examples/peoplePets.owl
+++ /dev/null
@@ -1,188 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-
-This knowledge base is inpired by the people+pets ontology from
-Patel-Schneider, P, F., Horrocks, I., and Bechhofer, S. 2003. Tutorial on OWL.
-The knowledge base indicates that the individuals that own an animal which is a pet are nature lovers, from
-Zese, R.: Reasoning with Probabilistic Logics. ArXiv e-prints 1405.0915v3. 
-Doctoral Consortium of the 30th International Conference on Logic Programming (ICLP 2014), July 19-22, Vienna, Austria.
-
-/** <examples>
-
-?- prob_instanceOf(\'natureLover\',\'Kevin\',Prob).
-?- instanceOf(\'natureLover\',\'Kevin\',ListExpl).
-
-*/
--->
-
-<!DOCTYPE rdf:RDF [
-    <!ENTITY owl "http://www.w3.org/2002/07/owl#" >
-    <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
-    <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
-    <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
-    <!ENTITY disponte "https://sites.google.com/a/unife.it/ml/disponte#" >
-]>
-
-
-<rdf:RDF xmlns="http://cohse.semanticweb.org/ontologies/people#"
-     xml:base="http://cohse.semanticweb.org/ontologies/people"
-     xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
-     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#"
-     xmlns:disponte="https://sites.google.com/a/unife.it/ml/disponte#">
-    <owl:Ontology rdf:about="http://cohse.semanticweb.org/ontologies/people"/>
-    
-
-
-    <!-- 
-    ///////////////////////////////////////////////////////////////////////////////////////
-    //
-    // Annotation properties
-    //
-    ///////////////////////////////////////////////////////////////////////////////////////
-     -->
-
-    
-
-
-    <!-- https://sites.google.com/a/unife.it/ml/disponte#probability -->
-
-    <owl:AnnotationProperty rdf:about="&disponte;probability"/>
-    
-
-
-    <!-- 
-    ///////////////////////////////////////////////////////////////////////////////////////
-    //
-    // Object Properties
-    //
-    ///////////////////////////////////////////////////////////////////////////////////////
-     -->
-
-    
-
-
-    <!-- http://cohse.semanticweb.org/ontologies/people#has_animal -->
-
-    <owl:ObjectProperty rdf:about="http://cohse.semanticweb.org/ontologies/people#has_animal">
-        <rdfs:label>has_animal</rdfs:label>
-        <rdfs:comment></rdfs:comment>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- 
-    ///////////////////////////////////////////////////////////////////////////////////////
-    //
-    // Classes
-    //
-    ///////////////////////////////////////////////////////////////////////////////////////
-     -->
-
-    
-
-
-    <!-- http://cohse.semanticweb.org/ontologies/people#cat -->
-
-    <owl:Class rdf:about="http://cohse.semanticweb.org/ontologies/people#cat">
-        <rdfs:label>cat</rdfs:label>
-        <rdfs:subClassOf rdf:resource="http://cohse.semanticweb.org/ontologies/people#pet"/>
-        <rdfs:comment></rdfs:comment>
-    </owl:Class>
-    <owl:Axiom>
-        <disponte:probability rdf:datatype="&xsd;decimal">0.6</disponte:probability>
-        <owl:annotatedSource rdf:resource="http://cohse.semanticweb.org/ontologies/people#cat"/>
-        <owl:annotatedTarget rdf:resource="http://cohse.semanticweb.org/ontologies/people#pet"/>
-        <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/>
-    </owl:Axiom>
-    
-
-
-    <!-- http://cohse.semanticweb.org/ontologies/people#natureLover -->
-
-    <owl:Class rdf:about="http://cohse.semanticweb.org/ontologies/people#natureLover"/>
-    
-
-
-    <!-- http://cohse.semanticweb.org/ontologies/people#pet -->
-
-    <owl:Class rdf:about="http://cohse.semanticweb.org/ontologies/people#pet"/>
-    
-
-
-    <!-- 
-    ///////////////////////////////////////////////////////////////////////////////////////
-    //
-    // Individuals
-    //
-    ///////////////////////////////////////////////////////////////////////////////////////
-     -->
-
-    
-
-
-    <!-- http://cohse.semanticweb.org/ontologies/people#Fluffy -->
-
-    <owl:NamedIndividual rdf:about="http://cohse.semanticweb.org/ontologies/people#Fluffy">
-        <rdf:type rdf:resource="http://cohse.semanticweb.org/ontologies/people#cat"/>
-        <rdfs:label>Fuffy</rdfs:label>
-        <rdfs:comment></rdfs:comment>
-    </owl:NamedIndividual>
-    <owl:Axiom>
-        <disponte:probability>0.4</disponte:probability>
-        <owl:annotatedSource rdf:resource="http://cohse.semanticweb.org/ontologies/people#Fluffy"/>
-        <owl:annotatedTarget rdf:resource="http://cohse.semanticweb.org/ontologies/people#cat"/>
-        <owl:annotatedProperty rdf:resource="&rdf;type"/>
-    </owl:Axiom>
-    
-
-
-    <!-- http://cohse.semanticweb.org/ontologies/people#Kevin -->
-
-    <owl:NamedIndividual rdf:about="http://cohse.semanticweb.org/ontologies/people#Kevin">
-        <rdfs:label>Kevin</rdfs:label>
-        <rdfs:comment></rdfs:comment>
-        <has_animal rdf:resource="http://cohse.semanticweb.org/ontologies/people#Fluffy"/>
-        <has_animal rdf:resource="http://cohse.semanticweb.org/ontologies/people#Tom"/>
-    </owl:NamedIndividual>
-    
-
-
-    <!-- http://cohse.semanticweb.org/ontologies/people#Tom -->
-
-    <owl:NamedIndividual rdf:about="http://cohse.semanticweb.org/ontologies/people#Tom">
-        <rdf:type rdf:resource="http://cohse.semanticweb.org/ontologies/people#cat"/>
-        <rdfs:label>Tom</rdfs:label>
-        <rdfs:comment></rdfs:comment>
-    </owl:NamedIndividual>
-    <owl:Axiom>
-        <disponte:probability>0.3</disponte:probability>
-        <owl:annotatedSource rdf:resource="http://cohse.semanticweb.org/ontologies/people#Tom"/>
-        <owl:annotatedTarget rdf:resource="http://cohse.semanticweb.org/ontologies/people#cat"/>
-        <owl:annotatedProperty rdf:resource="&rdf;type"/>
-    </owl:Axiom>
-    
-
-
-    <!-- 
-    ///////////////////////////////////////////////////////////////////////////////////////
-    //
-    // General axioms
-    //
-    ///////////////////////////////////////////////////////////////////////////////////////
-     -->
-
-    <owl:Axiom>
-        <owl:annotatedTarget rdf:resource="http://cohse.semanticweb.org/ontologies/people#natureLover"/>
-        <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/>
-        <owl:annotatedSource>
-            <owl:Restriction>
-                <rdfs:subClassOf rdf:resource="http://cohse.semanticweb.org/ontologies/people#natureLover"/>
-                <owl:onProperty rdf:resource="http://cohse.semanticweb.org/ontologies/people#has_animal"/>
-                <owl:someValuesFrom rdf:resource="http://cohse.semanticweb.org/ontologies/people#pet"/>
-            </owl:Restriction>
-        </owl:annotatedSource>
-    </owl:Axiom>
-</rdf:RDF>
diff --git a/examples/vicodi.owl b/examples/vicodi.owl
deleted file mode 100644
index aa6f964..0000000
--- a/examples/vicodi.owl
+++ /dev/null
@@ -1,1703 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-/** <examples>
-
-This knowledge base is an extract of the Vicodi knowledge base that contains information on European history.
-http://www.vicodi.org/
-
-?- prob_instanceOf(\'vicodi:Role\',\'vicodi:Anthony-van-Dyck-is-Painter-in-Flanders\',Prob).
-?- instanceOf(\'vicodi:Role\',\'vicodi:Anthony-van-Dyck-is-Painter-in-Flanders\',ListExpl).
-
-?- prob_sub_class(\'vicodi:Painter\',\'vicodi:Role\',Prob).
-?- sub_class(\'vicodi:Painter\',\'vicodi:Role\',ListExpl).
-
-*/
--->
-
-<!DOCTYPE rdf:RDF [
-    <!ENTITY owl "http://www.w3.org/2002/07/owl#" >
-    <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
-    <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
-    <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
-    <!ENTITY disponte "https://sites.google.com/a/unife.it/ml/disponte#" >
-]>
-
-
-<rdf:RDF xmlns="http://example.org#"
-     xml:base="http://example.org"
-     xmlns:vicodi="http://vicodi.org/ontology#"
-     xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
-     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#"
-     xmlns:disponte="https://sites.google.com/a/unife.it/ml/disponte#">
-    <owl:Ontology rdf:about="http://example.org"/>
-    
-
-
-    <!-- 
-    ///////////////////////////////////////////////////////////////////////////////////////
-    //
-    // Annotation properties
-    //
-    ///////////////////////////////////////////////////////////////////////////////////////
-     -->
-
-    
-
-
-    <!-- https://sites.google.com/a/unife.it/ml/disponte#probability -->
-
-    <owl:AnnotationProperty rdf:about="&disponte;probability"/>
-    
-
-
-    <!-- 
-    ///////////////////////////////////////////////////////////////////////////////////////
-    //
-    // Object Properties
-    //
-    ///////////////////////////////////////////////////////////////////////////////////////
-     -->
-
-    
-
-
-    <!-- http://vicodi.org/ontology#exists -->
-
-    <owl:ObjectProperty rdf:about="http://vicodi.org/ontology#exists">
-        <rdfs:range rdf:resource="http://vicodi.org/ontology#Time"/>
-        <rdfs:domain rdf:resource="http://vicodi.org/ontology#Time-Dependent"/>
-        <rdfs:subPropertyOf rdf:resource="http://vicodi.org/ontology#related"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://vicodi.org/ontology#hasCategory -->
-
-    <owl:ObjectProperty rdf:about="http://vicodi.org/ontology#hasCategory">
-        <rdfs:range rdf:resource="http://vicodi.org/ontology#Category"/>
-        <rdfs:domain rdf:resource="http://vicodi.org/ontology#Time-Dependent"/>
-        <rdfs:subPropertyOf rdf:resource="http://vicodi.org/ontology#related"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://vicodi.org/ontology#hasLocationPart -->
-
-    <owl:ObjectProperty rdf:about="http://vicodi.org/ontology#hasLocationPart">
-        <rdfs:domain rdf:resource="http://vicodi.org/ontology#Location"/>
-        <rdfs:range rdf:resource="http://vicodi.org/ontology#Location"/>
-        <rdfs:subPropertyOf rdf:resource="http://vicodi.org/ontology#related"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://vicodi.org/ontology#hasRole -->
-
-    <owl:ObjectProperty rdf:about="http://vicodi.org/ontology#hasRole">
-        <rdfs:domain rdf:resource="http://vicodi.org/ontology#Flavour"/>
-        <rdfs:range rdf:resource="http://vicodi.org/ontology#Role"/>
-        <rdfs:subPropertyOf rdf:resource="http://vicodi.org/ontology#related"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://vicodi.org/ontology#isLocationPartOf -->
-
-    <owl:ObjectProperty rdf:about="http://vicodi.org/ontology#isLocationPartOf">
-        <rdfs:domain rdf:resource="http://vicodi.org/ontology#Location"/>
-        <rdfs:range rdf:resource="http://vicodi.org/ontology#Location"/>
-        <rdfs:subPropertyOf rdf:resource="http://vicodi.org/ontology#related"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://vicodi.org/ontology#related -->
-
-    <owl:ObjectProperty rdf:about="http://vicodi.org/ontology#related">
-        <rdfs:range rdf:resource="http://vicodi.org/ontology#VicodiOI"/>
-        <rdfs:domain rdf:resource="http://vicodi.org/ontology#VicodiOI"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- 
-    ///////////////////////////////////////////////////////////////////////////////////////
-    //
-    // Data properties
-    //
-    ///////////////////////////////////////////////////////////////////////////////////////
-     -->
-
-    
-
-
-    <!-- http://vicodi.org/ontology#intervalEnd -->
-
-    <owl:DatatypeProperty rdf:about="http://vicodi.org/ontology#intervalEnd">
-        <rdfs:domain rdf:resource="http://vicodi.org/ontology#TemporalInterval"/>
-        <rdfs:range rdf:resource="&rdfs;Literal"/>
-    </owl:DatatypeProperty>
-    
-
-
-    <!-- http://vicodi.org/ontology#intervalStart -->
-
-    <owl:DatatypeProperty rdf:about="http://vicodi.org/ontology#intervalStart">
-        <rdfs:domain rdf:resource="http://vicodi.org/ontology#TemporalInterval"/>
-        <rdfs:range rdf:resource="&rdfs;Literal"/>
-    </owl:DatatypeProperty>
-    
-
-
-    <!-- 
-    ///////////////////////////////////////////////////////////////////////////////////////
-    //
-    // Classes
-    //
-    ///////////////////////////////////////////////////////////////////////////////////////
-     -->
-
-    
-
-
-    <!-- http://kaon.semanticweb.org/2001/11/kaon-lexical#Root -->
-
-    <owl:Class rdf:about="http://kaon.semanticweb.org/2001/11/kaon-lexical#Root"/>
-    
-
-
-    <!-- http://vicodi.org/ontology#Abbey -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Abbey">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Building"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Abstract-Notion -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Abstract-Notion">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Flavour"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Animal -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Animal">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Natural-Object"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Architect -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Architect">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Creator"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Armament -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Armament">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Artefact"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Artefact -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Artefact">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Object"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Artist -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Artist">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Creator"/>
-    </owl:Class>
-    <owl:Axiom>
-        <disponte:probability rdf:datatype="&xsd;decimal">0.85</disponte:probability>
-        <owl:annotatedSource rdf:resource="http://vicodi.org/ontology#Artist"/>
-        <owl:annotatedTarget rdf:resource="http://vicodi.org/ontology#Creator"/>
-        <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/>
-    </owl:Axiom>
-    
-
-
-    <!-- http://vicodi.org/ontology#Artistic-Movement -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Artistic-Movement">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Movement"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Artistic-Style -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Artistic-Style">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Abstract-Notion"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Author -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Author">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Creator"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Badge -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Badge">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Conceptual-Object"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Battle -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Battle">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Event"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Board -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Board">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Management-Organisation"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Book -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Book">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Writing"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Building -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Building">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Artefact"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Category -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Category">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#VicodiOI"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Cathedral -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Cathedral">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Building"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Church -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Church">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Building"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Church-Reformer -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Church-Reformer">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Religious-Leader"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#City -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#City">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Settlement"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Cleric -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Cleric">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Person-Role"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Clerical-Leader -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Clerical-Leader">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Leader"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Clothing -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Clothing">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Artefact"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Commodity -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Commodity">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Natural-Object"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Composer -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Composer">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Artist"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Conceptual-Object -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Conceptual-Object">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Object"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Country -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Country">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Location"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Creator -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Creator">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Person-Role"/>
-    </owl:Class>
-    <owl:Axiom>
-        <disponte:probability rdf:datatype="&xsd;decimal">0.8</disponte:probability>
-        <owl:annotatedSource rdf:resource="http://vicodi.org/ontology#Creator"/>
-        <owl:annotatedTarget rdf:resource="http://vicodi.org/ontology#Person-Role"/>
-        <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/>
-    </owl:Axiom>
-    
-
-
-    <!-- http://vicodi.org/ontology#Crime -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Crime">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Event"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Cultural-Agreement -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Cultural-Agreement">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Event"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Cultural-Organisation -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Cultural-Organisation">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Organisation"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Diplomat -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Diplomat">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Functionary"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Disaster -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Disaster">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Event"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Discoverer -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Discoverer">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Person-Role"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Disease -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Disease">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Natural-Object"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Dynasty -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Dynasty">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Social-Group"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Ecclesiarch -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Ecclesiarch">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Religious-Leader"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Economic-Enterprise -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Economic-Enterprise">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Economic-Organisation"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Economic-Organisation -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Economic-Organisation">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Organisation"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Economic-Symbol -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Economic-Symbol">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Symbol"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Educational-Organisation -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Educational-Organisation">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Organisation"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Election -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Election">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Event"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Emperor -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Emperor">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Head-of-State"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Engineer -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Engineer">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Creator"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Environment -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Environment">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Natural-Object"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Ethnic-Group -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Ethnic-Group">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Social-Group"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Event -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Event">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Flavour"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Fictional-Event -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Fictional-Event">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Event"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Fictional-Person -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Fictional-Person">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Individual"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Field-of-Knowledge -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Field-of-Knowledge">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Intellectual-Construct"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Flavour -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Flavour">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Time-Dependent"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Food -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Food">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Natural-Object"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Functionary -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Functionary">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Person-Role"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Geographical-Discovery -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Geographical-Discovery">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Event"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Geographical-Feature -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Geographical-Feature">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Location"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Geographical-Region -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Geographical-Region">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Geographical-Feature"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Governmental-Organisation -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Governmental-Organisation">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Political-Organisation"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Head-of-Government -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Head-of-Government">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Secular-Leader"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Head-of-State -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Head-of-State">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Secular-Leader"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Idea -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Idea">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Abstract-Notion"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Ideology -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Ideology">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Abstract-Notion"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Illness -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Illness">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Life-Event"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Individual -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Individual">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Flavour"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Intellectual-Construct -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Intellectual-Construct">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Abstract-Notion"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Intellectual-Movement -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Intellectual-Movement">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Movement"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#International-Alliance -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#International-Alliance">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Political-Organisation"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#International-Organisation -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#International-Organisation">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Organisation"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Intra-State-Group -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Intra-State-Group">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Location"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Inventor -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Inventor">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Person-Role"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Journal -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Journal">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Writing"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#King -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#King">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Head-of-State"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Landmark -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Landmark">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Geographical-Feature"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Language -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Language">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Abstract-Notion"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Leader -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Leader">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Person-Role"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#League -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#League">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Political-Organisation"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Legislation -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Legislation">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Event"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Life-Event -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Life-Event">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Event"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Liturgical-Object -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Liturgical-Object">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Artefact"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Location -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Location">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Flavour"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Magnate -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Magnate">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Secular-Leader"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Management-Organisation -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Management-Organisation">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Organisation"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Masonic-Lodge -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Masonic-Lodge">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Cultural-Organisation"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Measurable-Trend -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Measurable-Trend">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Abstract-Notion"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Meeting -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Meeting">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Event"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Military-Organisation -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Military-Organisation">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Organisation"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Military-Person -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Military-Person">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Person-Role"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Military-Unit -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Military-Unit">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Military-Organisation"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Minister -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Minister">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Functionary"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Monastery -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Monastery">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Building"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Movement -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Movement">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Social-Group"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#National-Symbol -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#National-Symbol">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Symbol"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Natural-Object -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Natural-Object">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Object"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Newspaper -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Newspaper">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Writing"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Non-Military-Conflict -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Non-Military-Conflict">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Event"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Object -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Object">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Flavour"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Organisation -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Organisation">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Flavour"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Other-Religious-Leader -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Other-Religious-Leader">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Religious-Leader"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Other-Religious-Person -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Other-Religious-Person">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Person-Role"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Painter -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Painter">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Artist"/>
-    </owl:Class>
-    <owl:Axiom>
-        <disponte:probability rdf:datatype="&xsd;decimal">0.5</disponte:probability>
-        <owl:annotatedTarget rdf:resource="http://vicodi.org/ontology#Artist"/>
-        <owl:annotatedSource rdf:resource="http://vicodi.org/ontology#Painter"/>
-        <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/>
-    </owl:Axiom>
-    
-
-
-    <!-- http://vicodi.org/ontology#Painting -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Painting">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Work-of-Art"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Pamphlet -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Pamphlet">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Writing"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Party -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Party">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Political-Organisation"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Pastime -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Pastime">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Conceptual-Object"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Period -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Period">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Event"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Period-in-Office -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Period-in-Office">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Event"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Person -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Person">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Individual"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Person-Role -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Person-Role">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Role"/>
-    </owl:Class>
-    <owl:Axiom>
-        <disponte:probability rdf:datatype="&xsd;decimal">0.9</disponte:probability>
-        <owl:annotatedSource rdf:resource="http://vicodi.org/ontology#Person-Role"/>
-        <owl:annotatedTarget rdf:resource="http://vicodi.org/ontology#Role"/>
-        <owl:annotatedProperty rdf:resource="&rdfs;subClassOf"/>
-    </owl:Axiom>
-    
-
-
-    <!-- http://vicodi.org/ontology#Philanthropist -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Philanthropist">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Person-Role"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Philosopher -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Philosopher">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Scientist"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Piece-of-Music -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Piece-of-Music">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Work-of-Art"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Political-Organisation -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Political-Organisation">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Organisation"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Political-Region -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Political-Region">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Location"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Political-Symbol -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Political-Symbol">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Symbol"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Politician -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Politician">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Functionary"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Pollution -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Pollution">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Artefact"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Pope -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Pope">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Religious-Leader"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Population-Movement -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Population-Movement">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Event"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Prince -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Prince">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Head-of-State"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Public-Oration -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Public-Oration">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Event"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Publisher -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Publisher">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Creator"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Queen -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Queen">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Head-of-State"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Relic -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Relic">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Artefact"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Religious-Community -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Religious-Community">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Religious-Organisation"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Religious-Ideology -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Religious-Ideology">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Ideology"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Religious-Leader -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Religious-Leader">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Leader"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Religious-Movement -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Religious-Movement">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Movement"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Religious-Order -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Religious-Order">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Religious-Organisation"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Religious-Organisation -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Religious-Organisation">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Cultural-Organisation"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Religious-Practice -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Religious-Practice">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Conceptual-Object"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Religious-Symbol -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Religious-Symbol">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Symbol"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Representative-Institution -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Representative-Institution">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Political-Organisation"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Ritual -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Ritual">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Conceptual-Object"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Role -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Role">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Time-Dependent"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Saint -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Saint">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Person-Role"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Scandal -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Scandal">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Event"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Scientific-Instrument -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Scientific-Instrument">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Artefact"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Scientist -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Scientist">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Person-Role"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Sculptor -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Sculptor">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Artist"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Sculpture -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Sculpture">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Work-of-Art"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Secular-Ideology -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Secular-Ideology">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Ideology"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Secular-Leader -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Secular-Leader">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Leader"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Secular-Movement -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Secular-Movement">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Movement"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Settlement -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Settlement">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Location"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Ship -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Ship">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Vehicle"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Social-Group -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Social-Group">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Flavour"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Social-Stratum -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Social-Stratum">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Social-Group"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Stereotype-Group -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Stereotype-Group">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Social-Group"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Structure -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Structure">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Artefact"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Sultan -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Sultan">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Head-of-State"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Symbol -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Symbol">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Role"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Technical-Scientific-Advance -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Technical-Scientific-Advance">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Event"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#TemporalInterval -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#TemporalInterval">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Time"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Time -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Time">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#VicodiOI"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Time-Dependent -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Time-Dependent">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#VicodiOI"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Trade-Association -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Trade-Association">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Economic-Organisation"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Trades-Union -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Trades-Union">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Economic-Organisation"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Train -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Train">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Vehicle"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Treaty -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Treaty">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Event"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#University -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#University">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Educational-Organisation"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Uprising -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Uprising">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Event"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Vehicle -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Vehicle">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Artefact"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#VicodiOI -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#VicodiOI">
-        <rdfs:subClassOf rdf:resource="http://kaon.semanticweb.org/2001/11/kaon-lexical#Root"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Village -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Village">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Settlement"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#War -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#War">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Event"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Water -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Water">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Geographical-Feature"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Work-of-Art -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Work-of-Art">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Artefact"/>
-    </owl:Class>
-    
-
-
-    <!-- http://vicodi.org/ontology#Writing -->
-
-    <owl:Class rdf:about="http://vicodi.org/ontology#Writing">
-        <rdfs:subClassOf rdf:resource="http://vicodi.org/ontology#Artefact"/>
-    </owl:Class>
-    
-
-
-    <!-- 
-    ///////////////////////////////////////////////////////////////////////////////////////
-    //
-    // Individuals
-    //
-    ///////////////////////////////////////////////////////////////////////////////////////
-     -->
-
-    
-
-
-    <!-- http://vicodi.org/ontology#Anthony-van-Dyck -->
-
-    <owl:NamedIndividual rdf:about="http://vicodi.org/ontology#Anthony-van-Dyck">
-        <rdf:type rdf:resource="http://vicodi.org/ontology#Person"/>
-    </owl:NamedIndividual>
-    
-
-
-    <!-- http://vicodi.org/ontology#Anthony-van-Dyck-is-Painter-in-Flanders -->
-
-    <owl:NamedIndividual rdf:about="http://vicodi.org/ontology#Anthony-van-Dyck-is-Painter-in-Flanders">
-        <rdf:type rdf:resource="http://vicodi.org/ontology#Painter"/>
-    </owl:NamedIndividual>
-    <owl:Axiom>
-        <disponte:probability rdf:datatype="&xsd;decimal">0.9</disponte:probability>
-        <owl:annotatedSource rdf:resource="http://vicodi.org/ontology#Anthony-van-Dyck-is-Painter-in-Flanders"/>
-        <owl:annotatedTarget rdf:resource="http://vicodi.org/ontology#Painter"/>
-        <owl:annotatedProperty rdf:resource="&rdf;type"/>
-    </owl:Axiom>
-    
-
-
-    <!-- http://vicodi.org/ontology#%C3%81rp%C3%A1d-Dynasty -->
-
-    <owl:NamedIndividual rdf:about="http://vicodi.org/ontology#%C3%81rp%C3%A1d-Dynasty">
-        <rdf:type rdf:resource="http://vicodi.org/ontology#Dynasty"/>
-    </owl:NamedIndividual>
-    
-
-
-    <!-- http://vicodi.org/ontology#%C3%81rp%C3%A1d-Goncz -->
-
-    <owl:NamedIndividual rdf:about="http://vicodi.org/ontology#%C3%81rp%C3%A1d-Goncz">
-        <rdf:type rdf:resource="http://vicodi.org/ontology#Person"/>
-    </owl:NamedIndividual>
-    
-
-
-    <!-- http://vicodi.org/ontology#%C3%81rp%C3%A1d-Goncz-is-Head-of-Government-in-Hungary-between-1990-2000 -->
-
-    <owl:NamedIndividual rdf:about="http://vicodi.org/ontology#%C3%81rp%C3%A1d-Goncz-is-Head-of-Government-in-Hungary-between-1990-2000">
-        <rdf:type rdf:resource="http://vicodi.org/ontology#Head-of-Government"/>
-    </owl:NamedIndividual>
-    
-
-
-    <!-- http://vicodi.org/ontology#%C3%81rp%C3%A1d-Szakasits -->
-
-    <owl:NamedIndividual rdf:about="http://vicodi.org/ontology#%C3%81rp%C3%A1d-Szakasits">
-        <rdf:type rdf:resource="http://vicodi.org/ontology#Person"/>
-    </owl:NamedIndividual>
-    
-
-
-    <!-- http://vicodi.org/ontology#%C3%81rp%C3%A1d-Szakasits-is-Head-of-Government-in-Hungary-between-1948-1950 -->
-
-    <owl:NamedIndividual rdf:about="http://vicodi.org/ontology#%C3%81rp%C3%A1d-Szakasits-is-Head-of-Government-in-Hungary-between-1948-1950">
-        <rdf:type rdf:resource="http://vicodi.org/ontology#Head-of-Government"/>
-    </owl:NamedIndividual>
-    
-
-
-    <!-- http://vicodi.org/ontology#%C3%81rp%C3%A1d-of-Hungary -->
-
-    <owl:NamedIndividual rdf:about="http://vicodi.org/ontology#%C3%81rp%C3%A1d-of-Hungary">
-        <rdf:type rdf:resource="http://vicodi.org/ontology#Person"/>
-    </owl:NamedIndividual>
-    
-
-
-    <!-- http://vicodi.org/ontology#%C3%81rp%C3%A1d-of-Hungary-is-Prince-in-Hungary-between-896-907 -->
-
-    <owl:NamedIndividual rdf:about="http://vicodi.org/ontology#%C3%81rp%C3%A1d-of-Hungary-is-Prince-in-Hungary-between-896-907">
-        <rdf:type rdf:resource="http://vicodi.org/ontology#Prince"/>
-    </owl:NamedIndividual>
-    
-
-
-    <!-- http://vicodi.org/ontology#%C3%86thelwulf-King-of-Wessex -->
-
-    <owl:NamedIndividual rdf:about="http://vicodi.org/ontology#%C3%86thelwulf-King-of-Wessex">
-        <rdf:type rdf:resource="http://vicodi.org/ontology#Person"/>
-    </owl:NamedIndividual>
-    
-
-
-    <!-- http://vicodi.org/ontology#%C3%89douard-Drumont -->
-
-    <owl:NamedIndividual rdf:about="http://vicodi.org/ontology#%C3%89douard-Drumont">
-        <rdf:type rdf:resource="http://vicodi.org/ontology#Person"/>
-    </owl:NamedIndividual>
-    
-
-
-    <!-- http://vicodi.org/ontology#%C3%89douard-Herriot -->
-
-    <owl:NamedIndividual rdf:about="http://vicodi.org/ontology#%C3%89douard-Herriot">
-        <rdf:type rdf:resource="http://vicodi.org/ontology#Person"/>
-    </owl:NamedIndividual>
-    
-
-
-    <!-- http://vicodi.org/ontology#%C3%89douard-Valliant -->
-
-    <owl:NamedIndividual rdf:about="http://vicodi.org/ontology#%C3%89douard-Valliant">
-        <rdf:type rdf:resource="http://vicodi.org/ontology#Person"/>
-    </owl:NamedIndividual>
-    
-
-
-    <!-- http://vicodi.org/ontology#%C3%89mile-Vandervelde -->
-
-    <owl:NamedIndividual rdf:about="http://vicodi.org/ontology#%C3%89mile-Vandervelde">
-        <rdf:type rdf:resource="http://vicodi.org/ontology#Person"/>
-    </owl:NamedIndividual>
-    
-
-
-    <!-- http://vicodi.org/ontology#1st-Abdication-of-Napoleon -->
-
-    <owl:NamedIndividual rdf:about="http://vicodi.org/ontology#1st-Abdication-of-Napoleon">
-        <rdf:type rdf:resource="http://vicodi.org/ontology#Event"/>
-    </owl:NamedIndividual>
-    
-
-
-    <!-- http://vicodi.org/ontology#1st-Battle-of-Poitiers -->
-
-    <owl:NamedIndividual rdf:about="http://vicodi.org/ontology#1st-Battle-of-Poitiers">
-        <rdf:type rdf:resource="http://vicodi.org/ontology#Battle"/>
-    </owl:NamedIndividual>
-    
-
-
-    <!-- http://vicodi.org/ontology#1st-Battle-of-St-Albans -->
-
-    <owl:NamedIndividual rdf:about="http://vicodi.org/ontology#1st-Battle-of-St-Albans">
-        <rdf:type rdf:resource="http://vicodi.org/ontology#Battle"/>
-    </owl:NamedIndividual>
-    
-
-
-    <!-- http://vicodi.org/ontology#12-year-truce -->
-
-    <owl:NamedIndividual rdf:about="http://vicodi.org/ontology#12-year-truce">
-        <rdf:type rdf:resource="http://vicodi.org/ontology#Non-Military-Conflict"/>
-    </owl:NamedIndividual>
-    
-
-
-    <!-- http://vicodi.org/ontology#20-year-building-programme-for-German-high-seas-fleet -->
-
-    <owl:NamedIndividual rdf:about="http://vicodi.org/ontology#20-year-building-programme-for-German-high-seas-fleet">
-        <rdf:type rdf:resource="http://vicodi.org/ontology#Legislation"/>
-    </owl:NamedIndividual>
-</rdf:RDF>
-
-
-
-<!-- Generated by the OWL API (version 3.5.0) http://owlapi.sourceforge.net -->
-
diff --git a/lib/trill_on_swish/config.pl b/lib/trill_on_swish/config.pl
index b109af7..9ca6978 100644
--- a/lib/trill_on_swish/config.pl
+++ b/lib/trill_on_swish/config.pl
@@ -27,10 +27,10 @@
     the GNU General Public License.
 */
 
-:- module(trill_on_swish_config,
-	  [ swish_reply_config/1,	% +Request
+:- module(swish_config,
+	  [ swish_reply_config/2,	% +Request, +Options
 	    swish_config/2,		% ?Type, ?Config
-	    swish_config_hash/1		% -HASH
+	    swish_config_hash/2		% -HASH, +Options
 	  ]).
 :- use_module(library(http/http_dispatch)).
 :- use_module(library(http/http_json)).
@@ -38,6 +38,7 @@
 
 :- multifile
 	config/2,			% ?Key, ?Value
+	config/3,			% ?Key, ?Value, +Options
 	source_alias/2,			% ?Alias, ?Options
 	authenticate/2.			% +Request, -User
 
@@ -48,31 +49,31 @@
 		 *	       CONFIG		*
 		 *******************************/
 
-%%	swish_reply_config(+Request) is semidet.
+%%	swish_reply_config(+Request, +Options) is semidet.
 %
 %	Emit a configuration object to the client if the client requests
 %	for '.../swish_config.json', regardless  of   the  path  prefix.
 
-swish_reply_config(Request) :-
+swish_reply_config(Request, Options) :-
 	option(path(Path), Request),
-	file_base_name(Path, 'trill_on_swish_config.json'),
-	json_config(JSON),
+	file_base_name(Path, 'swish_config.json'),
+	json_config(JSON, Options),
 	reply_json(JSON).
 
-%%	swish_config_hash(-Hash) is det.
+%%	swish_config_hash(-Hash, +Options) is det.
 %
 %	True if Hash is the SHA1 of the SWISH config.
 
-swish_config_hash(Hash) :-
-	json_config(Config),
+swish_config_hash(Hash, Options) :-
+	json_config(Config, Options),
 	variant_sha1(Config, Hash).
 
 json_config(json{ http: json{ locations:JSON
 			    },
-		  trill_on_swish: SWISHConfig
-		}) :-
+		  swish: SWISHConfig
+		}, Options) :-
 	http_locations(JSON),
-	swish_config(SWISHConfig).
+	swish_config_dict(SWISHConfig, Options).
 
 http_locations(JSON) :-
 	findall(ID-Path,
@@ -101,12 +102,12 @@ same_ids([Id-Path|T0], Id, T, [Path|TP]) :- !,
 same_ids(T, _, T, []).
 
 
-%%	swish_config(-Config:dict) is det.
+%%	swish_config_dict(-Config:dict, +Options) is det.
 %
-%	Obtain name-value pairs from trill_on_swish_config:config/2
+%	Obtain name-value pairs from swish_config:config/2
 
-swish_config(Config) :-
-	findall(Key-Value, config(Key, Value), Pairs),
+swish_config_dict(Config, Options) :-
+	findall(Key-Value, swish_config(Key, Value, Options), Pairs),
 	dict_pairs(Config, json, Pairs).
 
 %%	config(-Key, -Value) is nondet.
@@ -116,6 +117,11 @@ swish_config(Config) :-
 %	object (see =web/js/config.js=)
 
 swish_config(Key, Value) :-
+	swish_config(Key, Value, []).
+
+swish_config(Key, Value, Options) :-
+	config(Key, Value, Options).
+swish_config(Key, Value, _) :-
 	config(Key, Value).
 
 %%	source_alias(?Alias, ?Options) is nondet.
diff --git a/lib/trill_on_swish/cp_authenticate.pl b/lib/trill_on_swish/cp_authenticate.pl
index 0bd3597..803bd2e 100644
--- a/lib/trill_on_swish/cp_authenticate.pl
+++ b/lib/trill_on_swish/cp_authenticate.pl
@@ -51,6 +51,10 @@ the server will challenge the user.  The   logged  in  user is available
 through pengine_user/1.
 */
 
+%pengines:authentication_hook(_Request, _Application, User) :-
+%	logged_on(User).
 pengines:authentication_hook(_Request, _Application, anonymous).
 
+%pengines:not_sandboxed(User, _Application) :-
+%	catch(check_permission(User, admin(swish)), _, fail).
 pengines:not_sandboxed(_User, _Application).
diff --git a/lib/trill_on_swish/csv.pl b/lib/trill_on_swish/csv.pl
deleted file mode 100644
index 9f5135a..0000000
--- a/lib/trill_on_swish/csv.pl
+++ /dev/null
@@ -1,110 +0,0 @@
-/*  Part of SWI-Prolog
-
-    Author:        Jan Wielemaker
-    E-mail:        J.Wielemaker@cs.vu.nl
-    WWW:           http://www.swi-prolog.org
-    Copyright (C): 2015, VU University Amsterdam
-
-    This program is free software; you can redistribute it and/or
-    modify it under the terms of the GNU General Public License
-    as published by the Free Software Foundation; either version 2
-    of the License, or (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public
-    License along with this library; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, if you link this library with other files,
-    compiled with a Free Software compiler, to produce an executable, this
-    library does not by itself cause the resulting executable to be covered
-    by the GNU General Public License. This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
-*/
-
-:- module(trill_on_swish_csv, []).
-:- use_module(library(pengines), []).
-:- use_module(library(pairs)).
-:- use_module(library(csv)).
-:- use_module(library(apply)).
-:- use_module(library(pprint)).
-
-/** <module> Support CSV output from a Pengines server
-
-This module defines the result-format  `csv`   for  Pengines.  It allows
-SWISH users to post a query against the   core  Prolog system or a saved
-SWISH program and obtain the results using   a simple web client such as
-`curl`. An example shell script is provided in =client/trill_on_swish-ask.sh=.
-
-@tbd	Provide streaming output
-*/
-
-:- multifile
-	pengines:write_result/3,
-	write_answers/2.
-
-%%	pengines:write_result(+Format, +Event, +VarNames) is semidet.
-%
-%	Hook into library(pengines) that  makes   pengines  support  CSV
-%	output.
-
-pengines:write_result(csv, Event, VarNames) :-
-	csv(Event, VarNames).
-
-csv(create(_Id, Features), VarNames) :- !,
-	memberchk(answer(Answer), Features),
-	csv(Answer, VarNames).
-csv(destroy(_Id, Wrapped), VarNames) :- !,
-	csv(Wrapped, VarNames).
-csv(success(_Id, Answers, _Time, _More), VarNames) :- !,
-	VarTerm =.. [row|VarNames],
-	success(Answers, VarTerm).
-csv(error(_Id, Error), _VarNames) :- !,
-	message_to_string(Error, Msg),
-	format('Status: 400 Bad request~n'),
-	format('Content-type: text/plain~n~n'),
-	format('ERROR: ~w~n', [Msg]).
-csv(output(_Id, message(_Term, _Class, HTML, _Where)), _VarNames) :- !,
-	format('Status: 400 Bad request~n'),
-	format('Content-type: text/html~n~n'),
-	format('<html>~n~s~n</html>~n', [HTML]).
-csv(Event, _VarNames) :-
-	print_term(Event, [output(user_error)]).
-
-success(Answers, VarTerm) :-
-	write_answers(Answers, VarTerm), !.
-success(Answers, VarTerm) :-
-	maplist(csv_answer, Answers, Rows),
-	format('Content-disposition: attachment; filename="swish-result.csv"~n'),
-	format('Content-type: text/csv~n~n'),
-	csv_write_stream(current_output, [VarTerm|Rows], []).
-
-csv_answer(JSON, Row) :-
-	is_dict(JSON), !,
-	dict_pairs(JSON, _, Pairs),
-	pairs_values(Pairs, Values),
-	maplist(csv_value, Values, CVSValues),
-	Row =.. [row|CVSValues].
-csv_answer(RowIn, Row) :-
-	compound(RowIn), !,
-	RowIn =.. [_|Values],
-	maplist(csv_value, Values, CVSValues),
-	Row =.. [row|CVSValues].
-
-csv_value(Var, '') :-
-	var(Var), !.
-csv_value(Number, Number) :-
-	number(Number), !.
-csv_value(Atom, Atom) :-
-	atom(Atom), !.
-csv_value(String, String) :-
-	string(String), !.
-csv_value(Term, Value) :-
-	term_string(Term, Value).
-
-
diff --git a/lib/trill_on_swish/examples.pl b/lib/trill_on_swish/examples.pl
index 452295f..ff4a89a 100644
--- a/lib/trill_on_swish/examples.pl
+++ b/lib/trill_on_swish/examples.pl
@@ -27,7 +27,7 @@
     the GNU General Public License.
 */
 
-:- module(trill_on_swish_examples, []).
+:- module(swish_examples, []).
 :- use_module(library(http/http_dispatch)).
 :- use_module(library(http/http_json)).
 :- use_module(library(http/json)).
@@ -50,15 +50,15 @@ two sources:
 
 :- multifile
 	user:file_search_path/2,
-	trill_on_swish_config:config/2,
-	trill_on_swish_config:source_alias/2.
+	swish_config:config/2,
+	swish_config:source_alias/2.
 
 % make example(File) find the example data
-user:file_search_path(example, trill_on_swish(examples)).
+user:file_search_path(example, swish(examples)).
 % make SWISH serve /example/File as example(File).
-trill_on_swish_config:source_alias(example, [access(read), search('*.{owl,swinb}')]).
+swish_config:source_alias(example, [access(read), search('*.{pl,swinb}')]).
 
-:- http_handler(trill_on_swish(list_examples),
+:- http_handler(swish(list_examples),
 		list_examples, [id(swish_examples)]).
 
 
@@ -83,7 +83,7 @@ list_examples(_Request) :-
 %	  - title:String
 
 example_files(AllExamples) :-
-	http_absolute_location(trill_on_swish(example), HREF, []),
+	http_absolute_location(swish(example), HREF, []),
 	findall(Index,
 		absolute_file_name(example(.), Index,
 				   [ access(read),
@@ -101,7 +101,7 @@ index_json(HREF, Dir, JSON) :-
 	read_file_to_json(File, JSON0),
 	maplist(add_href(HREF), JSON0, JSON).
 index_json(HREF, Dir, JSON) :-
-	string_concat(Dir, "/*.owl", Pattern),
+	string_concat(Dir, "/*.pl", Pattern),
 	expand_file_name(Pattern, Files),
 	maplist(ex_file_json(HREF), Files, JSON).
 
@@ -137,14 +137,14 @@ ex_file_json(HREF0, Path, json{file:File, href:HREF, title:Base}) :-
 %	Extract examples from the gitty store.
 
 storage_examples(List) :-
-	trill_on_swish_config:config(community_examples, true),
+	swish_config:config(community_examples, true),
 	findall(Ex, gitty_example(Ex), List1),
 	List1 \== [], !,
 	List = [json{type:"divider"}|List1].
 storage_examples([]).
 
 gitty_example(json{title:Title, file:File, type:"store"}) :-
-	setting(trill_on_swish_web_storage:directory, Store),
+	setting(web_storage:directory, Store),
 	gitty_file(Store, File, _),
 	gitty_commit(Store, File, Meta),
 	Meta.get(example) == true,
diff --git a/lib/trill_on_swish/form.pl b/lib/trill_on_swish/form.pl
index 74ceabc..b93e755 100644
--- a/lib/trill_on_swish/form.pl
+++ b/lib/trill_on_swish/form.pl
@@ -27,17 +27,247 @@
     the GNU General Public License.
 */
 
-:- module(trill_on_swish_form, []).
-:- use_module(library(http/http_dispatch)).
-:- use_module(library(http/http_server_files)).
+:- module(swish_form,
+	  [ validate_form/2,		% +Dict, +Fields
+	    validate_field/4,		% +Dict, +Field, -Value, +Options
+	    input_error/2		% +Field, +Error
+	  ]).
 
-/** <module> Show forms in SWISH
+/** <module> Form handling utilities
 
-This module serves forms for SWISH.
+This module simplifies handling input from forms in the SWISH interface.
+The  values  from  a  form  can   be    turned   into  an  object  using
+`notebook.formData(form)`.  The  returned  dict  may   be  passed  to  a
+predicate inside SWISH.
 */
 
-:- http_handler(trill_on_swish(form), serve_files_in_directory(swish_form),
-		[id(form),prefix]).
 
-user:file_search_path(swish_form, trill_on_swish(web/form)).
+%%	validate_form(+Dict, +Fields) is det.
+%
+%	Run validate_field/4 on all  specified   fields,  combining  the
+%	error message.  Fields is a list of terms of the form
+%
+%	    field(Name, Value, Options)
 
+validate_form(Dict, Fields) :-
+	validate_form(Fields, Dict, Errors),
+	(   Errors == []
+	->  true
+	;   throw(error(form_error(Errors), _))
+	).
+
+validate_form([], _, []).
+validate_form([field(Field, Value, Options)|T], Dict, Errors) :-
+	catch(validate_field(Dict, Field, Value, Options),
+	      error(input_error(Field, Error),_),
+	      true),
+	(   var(Error)
+	->  Errors = Errors1
+	;   Errors = [input_error(Field, Error)|Errors1]
+	),
+	validate_form(T, Dict, Errors1).
+
+
+%%	validate_field(+Dict, +Field, -Value, +Options) is det.
+%
+%	True when Value is a valid value   for Field from Dict according
+%	to Options. Options is  a  list   of  processing  steps taken to
+%	convert and validate the value.  Defined steps are:
+%
+%	  - alnum
+%	  All characters must be alphanumeric
+%	  - alnum_and_spaces
+%	  All characters must be alphanumeric or spaces
+%	  - atom
+%	  Convert input to an atom
+%	  - default(Term)
+%	  Use Term as value if no value appears in the input.
+%	  - downcase
+%	  Convert input to lower case
+%	  - email
+%	  Input must be a value E-mail address.
+%	  - float
+%	  Value is converted to a floating point number.
+%	  - integer
+%	  Value is converted to an integer.
+%	  - length > N
+%	  The value must have at more than N characters
+%	  - length >= N
+%	  The value must have at least N characters
+%	  - length =< N
+%	  The value must have at most N characters
+%	  - length < N
+%	  The value must have at less than N characters
+%	  - number
+%	  Value is converted to a number (integer or float)
+%	  - oneof(List)
+%	  Input must be a member of List.
+%	  - password
+%	  Input must be a reasonable password.
+%	  - strip
+%	  Strip leading and trailing white space and normalize
+%	  internal white space to a single space.
+
+
+validate_field(Dict, Field, Value, Options) :-
+	(   Value0 = Dict.get(Field)
+	->  validate_value(Options, Value0, Value, Field)
+	;   memberchk(default(Value), Options)
+	->  true
+	;   input_error(Field, required)
+	).
+
+validate_value([], Value, Value, _).
+validate_value([H|T], Value0, Value, Field) :-
+	(   validate_step(H, Value0, Value1)
+	->  true
+	;   validate_failed(H, Value0, Field)
+	),
+	validate_value(T, Value1, Value, Field).
+
+%%	validate_step(+Step, +Value0, -Value) is semidet.
+
+validate_step(alnum, Value, Value) :-
+	forall(sub_atom(Value, _, 1, _, Char),
+	       char_type(Char, alnum)).
+validate_step(length >= N, Value, Value) :-
+	string_length(Value, Len),
+	Len >= N.
+validate_step(length > N, Value, Value) :-
+	string_length(Value, Len),
+	Len > N.
+validate_step(length < N, Value, Value) :-
+	string_length(Value, Len),
+	Len < N.
+validate_step(length =< N, Value, Value) :-
+	string_length(Value, Len),
+	Len =< N.
+validate_step(strip, Value0, Value) :-
+	normalize_space(string(Value), Value0).
+validate_step(alnum_and_spaces, Value, Value) :-
+	forall(sub_atom(Value, _, 1, _, Char),
+	       alnum_or_space(Char)).
+validate_step(email, Value, Value) :-
+	string_codes(Value, Codes),
+	phrase(email, Codes).
+validate_step(downcase, Value0, Value) :-
+	string_lower(Value0, Value).
+validate_step(atom, Value0, Value) :-
+	atom_string(Value, Value0).
+validate_step(number, Value0, Value) :-
+	number_string(Value, Value0).
+validate_step(integer, Value0, Value) :-
+	number_string(Value, Value0),
+	integer(Value).
+validate_step(float, Value0, Value) :-
+	number_string(Value1, Value0),
+	Value is float(Value1).
+validate_step(oneof(List), Value, Value) :-
+	memberchk(Value, List).
+validate_step(password, Value, Value) :-
+	string_length(Value, Len),
+	Len >= 6.
+validate_step(default(_), Value, Value).
+
+alnum_or_space(' ') :- !.
+alnum_or_space(Char) :-
+	char_type(Char, alnum).
+
+email --> user_name, "@", domain_name.
+user_name --> user_name_char, user_name_chars.
+domain_name --> domain_name_segment, ".", domain_name_segments.
+
+user_name_chars --> user_name_char, !, user_name_chars.
+user_name_chars --> "".
+
+user_name_char -->
+	[C],
+	{ between(1, 127, C),
+	  (   code_type(C, alnum)
+	  ->  true
+	  ;   name_special(C)
+	  )
+	}.
+
+name_special(0'.).
+name_special(0'-).
+
+domain_name_segment --> domain_name_char, domain_name_chars.
+domain_name_segments -->
+	domain_name_segment,
+	(   "."
+	->  domain_name_segments
+	;   ""
+	).
+
+domain_name_chars --> domain_name_char, !, domain_name_chars.
+domain_name_chars --> "".
+
+domain_name_char -->
+	[C],
+	{ between(1, 127, C),
+	  (   code_type(C, alnum)
+	  ->  true
+	  ;   domain_special(C)
+	  )
+	}.
+
+domain_special(0'-).
+domain_special(0'_).
+
+validate_failed(H, _Value0, Field) :-
+	input_error(Field, H).
+
+input_error(Field, Error) :-
+	throw(error(input_error(Field, Error), _)).
+
+
+		 /*******************************
+		 *	     MESSAGES		*
+		 *******************************/
+
+:- multifile prolog:error_message//1.
+
+prolog:error_message(input_error(Field, Expected)) -->
+	[ '~w: '-[Field] ],
+	expected(Expected).
+prolog:error_message(form_error(Errors)) -->
+	field_errors(Errors).
+
+field_errors([]) --> [].
+field_errors([H|T]) -->
+	prolog:error_message(H),
+	(   {T==[]}
+	->  []
+	;   [nl],
+	    field_errors(T)
+	).
+
+
+expected(oneof(List)) --> !,
+	[ 'One of '-[] ],
+	oneof(List).
+expected(required) --> !,
+	[ 'This field is required'-[] ].
+expected(length > N) --> !,
+	[ 'Needs at more than ~d characters'-[N] ].
+expected(length >= N) --> !,
+	[ 'Needs at least ~d characters'-[N] ].
+expected(length =< N) --> !,
+	[ 'Needs at most ~d characters'-[N] ].
+expected(length < N) --> !,
+	[ 'Needs less than ~d characters'-[N] ].
+expected(matching_password) -->
+	[ 'The password does not match'-[] ].
+expected(new_user) -->
+	[ 'A user with this name already exists'-[] ].
+expected(Expected) --> !,
+	[ 'This field must hold a valid ~w'-[Expected] ].
+
+oneof([One]) --> !,
+	[ '~w'-[One] ].
+oneof([One, Two]) --> !,
+	[ '~w or ~w'-[One, Two] ].
+oneof([H|T]) -->
+	[ '~w, '-[H] ],
+	oneof(T).
diff --git a/lib/trill_on_swish/gitty.pl b/lib/trill_on_swish/gitty.pl
index dbba360..bcb118f 100644
--- a/lib/trill_on_swish/gitty.pl
+++ b/lib/trill_on_swish/gitty.pl
@@ -27,16 +27,18 @@
     the GNU General Public License.
 */
 
-:- module(trill_on_swish_gitty,
-	  [ gitty_file/3,		% +Store, ?Name, ?Hash
+:- module(gitty,
+	  [ gitty_open/2,		% +Store, +Options
+	    gitty_close/1,		% +Store
+
+	    gitty_file/3,		% +Store, ?Name, ?Hash
 	    gitty_create/5,		% +Store, +Name, +Data, +Meta, -Commit
 	    gitty_update/5,		% +Store, +Name, +Data, +Meta, -Commit
 	    gitty_commit/3,		% +Store, +Name, -Meta
 	    gitty_data/4,		% +Store, +Name, -Data, -Meta
 	    gitty_history/4,		% +Store, +Name, -History, +Options
-	    gitty_scan/1,		% +Store
-	    gitty_rescan/1,		% ?Store
 	    gitty_hash/2,		% +Store, ?Hash
+
 	    gitty_reserved_meta/1,	% ?Key
 
 	    gitty_diff/4,		% +Store, ?Start, +End, -Diff
@@ -44,15 +46,20 @@
 	    data_diff/3,		% +String1, +String2, -Diff
 	    udiff_string/2		% +Diff, -String
 	  ]).
-:- use_module(library(zlib)).
-:- use_module(library(filesex)).
 :- use_module(library(sha)).
 :- use_module(library(lists)).
 :- use_module(library(apply)).
 :- use_module(library(option)).
 :- use_module(library(process)).
 :- use_module(library(debug)).
-:- use_module(library(dcg/basics)).
+:- use_module(library(error)).
+:- use_module(library(filesex)).
+
+:- if(exists_source(library(bdb))).
+:- use_module(gitty_driver_bdb, []).
+:- endif.
+:- use_module(gitty_driver_files, []).
+
 
 /** <module> Single-file GIT like version system
 
@@ -78,24 +85,62 @@ the newly created (gitty_create/5) or updated object (gitty_update/5).
 */
 
 :- dynamic
-	head/3,				% Store, Name, Hash
-	store/2,			% Store, Updated
-	heads_input_stream_cache/2.	% Store, Stream
-:- volatile
-	head/3,
-	store/2,
-	heads_input_stream_cache/2.	% Store, Stream
-
-% enable/disable syncing remote servers running on  the same file store.
-% This facility requires shared access to files and thus doesn't work on
-% Windows.
-
-:- if(current_prolog_flag(windows, true)).
-remote_sync(false).
-:- else.
-remote_sync(true).
-:- endif.
+	gitty_store_type/2.		% +Store, -Module
 
+%%	gitty_open(+Store, +Options) is det.
+%
+%	Open a gitty store according to Options.  Defined
+%	options are:
+%
+%	  - driver(+Driver)
+%	  Backend driver to use.  One of =files= or =bdb=.  When
+%	  omitted and the store exists, the current store is
+%	  examined.  If the store does not exist, the default
+%	  is =files=.
+
+gitty_open(Store, Options) :-
+	(   exists_directory(Store)
+	->  true
+	;   existence_error(directory, Store)
+	),
+	(   option(driver(Driver), Options)
+	->  true
+	;   default_driver(Store, Driver)
+	),
+	set_driver(Store, Driver).
+
+default_driver(Store, Driver) :-
+	directory_file_path(Store, ref, RefDir),
+	exists_directory(RefDir), !,
+	Driver = files.
+default_driver(Store, Driver) :-
+	directory_file_path(Store, heads, RefDir),
+	exists_file(RefDir), !,
+	Driver = bdb.
+default_driver(_, files).
+
+set_driver(Store, Driver) :-
+	must_be(atom, Store),
+	(   driver_module(Driver, Module)
+	->  retractall(gitty_store_type(Store, _)),
+	    asserta(gitty_store_type(Store, Module))
+	;   domain_error(gitty_driver, Driver)
+	).
+
+driver_module(files, gitty_driver_files).
+driver_module(bdb,   gitty_driver_bdb).
+
+store_driver_module(Store, Module) :-
+	atom(Store), !,
+	gitty_store_type(Store, Module).
+
+%%	gitty_close(+Store) is det.
+%
+%	Close access to the Store.
+
+gitty_close(Store) :-
+	store_driver_module(Store, M),
+	M:gitty_close(Store).
 
 %%	gitty_file(+Store, ?File, ?Head) is nondet.
 %
@@ -103,8 +148,8 @@ remote_sync(true).
 %	revision.
 
 gitty_file(Store, Head, Hash) :-
-	gitty_scan(Store),
-	head(Store, Head, Hash).
+	store_driver_module(Store, M),
+	M:gitty_file(Store, Head, Hash).
 
 %%	gitty_create(+Store, +Name, +Data, +Meta, -Commit) is det.
 %
@@ -113,17 +158,15 @@ gitty_file(Store, Head, Hash) :-
 %	@arg Commit is a dit describing the new Commit
 
 gitty_create(Store, Name, _Data, _Meta, _) :-
-	gitty_scan(Store),
-	head(Store, Name, _), !,
+	gitty_file(Store, Name, _Hash), !,
 	throw(error(gitty(file_exists(Name)),_)).
 gitty_create(Store, Name, Data, Meta, CommitRet) :-
 	save_object(Store, Data, blob, Hash),
 	get_time(Now),
-	Commit = gitty{}.put(Meta)
-		        .put(_{ name:Name,
-				time:Now,
-				data:Hash
-			      }),
+	Commit = gitty{time:Now}.put(Meta)
+		                .put(_{ name:Name,
+					data:Hash
+				      }),
 	format(string(CommitString), '~q.~n', [Commit]),
 	save_object(Store, CommitString, commit, CommitHash),
 	CommitRet = Commit.put(commit, CommitHash),
@@ -137,19 +180,18 @@ gitty_create(Store, Name, Data, Meta, CommitRet) :-
 %	Update document Name using Data and the given meta information
 
 gitty_update(Store, Name, Data, Meta, CommitRet) :-
-	gitty_scan(Store),
-	head(Store, Name, OldHead),
+	gitty_file(Store, Name, OldHead),
 	(   _{previous:OldHead} >:< Meta
 	->  true
-	;   throw(error(gitty(commit_version(OldHead, Meta.previous)), _))
+	;   throw(error(gitty(commit_version(Name, OldHead, Meta.previous)), _))
 	),
 	load_plain_commit(Store, OldHead, OldMeta),
 	get_time(Now),
 	save_object(Store, Data, blob, Hash),
 	Commit = gitty{}.put(OldMeta)
+			.put(_{time:Now})
 		        .put(Meta)
 		        .put(_{ name:Name,
-				time:Now,
 				data:Hash,
 				previous:OldHead
 			      }),
@@ -161,17 +203,29 @@ gitty_update(Store, Name, Data, Meta, CommitRet) :-
 	      ( delete_object(Store, CommitHash),
 		throw(E))).
 
+%%	gitty_update_head(+Store, +Name, +OldCommit, +NewCommit) is det.
+%
+%	Update the head of a gitty  store   for  Name.  OldCommit is the
+%	current head and NewCommit is the new  head. If Name is created,
+%	and thus there is no head, OldCommit must be `-`.
+%
+%	This operation can fail because another   writer has updated the
+%	head.  This can both be in-process or another process.
+%
+%	@error gitty(file_exists(Name) if the file already exists
+%	@error gitty(not_at_head(Name, OldCommit) if the head was moved
+%	       by someone else.
+
+gitty_update_head(Store, Name, OldCommit, NewCommit) :-
+	store_driver_module(Store, Module),
+	Module:gitty_update_head(Store, Name, OldCommit, NewCommit).
+
 %%	gitty_data(+Store, +NameOrHash, -Data, -Meta) is semidet.
 %
 %	Get the data in object Name and its meta-data
 
 gitty_data(Store, Name, Data, Meta) :-
-	gitty_scan(Store),
-	head(Store, Name, Head), !,
-	load_commit(Store, Head, Meta),
-	load_object(Store, Meta.data, Data).
-gitty_data(Store, Hash, Data, Meta) :-
-	load_commit(Store, Hash, Meta),
+	gitty_commit(Store, Name, Meta),
 	load_object(Store, Meta.data, Data).
 
 %%	gitty_commit(+Store, +NameOrHash, -Meta) is semidet.
@@ -180,8 +234,8 @@ gitty_data(Store, Hash, Data, Meta) :-
 %	is added to the meta-data to specify the commit hash.
 
 gitty_commit(Store, Name, Meta) :-
-	gitty_scan(Store),
-	head(Store, Name, Head), !,
+	must_be(atom, Name),
+	gitty_file(Store, Name, Head), !,
 	load_commit(Store, Head, Meta).
 gitty_commit(Store, Hash, Meta) :-
 	load_commit(Store, Hash, Meta).
@@ -189,14 +243,14 @@ gitty_commit(Store, Hash, Meta) :-
 load_commit(Store, Hash, Meta) :-
 	load_plain_commit(Store, Hash, Meta0),
 	Meta1 = Meta0.put(commit, Hash),
-	(   head(Store, Meta0.name, Hash)
+	(   gitty_file(Store, Meta0.name, Hash)
 	->  Meta = Meta1.put(symbolic, "HEAD")
 	;   Meta = Meta1
 	).
 
 load_plain_commit(Store, Hash, Meta) :-
-	load_object(Store, Hash, String),
-	term_string(Meta, String, []).
+	store_driver_module(Store, Module),
+	Module:load_plain_commit(Store, Hash, Meta).
 
 %%	gitty_history(+Store, +NameOrHash, -History, +Options) is det.
 %
@@ -225,8 +279,7 @@ gitty_history(Store, Name, History, Options) :-
 	).
 
 history_hash_start(Store, Name, Hash) :-
-	gitty_scan(Store),
-	head(Store, Name, Head), !,
+	gitty_file(Store, Name, Head), !,
 	Hash = Head.
 history_hash_start(_, Hash, Hash).
 
@@ -261,35 +314,28 @@ list_prefix(N, [H|T0], [H|T]) :-
 	list_prefix(N2, T0, T).
 
 
-%%	save_object(+Store, +Data, +Type, -Hash)
+%%	save_object(+Store, +Data:string, +Type, -Hash) is det.
 %
 %	Save an object in a git compatible   way. Data provides the data
 %	as a string.
 %
 %	@see http://www.gitguys.com/topics/what-is-the-format-of-a-git-blob/
+%	@bug We currently delete objects if the head cannot be moved.
+%	This can lead to a race condition.   We need to leave that
+%	to GC.
 
 save_object(Store, Data, Type, Hash) :-
-	sha_new_ctx(Ctx0, []),
 	size_in_bytes(Data, Size),
 	format(string(Hdr), '~w ~d\u0000', [Type, Size]),
+	sha_new_ctx(Ctx0, []),
 	sha_hash_ctx(Ctx0, Hdr, Ctx1, _),
 	sha_hash_ctx(Ctx1, Data, _, HashBin),
 	hash_atom(HashBin, Hash),
-	sub_atom(Hash, 0, 2, _, Dir0),
-	sub_atom(Hash, 2, 2, _, Dir1),
-	sub_atom(Hash, 4, _, 0, File),
-	directory_file_path(Store, Dir0, D0),
-	ensure_directory(D0),
-	directory_file_path(D0, Dir1, D1),
-	ensure_directory(D1),
-	directory_file_path(D1, File, Path),
-	(   exists_file(Path)
-	->  true
-	;   setup_call_cleanup(
-		gzopen(Path, write, Out, [encoding(utf8)]),
-		format(Out, '~s~s', [Hdr, Data]),
-		close(Out))
-	).
+	store_object(Store, Hash, Hdr, Data).
+
+store_object(Store, Hash, Hdr, Data) :-
+	store_driver_module(Store, Module),
+	Module:store_object(Store, Hash, Hdr, Data).
 
 size_in_bytes(Data, Size) :-
 	setup_call_cleanup(
@@ -299,10 +345,20 @@ size_in_bytes(Data, Size) :-
 	    ),
 	    close(Out)).
 
-ensure_directory(Dir) :-
-	exists_directory(Dir), !.
-ensure_directory(Dir) :-
-	make_directory(Dir).
+
+%%	fsck_object(+Store, +Hash) is semidet.
+%
+%	Test the integrity of object Hash in Store.
+
+:- public fsck_object/2.
+fsck_object(Store, Hash) :-
+	load_object(Store, Hash, Data, Type, Size),
+	format(string(Hdr), '~w ~d\u0000', [Type, Size]),
+	sha_new_ctx(Ctx0, []),
+	sha_hash_ctx(Ctx0, Hdr, Ctx1, _),
+	sha_hash_ctx(Ctx1, Data, _, HashBin),
+	hash_atom(HashBin, Hash).
+
 
 %%	load_object(+Store, +Hash, -Data) is det.
 %%	load_object(+Store, +Hash, -Data, -Type, -Size) is det.
@@ -312,124 +368,24 @@ ensure_directory(Dir) :-
 load_object(Store, Hash, Data) :-
 	load_object(Store, Hash, Data, _, _).
 load_object(Store, Hash, Data, Type, Size) :-
-	hash_file(Store, Hash, Path),
-	setup_call_cleanup(
-	    gzopen(Path, read, In, [encoding(utf8)]),
-	    read_object(In, Data, Type, Size),
-	    close(In)).
-
-read_object(In, Data, Type, Size) :-
-	get_code(In, C0),
-	read_hdr(C0, In, Hdr),
-	phrase((nonblanks(TypeChars), " ", integer(Size)), Hdr),
-	atom_codes(Type, TypeChars),
-	read_string(In, _, Data).
-
-read_hdr(C, In, [C|T]) :-
-	C > 0, !,
-	get_code(In, C1),
-	read_hdr(C1, In, T).
-read_hdr(_, _, []).
-
-%%	gitty_rescan(?Store) is det.
-%
-%	Update our view of the shared   storage  for all stores matching
-%	Store.
-
-gitty_rescan(Store) :-
-	retractall(store(Store, _)).
-
-%%	gitty_scan(+Store) is det.
-%
-%	Scan gitty store for files (entries),   filling  head/3. This is
-%	performed lazily at first access to the store.
-%
-%	@tdb	Possibly we need to maintain a cached version of this
-%		index to avoid having to open all objects of the gitty
-%		store.
-
-gitty_scan(Store) :-
-	store(Store, _), !,
-	(   remote_sync(true)
-	->  with_mutex(gitty, remote_updates(Store))
-	;   true
-	).
-gitty_scan(Store) :-
-	with_mutex(gitty, gitty_scan_sync(Store)).
-
-:- thread_local
-	latest/3.
-
-gitty_scan_sync(Store) :-
-	store(Store, _), !.
-gitty_scan_sync(Store) :-
-	gitty_scan_latest(Store),
-	forall(retract(latest(Name, Hash, _Time)),
-	       assert(head(Store, Name, Hash))),
-	get_time(Now),
-	assertz(store(Store, Now)).
-
-%%	gitty_scan_latest(+Store)
-%
-%	Scans the gitty store, extracting  the   latest  version of each
-%	named entry.
-
-gitty_scan_latest(Store) :-
-	retractall(head(Store, _, _)),
-	retractall(latest(_, _, _)),
-	(   gitty_hash(Store, Hash),
-	    load_object(Store, Hash, Data, commit, _Size),
-	    term_string(Meta, Data, []),
-	    _{name:Name, time:Time} :< Meta,
-	    (	latest(Name, _, OldTime),
-		OldTime > Time
-	    ->	true
-	    ;	retractall(latest(Name, _, _)),
-		assertz(latest(Name, Hash, Time))
-	    ),
-	    fail
-	;   true
-	).
-
+	store_driver_module(Store, Module),
+	Module:load_object(Store, Hash, Data, Type, Size).
 
 %%	gitty_hash(+Store, ?Hash) is nondet.
 %
 %	True when Hash is an object in the store.
 
 gitty_hash(Store, Hash) :-
-	var(Hash), !,
-	access_file(Store, exist),
-	directory_files(Store, Level0),
-	member(E0, Level0),
-	E0 \== '..',
-	atom_length(E0, 2),
-	directory_file_path(Store, E0, Dir0),
-	directory_files(Dir0, Level1),
-	member(E1, Level1),
-	E1 \== '..',
-	atom_length(E1, 2),
-	directory_file_path(Dir0, E1, Dir),
-	directory_files(Dir, Files),
-	member(File, Files),
-	atom_length(File, 36),
-	atomic_list_concat([E0,E1,File], Hash).
-gitty_hash(Store, Hash) :-
-	hash_file(Store, Hash, File),
-	exists_file(File).
+	store_driver_module(Store, Module),
+	Module:gitty_hash(Store, Hash).
 
 %%	delete_object(+Store, +Hash)
 %
 %	Delete an existing object
 
 delete_object(Store, Hash) :-
-	hash_file(Store, Hash, File),
-	delete_file(File).
-
-hash_file(Store, Hash, Path) :-
-	sub_atom(Hash, 0, 2, _, Dir0),
-	sub_atom(Hash, 2, 2, _, Dir1),
-	sub_atom(Hash, 4, _, 0, File),
-	atomic_list_concat([Store, Dir0, Dir1, File], /, Path).
+	store_driver_module(Store, Module),
+	Module:delete_object(Store, Hash).
 
 %%	gitty_reserved_meta(?Key) is nondet.
 %
@@ -440,126 +396,32 @@ gitty_reserved_meta(time).
 gitty_reserved_meta(data).
 gitty_reserved_meta(previous).
 
-
 		 /*******************************
-		 *	      SYNCING		*
+		 *	    FSCK SUPPORT	*
 		 *******************************/
 
-%%	gitty_update_head(+Store, +Name, +OldCommit, +NewCommit) is det.
-%
-%	Update the head of a gitty  store   for  Name.  OldCommit is the
-%	current head and NewCommit is the new  head. If Name is created,
-%	and thus there is no head, OldCommit must be `-`.
-%
-%	This operation can fail because another   writer has updated the
-%	head.  This can both be in-process or another process.
-
-gitty_update_head(Store, Name, OldCommit, NewCommit) :-
-	with_mutex(gitty,
-		   gitty_update_head_sync(Store, Name, OldCommit, NewCommit)).
-
-gitty_update_head_sync(Store, Name, OldCommit, NewCommit) :-
-	remote_sync(true), !,
-	setup_call_cleanup(
-	    heads_output_stream(Store, HeadsOut),
-	    gitty_update_head_sync(Store, Name, OldCommit, NewCommit, HeadsOut),
-	    close(HeadsOut)).
-gitty_update_head_sync(Store, Name, OldCommit, NewCommit) :-
-	gitty_update_head_sync2(Store, Name, OldCommit, NewCommit).
-
-gitty_update_head_sync(Store, Name, OldCommit, NewCommit, HeadsOut) :-
-	gitty_update_head_sync2(Store, Name, OldCommit, NewCommit),
-	format(HeadsOut, '~q.~n', [head(Name, OldCommit, NewCommit)]).
-
-gitty_update_head_sync2(Store, Name, OldCommit, NewCommit) :-
-	gitty_scan(Store),		% fetch remote changes
-	(   OldCommit == (-)
-	->  (   head(Store, Name, _)
-	    ->	throw(error(gitty(file_exists(Name),_)))
-	    ;	assertz(head(Store, Name, NewCommit))
-	    )
-	;   (   retract(head(Store, Name, OldCommit))
-	    ->	assertz(head(Store, Name, NewCommit))
-	    ;	throw(error(gitty(not_at_head(Name, OldCommit)), _))
-	    )
-	).
+:- public
+	delete_object/2,
+	delete_head/2,
+	set_head/3.
 
-remote_updates(Store) :-
-	remote_updates(Store, List),
-	maplist(update_head(Store), List).
+%%	delete_head(+Store, +Head) is det.
+%
+%	Delete Head from the administration.  Used if the head is
+%	inconsistent.
 
-update_head(Store, head(Name, OldCommit, NewCommit)) :-
-	(   OldCommit == (-)
-	->  \+ head(Store, Name, _)
-	;   retract(head(Store, Name, OldCommit))
-	), !,
-	assert(head(Store, Name, NewCommit)).
-update_head(_, _).
+delete_head(Store, Head) :-
+	store_driver_module(Store, Module),
+	Module:delete_head(Store, Head).
 
-%%	remote_updates(+Store, -List) is det.
+%%	set_head(+Store, +File, +Head) is det.
 %
-%	Find updates from other gitties  on   the  same filesystem. Note
-%	that we have to push/pop the input   context to avoid creating a
-%	notion of an  input  context   which  possibly  relate  messages
-%	incorrectly to the sync file.
-
-remote_updates(Store, List) :-
-	heads_input_stream(Store, Stream),
-	setup_call_cleanup(
-	    '$push_input_context'(gitty_sync),
-	    read_new_terms(Stream, List),
-	    '$pop_input_context').
-
-read_new_terms(Stream, Terms) :-
-	read(Stream, First),
-	read_new_terms(First, Stream, Terms).
-
-read_new_terms(end_of_file, _, List) :- !,
-	List = [].
-read_new_terms(Term, Stream, [Term|More]) :-
-	read(Stream, Term2),
-	read_new_terms(Term2, Stream, More).
-
-heads_output_stream(Store, Out) :-
-	heads_file(Store, HeadsFile),
-	open(HeadsFile, append, Out,
-	     [ encoding(utf8),
-	       lock(exclusive)
-	     ]).
-
-heads_input_stream(Store, Stream) :-
-	heads_input_stream_cache(Store, Stream0), !,
-	Stream = Stream0.
-heads_input_stream(Store, Stream) :-
-	heads_file(Store, File),
-	between(1, 2, _),
-	catch(open(File, read, In,
-		   [ encoding(utf8),
-		     eof_action(reset)
-		   ]),
-	      _,
-	      create_heads_file(Store)), !,
-	assert(heads_input_stream_cache(Store, In)),
-	Stream = In.
-
-create_heads_file(Store) :-
-	call_cleanup(
-	    heads_output_stream(Store, Out),
-	    close(Out)),
-	fail.					% always fail!
+%	Register Head as the Head hash for File, removing possible
+%	old head.
 
-heads_file(Store, HeadsFile) :-
-	ensure_directory(Store),
-	directory_file_path(Store, ref, RefDir),
-	ensure_directory(RefDir),
-	directory_file_path(RefDir, head, HeadsFile).
-
-:- multifile
-	prolog:error_message//1.
-
-prolog:error_message(gitty(not_at_head(Name, _OldCommit))) -->
-	[ 'Gitty: cannot update head for "~w" because it was \c
-	   updated by someone else'-[Name] ].
+set_head(Store, File, Head) :-
+	store_driver_module(Store, Module),
+	Module:set_head(Store, File, Head).
 
 
 		 /*******************************
@@ -877,3 +739,19 @@ longest(L1, L2, Longest) :-
 	->  Longest = L1
 	;   Longest = L2
 	).
+
+		 /*******************************
+		 *	      MESSAGES		*
+		 *******************************/
+:- multifile
+	prolog:error_message//1.
+
+prolog:error_message(gitty(not_at_head(Name, _OldCommit))) -->
+	[ 'Gitty: cannot update head for "~w" because it was \c
+	   updated by someone else'-[Name] ].
+prolog:error_message(gitty(file_exists(Name))) -->
+	[ 'Gitty: File exists: ~p'-[Name] ].
+prolog:error_message(gitty(commit_version(Name, _Head, _Previous))) -->
+	[ 'Gitty: ~p: cannot update (modified by someone else)'-[Name] ].
+
+
diff --git a/lib/trill_on_swish/help.pl b/lib/trill_on_swish/help.pl
index b7b0630..3b7b904 100644
--- a/lib/trill_on_swish/help.pl
+++ b/lib/trill_on_swish/help.pl
@@ -27,7 +27,7 @@
     the GNU General Public License.
 */
 
-:- module(trill_on_swish_help, []).
+:- module(swish_help, []).
 :- use_module(library(http/http_dispatch)).
 :- use_module(library(http/http_server_files)).
 
@@ -38,8 +38,8 @@ This module serves help information for SWISH.
 @tbd	Server SWI-Prolog Markdown files.
 */
 
-:- http_handler(trill_on_swish(help), serve_files_in_directory(swish_help),
+:- http_handler(swish(help), serve_files_in_directory(swish_help),
 		[id(help),prefix]).
 
-user:file_search_path(swish_help, trill_on_swish(web/help)).
+user:file_search_path(swish_help, swish(web/help)).
 
diff --git a/lib/trill_on_swish/highlight.pl b/lib/trill_on_swish/highlight.pl
index ca708f3..7d29b17 100644
--- a/lib/trill_on_swish/highlight.pl
+++ b/lib/trill_on_swish/highlight.pl
@@ -27,8 +27,8 @@
     the GNU General Public License.
 */
 
-:- module(trill_on_swish_highlight,
-	  [
+:- module(swish_highlight,
+	  [ current_highlight_state/2
 	  ]).
 :- use_module(library(debug)).
 :- use_module(library(http/http_dispatch)).
@@ -46,7 +46,7 @@
 :- use_module(library(helpidx), [predicate/5]).
 :- endif.
 
-http:location(codemirror, trill_on_swish(cm), []).
+http:location(codemirror, swish(cm), []).
 
 :- http_handler(codemirror(.),      http_404([]),      [id(cm_highlight)]).
 :- http_handler(codemirror(change), codemirror_change, []).
@@ -154,13 +154,13 @@ insert([H|T], TB, ChPos0, ChPos, Changed) :-
 	->  Len	= 0
 	;   Changed = true,
 	    string_length(H, Len),
-	    debug(trill_on_swish(change), 'Insert ~q at ~d', [H, ChPos0]),
+	    debug(cm(change), 'Insert ~q at ~d', [H, ChPos0]),
 	    insert_memory_file(TB, ChPos0, H)
 	),
 	ChPos1 is ChPos0+Len,
 	(   T == []
 	->  ChPos2 = ChPos1
-	;   debug(trill_on_swish(change), 'Adding newline at ~d', [ChPos1]),
+	;   debug(cm(change), 'Adding newline at ~d', [ChPos1]),
 	    Changed = true,
 	    insert_memory_file(TB, ChPos1, '\n'),
 	    ChPos2 is ChPos1+1
@@ -168,7 +168,8 @@ insert([H|T], TB, ChPos0, ChPos, Changed) :-
 	insert(T, TB, ChPos2, ChPos, Changed).
 
 :- dynamic
-	current_editor/3,			% UUID, MemFile, Role
+	current_editor/4,			% UUID, MemFile, Role, Time
+	editor_last_access/2,			% UUID, Time
 	xref_upto_data/1.			% UUID
 
 create_editor(UUID, Editor, Change) :-
@@ -179,7 +180,25 @@ create_editor(UUID, Editor, Change) :-
 	->  atom_string(Role, RoleString)
 	;   Role = source
 	),
-	asserta(current_editor(UUID, Editor, Role)).
+	get_time(Now),
+	asserta(current_editor(UUID, Editor, Role, Now)).
+
+%%	current_highlight_state(?UUID, -State) is nondet.
+%
+%	Return info on the current highlighter
+
+current_highlight_state(UUID,
+			highlight{data:Editor,
+				  role:Role,
+				  created:Created,
+				  access:Access
+				 }) :-
+	current_editor(UUID, Editor, Role, Created),
+	(   editor_last_access(Editor, Access)
+	->  true
+	;   Access = Created
+	).
+
 
 %%	uuid_like(+UUID) is semidet.
 %
@@ -190,7 +209,7 @@ create_editor(UUID, Editor, Change) :-
 uuid_like(UUID) :-
 	split_string(UUID, "-", "", Parts),
 	maplist(string_length, Parts, [8,4,4,4,12]),
-	\+ current_editor(UUID, _, _).
+	\+ current_editor(UUID, _, _, _).
 
 %%	destroy_editor(+UUID)
 %
@@ -200,27 +219,96 @@ uuid_like(UUID) :-
 destroy_editor(UUID) :-
 	must_be(atom, UUID),
 	retractall(xref_upto_data(UUID)),
-	current_editor(UUID, Editor, _), !,
+	retractall(editor_last_access(UUID, _)),
+	current_editor(UUID, Editor, _, _), !,
 	(   xref_source_id(Editor, SourceID)
 	->  xref_clean(SourceID),
 	    destroy_state_module(UUID)
 	;   true
 	),
 	% destroy late to make xref_source_identifier/2 work.
-	retractall(current_editor(UUID, Editor, _)),
+	retractall(current_editor(UUID, Editor, _, _)),
 	free_memory_file(Editor).
 destroy_editor(_).
 
+%%	gc_editors
+%
+%	Garbage collect all editors that have   not been accessed for 60
+%	minutes.
+%
+%	@tbd  Normally,  deleting  a  highlight    state   can  be  done
+%	aggressively as it will be recreated  on demand. But, coloring a
+%	query passes the UUIDs of related sources and as yet there is no
+%	way to restore this. We could fix  that by replying to the query
+%	colouring with the UUIDs for which we do not have sources, after
+%	which the client retry the query-color request with all relevant
+%	sources.
+
+:- dynamic
+	gced_editors/1.
+
+editor_max_idle_time(3600).
+
+gc_editors :-
+	get_time(Now),
+	(   gced_editors(Then),
+	    editor_max_idle_time(MaxIdle),
+	    Now - Then < MaxIdle/3
+	->  true
+	;   retractall(gced_editors(_)),
+	    asserta(gced_editors(Now)),
+	    fail
+	).
+gc_editors :-
+	editor_max_idle_time(MaxIdle),
+	forall(garbage_editor(UUID, MaxIdle),
+	       destroy_old_editor(UUID)).
+
+garbage_editor(UUID, TimeOut) :-
+	get_time(Now),
+	current_editor(UUID, _TB, _Role, Created),
+	Now - Created > TimeOut,
+	(   editor_last_access(UUID, Access)
+	->  Now - Access > TimeOut
+	;   true
+	).
+
+destroy_old_editor(UUID) :-
+	with_mutex(swish_gc_editor,
+		   destroy_old_editor_sync(UUID)).
+
+destroy_old_editor_sync(UUID) :-
+	editor_max_idle_time(MaxIdle),
+	garbage_editor(UUID, MaxIdle), !,
+	debug(cm(gc), 'GC highlight state for ~q', [UUID]),
+	destroy_editor(UUID).
+destroy_old_editor_sync(_).
+
+%%	fetch_editor(+UUID, -MemFile) is semidet.
+%
+%	Fetch existing editor for source UUID. Make sure the last access
+%	time is updated to avoid concurrent GC of the editor.
+
+fetch_editor(UUID, TB) :-
+	with_mutex(swish_gc_editor,
+		   ( current_editor(UUID, TB, _Role, _),
+		     update_access(UUID)
+		   )).
+
+update_access(UUID) :-
+	get_time(Now),
+	retractall(editor_last_access(UUID, _)),
+	asserta(editor_last_access(UUID, Now)).
 
 :- multifile
 	prolog:xref_source_identifier/2,
 	prolog:xref_open_source/2.
 
 prolog:xref_source_identifier(UUID, UUID) :-
-	current_editor(UUID, _, _).
+	current_editor(UUID, _, _, _).
 
 prolog:xref_open_source(UUID, Stream) :-
-	current_editor(UUID, TB, _Role), !,
+	current_editor(UUID, TB, _Role, _), !,
 	open_memory_file(TB, read, Stream).
 
 
@@ -234,8 +322,8 @@ codemirror_leave(Request) :-
 	http_read_json_dict(Request, Data, []),
 	debug(cm(leave), 'Leaving editor ~p', [Data]),
 	(   atom_string(UUID, Data.get(uuid))
-	->  forall(current_editor(UUID, _TB, _Role),
-		   destroy_editor(UUID))
+	->  forall(current_editor(UUID, _TB, _Role, _),
+		   with_mutex(swish_gc_editor, destroy_editor(UUID)))
 	;   true
 	),
 	reply_json_dict(true).
@@ -246,7 +334,7 @@ codemirror_leave(Request) :-
 
 mark_changed(MemFile, Changed) :-
 	(   Changed == true
-	->  current_editor(UUID, MemFile, _Role),
+	->  current_editor(UUID, MemFile, _Role, _),
 	    retractall(xref_upto_data(UUID))
 	;   true
 	).
@@ -256,7 +344,7 @@ mark_changed(MemFile, Changed) :-
 xref(UUID) :-
 	xref_upto_data(UUID), !.
 xref(UUID) :-
-	current_editor(UUID, MF, _Role),
+	current_editor(UUID, MF, _Role, _),
 	xref_source_id(MF, SourceId),
 	xref_state_module(MF, Module),
 	xref_source(SourceId,
@@ -280,7 +368,7 @@ xref(UUID) :-
 %	;   SourceId = Master
 %	).
 xref_source_id(TB, UUID) :-
-	current_editor(UUID, TB, _Role).
+	current_editor(UUID, TB, _Role, _).
 
 %%	xref_state_module(+TB, -Module) is semidet.
 %
@@ -288,11 +376,11 @@ xref_source_id(TB, UUID) :-
 %	temporary module based on the UUID of the source.
 
 xref_state_module(TB, UUID) :-
-	current_editor(UUID, TB, _Role),
+	current_editor(UUID, TB, _Role, _),
 	(   module_property(UUID, class(temporary))
 	->  true
 	;   set_module(UUID:class(temporary)),
-	    add_import_module(UUID, trill_on_swish, start)
+	    add_import_module(UUID, swish, start)
 	).
 
 destroy_state_module(UUID) :-
@@ -320,29 +408,52 @@ codemirror_tokens(Request) :-
 	    ;	change_failed(Data.uuid, Reason)
 	    )
 	;   reply_json_dict(json{tokens:[[]]})
-	).
+	),
+	gc_editors.
 
 
 enriched_tokens(TB, _Data, Tokens) :-		% source window
-	current_editor(UUID, TB, source), !,
+	current_editor(UUID, TB, source, _), !,
 	xref(UUID),
 	server_tokens(TB, Tokens).
 enriched_tokens(TB, Data, Tokens) :-		% query window
-	(   [SourceIdS|_] = Data.get(sourceID)
-	->  true
-	;   SourceIdS = Data.get(sourceID),
-	    atomic(SourceIdS)
-	), !,
-	atom_string(SourceID, SourceIdS),
+	json_source_id(Data.get(sourceID), SourceID), !,
 	memory_file_to_string(TB, Query),
 	with_mutex(swish_highlight_query,
 		   prolog_colourise_query(Query, SourceID, colour_item(TB))),
 	collect_tokens(TB, Tokens).
 enriched_tokens(TB, _Data, Tokens) :-
 	memory_file_to_string(TB, Query),
-	prolog_colourise_query(Query, module(trill_on_swish), colour_item(TB)),
+	prolog_colourise_query(Query, module(swish), colour_item(TB)),
 	collect_tokens(TB, Tokens).
 
+%%	json_source_id(+Input, -SourceID)
+%
+%	Translate the Input, which is  either  a   string  or  a list of
+%	strings into an  atom  or  list   of  atoms.  Older  versions of
+%	SWI-Prolog only accept a single atom source id.
+
+:- if(current_predicate(prolog_colour:to_list/2)).
+json_source_id(StringList, SourceIDList) :-
+	is_list(StringList),
+	StringList \== [], !,
+	maplist(string_source_id, StringList, SourceIDList).
+:- else.				% old version (=< 7.3.7)
+json_source_id([String|_], SourceID) :-
+	maplist(string_source_id, String, SourceID).
+:- endif.
+json_source_id(String, SourceID) :-
+	string(String),
+	string_source_id(String, SourceID).
+
+string_source_id(String, SourceID) :-
+	atom_string(SourceID, String),
+	(   fetch_editor(SourceID, _TB)
+	->  true
+	;   true
+	).
+
+
 %%	shadow_editor(+Data, -MemoryFile) is det.
 %
 %	Get our shadow editor:
@@ -362,7 +473,7 @@ enriched_tokens(TB, _Data, Tokens) :-
 
 shadow_editor(Data, TB) :-
 	atom_string(UUID, Data.get(uuid)),
-	current_editor(UUID, TB, _Role), !,
+	fetch_editor(UUID, TB), !,
 	(   Text = Data.get(text)
 	->  size_memory_file(TB, Size),
 	    delete_memory_file(TB, 0, Size),
@@ -379,7 +490,7 @@ shadow_editor(Data, TB) :-
 	Text = Data.get(text), !,
 	atom_string(UUID, Data.uuid),
 	create_editor(UUID, TB, Data),
-	debug(trill_on_swish(change), 'Initialising editor to ~q', [Text]),
+	debug(cm(change), 'Initialising editor to ~q', [Text]),
 	insert_memory_file(TB, 0, Text).
 shadow_editor(Data, TB) :-
 	_{role:_} :< Data, !,
@@ -407,12 +518,12 @@ shadow_editor(_Data, _TB) :-
 	server_tokens/1.
 
 show_mirror(Role) :-
-	current_editor(_UUID, TB, Role), !,
+	current_editor(_UUID, TB, Role, _), !,
 	memory_file_to_string(TB, String),
 	write(user_error, String).
 
 server_tokens(Role) :-
-	current_editor(_UUID, TB, Role), !,
+	current_editor(_UUID, TB, Role, _), !,
 	enriched_tokens(TB, _{}, Tokens),
 	print_term(Tokens, [output(user_error)]).
 
@@ -422,7 +533,7 @@ server_tokens(Role) :-
 %		represents the tokens found in a single toplevel term.
 
 server_tokens(TB, GroupedTokens) :-
-	current_editor(UUID, TB, _Role),
+	current_editor(UUID, TB, _Role, _),
 	setup_call_cleanup(
 	    open_memory_file(TB, read, Stream),
 	    ( set_stream_file(TB, Stream),
@@ -535,7 +646,7 @@ colour_item(_TB, Style, Start, Len) :-
 %	Attributes.
 %
 %	Additional translations can be defined by   adding rules for the
-%	multifile predicate trill_on_swish:style/3. The base   type, which refers
+%	multifile predicate swish:style/3. The base   type, which refers
 %	to the type generated by the   SWISH tokenizer must be specified
 %	by adding an  attribute  base(BaseType).   For  example,  if the
 %	colour system classifies an  atom  as   refering  to  a database
@@ -543,7 +654,7 @@ colour_item(_TB, Style, Start, Len) :-
 %	following rule should ensure consistent mapping:
 %
 %	  ==
-%	  trill_on_swish_highlight:style(db_column(Name),
+%	  swish_highlight:style(db_column(Name),
 %				db_column, [text, base(atom)]).
 %	  ==
 
@@ -579,6 +690,7 @@ style(meta(_Spec),	 meta,				   []).
 style(op_type(_Type),	 op_type,			   [text]).
 style(functor,		 functor,			   [text]).
 style(control,		 control,			   [text]).
+style(delimiter,	 delimiter,			   [text]).
 style(identifier,	 identifier,			   [text]).
 style(module(_Module),   module,			   [text]).
 style(error,		 error,				   [text]).
@@ -602,11 +714,13 @@ style(dict_function(F),  dict_function,			   [text(F)]).
 style(empty_list,	 list_open-list_close,		   []).
 style(list,		 list_open-list_close,		   []).
 style(dcg(terminal),	 list_open-list_close,		   []).
+style(dcg(string),	 string_terminal,		   []).
 style(dcg(plain),	 brace_term_open-brace_term_close, []).
 style(brace_term,	 brace_term_open-brace_term_close, []).
 style(dict_content,	 dict_open-dict_close,             []).
 style(expanded,		 expanded,			   [text]).
 style(comment_string,	 comment_string,		   []).
+style(ext_quant,	 ext_quant,			   []).
 					% from library(http/html_write)
 style(html(_Element),	 html,				   []).
 style(entity(_Element),	 entity,			   []).
@@ -629,21 +743,21 @@ neck_text(method(send), (:->)).
 neck_text(method(get),  (:<-)).
 neck_text(directive,    (:-)).
 
-head_type(exported,	head_exported).
-head_type(public(_),	head_public).
-head_type(extern(_),	head_extern).
-head_type(dynamic,	head_dynamic).
-head_type(multifile,	head_multifile).
-head_type(unreferenced,	head_unreferenced).
-head_type(hook,		head_hook).
-head_type(meta,		head_meta).
-head_type(constraint,	head_constraint).
-head_type(imported,	head_imported).
-head_type(built_in,	head_built_in).
-head_type(iso,		head_iso).
-head_type(def_iso,	head_def_iso).
-head_type(def_swi,	head_def_swi).
-head_type(_,		head).
+head_type(exported,	 head_exported).
+head_type(public(_),	 head_public).
+head_type(extern(_),	 head_extern).
+head_type(dynamic,	 head_dynamic).
+head_type(multifile,	 head_multifile).
+head_type(unreferenced,	 head_unreferenced).
+head_type(hook,		 head_hook).
+head_type(meta,		 head_meta).
+head_type(constraint(_), head_constraint).
+head_type(imported,	 head_imported).
+head_type(built_in,	 head_built_in).
+head_type(iso,		 head_iso).
+head_type(def_iso,	 head_def_iso).
+head_type(def_swi,	 head_def_swi).
+head_type(_,		 head).
 
 goal_type(built_in,	      goal_built_in,	 []).
 goal_type(imported(File),     goal_imported,	 [file(File)]).
@@ -677,10 +791,10 @@ goal_arity(Goal, Arity) :-
 		 *******************************/
 
 :- multifile
-	trill_on_swish_config:config/2,
+	swish_config:config/2,
 	css/3.				% ?Context, ?Selector, -Attributes
 
-%%	trill_on_swish_config:config(-Name, -Styles) is nondet.
+%%	swish_config:config(-Name, -Styles) is nondet.
 %
 %	Provides the object `config.swish.style`,  a   JSON  object that
 %	maps   style   properties   of    user-defined   extensions   of
@@ -689,12 +803,12 @@ goal_arity(Goal, Arity) :-
 %
 %	@tbd	Provide summary information
 
-trill_on_swish_config:config(cm_style, Styles) :-
+swish_config:config(cm_style, Styles) :-
 	findall(Name-Style, highlight_style(Name, Style), Pairs),
 	keysort(Pairs, Sorted),
 	remove_duplicate_styles(Sorted, Unique),
 	dict_pairs(Styles, json, Unique).
-trill_on_swish_config:config(cm_hover_style, Styles) :-
+swish_config:config(cm_hover_style, Styles) :-
 	findall(Sel-Attrs, css_dict(hover, Sel, Attrs), Pairs),
 	dict_pairs(Styles, json, Pairs).
 
diff --git a/lib/trill_on_swish/include.pl b/lib/trill_on_swish/include.pl
index 49bac5a..c01c7a0 100644
--- a/lib/trill_on_swish/include.pl
+++ b/lib/trill_on_swish/include.pl
@@ -27,7 +27,7 @@
     the GNU General Public License.
 */
 
-:- module(trill_on_swish_include,
+:- module(swish_include,
 	  [
 	  ]).
 :- use_module(gitty).
@@ -50,21 +50,23 @@ We allow for hierarchical and circular includes.
 */
 
 
-trill_on_swish:term_expansion(:- include(FileIn), Expansion) :-
+swish:term_expansion(:- include(FileIn), Expansion) :-
 	atomic(FileIn),
 	atom_string(File, FileIn),
 	(   prolog_load_context(module, Module),
-	    clause(Module:'trill_on_swish included'(File), true)
+	    clause(Module:'swish included'(File), true)
 	->  Expansion = []
-	;   Expansion = [ (:- discontiguous('trill_on_swish included'/1)),
-		          'trill_on_swish included'(File),
+	;   Expansion = [ (:- discontiguous('swish included'/1)),
+		          'swish included'(File),
 		          (:- include(stream(Id, Stream, [close(true)])))
 			],
-	    setting(trill_on_swish_web_storage:directory, Store),
+	    '$push_input_context'(swish_include),
+	    setting(web_storage:directory, Store),
 	    add_extension(File, FileExt),
 	    catch(gitty_data(Store, FileExt, Data, _Meta), _, fail),
-	    atom_concat('trill_on_swish://', FileExt, Id),
-	    open_string(Data, Stream)
+	    atom_concat('swish://', FileExt, Id),
+	    open_string(Data, Stream),
+	    '$pop_input_context'
 	).
 
 add_extension(File, FileExt) :-
@@ -90,7 +92,7 @@ is_hash(Name) :-
 
 sandbox:safe_directive(M:include(stream(Id, Stream, [close(true)]))) :-
 	is_stream(Stream),
-	sub_atom(Id, 0, _, _, 'trill_on_swish://'),
+	sub_atom(Id, 0, _, _, 'swish://'),
 	prolog_load_context(module, M).
 
 
@@ -109,10 +111,10 @@ prolog_colour:term_colours((:- include(File)),
 			   ]) :-
 	debug(include, 'Classifying ~p', [File]),
 	(   atomic(File),
-	    setting(trill_on_swish_web_storage:directory, Store),
+	    setting(web_storage:directory, Store),
 	    add_extension(File, FileExt),
 	    catch(gitty_commit(Store, FileExt, _Meta), _, fail)
-	->  atom_concat('trill_on_swish://', FileExt, Id),
+	->  atom_concat('swish://', FileExt, Id),
 	    FileClass = file(Id)
 	;   FileClass = nofile
 	),
@@ -125,13 +127,46 @@ prolog_colour:term_colours((:- include(File)),
 
 :- multifile
 	prolog:xref_open_source/2,
-	prolog:xref_source_file/3.
+	prolog:xref_source_file/3,
+	prolog:xref_source_identifier/2,
+	prolog:xref_source_time/2.
+
+%%	prolog:xref_source_identifier(+Src, -Id) is semidet.
+%%	prolog:xref_open_source(+File, -Stream) is det.
+%%	prolog:xref_source_time(+File, -Modified) is det.
+%
+%	Map swish://file to a file from the gitty store.
+
+prolog:xref_source_identifier(Src, Id) :-
+	atom(Src),
+	sub_atom(Src, 0, _, _, 'swish://'), !,
+	Id = Src.
 
 prolog:xref_open_source(File, Stream) :-
-	atom_concat('trill_on_swish://', Name, File),
-	setting(trill_on_swish_web_storage:directory, Store),
+	atom(File),
+	atom_concat('swish://', Name, File),
+	setting(web_storage:directory, Store),
 	catch(gitty_data(Store, Name, Data, _Meta), _, fail),
 	open_string(Data, Stream).
 
+prolog:xref_source_time(File, Modified) :-
+	atom(File),
+	atom_concat('swish://', Name, File),
+	setting(web_storage:directory, Store),
+	catch(gitty_commit(Store, Name, Meta), _, fail),
+	Modified = Meta.get(time).
+
+%%	prolog:xref_source_file(+Term, -Path, +Options)
+%
+%	Deal with the above expansion for :- include(program) to support
+%	the cross-referencer.
+
 prolog:xref_source_file(stream(Id, _Stream, [close(true)]), Id, _).
+prolog:xref_source_file(File, Id, Options) :-
+	atom(File),
+	option(relative_to(Src), Options),
+	atom(Src),
+	sub_atom(Src, 0, _, _, 'swish://'),
+	add_extension(File, FileExt),
+	atom_concat('swish://', FileExt, Id).
 
diff --git a/lib/trill_on_swish/logging.pl b/lib/trill_on_swish/logging.pl
index 55f10e5..55339aa 100644
--- a/lib/trill_on_swish/logging.pl
+++ b/lib/trill_on_swish/logging.pl
@@ -27,7 +27,7 @@
     the GNU General Public License.
 */
 
-:- module(trill_on_swish_logging,
+:- module(swish_logging,
 	  [
 	  ]).
 :- use_module(library(http/http_log)).
@@ -46,26 +46,50 @@ and just `Hash` for subsequent occurrences.
   ==
 */
 
-:- setting(trill_on_swish:logging, boolean, true,
+:- setting(swish:logging, boolean, true,
 	   "Enable/disable logging of SWISH query execution").
 
-:- listen(pengine(Action), trill_on_swish_log(Action)).
+:- listen(pengine(Action), swish_log(Action)).
 
-trill_on_swish_log(create(Pengine, Application, Options0)) :-
+swish_log(create(Pengine, Application, Options0)) :-
 	maplist(hash_option, Options0, Options),
 	get_time(Now),
 	format_time(string(HDate), '%+', Now),
 	http_log('/*~s*/ pengine(~3f, ~q).~n',
 		 [HDate, Now, create(Pengine, Application, Options)]).
+swish_log(send(Pengine, Event)) :-
+	get_time(Now),
+	format_time(string(HDate), '%+', Now),
+	http_log('/*~s*/ pengine(~3f, ~q).~n',
+		 [HDate, Now, send(Pengine, Event)]).
 
 :- dynamic
-	text_hash/2.
+	text_hash/3,
+	gc_text_hash_time/1.
 
 hash_option(src_text(Text), src_text(Result)) :- !,
-	(   text_hash(Text, Hash)
+	(   text_hash(Text, _, Hash)
 	->  Result = Hash
 	;   variant_sha1(Text, Hash),
-	    assert(text_hash(Text, Hash)),
+	    get_time(Now),
+	    assert(text_hash(Text, Now, Hash)),
+	    gc_text_hash,
 	    Result = Hash-Text
 	).
 hash_option(Option, Option).
+
+gc_text_hash :-
+	gc_text_hash_time(Last),
+	get_time(Now),
+	Now - Last < 900, !.
+gc_text_hash :-
+	get_time(Now),
+	retractall(gc_text_hash_time(_)),
+	asserta(gc_text_hash_time(Now)),
+	Before is Now - 3600,
+	(   text_hash(Text, Time, Hash),
+	    Time < Before,
+	    retractall(text_hash(Text, Time, Hash)),
+	    fail
+	;   true
+	).
diff --git a/lib/trill_on_swish/markdown.pl b/lib/trill_on_swish/markdown.pl
index 4eb0150..eb39d8e 100644
--- a/lib/trill_on_swish/markdown.pl
+++ b/lib/trill_on_swish/markdown.pl
@@ -27,9 +27,10 @@
     the GNU General Public License.
 */
 
-:- module(trill_on_swish_markdown, []).
+:- module(swish_markdown, []).
 :- use_module(library(http/http_dispatch)).
 :- use_module(library(http/http_parameters)).
+:- use_module(library(http/http_client)).
 :- use_module(library(http/html_write)).
 :- use_module(library(http/html_head)).
 :- use_module(library(pldoc/doc_html),
@@ -47,7 +48,7 @@
 This module translates markdown cells for teh SWISH Notebook into HTML
 */
 
-:- http_handler(trill_on_swish(markdown), markdown, [id(markdown)]).
+:- http_handler(swish(markdown), markdown, [id(markdown)]).
 
 %%	markdown(+Request)
 %
@@ -55,6 +56,7 @@ This module translates markdown cells for teh SWISH Notebook into HTML
 %	document.
 
 markdown(Request) :-
+	option(method(get), Request), !,
         http_parameters(Request,
                         [ text(Data, [optional(true), default('')])
                         ]),
@@ -63,6 +65,13 @@ markdown(Request) :-
         phrase(html(DOM), Tokens),
         format('Content-type: text/html; charset=UTF-8\n\n'),
         print_html(Tokens).
+markdown(Request) :-
+	option(method(post), Request), !,
+	http_read_data(Request, Codes, [to(codes)]),
+	wiki_file_codes_to_dom(Codes, '/', DOM),
+	phrase(html(DOM), Tokens),
+        format('Content-type: text/html; charset=UTF-8\n\n'),
+        print_html(Tokens).
 
 %%      wiki_codes_to_dom(+Codes, +File, -DOM)
 %
@@ -91,8 +100,6 @@ wiki_file_codes_to_dom(String, File, DOM) :-
 
 prolog:doc_autolink_extension(swinb, notebook).
 
-prolog:doc_autolink_extension(owl, program).
-
 :- public
 	file//2.
 
@@ -108,21 +115,21 @@ prolog:doc_autolink_extension(owl, program).
 %	  ```
 
 :- multifile
-	trill_on_swish_config:source_alias/2.
+	swish_config:source_alias/2.
 
 file(File, Options) -->
 	{ once(sub_atom(File, Pre, _, _Post, /)),
 	  sub_atom(File, 0, Pre, _, Alias),
-	  trill_on_swish_config:source_alias(Alias, _Options),
+	  swish_config:source_alias(Alias, _Options),
 	  option(label(Label), Options),
-	  http_location_by_id(trill_on_swish, Swish),
+	  http_location_by_id(swish, Swish),
 	  directory_file_path(Swish, File, HREF)
 	}, !,
 	html(a([class([alias,file]), href(HREF)], Label)).
 file(File, Options) -->
 	{ storage_file(File),
 	  option(label(Label), Options),
-	  http_location_by_id(trill_on_swish, Swish),
+	  http_location_by_id(swish, Swish),
 	  directory_file_path(Swish, p, StoreDir),
 	  directory_file_path(StoreDir, File, HREF)
 	}, !,
diff --git a/lib/trill_on_swish/page.pl b/lib/trill_on_swish/page.pl
index 88a4655..066d3d9 100644
--- a/lib/trill_on_swish/page.pl
+++ b/lib/trill_on_swish/page.pl
@@ -27,7 +27,7 @@
     the GNU General Public License.
 */
 
-:- module(trill_on_swish_page,
+:- module(swish_page,
 	  [ swish_reply/2,			% +Options, +Request
 	    swish_page//1,			% +Options
 
@@ -60,7 +60,6 @@
 
 :- use_module(config).
 :- use_module(help).
-:- use_module(form).
 :- use_module(search).
 
 /** <module> Provide the SWISH application as Prolog HTML component
@@ -70,15 +69,15 @@ grammer rules. This allows for server-side   generated  pages to include
 swish or parts of swish easily into a page.
 */
 
-http:location(pldoc, trill_on_swish(pldoc), [priority(100)]).
+http:location(pldoc, swish(pldoc), [priority(100)]).
 
-:- http_handler(trill_on_swish(.), swish_reply([]), [id(trill_on_swish), prefix]).
+:- http_handler(swish(.), swish_reply([]), [id(swish), prefix]).
 
 :- multifile
-	trill_on_swish_config:source_alias/2,
-	trill_on_swish_config:reply_page/1,
-	trill_on_swish_config:verify_write_access/3, % +Request, +File, +Options
-	trill_on_swish_config:authenticate/2.	    % +Request, -User
+	swish_config:source_alias/2,
+	swish_config:reply_page/1,
+	swish_config:verify_write_access/3, % +Request, +File, +Options
+	swish_config:authenticate/2.	    % +Request, -User
 
 %%	swish_reply(+Options, +Request)
 %
@@ -96,47 +95,50 @@ http:location(pldoc, trill_on_swish(pldoc), [priority(100)]).
 %	  - q(Query)
 %	  Use Query as the initial query.
 
-swish_reply(_Options, Request) :-
-	trill_on_swish_config:authenticate(Request, _User), % must throw to deny access
-	fail.
 swish_reply(Options, Request) :-
+	swish_config:authenticate(Request, User), !, % must throw to deny access
+	swish_reply2([user(User)|Options], Request).
+swish_reply(Options, Request) :-
+	swish_reply2(Options, Request).
+
+swish_reply2(Options, Request) :-
 	option(method(Method), Request),
-	Method \== get, !,
+	Method \== get, Method \== head, !,
 	swish_rest_reply(Method, Request, Options).
-swish_reply(_, Request) :-
+swish_reply2(_, Request) :-
 	serve_resource(Request), !.
-swish_reply(_, Request) :-
-	swish_reply_config(Request), !.
-swish_reply(SwishOptions, Request) :-
+swish_reply2(Options, Request) :-
+	swish_reply_config(Request, Options), !.
+swish_reply2(SwishOptions, Request) :-
 	Params = [ code(_,	 [optional(true)]),
 		   background(_, [optional(true)]),
 		   examples(_,   [optional(true)]),
 		   q(_,          [optional(true)]),
-		   format(_,     [oneof([trill_on_swish,raw,json]), default(trill_on_swish)])
+		   format(_,     [oneof([swish,raw,json]), default(swish)])
 		 ],
 	http_parameters(Request, Params),
 	params_options(Params, Options0),
 	merge_options(Options0, SwishOptions, Options1),
 	source_option(Request, Options1, Options2),
 	option(format(Format), Options2),
-	swish_reply2(Format, Options2).
+	swish_reply3(Format, Options2).
 
-swish_reply2(raw, Options) :-
+swish_reply3(raw, Options) :-
 	option(code(Code), Options), !,
 	format('Content-type: text/x-prolog~n~n'),
 	format('~s', [Code]).
-swish_reply2(json, Options) :-
+swish_reply3(json, Options) :-
 	option(code(Code), Options), !,
 	option(meta(Meta), Options, _{}),
 	reply_json_dict(json{data:Code, meta:Meta}).
-swish_reply2(_, Options) :-
-	trill_on_swish_config:reply_page(Options), !.
-swish_reply2(_, Options) :-
+swish_reply3(_, Options) :-
+	swish_config:reply_page(Options), !.
+swish_reply3(_, Options) :-
 	reply_html_page(
-	    trill_on_swish(main),
+	    swish(main),
 	    [ title('TRILL on SWISH -- Probabilistic Reasoner for Description Logics in Prolog'),
 	      link([ rel('shortcut icon'),
-		     href('/icons/favicon.ico')
+		     href('/icons/rb_favicon.ico')
 		   ]),
 	      link([ rel('apple-touch-icon'),
 		     href('/icons/trill-touch-icon.png')
@@ -161,16 +163,16 @@ params_options([_|T0], T) :-
 
 source_option(_Request, Options0, Options) :-
 	option(code(Code), Options0),
-	option(format(trill_on_swish), Options0), !,
+	option(format(swish), Options0), !,
 	(   uri_is_global(Code)
-	->  Options = [url(Code)|Options0]
+	->  Options = [url(Code),st_type(external)|Options0]
 	;   Options = Options0
 	).
 source_option(Request, Options0, Options) :-
 	source_file(Request, File, Options0), !,
 	option(path(Path), Request),
 	(   source_data(File, String, Options1)
-	->  append([ [code(String), url(Path)],
+	->  append([ [code(String), url(Path), st_type(filesys)],
 		     Options1,
 		     Options0
 		   ], Options)
@@ -185,7 +187,7 @@ source_option(_, Options, Options).
 %	exist, an HTTP 404 exception is returned.  Options:
 %
 %	  - alias(-Alias)
-%	    Get the trill_on_swish_config:source_alias/2 Alias name that
+%	    Get the swish_config:source_alias/2 Alias name that
 %	    was used to find File.
 
 source_file(Request, File, Options) :-
@@ -200,7 +202,7 @@ path_info_file(PathInfo, Path, Options) :-
 	sub_atom(PathInfo, B, _, A, /),
 	sub_atom(PathInfo, 0, B, _, Alias),
 	sub_atom(PathInfo, _, A, 0, File),
-	catch(trill_on_swish_config:source_alias(Alias, AliasOptions), E,
+	catch(swish_config:source_alias(Alias, AliasOptions), E,
 	      (print_message(warning, E), fail)),
 	Spec =.. [Alias,File],
 	http_safe_file(Spec, []),
@@ -248,7 +250,7 @@ source_metadata(Path, _Code, modified_since_loaded, true) :-
 	ModifiedWhenLoaded \== Modified.
 source_metadata(Path, _Code, module, Module) :-
 	file_name_extension(_, Ext, Path),
-	prolog_file_type(Ext, prolog),
+	user:prolog_file_type(Ext, prolog),
 	xref_public_list(Path, _, [module(Module)]).
 
 confirm_access(Path, Options) :-
@@ -262,13 +264,13 @@ eval_condition(loaded, Path) :-
 
 %%	serve_resource(+Request) is semidet.
 %
-%	Serve /trill_on_swish/Resource files.
+%	Serve /swish/Resource files.
 
 serve_resource(Request) :-
 	option(path_info(Info), Request),
 	resource_prefix(Prefix),
 	sub_atom(Info, 0, _, _, Prefix), !,
-	http_reply_file(trill_on_swish_web(Info), [], Request).
+	http_reply_file(swish_web(Info), [], Request).
 
 resource_prefix('css/').
 resource_prefix('help/').
@@ -342,7 +344,7 @@ pengine_logo(_Options) -->
 	},
 	html(a([href(HREF), class('pengine-logo')], &(nbsp))).
 swish_logo(_Options) -->
-	{ http_absolute_location(trill_on_swish(.), HREF, [])
+	{ http_absolute_location(swish(.), HREF, [])
 	},
 	html(a([href(HREF), class('swish-logo')], &(nbsp))).
 
@@ -367,8 +369,8 @@ swish_content(Options) -->
 	{ document_type(Type, Options)
 	},
 	swish_resources,
-	swish_config_hash,
-	html(div([id(content), class([container, trill_on_swish])],
+	swish_config_hash(Options),
+	html(div([id(content), class([container, swish])],
 		 [ div([class([tile, horizontal]), 'data-split'('50%')],
 		       [ div([ class([editors, tabbed])
 			     ],
@@ -385,17 +387,17 @@ swish_content(Options) -->
 		 ])).
 
 
-%%	swish_config_hash//
+%%	swish_config_hash(+Options)//
 %
 %	Set `window.swish.config_hash` to a  hash   that  represents the
 %	current configuration. This is used by   config.js  to cache the
 %	configuration in the browser's local store.
 
-swish_config_hash -->
-	{ swish_config_hash(Hash) },
+swish_config_hash(Options) -->
+	{ swish_config_hash(Hash, Options) },
 	js_script({|javascript(Hash)||
-		   window.trill_on_swish = window.trill_on_swish||{};
-		   window.trill_on_swish.config_hash = Hash;
+		   window.swish = window.swish||{};
+		   window.swish.config_hash = Hash;
 		   |}).
 
 
@@ -436,7 +438,8 @@ source_data_attrs(Options) -->
 	(source_file_data(Options) -> [] ; []),
 	(source_url_data(Options) -> [] ; []),
 	(source_title_data(Options) -> [] ; []),
-	(source_meta_data(Options) -> [] ; []).
+	(source_meta_data(Options) -> [] ; []),
+	(source_st_type_data(Options) -> [] ; []).
 
 source_file_data(Options) -->
 	{ option(file(File), Options) },
@@ -447,6 +450,9 @@ source_url_data(Options) -->
 source_title_data(Options) -->
 	{ option(title(File), Options) },
 	['data-title'(File)].
+source_st_type_data(Options) -->
+	{ option(st_type(Type), Options) },
+	['data-st_type'(Type)].
 source_meta_data(Options) -->
 	{ option(meta(Meta), Options), !,
 	  atom_json_dict(Text, Meta, [])
@@ -499,7 +505,7 @@ notebooks(swinb, Options) -->
 	  download_source(Spec, NoteBookText, Options),
 	  phrase(source_data_attrs(Options), Extra)
 	},
-	html(div([ class('notebook'),
+	html(div([ class('notebook fullscreen'),
 		   'data-label'('Notebook')		% Use file?
 		 ],
 		 [ pre([ class('notebook-data'),
@@ -600,15 +606,15 @@ swish_css --> html_post(head, \include_swish_css).
 include_swish_js -->
 	{ swish_resource(js, JS),
 	  swish_resource(rjs, RJS),
-	  http_absolute_location(trill_on_swish(js/JS), SwishJS, []),
-	  http_absolute_location(trill_on_swish(RJS),   SwishRJS, [])
+	  http_absolute_location(swish(js/JS), SwishJS, []),
+	  http_absolute_location(swish(RJS),   SwishRJS, [])
 	},
 	rjs_timeout(JS),
 	html(script([ src(SwishRJS),
 		      'data-main'(SwishJS)
 		    ], [])).
 
-rjs_timeout('trill_on_swish-min') --> !,
+rjs_timeout('swish-min') --> !,
 	js_script({|javascript||
 // Override RequireJS timeout, until main file is loaded.
 window.require = { waitSeconds: 0 };
@@ -618,7 +624,7 @@ rjs_timeout(_) --> [].
 
 include_swish_css -->
 	{ swish_resource(css, CSS),
-	  http_absolute_location(trill_on_swish(css/CSS), SwishCSS, [])
+	  http_absolute_location(swish(css/CSS), SwishCSS, [])
 	},
 	html(link([ rel(stylesheet),
 		    href(SwishCSS)
@@ -630,13 +636,13 @@ swish_resource(Type, ID) :-
 	;   absolute_file_name(File, _P, [file_errors(fail), access(read)])
 	), !.
 
-alt(js,  'trill_on_swish-min',     trill_on_swish_web('js/trill_on_swish-min.js')) :-
+alt(js,  'swish-min',     swish_web('js/swish-min.js')) :-
 	\+ debugging(nominified).
-alt(js,  'trill_on_swish',         trill_on_swish_web('js/trill_on_swish.js')).
-alt(css, 'trill_on_swish-min.css', trill_on_swish_web('css/trill_on_swish-min.css')) :-
+alt(js,  'swish',         swish_web('js/swish.js')).
+alt(css, 'swish-min.css', swish_web('css/swish-min.css')) :-
 	\+ debugging(nominified).
-alt(css, 'swish.css',     trill_on_swish_web('css/swish.css')).
-alt(rjs, 'js/require.js', trill_on_swish_web('js/require.js')) :-
+alt(css, 'swish.css',     swish_web('css/swish.css')).
+alt(rjs, 'js/require.js', swish_web('js/require.js')) :-
 	\+ debugging(nominified).
 alt(rjs, 'bower_components/requirejs/require.js', -).
 
@@ -670,7 +676,7 @@ read_data(media(Type,_), Request, Data, Meta) :-
 read_data(media(text/_,_), Request, Data, _{}) :-
 	http_read_data(Request, Data, [to(string)]).
 
-%%	trill_on_swish_config:verify_write_access(+Request, +File, +Options) is
+%%	swish_config:verify_write_access(+Request, +File, +Options) is
 %%	nondet.
 %
 %	Hook that verifies that the HTTP Request  may write to File. The
@@ -679,10 +685,10 @@ read_data(media(text/_,_), Request, Data, _{}) :-
 %	reply.  By default, the following options are passed:
 %
 %	  - alias(+Alias)
-%	    The trill_on_swish_config:source_alias/2 Alias used to find File.
+%	    The swish_config:source_alias/2 Alias used to find File.
 
 verify_write_access(Request, File, Options) :-
-	trill_on_swish_config:verify_write_access(Request, File, Options), !.
+	swish_config:verify_write_access(Request, File, Options), !.
 verify_write_access(Request, _File, _Options) :-
 	option(path(Path), Request),
 	throw(http_reply(forbidden(Path))).
diff --git a/lib/trill_on_swish/render.pl b/lib/trill_on_swish/render.pl
index b05fdd9..e4e1679 100644
--- a/lib/trill_on_swish/render.pl
+++ b/lib/trill_on_swish/render.pl
@@ -27,7 +27,7 @@
     the GNU General Public License.
 */
 
-:- module(trill_on_swish_render,
+:- module(swish_render,
 	  [ use_rendering/1,		% +Renderer
 	    use_rendering/2,		% +Renderer, +Options
 
@@ -80,7 +80,7 @@ means it must call html//1 to generate HTML tokens).
 
 :- multifile user:file_search_path/2.
 
-user:file_search_path(render, trill_on_swish('lib/render')).
+user:file_search_path(render, swish('lib/render')).
 
 
 %%	use_rendering(+FileOrID)
@@ -90,7 +90,7 @@ user:file_search_path(render, trill_on_swish('lib/render')).
 %
 %	@see use_rendering/2.
 
-:- multifile user:term_expansion/2.
+:- multifile system:term_expansion/2.
 
 use_rendering(Rendering) :-
 	use_rendering(Rendering, []).
@@ -108,20 +108,24 @@ use_rendering(Rendering, Options) :-
 	->  true
 	;   existence_error(renderer, Renderer)
 	),
-	retractall(Into:'trill_on_swish renderer'(Renderer, _)),
-	assertz(Into:'trill_on_swish renderer'(Renderer, Options)).
+	retractall(Into:'swish renderer'(Renderer, _)),
+	assertz(Into:'swish renderer'(Renderer, Options)).
 
-user:term_expansion((:- use_rendering(Renderer)), Expanded) :-
+system:term_expansion((:- use_rendering(Renderer)), Expanded) :-
 	expand_rendering(Renderer, [], Expanded).
-user:term_expansion((:- use_rendering(Renderer, Options)), Expanded) :-
+system:term_expansion((:- use_rendering(Renderer, Options)), Expanded) :-
 	expand_rendering(Renderer, Options, Expanded).
 
 expand_rendering(Module:Renderer, Options,
-		 Module:'trill_on_swish renderer'(Renderer, Options)) :- !,
+		 [ (:- discontiguous(Module:'swish renderer'/2)),
+		   Module:'swish renderer'(Renderer, Options)
+		 ]) :- !,
 	must_be(atom, Module),
 	must_be(atom, Renderer).
 expand_rendering(Renderer, Options,
-		 'trill_on_swish renderer'(Renderer, Options)) :-
+		 [ (:- discontiguous('swish renderer'/2)),
+		   'swish renderer'(Renderer, Options)
+		 ]) :-
 	must_be(atom, Renderer).
 
 %%	pengines_io:binding_term(+Term, +Vars, +Options) is semidet.
@@ -148,8 +152,8 @@ pengines_io:binding_term(Term, Vars, Options) -->
 call_term_rendering(Module, Term, Vars, Options, Tokens) :-
 	State = state([]),
 	default_module(Module, Target),
-	current_predicate(Target:'trill_on_swish renderer'/2),
-	Target:'trill_on_swish renderer'(Name, RenderOptions),
+	current_predicate(Target:'swish renderer'/2),
+	Target:'swish renderer'(Name, RenderOptions),
 	atom(Name),
 	is_new(State, Name),
 	renderer(Name, RenderModule, _Comment),
@@ -220,6 +224,6 @@ register_renderer(Name, Comment) :-
 	throw(error(context_error(nodirective, register_renderer(Name, Comment)),
 		    _)).
 
-user:term_expansion((:- register_renderer(Name, Comment)),
-		    trill_on_swish_render:renderer(Name, Module, Comment)) :-
+system:term_expansion((:- register_renderer(Name, Comment)),
+		    swish_render:renderer(Name, Module, Comment)) :-
 	prolog_load_context(module, Module).
diff --git a/lib/trill_on_swish/render/c3.pl b/lib/trill_on_swish/render/c3.pl
index d59e9fc..dba189e 100644
--- a/lib/trill_on_swish/render/c3.pl
+++ b/lib/trill_on_swish/render/c3.pl
@@ -30,10 +30,16 @@
 :- module(swish_render_c3,
 	  [ term_rendering//3			% +Term, +Vars, +Options
 	  ]).
+:- use_module(library(apply)).
+:- use_module(library(lists)).
 :- use_module(library(gensym)).
 :- use_module(library(error)).
+:- use_module(library(dif)).
 :- use_module(library(http/html_write)).
 :- use_module(library(http/js_write)).
+:- if(exists_source(library(dicts))).
+:- use_module(library(dicts)).
+:- endif.
 :- use_module('../render').
 
 :- register_renderer(c3, "Render data as tables").
@@ -48,14 +54,19 @@ Render data as a chart.
 %	Renders Term as a C3.js chart. This renderer recognises C3, as a
 %	dict with tag `c3`.
 
-term_rendering(C3, _Vars, _Options) -->
-	{ is_dict(C3, c3),
-	  valid_c3(C3),
+% This renderer hooks into SWISH using two event-handlers and associated
+% classes. The `reactive-size` is called  after   the  window or pane is
+% resized and the `export-dom` is called from the _download_ button.
+
+term_rendering(C30, _Vars, _Options) -->
+	{ is_dict(C30, Tag),
+	  Tag == c3,
+	  valid_c3(C30, C3),
 	  gensym('c3js', Id),
 	  atom_concat(#, Id, RefId),
 	  put_dict(bindto, C3, RefId, C3b)
 	},
-	html(div([ class(['render-C3', 'reactive-size']),
+	html(div([ class(['render-C3', 'reactive-size', 'export-dom']),
 		   'data-render'('As C3 chart')
 		 ],
 		 [ div(id(Id), []),
@@ -68,6 +79,17 @@ term_rendering(C3, _Vars, _Options) -->
     var sizing = {};
     var tmo;
 
+    div.on("export-dom", function(ev, r) {
+      var svg = div.find("svg");
+      svg.attr("xmlns", "http://www.w3.org/2000/svg");
+      svg.css("font", "10px sans-serif");
+      svg.find(".c3-path,.c3-line,.tick,.domain").css("fill", "none");
+      svg.find(".tick,.domain").css("stroke", "#000");
+      r.element = svg[0];
+      r.extension = "svg";
+      r.contentType = "image/svg+xml";
+    });
+
     div.on("reactive-resize", function() {
       if ( chart ) {
 	if ( tmo ) clearTimeout(tmo);
@@ -105,22 +127,71 @@ term_rendering(C3, _Vars, _Options) -->
 		 ])).
 
 
-%%	valid_c3(+C3) is det.
+%%	valid_c3(+C3In, -C3Out) is det.
 %
 %	Perform sanity tests on the C3 representation.
 
-valid_c3(C3) :-
-	valid_c3_data(C3.data).
-
-valid_c3_data(C3) :-
-	valid_c3_array(C3.get(rows)), !.
-valid_c3_data(C3) :-
-	valid_c3_array(C3.get(columns)), !.
-valid_c3_data(C3) :-
-	throw(error(c3_no_data(C3), _)).
-
-valid_c3_array(Array) :-
-	must_be(list(list(ground)), Array).
+valid_c3(C30, C31) :-
+	Data0 = C30.data,
+	valid_c3_data(Data0, Data),
+	(   same_term(Data0, Data)
+	->  C31 = C30
+	;   C31 = C30.put(data,Data)
+	).
+
+valid_c3_data(Data0, Data) :-
+	Rows0 = Data0.get(rows), !,
+	must_be(acyclic, Rows0),
+	rows_to_matrix(Rows0, Rows),
+	must_be(list(ground), Rows),
+	(   same_term(Rows0, Rows)
+	->  Data0 = Data
+	;   Data = Data0.put(rows,Rows)
+	).
+valid_c3_data(Data, Data) :-
+	Columns = Data.get(columns), !,
+	must_be(acyclic, Columns),
+	must_be(list,Columns),
+	maplist(must_be(list),Columns).
+
+valid_c3_data(Data, Data) :-
+	throw(error(c3_no_data(Data), _)).
+
+%%	rows_to_matrix(+RowsIn, -Rows) is semidet.
+%
+%	Translate alternative row representations into  a list of lists.
+%	Recognised input rows are:
+%
+%	  * Dicts having the same set of keys (if library(dicts) is
+%	    available)
+%	  * Compounds having same name and arity, e.g., pairs.
+%	  * Lists having the same length
+
+:- if(current_predicate(dicts_to_compounds/4)).
+rows_to_matrix(Dicts, [Keys|Rows]) :-
+	maplist(is_dict, Dicts), !,
+	maplist(dict_keys, Dicts, KeysList),
+	append(KeysList, Keys0),
+	sort(Keys0, Keys),
+	dicts_to_compounds(Dicts, Keys, dict_fill(undefined), Compounds),
+	maplist(compound_arguments, Compounds, Rows).
+:- endif.
+rows_to_matrix(Compounds, Rows) :-
+	dif(Name/Arity, []/2),		% avoid lists
+	maplist(name_arity_compound(Name, Arity), Compounds, Rows), !.
+rows_to_matrix(Lists, Lists) :-
+	maplist(length_list(_Columns), Lists).
+
+name_arity_compound(Name, Arity, Compound, Arguments) :-
+	compound(Compound),
+	compound_name_arity(Compound, Name, Arity),
+	compound_name_arguments(Compound, Name, Arguments).
+
+compound_arguments(Compound, Arguments) :-
+	compound_name_arguments(Compound, _, Arguments).
+
+length_list(Length, List) :-
+	length(List, Length).
 
 :- multifile
 	prolog:error_message//1.
diff --git a/lib/trill_on_swish/render/graphviz.pl b/lib/trill_on_swish/render/graphviz.pl
index 0ebf23f..74d4329 100644
--- a/lib/trill_on_swish/render/graphviz.pl
+++ b/lib/trill_on_swish/render/graphviz.pl
@@ -82,7 +82,7 @@ as follows:
   ```
 */
 
-:- http_handler(trill_on_swish(graphviz), swish_send_graphviz, []).
+:- http_handler(swish(graphviz), swish_send_graphviz, []).
 
 :- dynamic
 	dot_data/3.				% +Hash, +Data, +Time
@@ -139,6 +139,7 @@ render_dot(DOTString, Program, _Options) -->	% <svg> rendering
 			   read_string(ErrorOut, _, Error)
 		       ),
 		       (   process_wait(PID, _Status),
+			   close(ErrorOut, [force(true)]),
 			   close(XDotOut)
 		       ))
 	},
@@ -158,7 +159,6 @@ render_dot(DOTString, Program, _Options) -->	% <svg> rendering
      var pan;
 
      function updateSize() {
-       console.log("updateSize");
        var w = svg.closest("div.answer").innerWidth();
 
        function reactive() {
@@ -248,6 +248,7 @@ swish_send_graphviz(Request) :-
 		       read_string(ErrorOut, _, Error)
 		     ),
 		     (	 process_wait(PID, _Status),
+			 close(ErrorOut, [force(true)]),
 			 close(XDotOut)
 		     )),
 	(   Error == ""
@@ -455,7 +456,7 @@ attribute(NameValue, _O)  -->
 
 value(Name, Value) -->
 	{ string_attribute(Name), !,
-	  atom_codes(Value, Codes)
+	  value_codes(Value, Codes)
 	},
 	"\"", cstring(Codes), "\"".
 value(_Name, Value, List, Tail) :-
@@ -479,6 +480,11 @@ spaces(N) -->
 	" ",
 	spaces(N2).
 
+value_codes(Value, Codes) :-
+	atomic(Value), !,
+	format(codes(Codes), '~w', [Value]).
+value_codes(Value, Codes) :-
+	format(codes(Codes), '~p', [Value]).
 
 
 		 /*******************************
@@ -495,6 +501,8 @@ string_attribute(href).
 string_attribute(id).
 string_attribute('URL').
 string_attribute(fillcolor).
+string_attribute(fontcolor).
+string_attribute(fontname).
 string_attribute(style).
 string_attribute(size).
 
diff --git a/lib/trill_on_swish/render/rdf.pl b/lib/trill_on_swish/render/rdf.pl
index 24ab205..a2c1291 100644
--- a/lib/trill_on_swish/render/rdf.pl
+++ b/lib/trill_on_swish/render/rdf.pl
@@ -47,15 +47,17 @@ Render RDF data.
 %	Renders Term as a uri.  Furt
 
 term_rendering(Term, _Vars, Options) -->
-	{ is_rdf(Term)
+	{ ground(Term),
+	  is_rdf(Term)
 	}, !,
 	rdf_link(Term, [target('cliopatria-localview')|Options]).
 
 is_rdf(Term) :-
 	is_uri(Term), !.
 is_rdf(literal(Value)) :-
-	ground(Value),
 	is_literal(Value).
+is_rdf(^^(_,Type)) :- atom(Type).
+is_rdf(@(_,Lang)) :- atom(Lang).
 
 is_uri(Term) :-
 	atom(Term),
diff --git a/lib/trill_on_swish/render/table.pl b/lib/trill_on_swish/render/table.pl
index d11962e..6bd6639 100644
--- a/lib/trill_on_swish/render/table.pl
+++ b/lib/trill_on_swish/render/table.pl
@@ -32,6 +32,8 @@
 	  ]).
 :- use_module(library(apply)).
 :- use_module(library(lists)).
+:- use_module(library(pairs)).
+:- use_module(library(dicts)).
 :- use_module(library(option)).
 :- use_module(library(http/html_write)).
 :- use_module(library(http/term_html)).
@@ -54,62 +56,90 @@ Render table-like data.
 %
 %	@tbd: recognise more formats
 
+term_rendering(Term, _Vars, Options) -->
+	{ is_list_of_dicts(Term, _Rows, ColNames)
+	}, !,
+	html(div([ style('display:inline-block'),
+		   'data-render'('List of terms as a table')
+		 ],
+		 [ table(class('render-table'),
+			 [ \header_row(ColNames),
+			   \rows(Term, Options)
+			 ])
+		 ])).
 term_rendering(Term, _Vars, Options) -->
 	{ is_list_of_terms(Term, _Rows, _Cols),
-	  header(Term, Header, Options)
+	  header(Term, Header, Options, Options1)
 	}, !,
 	html(div([ style('display:inline-block'),
 		   'data-render'('List of terms as a table')
 		 ],
 		 [ table(class('render-table'),
 			 [ \header_row(Header),
-			   \rows(Term)
+			   \rows(Term, Options1)
 			 ])
 		 ])).
 term_rendering(Term, _Vars, Options) -->
 	{ is_list_of_lists(Term, _Rows, _Cols),
-	  header(Term, Header, Options)
+	  header(Term, Header, Options, Options1)
 	}, !,
 	html(div([ style('display:inline-block'),
 		   'data-render'('List of lists as a table')
 		 ],
 		 [ table(class('render-table'),
 			 [ \header_row(Header),
-			   \rows(Term)
+			   \rows(Term, Options1)
 			 ])
 		 ])).
 
-rows([]) --> [].
-rows([H|T]) -->
+rows([], _) --> [].
+rows([H|T], Options) -->
 	{ cells(H, Cells) },
-	html(tr(\row(Cells))),
-	rows(T).
-
-row([]) --> [].
-row([H|T]) -->
+	html(tr(\row(Cells, Options))),
+	rows(T, Options).
+
+row([], _) --> [].
+row([H|T], Options) -->
+	html(td(\term(H, Options))),
+	row(T, Options).
+row([H|T], Options) -->
 	html(td(\term(H, []))),
-	row(T).
+	row(T, Options).
 
 cells(Row, Cells) :-
 	is_list(Row), !,
 	Cells = Row.
+cells(Row, Cells) :-
+	is_dict(Row), !,
+	dict_pairs(Row, _Tag, Pairs),
+	pairs_values(Pairs, Cells).
 cells(Row, Cells) :-
 	compound(Row),
 	compound_name_arguments(Row, _, Cells).
 
-%%	header(+Table, -Header:list(Term), +Options) is semidet.
+%%	header(+Table, -Header:list(Term), +Options, -RestOptions) is semidet.
 %
 %	Compute the header to use. Fails if   a  header is specified but
 %	does not match.
 
-header(_, _, Options) :-
-	\+ option(header(_), Options), !.
-header([Row|_], ColHead, Options) :-
-	member(header(Header), Options),
+header(_, _, Options0, Options) :-
+	\+ option(header(_), Options0), !,
+	Options = Options0.
+header([Row|_], ColHead, Options0, Options) :-
+	partition(is_header, Options0, HeaderOptions, Options),
+	member(HeaderOption, HeaderOptions),
+	header(HeaderOption, Header),
 	generalise(Row, GRow),
 	generalise(Header, GRow), !,
 	header_list(Header, ColHead).
 
+is_header(0) :- !, fail.
+is_header(header(_)).
+is_header(header=_).
+
+header(header(H), H).
+header(header=H, H).
+
 generalise(List, VList) :-
 	is_list(List), !,
 	length(List, Len),
@@ -156,6 +186,20 @@ is_term_row(Name, Arity, Term) :-
 	compound(Term),
 	compound_name_arity(Term, Name, Arity).
 
+%%	is_list_of_dicts(@Term, -Rows, -ColNames) is semidet.
+%
+%	True when Term is a list of Rows dicts, each holding ColNames as
+%	keys.
+
+is_list_of_dicts(Term, Rows, ColNames) :-
+	is_list(Term), Term \== [],
+	length(Term, Rows),
+	maplist(is_dict_row(ColNames), Term).
+
+is_dict_row(ColNames, Dict) :-
+	is_dict(Dict),
+	dict_keys(Dict, ColNames).
+
 %%	is_list_of_lists(@Term, -Rows, -Cols) is semidet.
 %
 %	Recognise a list of lists of equal length.
diff --git a/lib/trill_on_swish/search.pl b/lib/trill_on_swish/search.pl
index aa2f050..0bb0f8b 100644
--- a/lib/trill_on_swish/search.pl
+++ b/lib/trill_on_swish/search.pl
@@ -27,7 +27,7 @@
     the GNU General Public License.
 */
 
-:- module(trill_on_swish_search,
+:- module(swish_search,
 	  [ search_box//1,		% +Options
 	    match/3			% +Line, +Query, +Options
 	  ]).
@@ -57,8 +57,8 @@ search from the server side. What do we want to search for?
       these?
 */
 
-:- http_handler(trill_on_swish(typeahead), typeahead, [id(swish_typeahead)]).
-:- http_handler(trill_on_swish(search),    search,    [id(swish_search)]).
+:- http_handler(swish(typeahead), typeahead, [id(swish_typeahead)]).
+:- http_handler(swish(search),    search,    [id(swish_search)]).
 
 %%	search_box(+Options)//
 %
@@ -112,7 +112,7 @@ typeahead(Request) :-
 %	@tbd: Limit number of hits?
 
 :- multifile
-	trill_on_swish_config:source_alias/2.
+	swish_config:source_alias/2.
 
 typeahead(predicates, Query, Template, _) :-
 	swish_config(templates, Templates),
@@ -122,7 +122,7 @@ typeahead(predicates, Query, Template, _) :-
 typeahead(sources, Query, Hit, Options) :-
 	source_file(Path),
 	(   file_alias_path(Alias, Dir),
-	    once(trill_on_swish_config:source_alias(Alias, _)),
+	    once(swish_config:source_alias(Alias, _)),
 	    atom_concat(Dir, File, Path)
 	->  true
 	),
@@ -135,7 +135,7 @@ typeahead(sources, Query, Hit, Options) :-
 	).
 typeahead(sources, Query, hit{alias:Alias, file:Base, ext:Ext,
 			      query:Query, line:LineNo, text:Line}, Options) :-
-	trill_on_swish_config:source_alias(Alias, AliasOptions),
+	swish_config:source_alias(Alias, AliasOptions),
 	option(search(Pattern), AliasOptions),
 	DirSpec =.. [Alias,.],
 	absolute_file_name(DirSpec, Dir,
@@ -154,7 +154,7 @@ typeahead(sources, Query, hit{alias:Alias, file:Base, ext:Ext,
 	limit(5, search_file(Path, Query, LineNo, Line, Options)).
 
 search_file(Path, Query, LineNo, Line, Options) :-
-	debug(trill_on_swish(search), 'Searching ~q for ~q (~q)', [Path, Query, Options]),
+	debug(swish(search), 'Searching ~q for ~q (~q)', [Path, Query, Options]),
 	setup_call_cleanup(
 	    open(Path, read, In),
 	    read_string(In, _, String),
@@ -181,29 +181,13 @@ sow(Text, Offset) :-
 	Pre is Offset-1,
 	sub_atom(Text, Pre, 1, _, Before),
 	sub_atom(Text, Offset, 1, _, Start),
-	char_class(Start, Class),
-	\+ char_class(Before, Class).
-
-char_class(C, Class) :-
-	var(Class), !,
-	(   target_class(Class),
-	    char_type(C, Class)
-	->  true
-	;   Class = other
-	).
-char_class(C, Class) :-
-	(   target_class(Class)
-	->  char_type(C, Class)
-	;   \+ ( target_class(T),
-	         char_type(C, T)
-	       )
-	).
-
-target_class(lower).
-target_class(upper).
-target_class(digit).
-target_class(space).
-target_class(punct).
+	(   \+ char_type(Before, csym),
+	    char_type(Start, csym)
+	;   Before == '_',
+	    char_type(Start, csym)
+	;   char_type(Start, upper),
+	    char_type(Before, lower)
+	), !.
 
 %%	search(+Request)
 %
diff --git a/lib/trill_on_swish/storage.pl b/lib/trill_on_swish/storage.pl
index 5cf5fdd..fe629c6 100644
--- a/lib/trill_on_swish/storage.pl
+++ b/lib/trill_on_swish/storage.pl
@@ -27,7 +27,7 @@
     the GNU General Public License.
 */
 
-:- module(trill_on_swish_web_storage,
+:- module(web_storage,
 	  [ storage_file/1,			% ?File
 	    storage_file/3			% +File, -Data, -Meta
 	  ]).
@@ -59,7 +59,18 @@ their own version.
 
 :- setting(directory, atom, storage, 'The directory for storing files.').
 
-:- http_handler(trill_on_swish('tos/'), web_storage, [ id(web_storage), prefix ]).
+:- http_handler(swish('p/'), web_storage, [ id(web_storage), prefix ]).
+
+:- initialization open_gittystore.
+
+open_gittystore :-
+	setting(directory, Dir),
+	(   exists_directory(Dir)
+	->  true
+	;   make_directory(Dir)
+	),
+	gitty_open(Dir, []).
+
 
 %%	web_storage(+Request) is det.
 %
@@ -72,10 +83,17 @@ web_storage(Request) :-
 	option(method(Method), Request),
 	storage(Method, Request).
 
+:- multifile
+	swish_config:authenticate/2.
+
 storage(get, Request) :-
+	(   swish_config:authenticate(Request, User)
+	->  Options = [user(User)]
+	;   Options = []
+	),
 	http_parameters(Request,
-			[ format(Fmt,  [ oneof([trill_on_swish,raw,json,history,diff]),
-					 default(trill_on_swish),
+			[ format(Fmt,  [ oneof([swish,raw,json,history,diff]),
+					 default(swish),
 					 description('How to render')
 				       ]),
 			  depth(Depth, [ default(5),
@@ -95,7 +113,8 @@ storage(get, Request) :-
 	->  Format = diff(RelTo)
 	;   Format = Fmt
 	),
-	storage_get(Request, Format).
+	storage_get(Request, Format, Options).
+
 storage(post, Request) :-
 	http_read_json_dict(Request, Dict),
 	option(data(Data), Dict, ""),
@@ -209,13 +228,13 @@ meta_allowed(tags,	     list(string)).
 meta_allowed(description,    string).
 meta_allowed(commit_message, string).
 
-%%	storage_get(+Request, +Format) is det.
+%%	storage_get(+Request, +Format, +Options) is det.
 %
 %	HTTP handler that returns information a given gitty file.
 %
 %	@arg Format is one of
 %
-%	     - trill_on_swish
+%	     - swish
 %	     Serve file embedded in a SWISH application
 %	     - raw
 %	     Serve the raw file
@@ -227,16 +246,17 @@ meta_allowed(commit_message, string).
 %	     Reply with diff relative to RelTo.  Default is the
 %	     previous commit.
 
-storage_get(Request, trill_on_swish) :-
-	swish_reply_config(Request), !.
-storage_get(Request, Format) :-
+storage_get(Request, swish, Options) :-
+	swish_reply_config(Request, Options), !.
+storage_get(Request, Format, _) :-
 	setting(directory, Dir),
 	request_file_or_hash(Request, Dir, FileOrHash, Type),
 	storage_get(Format, Dir, Type, FileOrHash, Request).
 
-storage_get(trill_on_swish, Dir, _, FileOrHash, Request) :-
+storage_get(swish, Dir, _, FileOrHash, Request) :-
 	gitty_data(Dir, FileOrHash, Code, Meta),
-	swish_reply([code(Code),file(FileOrHash),meta(Meta)], Request).
+	swish_reply([code(Code),file(FileOrHash),st_type(gitty),meta(Meta)],
+		    Request).
 storage_get(raw, Dir, _, FileOrHash, _Request) :-
 	gitty_data(Dir, FileOrHash, Code, Meta),
 	file_mime_type(Meta.name, MIME),
@@ -289,7 +309,7 @@ authentity(Request) -->
 	pengines:authentication_hook/3.
 
 user(Request) -->
-	{ pengines:authentication_hook(Request, trill_on_swish, User),
+	{ pengines:authentication_hook(Request, swish, User),
 	  ground(User)
 	},
 	[ user-User ].
@@ -339,9 +359,9 @@ storage_file(File, Data, Meta) :-
 		 *******************************/
 
 :- multifile
-	trill_on_swish_search:typeahead/4.	% +Set, +Query, -Match, +Options
+	swish_search:typeahead/4.	% +Set, +Query, -Match, +Options
 
-%%	trill_on_swish_search:typeahead(+Set, +Query, -Match) is nondet.
+%%	swish_search:typeahead(+Set, +Query, -Match) is nondet.
 %
 %	Find files using typeahead  from  the   SWISH  search  box. This
 %	version defines the following sets:
@@ -354,7 +374,7 @@ storage_file(File, Data, Meta) :-
 %	@tbd caching?
 %	@tbd We should only demand public on public servers.
 
-trill_on_swish_search:typeahead(file, Query, FileInfo, _Options) :-
+swish_search:typeahead(file, Query, FileInfo, _Options) :-
 	setting(directory, Dir),
 	gitty_file(Dir, File, Head),
 	gitty_commit(Dir, Head, Meta),
@@ -381,7 +401,7 @@ meta_match_query(Query, Meta) :-
 	    \+ char_type(C, csym)
 	).
 
-trill_on_swish_search:typeahead(store_content, Query, FileInfo, Options) :-
+swish_search:typeahead(store_content, Query, FileInfo, Options) :-
 	limit(25, search_store_content(Query, FileInfo, Options)).
 
 search_store_content(Query, FileInfo, Options) :-
diff --git a/lib/trill_on_swish/template_hint.pl b/lib/trill_on_swish/template_hint.pl
index 72d1232..8a53388 100644
--- a/lib/trill_on_swish/template_hint.pl
+++ b/lib/trill_on_swish/template_hint.pl
@@ -27,7 +27,7 @@
     the GNU General Public License.
 */
 
-:- module(trill_on_swish_template_hint,
+:- module(swish_template_hint,
 	  [ visible_predicate/3,	% ?PI, +Module, +Options
 	    predicate_template/2,	% +PI, -TemplateDict
 	    visible_predicate_templates/3 %  +Module, +Options, -Templates
@@ -500,8 +500,8 @@ file_type(Path, _, Type) :-
 	Type = directory.
 file_type(_, Name, Type) :-
 	file_name_extension(_, Ext, Name),
-	prolog_file_type(Ext, prolog),
-	\+ prolog_file_type(Ext, qlf),
+	user:prolog_file_type(Ext, prolog),
+	\+ user:prolog_file_type(Ext, qlf),
 	Type = prolog.
 
 %%	library_template_from(+From:list, -Template) is det.
@@ -577,7 +577,7 @@ imported_from(Module, FromModule) :-
 		 *******************************/
 
 swish_templates(Template) :-
-	setof(From, visible_lib(trill_on_swish, From), FromList),
+	setof(From, visible_lib(swish, From), FromList),
 	swish_templates(Template, [from(FromList)]).
 
 /*swish_templates(Template, Options) :-
@@ -585,7 +585,7 @@ swish_templates(Template) :-
 swish_templates(Template, _Options) :-
 	rendering_template(Template).
 /*swish_templates(Templates, Options) :-
-	visible_predicate_templates(trill_on_swish, Templates, Options).*/
+	visible_predicate_templates(swish, Templates, Options).*/
 
 %%	visible_lib(+Module, -Lib) is nondet.
 %
@@ -644,11 +644,11 @@ visible_lib(library(when)).
 		 *	    SWISH CONFIG	*
 		 *******************************/
 
-%%	trill_on_swish_config:config(-Name, -Styles) is det.
+%%	swish_config:config(-Name, -Styles) is det.
 %
-%	Provides the object `config.trill_on_swish.templates`, a JSON object that
+%	Provides the object `config.swish.templates`, a JSON object that
 %	provides the templates for hinting in CodeMirror.
 
-trill_on_swish_config:config(templates, Templates) :-
+swish_config:config(templates, Templates) :-
 	findall(Templ, swish_templates(Templ), Templates0),
 	flatten(Templates0, Templates).
diff --git a/lib/trill_on_swish/trace.pl b/lib/trill_on_swish/trace.pl
index d85ddd2..f009aad 100644
--- a/lib/trill_on_swish/trace.pl
+++ b/lib/trill_on_swish/trace.pl
@@ -27,8 +27,8 @@
     the GNU General Public License.
 */
 
-:- module(trill_on_swish_trace,
-	  [ '$trill_on_swish wrapper'/1		% +Goal
+:- module(swish_trace,
+	  [ '$swish wrapper'/2		% +Goal, -Residuals
 	  ]).
 :- use_module(library(debug)).
 :- use_module(library(settings)).
@@ -47,18 +47,18 @@
 
 :- use_module(storage).
 
-:- if(current_setting(trill_on_trill_on_swish:debug_info)).
-:- set_setting(trill_on_trill_on_swish:debug_info, true).
+:- if(current_setting(swish:debug_info)).
+:- set_setting(swish:debug_info, true).
 :- endif.
 
 :- set_prolog_flag(generate_debug_info, false).
 
 :- meta_predicate
-	'$trill_on_swish wrapper'(0).
+	'$swish wrapper'(0, -).
 
 /** <module>
 
-Allow tracing pengine execution under trill_on_swish.
+Allow tracing pengine execution under SWISH.
 */
 
 :- multifile
@@ -132,9 +132,9 @@ wrapper_frame(Frame0, Frame) :-
 	parent_frame(Frame0, Frame),
 	prolog_frame_attribute(Frame, predicate_indicator, PI),
 	debug(trace, 'Parent: ~p', [PI]),
-	(   PI == trill_on_swish_call/1
+	(   PI == swish_call/1
 	->  true
-	;   PI == trill_on_trill_on_swish_trace:trill_on_swish_call/1
+	;   PI == swish_trace:swish_call/1
 	), !.
 
 parent_frame(Frame, Frame).
@@ -177,18 +177,20 @@ strip_stack(error(Error, context(prolog_stack(S), Msg)),
 	nonvar(S).
 strip_stack(Error, Error).
 
-%%	'$trill_on_swish wrapper'(:Goal)
+%%	'$swish wrapper'(:Goal, -Residuals)
 %
-%	Wrap a trill_on_swish goal in '$trill_on_swish  wrapper'. This has two advantages:
-%	we can detect that the tracer is   operating  on a trill_on_swish goal by
+%	Wrap a SWISH goal in '$swish  wrapper'. This has two advantages:
+%	we can detect that the tracer is   operating  on a SWISH goal by
 %	inspecting the stack and we can  save/restore the debug state to
 %	deal with debugging next solutions.
 
-:- meta_predicate trill_on_swish_call(0).
+:- meta_predicate swish_call(0).
 
-'$trill_on_swish wrapper'(Goal) :-
-	catch(trill_on_swish_call(Goal), E, throw(E)),
+'$swish wrapper'(Goal, '$residuals'(Residuals)) :-
+	catch(swish_call(Goal), E, throw(E)),
 	deterministic(Det),
+	Goal = M:_,
+	residuals(M, Residuals),
 	(   tracing,
 	    Det == false
 	->  (   notrace,
@@ -200,16 +202,40 @@ strip_stack(Error, Error).
 	;   notrace
 	).
 
-trill_on_swish_call(Goal) :-
+swish_call(Goal) :-
 	Goal,
 	no_lco.
 
 no_lco.
 
-:- '$hide'(trill_on_swish_call/1).
+:- '$hide'(swish_call/1).
 :- '$hide'(no_lco/0).
 
 
+%%	residuals(+PengineModule, -Goals:list(callable)) is det.
+%
+%	Find residual goals  that  are  not   bound  to  the  projection
+%	variables. We must do so while  we   are  in  the Pengine as the
+%	goals typically live in global variables   that  are not visible
+%	when formulating the answer  from   the  projection variables as
+%	done in library(pengines_io).
+%
+%	This relies on the SWI-Prolog 7.3.14 residual goal extension.
+
+:- if(current_predicate(prolog:residual_goals//0)).
+residuals(TypeIn, Goals) :-
+	phrase(prolog:residual_goals, Goals0),
+	maplist(unqualify_residual(TypeIn), Goals0, Goals).
+
+unqualify_residual(M, M:G, G) :- !.
+unqualify_residual(T, M:G, G) :-
+	predicate_property(T:G, imported_from(M)), !.
+unqualify_residual(_, G, G).
+:- else.
+residuals(_, []).
+:- endif.
+
+
 		 /*******************************
 		 *	  SOURCE LOCATION	*
 		 *******************************/
@@ -291,12 +317,12 @@ frame_file(Frame, File) :-
 %%	pengine_file(+File) is semidet.
 %
 %	True if File is a Pengine controlled file. This is currently the
-%	main file (pengine://) and (trill_on_trill_on_swish://) for included files.
+%	main file (pengine://) and (swish://) for included files.
 
 pengine_file(File) :-
 	sub_atom(File, 0, _, _, 'pengine://'), !.
 pengine_file(File) :-
-	sub_atom(File, 0, _, _, 'trill_on_trill_on_swish://').
+	sub_atom(File, 0, _, _, 'swish://').
 
 %%	clause_position(+PC) is semidet.
 %
@@ -452,7 +478,7 @@ set_file_breakpoints(_Pengine, PFile, Text, Dict) :-
 	->  debug(trace(break), 'Pengine main source', []),
 	    maplist(set_pengine_breakpoint(File, File, Text), List)
 	;   source_file_property(PFile, includes(File, _Time)),
-	    atom_concat('trill_on_trill_on_swish://', StoreFile, File)
+	    atom_concat('swish://', StoreFile, File)
 	->  debug(trace(break), 'Pengine included source ~p', [StoreFile]),
 	    storage_file(StoreFile, IncludedText, _Meta),
 	    maplist(set_pengine_breakpoint(PFile, File, IncludedText), List)
@@ -503,7 +529,7 @@ bp_by_file(Dict, File-Lines) :-
 add_breakpoint(PFile, PFile, Text, Line) :- !,
 	set_pengine_breakpoint(PFile, PFile, Text, Line).
 add_breakpoint(PFile, File, _Text, Line) :-
-	atom_concat('trill_on_trill_on_swish://', Store, File), !,
+	atom_concat('swish://', Store, File), !,
 	storage_file(Store, Text, _Meta),
 	set_pengine_breakpoint(PFile, File, Text, Line).
 add_breakpoint(_, _, _, _Line).			% not in our files.
@@ -530,7 +556,7 @@ current_pengine_breakpoint(PFile, File-(Id-Line)) :-
 
 %%	prolog_clause:open_source(+File, -Stream) is semidet.
 %
-%	Open trill_on_swish non-file sources.
+%	Open SWISH non-file sources.
 
 :- multifile prolog_clause:open_source/2.
 
@@ -543,7 +569,7 @@ prolog_clause:open_source(File, Stream) :-
 	pengine_property(Pengine, source(File, Source)),
 	open_string(Source, Stream).
 prolog_clause:open_source(File, Stream) :-
-	atom_concat('trill_on_swish://', GittyFile, File), !,
+	atom_concat('swish://', GittyFile, File), !,
 	storage_file(GittyFile, Data, _Meta),
 	open_string(Data, Stream).
 
@@ -558,9 +584,10 @@ prolog_clause:open_source(File, Stream) :-
 
 exception_hook(Ex, Ex, _Frame, Catcher) :-
 	Catcher \== none,
+	Catcher \== 'C',
 	prolog_frame_attribute(Catcher, predicate_indicator, PI),
 	debug(trace(exception), 'Ex: ~p, catcher: ~p', [Ex, PI]),
-	PI == '$trill_on_swish wrapper'/1,
+	PI == '$swish wrapper'/1,
 	trace,
 	fail.
 
@@ -596,6 +623,7 @@ sandbox:safe_primitive(system:notrace).
 sandbox:safe_primitive(system:tracing).
 sandbox:safe_primitive(edinburgh:debug).
 sandbox:safe_primitive(system:deterministic(_)).
+sandbox:safe_primitive(swish_trace:residuals(_,_)).
 
 
 		 /*******************************
diff --git a/lib/trill_on_swish/translate_rdf.pl b/lib/trill_on_swish/translate_rdf.pl
deleted file mode 100644
index 0122010..0000000
--- a/lib/trill_on_swish/translate_rdf.pl
+++ /dev/null
@@ -1,2947 +0,0 @@
-:- module(translate_rdf, [load_owl/1, query_expand/1]).
-
-
-:- thread_local
-        classAssertion/2,
-        propertyAssertion/3,
-        subPropertyOf/2,
-        subClassOf/2,
-        equivalentClasses/1,
-        differentIndividuals/1,
-        sameIndividual/1,
-        intersectionOf/1,
-        unionOf/1,
-        propertyRange/2,
-        propertyDomain/2,
-        annotationAssertion/3,
-        exactCardinality/2,
-        exactCardinality/3,
-        maxCardinality/2,
-        maxCardinality/3,
-        minCardinality/2,
-        minCardinality/3.
-
-:- use_module(library(lists),[member/2]).
-:- use_module(library(pengines)).
-:- use_module(library(trill_on_swish/trill/trill)).
-
-
-:- discontiguous(valid_axiom/1).
-:- discontiguous(axiompred/1).
-:- discontiguous(axiom_arguments/2).
-
-
-builtin_class('http://www.w3.org/2002/07/owl#Thing').
-builtin_class('http://www.w3.org/2002/07/owl#Nothing').
-is_class(C) :- class(C).
-is_class(C) :- builtin_class(C).
-
-
-% TODO: hasKey
-
-/****************************************
-  AXIOMS
-  ****************************************/
-
-%% entity(?IRI)
-% the fundamental building blocks of owl 2 ontologies, and they define the vocabulary (the named terms) of an ontology
-%
-% @see individual/1, property/1, class/1, datatype/1
-entity(A) :- individual(A).
-entity(A) :- property(A).
-entity(A) :- class(A).
-entity(A) :- datatype(A).
-axiom_arguments(entity,[iri]).
-valid_axiom(entity(A)) :- subsumed_by([A],[iri]).
-
-%declarationAxiom(individual(A)) :- individual(A). % TODO - check this
-declarationAxiom(namedIndividual(A)) :- namedIndividual(A).
-declarationAxiom(objectProperty(A)) :- objectProperty(A).
-declarationAxiom(dataProperty(A)) :- dataProperty(A).
-declarationAxiom(annotationProperty(A)) :- annotationProperty(A).  % VV added 9/3/2010
-declarationAxiom(class(A)) :- class(A).
-declarationAxiom(datatype(A)) :- datatype(A).
-% TODO: check. here we treat the ontology declaration as an axiom;
-% this liberal definition of axiom allows us to iterate over axiom/1
-% to find every piece of information in the ontology.
-declarationAxiom(ontology(A)) :- ontology(A).
-
-%% class(?IRI)
-% Classes can be understood as sets of individuals
-:- thread_local(class/1).
-
-axiompred(class/1).
-axiom_arguments(class,[iri]).
-valid_axiom(class(A)) :- subsumed_by([A],[iri]).
-
-%% datatype(?IRI)
-% Datatypes are entities that refer to sets of values described by a datatype map
-:- thread_local(datatype/1).
-
-axiompred(datatype/1).
-axiom_arguments(datatype,[iri]).
-valid_axiom(datatype(A)) :- subsumed_by([A],[iri]).
-
-%% property(?IRI)
-% Properties connect individuals with either other individuals or with literals
-%
-% @see dataProperty/1, objectProperty/1, annotationProperty/1
-property(A) :- dataProperty(A).
-property(A) :- objectProperty(A).
-property(A) :- annotationProperty(A).
-axiom_arguments(property,[iri]).
-valid_axiom(property(A)) :- subsumed_by([A],[iri]).
-
-%% objectProperty(?IRI)
-% Object properties connect pairs of individuals
-:- thread_local(objectProperty/1).
-
-axiompred(objectProperty/1).
-axiom_arguments(objectProperty,[iri]).
-valid_axiom(objectProperty(A)) :- subsumed_by([A],[iri]).
-
-%% dataProperty(?IRI)
-% Data properties connect individuals with literals. In some knowledge representation systems, functional data properties are called attributes.
-:- thread_local(dataProperty/1).
-
-axiompred(dataProperty/1).
-axiom_arguments(dataProperty,[iri]).
-valid_axiom(dataProperty(A)) :- subsumed_by([A],[iri]).
-
-%% annotationProperty(?IRI)
-% Annotation properties can be used to provide an annotation for an ontology, axiom, or an IRI
-:- thread_local(annotationProperty/1).
-
-axiompred(annotationProperty/1).
-axiom_arguments(annotationProperty,[iri]).
-valid_axiom(annotationProperty(A)) :- subsumed_by([A],[iri]).
-
-
-%% individual(?IRI)
-% Individuals represent actual objects from the domain being modeled
-% @see anonymousIndividual/1, namedIndividual/1
-individual(A) :- anonymousIndividual(A).
-individual(A) :- namedIndividual(A).
-%individual(A) :- nonvar(A),iri(A),\+property(A),\+class(A),\+ontology(A). % TODO: check: make individuals the default
-axiom_arguments(individual,[iri]).
-valid_axiom(individual(A)) :- subsumed_by([A],[iri]).
-
-%% namedIndividual(?IRI)
-% Named individuals are given an explicit name that can be used in any ontology in the import closure to refer to the same individual
-:- thread_local(namedIndividual/1).
-
-axiompred(namedIndividual/1).
-axiom_arguments(namedIndividual,[iri]).
-valid_axiom(namedIndividual(A)) :- subsumed_by([A],[iri]).
-
-%% anonymousIndividual(?IRI)
-% Anonymous individuals are local to the ontology they are contained in. Analagous to bnodes
-% @see construct/1
-:- thread_local(anonymousIndividual/1).
-
-axiompred(anonymousIndividual/1).
-axiom_arguments(anonymousIndividual,[iri]).
-valid_axiom(anonymousIndividual(A)) :- subsumed_by([A],[iri]).
-
-%% construct(?IRI)
-% @see axiom/1, annotation/1, ontology/1
-construct(A) :- axiom(A).
-construct(A) :- annotation(A).
-construct(A) :- ontology(A).
-axiom_arguments(construct,[iri]).
-valid_axiom(construct(A)) :- subsumed_by([A],[iri]).
-
-%% axiom(?Axiom)
-% The main component of an OWL 2 ontology is a set of axioms - statements that say what is true in the domain being modeled.
-% @see classAxiom/1, propertyAxiom/1, fact/1
-axiom(A) :- classAxiom(A).
-axiom(A) :- propertyAxiom(A).
-axiom(hasKey(A,B)) :- hasKey(A,B).
-axiom(A) :- fact(A).
-axiom(A) :- declarationAxiom(A).
-%axiom(annotation(A,B,C)) :-
-%	annotation(A,B,C). % CJM-treat annotations as axioms
-axiom_arguments(axiom,[axiom]).
-valid_axiom(axiom(A)) :- subsumed_by([A],[axiom]).
-
-%% classAxiom(?Axiom)
-% OWL 2 provides axioms that allow relationships to be established between class expressions. This predicate reifies the actual axiom
-% @see equivalentClasses/1, disjointClasses/1, subClassOf/2, disjointUnion/2
-classAxiom(equivalentClasses(A)) :- equivalentClasses(A).
-classAxiom(disjointClasses(A)) :- disjointClasses(A).
-classAxiom(subClassOf(A, B)) :- subClassOf(A, B).
-classAxiom(disjointUnion(A, B)) :- disjointUnion(A, B).
-axiom_arguments(classAxiom,[axiom]).
-valid_axiom(classAxiom(A)) :- subsumed_by([A],[axiom]).
-
-%% subClassOf(?SubClass:ClassExpression, ?SuperClass:ClassExpression)
-% A subclass axiom SubClassOf( CE1 CE2 ) states that the class expression CE1 is a subclass of the class expression CE2
-%
-%   @param SubClass a classExpression/1 representing the more specific class
-%   @param SuperClass a classExpression/1 representing the more general class
-:- thread_local(subClassOf/2).
-
-axiompred(subClassOf/2).
-axiom_arguments(subClassOf,[classExpression, classExpression]).
-valid_axiom(subClassOf(A, B)) :- subsumed_by([A, B],[classExpression, classExpression]).
-
-
-%% equivalentClasses(?ClassExpressions:set(ClassExpression))
-% An equivalent classes axiom EquivalentClasses( CE1 ... CEn ) states that all of the class expressions CEi, 1 <= i <= n, are semantically equivalent to each other.
-:- thread_local(equivalentClasses/1).
-
-axiompred(equivalentClasses/1).
-axiom_arguments(equivalentClasses,[set(classExpression)]).
-valid_axiom(equivalentClasses(A)) :- subsumed_by([A],[set(classExpression)]).
-
-%% disjointClasses(?ClassExpressions:set(ClassExpression))
-% A disjoint classes axiom DisjointClasses( CE1 ... CEn ) states that all of the class expressions CEi, 1 <= i <= n, are pairwise disjoint; that is, no individual can be at the same time an instance of both CEi and CEj for i != j
-:- thread_local(disjointClasses/1).
-
-axiompred(disjointClasses/1).
-axiom_arguments(disjointClasses,[set(classExpression)]).
-valid_axiom(disjointClasses(A)) :- subsumed_by([A],[set(classExpression)]).
-
-%% disjointUnion(?ClassExpression, ?ClassExpressions:set(ClassExpression))
-% A disjoint union axiom DisjointUnion( C CE1 ... CEn ) states that a class C is a disjoint union of the class expressions CEi, 1 <= i <= n, all of which are pairwise disjoint.
-:- thread_local(disjointUnion/2).
-
-axiompred(disjointUnion/2).
-axiom_arguments(disjointUnion,[classExpression,set(classExpression)]).
-valid_axiom(disjointUnion(A,B)) :- subsumed_by([A,B],[classExpression,set(classExpression)]).
-
-%% propertyAxiom(?Axiom)
-% OWL 2 provides axioms that can be used to characterize and establish relationships between object property expressions. This predicate reifies the actual axiom
-%
-% @see symmetricProperty/1, inverseFunctionalProperty/1, transitiveProperty/1, asymmetricProperty/1, subPropertyOf/2, functionalProperty/1, irreflexiveProperty/1, disjointProperties/1, propertyDomain/2, reflexiveProperty/1, propertyRange/2, equivalentProperties/1, inverseProperties/2
-propertyAxiom(symmetricProperty(A)) :- symmetricProperty(A).
-propertyAxiom(inverseFunctionalProperty(A)) :- inverseFunctionalProperty(A).
-propertyAxiom(transitiveProperty(A)) :- transitiveProperty(A).
-propertyAxiom(asymmetricProperty(A)) :- asymmetricProperty(A).
-propertyAxiom(subPropertyOf(A, B)) :- subPropertyOf(A, B).
-propertyAxiom(functionalProperty(A)) :- functionalProperty(A).
-propertyAxiom(irreflexiveProperty(A)) :- irreflexiveProperty(A).
-propertyAxiom(disjointProperties(A)) :- disjointProperties(A).
-propertyAxiom(propertyDomain(A, B)) :- propertyDomain(A, B).
-propertyAxiom(reflexiveProperty(A)) :- reflexiveProperty(A).
-propertyAxiom(propertyRange(A, B)) :- propertyRange(A, B).
-propertyAxiom(equivalentProperties(A)) :- equivalentProperties(A).
-propertyAxiom(inverseProperties(A, B)) :- inverseProperties(A, B).
-axiom_arguments(propertyAxiom,[axiom]).
-valid_axiom(propertyAxiom(A)) :- subsumed_by([A],[axiom]).
-
-
-%% subPropertyOf(?Sub:PropertyExpression, ?Super:ObjectPropertyExpression)
-% subproperty axioms are analogous to subclass axioms
-% (extensional predicate - can be asserted)
-:- thread_local(subPropertyOf/2).
-
-axiompred(subPropertyOf/2).
-axiom_arguments(subPropertyOf,[propertyExpression, objectPropertyExpression]).
-valid_axiom(subPropertyOf(A, B)) :- subsumed_by([A, B],[propertyExpression, objectPropertyExpression]).
-
-%% subObjectPropertyOf(?Sub:ObjectPropertyExpressionOrChain, ?Super:ObjectPropertyExpression)
-% The basic form is SubPropertyOf( OPE1 OPE2 ). This axiom states that the object property expression OPE1 is a subproperty of the object property expression OPE2 - that is, if an individual x is connected by OPE1 to an individual y, then x is also connected by OPE2 to y. The more complex form is SubPropertyOf( PropertyChain( OPE1 ... OPEn ) OPE ). This axiom states that, if an individual x is connected by a sequence of object property expressions OPE1, ..., OPEn with an individual y, then x is also connected with y by the object property expression OPE
-subObjectPropertyOf(A, B) :- subPropertyOf(A, B),subsumed_by([A, B],[objectPropertyExpressionOrChain, objectPropertyExpression]).
-axiom_arguments(subObjectPropertyOf,[objectPropertyExpressionOrChain, objectPropertyExpression]).
-valid_axiom(subObjectPropertyOf(A, B)) :- subsumed_by([A, B],[objectPropertyExpressionOrChain, objectPropertyExpression]).
-
-%% subDataPropertyOf(?Sub:DataPropertyExpression, ?Super:DataPropertyExpression)
-% A data subproperty axiom SubPropertyOf( DPE1 DPE2 ) states that the data property expression DPE1 is a subproperty of the data property expression DPE2 - that is, if an individual x is connected by OPE1 to a literal y, then x is connected by OPE2 to y as well.
-subDataPropertyOf(A, B) :- subPropertyOf(A, B),subsumed_by([A, B],[dataPropertyExpression, dataPropertyExpression]).
-axiom_arguments(subDataPropertyOf,[dataPropertyExpression, dataPropertyExpression]).
-valid_axiom(subDataPropertyOf(A, B)) :- subsumed_by([A, B],[dataPropertyExpression, dataPropertyExpression]).
-
-%% subAnnotationPropertyOf(?Sub:AnnotationProperty, ?Super:AnnotationProperty)
-% An annotation subproperty axiom SubPropertyOf( AP1 AP2 ) states that the annotation property AP1 is a subproperty of the annotation property AP2
-subAnnotationPropertyOf(A, B) :- subPropertyOf(A, B),subsumed_by([A, B],[annotationProperty, annotationProperty]).
-axiom_arguments(subAnnotationPropertyOf,[annotationProperty, annotationProperty]).
-valid_axiom(subAnnotationPropertyOf(A, B)) :- subsumed_by([A, B],[annotationProperty, annotationProperty]).
-
-%% equivalentProperties(?PropertyExpressions:set(PropertyExpression))
-% An equivalent object properties axiom EquivalentProperties( OPE1 ... OPEn ) states that all of the object property expressions OPEi, 1 <= i <= n, are semantically equivalent to each other
-% (extensional predicate - can be asserted)
-:- thread_local(equivalentProperties/1).
-
-axiompred(equivalentProperties/1).
-axiom_arguments(equivalentProperties,[set(propertyExpression)]).
-valid_axiom(equivalentProperties(A)) :- subsumed_by([A],[set(propertyExpression)]).
-
-%% equivalentObjectProperties(?PropertyExpressions:set(ObjectPropertyExpression))
-% An equivalent object properties axiom EquivalentObjectProperties( OPE1 ... OPEn ) states that all of the object property expressions OPEi, 1 <= i <= n, are semantically equivalent to each other
-equivalentObjectProperties(A) :- equivalentProperties(A),subsumed_by([A],[set(objectPropertyExpression)]).
-axiom_arguments(equivalentObjectProperties,[set(objectPropertyExpression)]).
-valid_axiom(equivalentObjectProperties(A)) :- subsumed_by([A],[set(objectPropertyExpression)]).
-
-%% equivalentDataProperties(?PropertyExpressions:set(DataPropertyExpression))
-% An equivalent data properties axiom EquivalentProperties( DPE1 ... DPEn ) states that all the data property expressions DPEi, 1 <= i <= n, are semantically equivalent to each other. This axiom allows one to use each DPEi as a synonym for each DPEj - that is, in any expression in the ontology containing such an axiom, DPEi can be replaced with DPEj without affecting the meaning of the ontology
-equivalentDataProperties(A) :- equivalentProperties(A),subsumed_by([A],[set(dataPropertyExpression)]).
-axiom_arguments(equivalentDataProperties,[set(dataPropertyExpression)]).
-valid_axiom(equivalentDataProperties(A)) :- subsumed_by([A],[set(dataPropertyExpression)]).
-
-%% disjointProperties(?PropertyExpressions:set(PropertyExpression))
-% A disjoint properties axiom DisjointProperties( PE1 ... PEn ) states that all of the property expressions PEi, 1 <= i <= n, are pairwise disjoint
-% (extensional predicate - can be asserted)
-:- thread_local(disjointProperties/1).
-
-axiompred(disjointProperties/1).
-axiom_arguments(disjointProperties,[set(propertyExpression)]).
-valid_axiom(disjointProperties(A)) :- subsumed_by([A],[set(propertyExpression)]).
-
-%% disjointObjectProperties(?PropertyExpressions:set(ObjectPropertyExpression))
-% A disjoint object properties axiom DisjointProperties( OPE1 ... OPEn ) states that all of the object property expressions OPEi, 1 <= i <= n, are pairwise disjoint; that is, no individual x can be connected to an individual y by both OPEi and OPEj for i != j.
-disjointObjectProperties(A) :- disjointProperties(A),subsumed_by([A],[set(objectPropertyExpression)]).
-axiom_arguments(disjointObjectProperties,[set(objectPropertyExpression)]).
-valid_axiom(disjointObjectProperties(A)) :- subsumed_by([A],[set(objectPropertyExpression)]).
-
-%% disjointDataProperties(?PropertyExpressions:set(DataPropertyExpression))
-% A disjoint data properties axiom DisjointProperties( DPE1 ... DPEn ) states that all of the data property expressions DPEi, 1 <= i <= n, are pairwise disjoint; that is, no individual x can be connected to a literal y by both DPEi and DPEj for i !- j.
-disjointDataProperties(A) :- disjointProperties(A),subsumed_by([A],[set(dataPropertyExpression)]).
-axiom_arguments(disjointDataProperties,[set(dataPropertyExpression)]).
-valid_axiom(disjointDataProperties(A)) :- subsumed_by([A],[set(dataPropertyExpression)]).
-
-%% inverseProperties(?ObjectPropertyExpression1:ObjectPropertyExpression, ?ObjectPropertyExpression2:ObjectPropertyExpression)
-% An inverse object properties axiom InverseProperties( OPE1 OPE2 ) states that the object property expression OPE1 is an inverse of the object property expression OPE2
-% (note there are no inverse data properties, as literals are not connected to individuals)
-% Example:
-% =|inverseProperties(partOf,hasPart)|=
-% (extensional predicate - can be asserted)
-:- thread_local(inverseProperties/2).
-
-axiompred(inverseProperties/2).
-axiom_arguments(inverseProperties,[objectPropertyExpression, objectPropertyExpression]).
-valid_axiom(inverseProperties(A, B)) :- subsumed_by([A, B],[objectPropertyExpression, objectPropertyExpression]).
-
-%% propertyDomain(?PropertyExpression, ?CE)
-%  A property domain axiom PropertyDomain( PE CE ) states that the
-%  domain of the property expression PE is CE
-% (extensional predicate - can be asserted)
-
-:- thread_local(propertyDomain/2).
-
-axiompred(propertyDomain/2).
-axiom_arguments(propertyDomain,[propertyExpression, classExpression]).
-valid_axiom(propertyDomain(A, B)) :- subsumed_by([A, B],[propertyExpression, classExpression]).
-
-%% objectPropertyDomain(?ObjectPropertyExpression, ?ClassExpression)
-% An object property domain axiom PropertyDomain( OPE CE ) states that the domain of the object property expression OPE is the class expression CE - that is, if an individual x is connected by OPE with some other individual, then x is an instance of CE
-objectPropertyDomain(A, B) :- propertyDomain(A, B),subsumed_by([A, B],[objectPropertyExpression, classExpression]).
-axiom_arguments(objectPropertyDomain,[objectPropertyExpression, classExpression]).
-valid_axiom(objectPropertyDomain(A, B)) :- subsumed_by([A, B],[objectPropertyExpression, classExpression]).
-
-%% dataPropertyDomain(?DataPropertyExpression, ?ClassExpression)
-% A data property domain axiom PropertyDomain( DPE CE ) states that the domain of the data property expression DPE is the class expression CE - that is, if an individual x is connected by DPE with some literal, then x is an instance of CE
-dataPropertyDomain(A, B) :- propertyDomain(A, B),subsumed_by([A, B],[dataPropertyExpression, classExpression]).
-axiom_arguments(dataPropertyDomain,[dataPropertyExpression, classExpression]).
-valid_axiom(dataPropertyDomain(A, B)) :- subsumed_by([A, B],[dataPropertyExpression, classExpression]).
-
-%% annotationPropertyDomain(?AnnotationProperty, ?IRI)
-% An annotation property domain axiom PropertyDomain( AP U ) states that the domain of the annotation property AP is the IRI U. Such axioms have no effect on the Direct Semantics of OWL 2
-annotationPropertyDomain(A, B) :- propertyDomain(A, B),subsumed_by([A, B],[annotationProperty, iri]).
-axiom_arguments(annotationPropertyDomain,[annotationProperty, iri]).
-valid_axiom(annotationPropertyDomain(A, B)) :- subsumed_by([A, B],[annotationProperty, iri]).
-
-%% propertyRange(?PropertyExpression, ?ClassExpression)
-% An object property domain axiom PropertyRange( OPE CE ) states that the domain of the object property expression OPE is the class expression CE - that is, if an individual x is connected by OPE with some other individual, then x is an instance of CE
-% (extensional predicate - can be asserted)
-:- thread_local(propertyRange/2).
-
-axiompred(propertyRange/2).
-axiom_arguments(propertyRange,[propertyExpression, classExpression]).
-valid_axiom(propertyRange(A, B)) :- subsumed_by([A, B],[propertyExpression, classExpression]).
-
-%% objectPropertyRange(?ObjectPropertyExpression, ?ClassExpression)
-% An object property domain axiom PropertyRange( OPE CE ) states that the domain of the object property expression OPE is the class expression CE - that is, if an individual x is connected by OPE with some other individual, then x is an instance of CE
-objectPropertyRange(A, B) :- propertyRange(A, B),subsumed_by([A, B],[objectPropertyExpression, classExpression]).
-axiom_arguments(objectPropertyRange,[objectPropertyExpression, classExpression]).
-valid_axiom(objectPropertyRange(A, B)) :- subsumed_by([A, B],[objectPropertyExpression, classExpression]).
-
-%% dataPropertyRange(?ObjectPropertyExpression, ?DataRange)
-% A data property range axiom PropertyRange( DPE DR ) states that the range of the data property expression DPE is the data range DR - that is, if some individual is connected by DPE with a literal x, then x is in DR. The arity of DR MUST be one
-dataPropertyRange(A, B) :- propertyRange(A, B),subsumed_by([A, B],[dataPropertyExpression, dataRange]).
-axiom_arguments(dataPropertyRange,[objectPropertyExpression, dataRange]).
-valid_axiom(dataPropertyRange(A, B)) :- subsumed_by([A, B],[objectPropertyExpression, dataRange]).
-
-%% annotationPropertyRange(?AnnotationProperty, ?IRI)
-% An annotation property range axiom PropertyRange( AP U ) states that the range of the annotation property AP is the IRI U. Such axioms have no effect on the Direct Semantics of OWL 2
-annotationPropertyRange(A, B) :- propertyRange(A, B),subsumed_by([A, B],[annotationProperty, iri]).
-axiom_arguments(annotationPropertyRange,[annotationProperty, iri]).
-valid_axiom(annotationPropertyRange(A, B)) :- subsumed_by([A, B],[annotationProperty, iri]).
-
-%% functionalProperty(?PropertyExpression)
-% An object property functionality axiom FunctionalProperty( OPE ) states that the object property expression OPE is functional - that is, for each individual x, there can be at most one distinct individual y such that x is connected by OPE to y
-% (extensional predicate - can be asserted)
-:- thread_local(functionalProperty/1).
-
-axiompred(functionalProperty/1).
-axiom_arguments(functionalProperty,[propertyExpression]).
-valid_axiom(functionalProperty(A)) :- subsumed_by([A],[propertyExpression]).
-
-%% functionalObjectProperty(?ObjectPropertyExpression)
-% An object property functionality axiom FunctionalProperty( OPE ) states that the object property expression OPE is functional - that is, for each individual x, there can be at most one distinct individual y such that x is connected by OPE to y
-functionalObjectProperty(A) :- functionalProperty(A),subsumed_by([A],[objectPropertyExpression]).
-axiom_arguments(functionalObjectProperty,[objectPropertyExpression]).
-valid_axiom(functionalObjectProperty(A)) :- subsumed_by([A],[objectPropertyExpression]).
-
-%% functionalDataProperty(?DataPropertyExpression)
-% A data property functionality axiom FunctionalProperty( DPE ) states that the data property expression DPE is functional - that is, for each individual x, there can be at most one distinct literal y such that x is connected by DPE with y
-functionalDataProperty(A) :- functionalProperty(A),subsumed_by([A],[dataPropertyExpression]).
-axiom_arguments(functionalDataProperty,[dataPropertyExpression]).
-valid_axiom(functionalDataProperty(A)) :- subsumed_by([A],[dataPropertyExpression]).
-
-%% inverseFunctionalProperty(?ObjectPropertyExpression)
-% An object property inverse functionality axiom InverseFunctionalProperty( OPE ) states that the object property expression OPE is inverse-functional - that is, for each individual x, there can be at most one individual y such that y is connected by OPE with x. Note there are no InverseFunctional DataProperties
-:- thread_local(inverseFunctionalProperty/1).
-
-axiompred(inverseFunctionalProperty/1).
-axiom_arguments(inverseFunctionalProperty,[objectPropertyExpression]).
-valid_axiom(inverseFunctionalProperty(A)) :- subsumed_by([A],[objectPropertyExpression]).
-
-%% reflexiveProperty(?ObjectPropertyExpression)
-% An object property reflexivity axiom ReflexiveProperty( OPE ) states that the object property expression OPE is reflexive - that is, each individual is connected by OPE to itself
-:- thread_local(reflexiveProperty/1).
-
-axiompred(reflexiveProperty/1).
-axiom_arguments(reflexiveProperty,[objectPropertyExpression]).
-valid_axiom(reflexiveProperty(A)) :- subsumed_by([A],[objectPropertyExpression]).
-
-%% irreflexiveProperty(?ObjectPropertyExpression)
-% An object property reflexivity axiom ReflexiveProperty( OPE ) states that the object property expression OPE is reflexive - that is, no individual is connected by OPE to itsel
-:- thread_local(irreflexiveProperty/1).
-
-axiompred(irreflexiveProperty/1).
-axiom_arguments(irreflexiveProperty,[objectPropertyExpression]).
-valid_axiom(irreflexiveProperty(A)) :- subsumed_by([A],[objectPropertyExpression]).
-
-%% symmetricProperty(?ObjectPropertyExpression)
-% An object property symmetry axiom SymmetricProperty( OPE ) states that the object property expression OPE is symmetric - that is, if an individual x is connected by OPE to an individual y, then y is also connected by OPE to x
-:- thread_local(symmetricProperty/1).
-
-axiompred(symmetricProperty/1).
-axiom_arguments(symmetricProperty,[objectPropertyExpression]).
-valid_axiom(symmetricProperty(A)) :- subsumed_by([A],[objectPropertyExpression]).
-
-%% asymmetricProperty(?ObjectPropertyExpression)
-% An object property asymmetry axiom AsymmetricProperty( OPE ) states that the object property expression OPE is asymmetric - that is, if an individual x is connected by OPE to an individual y, then y cannot be connected by OPE to x
-:- thread_local(asymmetricProperty/1).
-
-axiompred(asymmetricProperty/1).
-axiom_arguments(asymmetricProperty,[objectPropertyExpression]).
-valid_axiom(asymmetricProperty(A)) :- subsumed_by([A],[objectPropertyExpression]).
-
-%% transitiveProperty(?ObjectPropertyExpression)
-% An object property transitivity axiom TransitiveProperty( OPE ) states that the object property expression OPE is transitive - that is, if an individual x is connected by OPE to an individual y that is connected by OPE to an individual z, then x is also connected by OPE to z
-:- thread_local(transitiveProperty/1).
-
-axiompred(transitiveProperty/1).
-axiom_arguments(transitiveProperty,[objectPropertyExpression]).
-valid_axiom(transitiveProperty(A)) :- subsumed_by([A],[objectPropertyExpression]).
-
-%% hasKey(?ClassExpression,?PropertyExpression)
-% A key axiom HasKey( CE PE1 ... PEn ) states that each (named) instance of the class expression CE is uniquely identified by the (data or object) property expressions PEi - that is, no two distinct (named) instances of CE can coincide on the values of all property expressions PEi
-:- thread_local(hasKey/2).
-
-axiompred(hasKey/2).
-axiom_arguments(hasKey,[classExpression,propertyExpression]).
-valid_axiom(hasKey(CE,PE)) :- subsumed_by([CE,PE],[classExpression,propertyExpression]).
-
-
-%% fact(?Axiom)
-% OWL 2 supports a rich set of axioms for stating assertions - axioms about individuals that are often also called facts. The fact/1 predicate reifies the fact predicate
-%
-% @see annotationAssertion/3, differentIndividuals/1, negativePropertyAssertion/3, propertyAssertion/3, sameIndividual/1, classAssertion/2
-fact(annotationAssertion(A, B, C)) :- annotationAssertion(A, B, C).
-fact(differentIndividuals(A)) :- differentIndividuals(A).
-fact(negativePropertyAssertion(A, B, C)) :- negativePropertyAssertion(A, B, C).
-fact(propertyAssertion(A, B, C)) :- propertyAssertion(A, B, C).
-fact(sameIndividual(A)) :- sameIndividual(A).
-fact(classAssertion(A, B)) :- classAssertion(A, B).
-axiom_arguments(fact,[axiom]).
-valid_axiom(fact(A)) :- subsumed_by([A],[axiom]).
-
-%% sameIndividual(?Individuals:set(Individual))
-% An individual equality axiom SameIndividual( a1 ... an ) states that all of the individuals ai, 1 <= i <= n, are equal to each other.
-% note that despite the name of this predicate, it accepts a list of individuals as argument
-:- thread_local(sameIndividual/1).
-
-axiompred(sameIndividual/1).
-axiom_arguments(sameIndividual,[set(individual)]).
-valid_axiom(sameIndividual(A)) :- subsumed_by([A],[set(individual)]).
-
-%% differentIndividuals(?Individuals:set(Individual))
-% An individual inequality axiom DifferentIndividuals( a1 ... an ) states that all of the individuals ai, 1 <= i <= n, are different from each other
-:- thread_local(differentIndividuals/1).
-
-axiompred(differentIndividuals/1).
-axiom_arguments(differentIndividuals,[set(individual)]).
-valid_axiom(differentIndividuals(A)) :- subsumed_by([A],[set(individual)]).
-
-%% classAssertion(?ClassExpression, ?Individual)
-% A class assertion ClassAssertion( CE a ) states that the individual a is an instance of the class expression CE
-:- thread_local(classAssertion/2).
-
-axiompred(classAssertion/2).
-axiom_arguments(classAssertion,[classExpression, individual]).
-valid_axiom(classAssertion(A, B)) :- subsumed_by([A, B],[classExpression, individual]).
-
-%% propertyAssertion(?PropertyExpression, ?SourceIndividual:Individual, ?TargetIndividual:Individual)
-% A positive object property assertion PropertyAssertion( OPE a1 a2 ) states that the individual a1 is connected by the object property expression OPE to the individual a2
-% (extensional predicate - can be asserted)
-:- thread_local(propertyAssertion/3).
-
-axiompred(propertyAssertion/3).
-axiom_arguments(propertyAssertion,[propertyExpression, individual, individual]).
-valid_axiom(propertyAssertion(A, B, C)) :- subsumed_by([A, B, C],[propertyExpression, individual, individual]).
-
-%% objectPropertyAssertion(?ObjectPropertyExpression, ?SourceIndividual:Individual, ?TargetIndividual:Individual)
-% A positive object property assertion PropertyAssertion( OPE a1 a2 ) states that the individual a1 is connected by the object property expression OPE to the individual a2
-objectPropertyAssertion(A, B, C) :- propertyAssertion(A, B, C),subsumed_by([A, B, C],[objectPropertyExpression, individual, individual]).
-axiom_arguments(objectPropertyAssertion,[objectPropertyExpression, individual, individual]).
-valid_axiom(objectPropertyAssertion(A, B, C)) :- subsumed_by([A, B, C],[objectPropertyExpression, individual, individual]).
-
-%% dataPropertyAssertion(?ObjectPropertyExpression, ?SourceIndividual:Individual, ?TargetValue:Literal)
-% A positive data property assertion PropertyAssertion( DPE a lt ) states that the individual a is connected by the data property expression DPE to the literal lt
-dataPropertyAssertion(A, B, C) :- propertyAssertion(A, B, C),subsumed_by([A, B, C],[dataPropertyExpression, individual, literal]).
-axiom_arguments(dataPropertyAssertion,[objectPropertyExpression, individual, literal]).
-valid_axiom(dataPropertyAssertion(A, B, C)) :- subsumed_by([A, B, C],[dataPropertyExpression, individual, literal]).
-
-%% negativePropertyAssertion(?PropertyExpression, ?SourceIndividual:Individual, ?TargetIndividual:Individual)
-% A negative object property assertion NegativePropertyAssertion( OPE a1 a2 ) states that the individual a1 is not connected by the object property expression OPE to the individual a2
-% (extensional predicate - can be asserted)
-:- thread_local(negativePropertyAssertion/3).
-
-axiompred(negativePropertyAssertion/3).
-axiom_arguments(negativePropertyAssertion,[propertyExpression, individual, individual]).
-valid_axiom(negativePropertyAssertion(A, B, C)) :- subsumed_by([A, B, C],[propertyExpression, individual, individual]).
-
-%% negativeObjectPropertyAssertion(?ObjectPropertyExpression, ?SourceIndividual:Individual, ?TargetIndividual:Individual)
-% A negative object property assertion NegativePropertyAssertion( OPE a1 a2 ) states that the individual a1 is not connected by the object property expression OPE to the individual a2
-negativeObjectPropertyAssertion(A, B, C) :- negativePropertyAssertion(A, B, C),subsumed_by([A, B, C],[objectPropertyExpression, individual, individual]).
-axiom_arguments(negativeObjectPropertyAssertion,[objectPropertyExpression, individual, individual]).
-valid_axiom(negativeObjectPropertyAssertion(A, B, C)) :- subsumed_by([A, B, C],[objectPropertyExpression, individual, individual]).
-
-%% negativeDataPropertyAssertion(?DataPropertyExpression, ?SourceIndividual:Individual, ?TargetValue:Literal)
-% A negative data property assertion NegativePropertyAssertion( DPE a lt ) states that the individual a is not connected by the data property expression DPE to the literal lt
-negativeDataPropertyAssertion(A, B, C) :- negativePropertyAssertion(A, B, C),subsumed_by([A, B, C],[dataPropertyExpression, individual, literal]).
-axiom_arguments(negativeDataPropertyAssertion,[dataPropertyExpression, individual, literal]).
-valid_axiom(negativeDataPropertyAssertion(A, B, C)) :- subsumed_by([A, B, C],[dataPropertyExpression, individual, literal]).
-
-%% annotationAssertion(?AnnotationProperty, ?AnnotationSubject, ?AnnotationValue)
-% An annotation assertion AnnotationAssertion( AP as av ) states that the annotation subject as - an IRI or an anonymous individual - is annotated with the annotation property AP and the annotation value av
-:- thread_local(annotationAssertion/3).
-
-axiompred(annotationAssertion/3).
-axiom_arguments(annotationAssertion,[annotationProperty, annotationSubject, annotationValue]).
-valid_axiom(annotationAssertion(A, B, C)) :- subsumed_by([A, B, C],[annotationProperty, annotationSubject, annotationValue]).
-annotationSubject(_).
-annotationValue(_).
-
-%% annotation(?IRI,?AnnotationProperty,?AnnotationValue)
-%
-% @see annotationAnnotation/3, ontologyAnnotation/3, axiomAnnotation/3
-:- thread_local(annotation/3).
-
-axiompred(annotation/3).
-
-annotation(annotationAnnotation(A, B, C)) :- annotationAnnotation(A, B, C).
-annotation(axiomAnnotation(A, B, C)) :- axiomAnnotation(A, B, C).
-axiom_arguments(annotation,[iri,annotationProperty,annotationValue]).
-valid_axiom(annotation(A,B,C)) :- subsumed_by([A,B,C],[iri,annotationProperty,annotationValue]).
-
-%% ontologyAnnotation(?Ontology, ?AnnotationProperty, ?AnnotationValue)
-ontologyAnnotation(Ontology,AP,AV) :-
-	annotation(Ontology,AP,AV),
-	ontology(Ontology).
-axiom_arguments(ontologyAnnotation,[ontology, annotationProperty, annotationValue]).
-valid_axiom(ontologyAnnotation(A, B, C)) :- subsumed_by([A, B, C],[ontology, annotationProperty, annotationValue]).
-
-%% axiomAnnotation(?Axiom, ?AnnotationProperty, ?AnnotationValue)
-axiomAnnotation(Axiom,AP,AV) :-
-	annotation(Axiom,AP,AV),
-	axiom(Axiom).
-axiom_arguments(axiomAnnotation,[axiom, annotationProperty, annotationValue]).
-valid_axiom(axiomAnnotation(A, B, C)) :- subsumed_by([A, B, C],[axiom, annotationProperty, annotationValue]).
-
-%% annotationAnnotation(?Annotation, ?AnnotationProperty, ?AnnotationValue)
-annotationAnnotation(Annotation,AP,AV) :-
-	annotation(Annotation,AP,AV),
-	annotation(Annotation).
-axiom_arguments(annotationAnnotation,[annotation, annotationProperty, annotationValue]).
-valid_axiom(annotationAnnotation(A, B, C)) :- subsumed_by([A, B, C],[annotation, annotationProperty, annotationValue]).
-
-%% ontology(?IRI)
-% An ontology in OWL2 is a collection of OWL Axioms
-:- thread_local(ontology/1).
-
-axiompred(ontology/1).
-axiom_arguments(ontology,[iri]).
-valid_axiom(ontology(A)) :- subsumed_by([A],[iri]).
-
-%% ontologyDirective(?OntologyIRI,?IRI)
-% @see ontologyImport/2, ontologyAxiom/2
-ontologyDirective(A, B) :- ontologyImport(A, B).
-ontologyDirective(A, B) :- ontologyAxiom(A, B).
-ontologyDirective(A, B) :- ontologyVersionInfo(A, B).
-axiom_arguments(ontologyDirective,[ontology, iri]).
-valid_axiom(ontologyDirective(A, B)) :- subsumed_by([A, B],[ontology, iri]).
-
-%% ontologyAxiom(?Ontology, ?Axiom)
-% True if Ontology contains Axiom.
-% Axiom is a prolog term that is typically asserted and separately and can thus can be executed as a goal.
-% For example, an ontology http://example.org# will contain redundant assertions:
-% ==
-% subClassOf('http://example.org#a', 'http://example.org#b').
-% ontologyAxiom('http://example.org#', subClassOf('http://example.org#a','http://example.org#b')).
-% ==
-:- thread_local(ontologyAxiom/2).
-
-axiompred(ontologyAxiom/2).
-axiom_arguments(ontologyAxiom,[ontology, axiom]).
-valid_axiom(ontologyAxiom(A, B)) :- subsumed_by([A, B],[ontology, axiom]).
-
-%% ontologyImport(?Ontology, ?IRI)
-% True of Ontology imports document IRI
-:- thread_local(ontologyImport/2).
-
-axiompred(ontologyImport/2).
-axiom_arguments(ontologyImport,[ontology, iri]).
-valid_axiom(ontologyImport(A, B)) :- subsumed_by([A, B],[ontology, iri]).
-
-%% ontologyVersionInfo(?Ontology, ?IRI)
-:- thread_local(ontologyVersionInfo/2).
-
-axiompred(ontologyVersionInfo/2).
-axiom_arguments(ontologyVersionInfo,[ontology, iri]).
-valid_axiom(ontologyVersionInfo(A, B)) :- subsumed_by([A, B],[ontology, iri]).
-
-/****************************************
-  RESTRICTIONS ON AXIOMS
-  ****************************************/
-
-% 11.1
-% An object property expression OPE is simple in Ax if, for each object property expression OPE' such that OPE' ->* OPE holds, OPE' is not composite.
-% (The property hierarchy relation ->* is the reflexive-transitive closure of ->)
-%simpleObjectPropertyExpresion(OPE) :-
-%        objectPropertyExpression(OPE),
-
-
-/****************************************
-  EXPRESSIONS
-  ****************************************/
-
-subsumed_by(X,_) :- var(X),!.
-subsumed_by([],[]) :- !.
-subsumed_by([I|IL],[T|TL]) :-
-	!,
-	subsumed_by(I,T),
-	subsumed_by(IL,TL).
-subsumed_by(L,set(T)):-
-        !,
-        forall(member(I,L),
-               subsumed_by(I,T)).
-subsumed_by(I,T):-
-        !,
-	G=..[T,I],
-	G.
-
-
-%% iri(?IRI)
-% true if IRI is an IRI. TODO: currently underconstrained, any atomic term can be an IRI
-iri(IRI) :- atomic(IRI).	%
-
-%% literal(?Lit)
-% true if Lit is an rdf literal
-%literal(_).			% TODO
-literal(literal(_)).			% TODO
-
-propertyExpression(E) :- objectPropertyExpression(E) ; dataPropertyExpression(E).
-
-%% objectPropertyExpression(?OPE)
-% true if OPE is an ObjectPropertyExpression
-% ObjectPropertyExpression := ObjectProperty | InverseObjectProperty
-objectPropertyExpression(E) :- objectProperty(E) ; inverseObjectProperty(E).
-
-% give benefit of doubt; e.g. rdfs:label
-% in the OWL2 spec we have DataProperty := IRI
-% here dataProperty/1 is an asserted fact
-objectPropertyExpression(E) :- nonvar(E),iri(E).
-
-objectPropertyExpressionOrChain(propertyChain(PL)) :- forall(member(P,PL),objectPropertyExpression(P)).
-objectPropertyExpressionOrChain(PE) :- objectPropertyExpression(PE).
-
-
-inverseObjectProperty(inverseOf(OP)) :- objectProperty(OP).
-
-dataPropertyExpression(E) :- dataProperty(E).
-
-dataPropertyExpression(DPEs) :-
-	(   is_list(DPEs)
-	->  forall(member(DPE,DPEs),
-		   dataPropertyExpression(DPE))
-	;   dataPropertyExpression(DPEs)).
-
-% give benefit of doubt; e.g. rdfs:label
-% in the OWL2 spec we have DataProperty := IRI
-% here dataProperty/1 is an asserted fact
-dataPropertyExpression(E) :- nonvar(E),iri(E).
-
-%already declared as entity
-%datatype(IRI) :- iri(IRI).
-
-%% dataRange(+DR) is semidet
-dataRange(DR) :-
-    datatype(DR) ;
-    dataIntersectionOf(DR );
-    dataUnionOf(DR) ;
-    dataComplementOf(DR) ;
-    dataOneOf(DR) ;
-    datatypeRestriction(DR).
-
-%% classExpression(+CE) is semidet
-%
-% true if CE is a class expression term, as defined in OWL2
-%
-% Example: =|classExpression(intersectionOf([car,someValuesFrom(hasColor,blue)])))|=
-%
-% Union of:
-%
-%    class/1 | objectIntersectionOf/1 | objectUnionOf/1 |
-%    objectComplementOf/1 | objectOneOf/1 | objectSomeValuesFrom/1 |
-%    objectAllValuesFrom/1 | objectHasValue/1 | objectHasSelf/1 |
-%    objectMinCardinality/1 | objectMaxCardinality/1 |
-%    objectExactCardinality/1 | dataSomeValuesFrom/1 |
-%    dataAllValuesFrom/1 | dataHasValue/1 | dataMinCardinality/1 |
-%    dataMaxCardinality/1 | dataExactCardinality/1
-classExpression(CE):-
-        iri(CE) ;               % NOTE: added to allow cases where class is not imported
-    class(CE) ;
-    objectIntersectionOf(CE) ; objectUnionOf(CE) ; objectComplementOf(CE) ; objectOneOf(CE) ;
-    objectSomeValuesFrom(CE) ; objectAllValuesFrom(CE) ; objectHasValue(CE) ; objectHasSelf(CE) ;
-    objectMinCardinality(CE) ; objectMaxCardinality(CE) ; objectExactCardinality(CE) ;
-    dataSomeValuesFrom(CE) ; dataAllValuesFrom(CE) ; dataHasValue(CE) ;
-    dataMinCardinality(CE) ; dataMaxCardinality(CE) ; dataExactCardinality(CE).
-
-%% objectIntersectionOf(+CE) is semidet
-% true if CE is a term intersectionOf(ClassExpression:list)
-%
-% An intersection class expression IntersectionOf( CE1 ... CEn ) contains all individuals that are instances of all class expressions CEi for 1 <= i <= n.
-objectIntersectionOf(intersectionOf(CEs)) :-
-	forall(member(CE,CEs),
-	       classExpression(CE)).
-
-%% objectUnionOf(+CE) is semidet
-% A union class expression UnionOf( CE1 ... CEn ) contains all individuals that are instances of at least one class expression CEi for 1 <= i <= n
-objectUnionOf(unionOf(CEs)) :-
-	forall(member(CE,CEs),
-	       classExpression(CE)).
-
-%% objectComplementOf(+CE) is semidet
-%
-objectComplementOf(complementOf(CE)) :-
-	classExpression(CE).
-
-%% objectOneOf(+CE) is semidet
-% An enumeration of individuals OneOf( a1 ... an ) contains exactly the individuals ai with 1 <= i <= n.
-objectOneOf(oneOf(Is)) :-
-        is_list(Is). % TODO: check if we need to strengthen this check
-%objectOneOf(oneOf(Is)) :-
-%	forall(member(I,Is),
-%	       individual(I)).
-
-%% objectSomeValuesFrom(+R) is semidet
-% An existential class expression SomeValuesFrom( OPE CE ) consists of an object property expression OPE and a class expression CE, and it contains all those individuals that are connected by OPE to an individual that is an instance of CE
-objectSomeValuesFrom(someValuesFrom(OPE,CE)) :-
-	objectPropertyExpression(OPE),
-	classExpression(CE).
-
-%% objectAllValuesFrom(+R) is semidet
-% A universal class expression AllValuesFrom( OPE CE ) consists of an object property expression OPE and a class expression CE, and it contains all those individuals that are connected by OPE only to individuals that are instances of CE
-objectAllValuesFrom(allValuesFrom(OPE,CE)) :-
-	objectPropertyExpression(OPE),
-	classExpression(CE).
-
-%% objectHasValue(+R) is semidet
-% A has-value class expression HasValue( OPE a ) consists of an object property expression OPE and an individual a, and it contains all those individuals that are connected by OPE to a
-objectHasValue(hasValue(OPE,I)) :-
-	objectPropertyExpression(OPE),
-	individual(I).
-
-%% objectHasSelf(+R) is semidet
-% A self-restriction HasSelf( OPE ) consists of an object property expression OPE, and it contains all those individuals that are connected by OPE to themselves
-objectHasSelf(hasSelf(OPE)) :-
-	objectPropertyExpression(OPE).
-
-%% objectMinCardinality(+CR) is semidet
-% A minimum cardinality expression MinCardinality( n OPE CE ) consists of a nonnegative integer n, an object property expression OPE, and a class expression CE, and it contains all those individuals that are connected by OPE to at least n different individuals that are instances of CE. If CE is missing, it is taken to be owl:Thing
-objectMinCardinality(minCardinality(C,OPE,CE)):-
-	number(C),
-	C>=0,
-	objectPropertyExpression(OPE),
-	classExpression(CE).
-objectMinCardinality(minCardinality(C,OPE)):-
-	number(C),
-	C>=0,
-	objectPropertyExpression(OPE).
-
-
-%% objectMaxCardinality(+CR) is semidet
-% A maximum cardinality expression MaxCardinality( n OPE CE ) consists of a nonnegative integer n, an object property expression OPE, and a class expression CE, and it contains all those individuals that are connected by OPE to at most n different individuals that are instances of CE. If CE is missing, it is taken to be owl:Thing
-objectMaxCardinality(maxCardinality(C,OPE,CE)):-
-	number(C),
-	C>=0,
-	objectPropertyExpression(OPE),
-	classExpression(CE).
-objectMaxCardinality(maxCardinality(C,OPE)):-
-	number(C),
-	C>=0,
-	objectPropertyExpression(OPE).
-
-%% objectExactCardinality(+CR) is semidet
-% An exact cardinality expression ExactCardinality( n OPE CE ) consists of a nonnegative integer n, an object property expression OPE, and a class expression CE, and it contains all those individuals that are connected by OPE to exactly n different individuals that are instances of CE. If CE is missing, it is taken to be owl:Thing
-objectExactCardinality(exactCardinality(C,OPE,CE)):-
-	number(C),
-	C>=0,
-	objectPropertyExpression(OPE),
-	classExpression(CE).
-objectExactCardinality(exactCardinality(C,OPE)):-
-	number(C),
-	C>=0,
-	objectPropertyExpression(OPE).
-% NON-NORMATIVE: we accept this in order to maximize compatibility with Thea1
-objectExactCardinality(cardinality(C,OPE)):-
-	number(C),
-	C>=0,
-	objectPropertyExpression(OPE).
-
-
-%% dataIntersectionOf(+DR:dataIntersectionOf) is semidet
-% An intersection data range IntersectionOf( DR1 ... DRn ) contains all data values that are contained in the value space of every data range DRi for 1 <= i <= n. All data ranges DRi must be of the same arity
-dataIntersectionOf(intersectionOf(DRs)) :-
-	forall(member(DR,DRs),
-	       dataRange(DR)).
-
-%% dataUnionOf(+DR:dataUnionOf) is semidet
-% A union data range UnionOf( DR1 ... DRn ) contains all data values that are contained in the value space of at least one data range DRi for 1 <= i <= n. All data ranges DRi must be of the same arity
-dataUnionOf(unionOf(DRs)) :-
-	forall(member(DR,DRs),
-	       dataRange(DR)).
-
-%% dataComplementOf(+DR:dataComplementOf) is semidet
-% A complement data range ComplementOf( DR ) contains all literals that are not contained in the data range DR
-dataComplementOf(complementOf(DR)) :-
-	dataRange(DR).
-
-%% dataOneOf(+DR:dataOneOf) is semidet
-% An enumeration of literals OneOf( lt1 ... ltn ) contains exactly the explicitly specified literals lti with 1 <= i <= n
-dataOneOf(oneOf(DRs)) :-
-	forall(member(DR,DRs),
-	       dataRange(DR)).
-
-%% datatypeRestriction(+DR) is semidet
-%
-% TODO: multiple args
-datatypeRestriction(datatypeRestriction(DR,FacetValues)):-
-	datatype(DR),
-	FacetValues=[_|_].
-
-%% dataSomeValuesFrom(+DR) is semidet
-dataSomeValuesFrom(someValuesFrom(DPE,DR)):-
-	dataPropertyExpression(DPE),
-	dataRange(DR).
-
-%% dataAllValuesFrom(+DR) is semidet
-dataAllValuesFrom(allValuesFrom(DPE,DR)):-
-	dataPropertyExpression(DPE),
-	dataRange(DR).
-
-%% dataHasValue(+DR) is semidet
-% A has-value class expression HasValue( DPE lt ) consists of a data property expression DPE and a literal lt, and it contains all those individuals that are connected by DPE to lt. Each such class expression can be seen as a syntactic shortcut for the class expression SomeValuesFrom( DPE OneOf( lt ) )
-dataHasValue(hasValue(DPE,L)):-
-	dataPropertyExpression(DPE),
-	literal(L).
-
-%% dataMinCardinality(+DR) is semidet
-% A minimum cardinality expression MinCardinality( n DPE DR ) consists of a nonnegative integer n, a data property expression DPE, and a unary data range DR, and it contains all those individuals that are connected by DPE to at least n different literals in DR. If DR is not present, it is taken to be rdfs:Literal
-dataMinCardinality(minCardinality(C,DPE,DR)):-
-	number(C),
-	C>=0,
-	dataPropertyExpression(DPE),
-	dataRange(DR).
-dataMinCardinality(minCardinality(C,DPE)):-
-	number(C),
-	C>=0,
-	dataPropertyExpression(DPE).
-
-
-
-%% dataMaxCardinality(+DR) is semidet
-% A maximum cardinality expression MaxCardinality( n DPE DR ) consists of a nonnegative integer n, a data property expression DPE, and a unary data range DR, and it contains all those individuals that are connected by DPE to at most n different literals in DR. If DR is not present, it is taken to be rdfs:Literal.
-dataMaxCardinality(maxCardinality(C,DPE,DR)):-
-	number(C),
-	C>=0,
-	dataPropertyExpression(DPE),
-	dataRange(DR).
-dataMaxCardinality(maxCardinality(C,DPE)):-
-	number(C),
-	C>=0,
-	dataPropertyExpression(DPE).
-
-
-%% dataExactCardinality(+DR) is semidet
-% An exact cardinality expression ExactCardinality( n DPE DR ) consists of a nonnegative integer n, a data property expression DPE, and a unary data range DR, and it contains all those individuals that are connected by DPE to exactly n different literals in DR. If DR is not present, it is taken to be rdfs:Literal
-dataExactCardinality(exactCardinality(C,DPE,DR)):-
-	number(C),
-	C>=0,
-	dataPropertyExpression(DPE),
-	dataRange(DR).
-dataExactCardinality(exactCardinality(C,DPE)):-
-	number(C),
-	C>=0,
-	dataPropertyExpression(DPE).
-% NON-NORMATIVE: we accept this in order to maximize compatibility with Thea1
-dataExactCardinality(cardinality(C,OPE)):-
-	number(C),
-	C>=0,
-	objectPropertyExpression(OPE).
-
-
-%% valid_axiom(?Axiom) is nondet
-% true if Axiom passes typechecking
-
-
-%% is_valid_axiom(?Axiom) is semidet
-% true if Axiom passes typechecking
-is_valid_axiom(Axiom) :- \+ \+ valid_axiom(Axiom).
-
-
-/****************************************
-  VIEW PREDICATES
-  ****************************************/
-
-%% equivalent_to(?X,?Y)
-% note: this is currently slow for bound values of X and Y
-equivalent_to(X,Y) :- equivalentClasses(L),member(X,L),member(Y,L),X\=Y.
-equivalent_to(X,Y) :- equivalentProperties(L),member(X,L),member(Y,L),X\=Y.
-
-disjoint_with(X,Y) :- disjointClasses(L),member(X,L),member(Y,L),X\=Y.
-
-%% anyPropertyAssertion(?Property,?Entity,?Value)
-% subsumes propertyAssertion/3 and annotationAssertion/3
-anyPropertyAssertion(P,E,V) :- propertyAssertion(P,E,V).
-anyPropertyAssertion(P,E,V) :- annotationAssertion(P,E,V).
-
-
-%% labelAnnotation_value(?X,?Val)
-labelAnnotation_value(X,Val) :-
-        anyPropertyAssertion('http://www.w3.org/2000/01/rdf-schema#label', X, literal(type(_,Val))),atom(Val).
-labelAnnotation_value(X,Val) :-
-        anyPropertyAssertion('http://www.w3.org/2000/01/rdf-schema#label', X, literal(lang(_,Val))),atom(Val).
-labelAnnotation_value(X,Val) :-
-        anyPropertyAssertion('http://www.w3.org/2000/01/rdf-schema#label', X, literal(Val)),atom(Val).
-
-/****************************************
-  META-PREDICATES
-  ****************************************/
-
-
-%% axiom_directly_about(?Ax,?About)
-% true if Ax is an axiom whose first argument is equal to About.
-%
-% e.g. axiom_directly_about( subClassOf(X,_), X).
-%
-% also include property assertions whose second argument is equal to About.
-%
-% e.g. axiom_directly_about( propertyAssertion(P,X,_), X).
-%
-axiom_directly_about(Ax,About) :-
-        axiom(Ax),
-        Ax =.. [_,Arg1|_],
-        (   is_list(Arg1)
-        ->  member(About,Arg1)
-        ;   About=Arg1).
-axiom_directly_about(Ax,About) :-
-	Ax=propertyAssertion(_,About,_),
-        axiom(Ax).
-axiom_directly_about(Ax,About) :-
-	Ax=annotationAssertion(_,About,_),
-        axiom(Ax).
-axiom_directly_about(Ax,About) :-
-	Ax=classAssertion(_,About),
-        axiom(Ax).
-
-
-%% axiom_directly_references(?Ax:axiom,?Ref)
-%
-% Ref may be
-%  - an axiom
-%  - a named entity
-%  - an expression
-axiom_directly_references(Ax,Ref) :-
-        axiom(Ax),
-        axiom_or_expression_references(Ax,Ref).
-
-axiom_or_expression_references(X,Ref) :-
-        X =.. [P|Args],
-        P\=literal,
-        member(Arg,Args),
-        (   is_list(Arg)
-        ->  member(Ref,Arg)
-        ;   Ref=Arg).
-
-axiom_about(Ax,About) :-
-        axiom_directly_about(Ax,About).
-axiom_about(Ax,About) :-
-        axiom_directly_about(Ax,X),
-        axiom_about(X,About).
-
-axiom_references(Ax,Ref) :-
-        axiom_directly_references(Ax,Ref).
-axiom_references(Ax,Ref) :-
-        axiom_directly_references(Ax,X),
-        axiom_or_expression_references(X,Ref).
-
-axiom_contains_expression(Ax,Ex) :-
-        axiom_contains_expression(Ax,Ex,_).
-axiom_contains_expression(Ax,Ex,D) :-
-        axiom(Ax),
-        expression_has_subexpression(Ax,Ex,[],Chain),
-        length(Chain,D).
-
-expression_has_subexpression(Ex,Ex,Accum,Accum).
-expression_has_subexpression(Ex,SubEx,Accum,Results) :-
-        Ex =.. [F|Args],
-        member(A,Args),
-        expression_has_subexpression(A,SubEx,[F|Accum],Results).
-
-
-
-%% referenced_description(?Desc) is nondet
-% true if Desc is either a class or a class expression using the set of ontologies loaded.
-% Example: if the ontology contains
-% ==
-% subClassOf(a,intersectionOf([b,someValuesFrom(p,c)]))
-% ==
-% then Desc will be a member of [a, b, c, b and p some c, p some c]
-referenced_description(C) :-
-        setof(C,referenced_description_1(C),Cs),
-        member(C,Cs).
-
-referenced_description_1(C) :- class(C).
-referenced_description_1(C) :-
-        subClassOf(A,B),
-        (   referenced_description(A,C)
-        ;   referenced_description(B,C)).
-referenced_description_1(C) :-
-        equivalentClasses(L),
-        member(A,L),
-        referenced_description(A,C).
-referenced_description_1(C) :-
-        classAssertion(A,_),
-        referenced_description(A,C).
-
-% TODO - this is incomplete
-referenced_description(X,X) :- ground(X).
-referenced_description(someValuesFrom(_,X),Y) :- referenced_description(X,Y).
-referenced_description(allValuesFrom(_,X),Y) :- referenced_description(X,Y).
-referenced_description(intersectionOf(L),Y) :- member(X,L),referenced_description(X,Y).
-referenced_description(unionOf(L),Y) :- member(X,L),referenced_description(X,Y).
-
-
-/****************************************
-  UTILITY
-  ****************************************/
-
-
-:- thread_local assert_axiom_hook/1.
-
-%% assert_axiom(+Axiom:axiom)
-%
-% writes an axiom to the prolog database.
-% typically this will just be a matter of calling assert/1. However, in future we
-% will have different backing stores (rdf_db, sql), and in these cases calls to
-% this predicate will perform the appropriate actions.
-%
-% this also asserts ontologyAxiom/2, using nb_getval with current_ontology
-assert_axiom(Axiom) :-
-        assert_axiom_hook(Axiom),
-        !.
-assert_axiom(Axiom) :-
-        assert(Axiom),
-	(   nb_current(current_ontology,O)
-        ->  assert(ontologyAxiom(O,Axiom))
-        ;   true),
-        !.
-  
-%% assert_axiom(+Axiom:axiom,+Ontology:ontology) is det
-%
-% as assert_axiom/1, but also asserts to ontologyAxiom/2
-assert_axiom(Axiom,O) :-
-        assert(Axiom),
-	assert(ontologyAxiom(O,Axiom)),
-        !.
-
-
-:- thread_local retract_axiom_hook/1.
-
-%% retract_axiom(+Axiom:axiom)
-%
-% removes an axiom from the prolog database.
-% typically this will just be a matter of calling retract/1. However, in future we
-% will have different backing stores (rdf_db, sql), and in these cases calls to
-% this predicate will perform the appropriate actions.
-%
-% also removes ontologyAxiom/2 from ALL ontologies
-retract_axiom(Axiom) :-
-        retract_axiom_hook(Axiom),
-        !.
-retract_axiom(Axiom) :-
-        retractall(Axiom),
-	retractall(ontologyAxiom(_,Axiom)),
-        !.
-
-%% retract_axiom(+Axiom:axiom,+Ontology)
-% retracts axioms from a specified ontology
-retract_axiom(Axiom,Ontology) :-
-        \+ var(Ontology),
-	retractall(ontologyAxiom(Ontology,Axiom)),
-        (   \+ ontologyAxiom(_,Axiom)
-        ->  retractall(Axiom)
-        ;   true),              % still exists in other ontology..
-        !.
-
-
-retract_all_axioms :-
-        findall(A,axiom(A),Axioms),
-        maplist(retract,Axioms),
-        findall(ontologyAxiom(O,A),ontologyAxiom(O,A),OAxioms),
-        maplist(retract,OAxioms),
-	!.
-
-
-owl2_model_init :-
-	assert(annotationProperty('http://www.w3.org/2000/01/rdf-schema#label')),
-	assert(annotationProperty('http://www.w3.org/2000/01/rdf-schema#comment')).
-
-consult_axioms(File) :-
-        consult(File).
-
-axiom_type(A,T) :- functor(A,T,_).
-
-/** <module> Ontology language axioms and expressions
-
----+ Synopsis
-
-    Example OWL2 ontology as a prolog database:
-==
-class(organism).
-class(animal).
-class(carnivore).
-class(herbivore).
-objectProperty(eats).
-subClassOf(animal,organism).
-equivalentClasses([carnivore,intersectionOf([animal,someValuesFrom(eats,animal)])]).
-disjointClasses([herbivore,carnivore]).
-==
-
-Example of use:
-
-==
-:- use_module(library(thea2/owl2_io)).
-:- use_module(library(thea2/owl2_model)).
-
-show_superclasses(OntFile,Class) :-
-        load_axioms(OntFile),
-        forall(subClassOf(Class,Super),
-               writeln(Super)).
-==
-
----+ Details
-
-This module is a prolog model of the OWL2 language. It consists of predicates for both OWL2 axioms and expressions.
-
-This model is intended to closely parallel Structural Specification and Functional-Style Syntax for OWL2 (http://www.w3.org/TR/owl2-syntax).
-
-* Axioms and Declarations are modeled as prolog predicates (e.g. SubClassOf --> subClassOf/2)
-* Class and Property Expressions are modeled as prolog terms. These can be checked via semi-deterministic predicates (e.g. objectIntersectionOf/1)
-* Axiom Annotations are modeled as prolog predicates taking a reified axiom clause head as an argument (axiomAnnotation/3)
-* The names should correspond exactly, with the leading uppercase character substituted for a lowercase (to avoid quoting in prolog) - the one exception is Import, which maps to the prolog predicate ontologyImport/2 (to avoid confusion with prolog import/1)
-* Axioms with variable arguments are modeled as prolog predicates that take prolog lists as arguments (e.g. equivalentClasses/1)
-* For programmatic convenience we provide additional abstract predicates that do not necessarily correspond to the OWL syntax (e.g. property/1,fact/1)
-
-
----++ Axioms
-
-Extensional predicates are declared for all terminal axiom symbols in the functional syntax;  i.e. subPropertyOf/2, subClassOf/2.
-These can be directly asserted, or compiled from a prolog file.
-
-The terms from the OWL2 structural syntax are taken as primitive,
-i.e. they are extensional / unit-clauses, and designed to be asserted
-or compiled.
-
-Some predicates such as property/1 are intensional - these generalize
-over the OWL2 axioms are defined by prolog rules, and should not be
-asserted.  In this case property/1 is defined as annotationProperty/1
-or dataProperty/1 or objectProperty/1.
-
-For the strong typed model, we also provide intensional predicates
-such as subObjectPropertyOf/2 - satisfaction of this predicate is
-determined at runtime based on type-checking, if subPropertyOf/2 holds.
-
-
----++ Expressions and Type checking
-
-OWL Axioms can take either entities or expressions as arguments.
- Entities are simply prolog atoms corresponding to the IRI.
- Expressions are prolog terms;
- e.g. =|intersectionOf(a,someValuesFrom(inverseOf(p),b))|=
-
- (Class expressions are also known as Descriptions)
-
- Optional run-time checking of predicates using valid_axiom/1.
-
- For example =|subClassOf(intersectionOf(c1,c2),unionOf(c3,c4))|= is
- valid if c1,c2,c3,c4 are all class expressions, but
- =|subClassOf(p1,c1)|= is not valid if p1 is a property
-
- We can also make checks for specific types: e.g objectIntersectionOf/1
-
----++ Annotations
-
-  In OWL Syntax, axiom annotations are written using an optional annotation list argument.
-  We opt not to do this here; instead we use axiomAnnotation/3 where the first argument is the reified predicate head.
-  E.g.
-
-==
-subClassOf(cat,mammal).
-axiomAnnotation(SubClassOf(cat,mammal),author,linnaeus).
-==
-
-
-  ---++ Ontologies
-
-  We use a similar scheme for annotations:
-
-==
-subClassOf(cat,mammal).
-ontologyAxiom(linnaenTaxonomy,SubClassOf(cat,mammal)).
-ontology(linnaenTaxonomy).
-==
-
-TODO: check edge cases, eg two ontologies have the same axioms but different annotations
-
----++ IRIs
-
-By default there is no type checking of IRIs, so =|class(polarBear)|=
-is allowed, even though polarBear is not an IRI - this makes for
-convenience in working with example ontologies.
-
-See prefix_IRIs/1 in owl2_util.pl for converting between short names
-and valid IRIs.
-
----+ Open Issues
-
----++ Enumeration of expressions
-
-We provide semi-deterministic predicates of the form
-  ?type(+Expression).  Should the mode be extended to allow
-  enumeration of all descriptions/expressions? This would probably
-  require forcing all expressions to be bnodes OR possibly recursively
-  analyzing the term Axiom in a call axiom(Axiom)
-
----++ Type checking
-
-  Is Tom Schrijvers type checking system going to be integrated into SWI and Yap? Should we use that?
-
-  I am attempting to put as much typing info in the pldoc comments,
-  but unsure of the conventions for complex terms.
-
-  LATEST: see owl2_metamodel.pl
-
----++ Ontologies
-
-  continue using ontologyAxiom/2? Alternatively use builtin prolog module mechanism..?
-
----+ See Also
-
-* owl2_from_rdf.pl
-* swrl.pl
-
----+ Additional Information
-
-@see     README
-@license License
-
-*/
-
-:- use_module(library(debug)).
-:- use_module(library('semweb/rdf_db')).
-:- use_module(library('semweb/rdf_edit')).
-:- use_module(library('semweb/rdfs')).
-:- use_module(library('url')).
-:- use_module(library('http/http_open')).
-:- use_module(library(charsio)).
-
-:- thread_local(owl/4).
-%% blanknode(Node,Description,Used)
-% see owl_get_bnode/2
-% Node - bNodeId
-% Description - prolog term corresponding to owl Description
-% Used - used | shared
-:- thread_local(blanknode/3).
-:- thread_local(outstream/1).
-
-:- thread_local(aNN/3). % implements the ANN(X) function.
-:- thread_local(annotation_r_node/4).  % annotation_r_node(S,P,O,Node)
-:- thread_local(axiom_r_node/4).       % axiom_r_node(S,P,O,Node)
-:- thread_local(owl_repository/2). % implements a simple OWL repository: if URL not found, Ontology is read from a repository (local) RURL
-
-
-% we make this discontiguous so that the code can follow the structure of the document as much as possible
-
-:- discontiguous owl_parse_axiom/3.
-:- discontiguous dothislater/1.
-
-% hookable
-
-
-% -----------------------------------------------------------------------
-%                                UTILITY Predicates
-% -----------------------------------------------------------------------
-
-
-%%       owl_clear_as
-%
-%       Clears the prolog terms that store the Abstract Syntax
-%       implementation of the OWL ontology.
-
-owl_clear_as :-
-        debug(owl_parser,'Clearing abstract syntax',[]),
-        forall((axiompred(PredSpec),predspec_head(PredSpec,Head)),
-               retractall(Head)).
-
-predspec_head(Pred/A,Head) :- functor(Head,Pred,A).
-
-u_assert(Term) :-
-	call(Term), !; assert(Term).
-
-
-convert(T,V,typed_value(T,V)).
-
-
-%%	rdf_2_owl(+Base, +Ont) is det
-%
-%       Converts RDF triples to OWL/4 triples so that
-%	their use can tracked by the OWL parser.
-
-
-rdf_2_owl(_Base,Ont) :-
-%	debug(owl_parser, 'Removing existing owl triples',[]),
-%	retractall(owl(_,_,_,Ont)),
-%  pengine_self(Self),
-%  pengine_property(Self,module(M)),
-	debug(owl_parser,'Copying RDF triples to OWL triples for Ontology ~w',[Ont]),
-	pengine_self(Self),
-        pengine_property(Self,module(M)),
-	M:myrdf(X,Y,Z),
-%	owl_fix_no(X,X1), owl_fix_no(Y,Y1), owl_fix_no(Z,Z1),
-	assert(owl(X,Y,Z,Ont)), fail.
-
-rdf_2_owl(_,Ont) :-
-	owl_count(Ont,Z),
-	debug(owl_parser,'Number of owl triples copied: ~w',[Z]).
-
-
-%%	owl_count(?U).
-%       Returns/Checks the number of unused OWL triples.
-
-owl_count(O,U) :-
-	findall(1,owl(_,_,_,O),X), length(X,U).
-
-%% expand_and_assert(S,P,O) is det
-%
-% adds a owl(S,P,O,not_used) after expanding namespaces.
-% this is required for the triple replacement rules,
-% which use shortened rdfs/owl namespaces.
-% (or we could just use the expanded forms here which
-%  may be faster..)
-expand_and_assert(X1,Y1,Z1) :-
-	expand_ns(X1,X),
-	expand_ns(Y1,Y),
-	expand_ns(Z1,Z),!,
-	retractall(owl(X,Y,Z, used1)),
-	assert(owl(X,Y,Z, not_used)).
-
-
-%%       test_use_owl(+Triples:list) is nondet
-%
-%       As use_owl/1, but does not consume the triple.  If owl(S,P,O)
-%       in Triples has a non-ground variable then this will succeed
-%       non-deterministically.  If all variables are ground, then this
-%       will succeed semi-deterministically.
-test_use_owl([]).
-test_use_owl([owl(S,P,O)|Rest]) :-
-	test_use_owl(S,P,O),
-	test_use_owl(Rest).
-
-
-%%       test_use_owl(?S,?P,?O)
-%	As use_owl/3, but does not consume the triple. Expands the S,P,O.
-%
-%       If any of S, P or O is non-ground then this will succeed
-%       non-deterministically.  If all variables are ground, then this
-%       will succeed semi-deterministically.
-test_use_owl(X1,Y1,Z1) :-
-	expand_ns(X1,X),
-	expand_ns(Y1,Y),
-	expand_ns(Z1,Z),!,
-	owl(X,Y,Z, not_used).
-
-test_use_owl(X1,Y1,Z1,named) :-
-	expand_ns(X1,X),
-	expand_ns(Y1,Y),
-	expand_ns(Z1,Z),
-	owl(X,Y,Z, not_used),
-	\+ sub_string(X,0,1,_,'_').
-
-
-%%       use_owl(+Triples:list)
-%	Marks a list of OWL triples as used, but only if all match. Expands the S,P,O.
-
-use_owl(Triples) :-
-        test_use_owl(Triples),
-        use_owl_2(Triples).
-
-% consume all triples; we have already tested the list and know that all match
-use_owl_2([]).
-use_owl_2([owl(S,P,O)|Triples]) :-
-        use_owl(S,P,O),
-        use_owl_2(Triples).
-
-
-use_owl(X1,Y1,Z1) :-
-	expand_ns(X1,X),
-	expand_ns(Y1,Y),
-	expand_ns(Z1,Z),
-	owl(X,Y,Z, not_used),
-	debug(owl_parser_detail,'using ~w ~w ~w',[X,Y,Z]),
-	retract(owl(X,Y,Z, not_used)),
-	assert(owl(X,Y,Z,used1)).
-
-use_owl(X1,Y1,Z1,named) :-
-	expand_ns(X1,X),
-	expand_ns(Y1,Y),
-	expand_ns(Z1,Z),
-	owl(X,Y,Z, not_used),
-	\+ sub_string(X,0,1,_,'_'),
-	retract(owl(X,Y,Z, not_used)),
-	assert(owl(X,Y,Z,used2)).
-
-use_owl(X1,Y1,Z1,Term) :-
-	expand_ns(X1,X),
-	expand_ns(Y1,Y),
-	expand_ns(Z1,Z),
-	owl(X,Y,Z, not_used),
-	debug(owl_parser_detail,'using ~w ~w ~w',[X,Y,Z]),
-	retract(owl(X,Y,Z, not_used)),
-	assert(owl(X,Y,Z,used(Term))).
-
-
-%%	use_owl(?S,?P,?O,+Named,Term)
-%
-%       Named = named: Same as use_owl/3, but marks only if S 	is Named URI (i.e. non blank node).
-
-use_owl(X1,Y1,Z1,named,Term) :-
-	expand_ns(X1,X),
-	expand_ns(Y1,Y),
-	expand_ns(Z1,Z),
-	owl(X,Y,Z, not_used),
-	\+ sub_string(X,0,1,_,'_'),
-	retract(owl(X,Y,Z, not_used)),
-	assert(owl(X,Y,Z,used(Term))).
-
-
-%%       expand_ns(+NS_URL, ?Full_URL)
-%
-%       Expands a 'namespaced' URI of the form ns:fragment to a full URI
-%       substituting the full expansion for ns from the ns/2 facts
-expand_ns(NS_URL, Full_URL) :-
-	nonvar(NS_URL),
-	NS_URL \= literal(_),
-	uri_split(NS_URL,Short_NS,Term, ':'),
-	rdf_db:ns(Short_NS,Long_NS),!,
-	concat_atom([Long_NS,Term],Full_URL).
-
-expand_ns(URL, URL).
-
-
-%%       collapse_ns(+FullURL, ?NSURL, +Char, +Options)
-%
-%	Collapses a full URI of the form Path#fragment to a Namespaced
-%	URI NS:fragment substituting the full expansion for ns from
-%	the ns/2 facts
-%	Char is either ':' for normal ns notation or '_' for builing
-%	prolog terms.
-%	Options supported: no_base(ShortNs): Use only term!
-
-
-collapse_ns(FullURL, NSURL,Char,Options) :-
-	nonvar(FullURL),
-	FullURL \= literal(_),
-	uri_split(FullURL,LongNS, Term, '#'),
-	concat(LongNS,'#',LongNS1),
-	rdf_db:ns(ShortNS,LongNS1),
-	(   member(no_base(ShortNS),Options), ! , NSURL = Term
-	;
-	concat_atom([ShortNS,Char,Term],NSURL)
-	),!.
-% CJM
-collapse_ns(FullURL, NSURL,_Char,Options) :-
-	nonvar(FullURL),
-	\+ FullURL = literal(_),
-	uri_split(FullURL,LongNS, Term, '#'),
-	member(no_base(LongNS),Options),
-        !,
-        NSURL = Term.
-
-
-collapse_ns(URL, URL,_,_).
-
-
-
-%%       uri_split(+URI,-Namespace,-Term,+Split_Char) is det
-%
-%       Splits a URI into the Namespace and the Term parts
-%       separated by the Split_Char character.
-%       It supposes URI = concat(Namespace,Split_Char,Term)
-
-uri_split(URI,Namespace,Term,Split_Char) :-
-	sub_atom(URI,Start,_,After,Split_Char),
-	sub_atom(URI,0,Start,_,Namespace),
-	Start1 is Start + 1,
-	sub_atom(URI,Start1,After,_,Term).
-
-
-%%       owl_collect_linked_nodes(+Node,+Predicate, +InList,-OutList)
-
-%	Appends Node to the InList, and recursively, all other
-%	Nodes that are linked with the Predicate to the Node. The
-%	result is returned to OutList.
-
-owl_collect_linked_nodes(Node,Predicate,InList,OutList) :-
-	use_owl(Node,Predicate,A),!,
-	owl_collect_linked_nodes(Node,Predicate,InList,List1),
-	owl_collect_linked_nodes(A,Predicate,List1,OutList).
-
-owl_collect_linked_nodes(Node,Predicate,InList,OutList) :-
-	use_owl(A,Predicate,Node),!,
-	owl_collect_linked_nodes(Node,Predicate,InList,List1),
-	owl_collect_linked_nodes(A,Predicate,List1,OutList).
-
-owl_collect_linked_nodes(Node,_,List, [Node|List]) :-
-	\+ memberchk(Node, List),!.
-
-owl_collect_linked_nodes(_,_,List, List) :- !.
-
-
-% ----------------------------------------------------------------
-%                OWL Parser implementation predicates
-% ----------------------------------------------------------------
-
-
-%%       owl_get_bnode(+Node,+Description)
-%
-%	if Node is a blank (not named) node, then it is asserted in
-%	the database as a blanknode(Node,Description,used) term.
-%	The purpose is to record when a blank node has been used, so
-%	subsequent uses of it will result in structure sharing.
-
-owl_get_bnode(Node,Description) :-
-	sub_string(Node,0,1,_,'_'),!,
-	\+ blanknode(Node,_,_),
-	assert(blanknode(Node,Description, used)).
-
-owl_get_bnode(_,_).
-
-
-
-% -----------------------------------------------------------------------
-%                                Top Level  Predicates
-% -----------------------------------------------------------------------
-
-/*:- multifile owl2_io:load_axioms_hook/3.
-
-owl2_io:load_axioms_hook(File,owl,Opts) :-
-        owl_parse_rdf(File,Opts).
-
-owl2_io:load_axioms_hook(File,ttl,Opts) :-
-        ensure_loaded(library('semweb/rdf_turtle')),
-        owl_parse_rdf(File,Opts).
-*/
-%% owl_parse_rdf(+File)
-% as owl_parse_rdf/1 with empty Opts
-owl_parse_rdf(F):-
-	owl_parse_rdf(F,[]).
-
-%% owl_parse_rdf(+File,+Opts:list)
-% @param Opts
-%  * imports(ImportFlag:Boolean) if true, follow imports
-%  * clear(Clear) if Clear=complete, clears all axioms in owl2_model
-owl_parse_rdf(F,Opts):-
-	(   member(imports(Imports),Opts)
-	->  true
-	;   Imports=false),
-	(   member(clear(Clear),Opts)
-	->  true
-	;   Clear=false),
-	owl_parse(F,Clear,Clear,Imports),
-	debug(owl_parser,'parsed ~w',[F]).
-
-
-
-
-%% owl_parse(+URL, +RDF_Load_Mode, +OWL_Parse_Mode, +ImportFlag:boolean)
-%
-%  Top level: parse a set of RDF triples and produce an
-%  AS representation of an OWL ontology.
-%
-%	Calls the rdf_load_stream predicate to parse RDF stream in URL.
-%       If RDF_Load_Mode = complete it first retacts all rdf triples.
-%       If ImportFlag = true it handles owl:import clause at RDF level.
-%
-% This implements the mapping defined here:
-% http://www.w3.org/TR/2008/WD-owl2-mapping-to-rdf-20081202/
-owl_parse(URL, RDF_Load_Mode, OWL_Parse_Mode,ImportFlag) :-
-	(   RDF_Load_Mode=complete
-	->  rdf_retractall(_,_,_), retractall(rdf_db:rdf_source(_,_,_,_))
-        ;   true),
-	(   OWL_Parse_Mode=complete
-        ->  owl_clear_as,retractall(blanknode(_,_,_)), retractall(owl(_,_,_,_))
-        ;   true),
-        !,
-        debug(owl_parser,'Loading stream ~w',[URL]),
-	owl_canonical_parse_2([URL],URL,ImportFlag,[],ProcessedIRIs),
-        debug(owl_parser,'rdf_db populated, the following IRIs were processed: ~w',[ProcessedIRIs]),
-	owl2_model_init,
-	owl_canonical_parse_3(ProcessedIRIs).
-
-%% owl_canonical_parse_2(+IRIs:list,+ParentIRI,+ImportFlag:boolean,+ProcessedURIsIn:list,?ProcessedURIsOut:list) is det
-% recursively parses all ontologies in IRIs into rdf_db, ensuring none are processed twice.
-owl_canonical_parse_2([],_,_,Processed,Processed) :- !.
-
-owl_canonical_parse_2([IRI|ToProcessRest],Parent,ImportFlag,ProcessedIn,ProcessedOut) :-
-	member(IRI,ProcessedIn),
-        !,
-	owl_canonical_parse_2(ToProcessRest,Parent,ImportFlag,ProcessedIn,ProcessedOut).
-
-owl_canonical_parse_2([IRI|ToProcessRest],Parent,ImportFlag,ProcessedIn,ProcessedOut) :-
-	% Get rdf triples, *Ontology* and Imports
-	rdf_load_stream(IRI,O,BaseURI,Imports),
-	(   nonvar(O)
-        ->  Ont = O
-        ;   Ont = Parent), % in the include case we may need to remove the import...
-        debug(owl_parser,'Commencing rdf_2_owl. Generating owl/4',[]),
-	rdf_2_owl(BaseURI,Ont),  	% move the RDF triples into the owl-Ont/4 facts
-	(   ImportFlag = true
-        ->  owl_canonical_parse_2(Imports,Ont,ImportFlag,[Ont|ProcessedIn],ProcessedIn1)
-        ;   ProcessedIn1=[Ont|ProcessedIn]),
-	owl_canonical_parse_2(ToProcessRest,Parent,ImportFlag,ProcessedIn1,ProcessedOut).
-
-
-%% owl_canonical_parse_3(+IRIs:list) is det
-% translate the current rdf_db into owl2_model axioms.
-% First owl/4 facts are populated, and then these are translated
-% according to:
-% http://www.w3.org/TR/2008/WD-owl2-mapping-to-rdf-20081202/
-% (table references refer to this document).
-% we use an intermediate owl/4 database because the mapping
-% is non-monotonic, and triples are 'consumed'
-owl_canonical_parse_3([]).
-
-owl_canonical_parse_3([IRI|Rest]) :-
-	% Remove any existing not used owl fact
-	retractall(owl(_,_,_,not_used)),
-	% Copy the owl facts of the IRI document to the 'not_used'
-	forall(owl(S,P,O,IRI),assert(owl(S,P,O,not_used))),
-
-        debug(owl_parser,'Anon individuals in reification [see table 8]',[]),
-
-
-	collect_r_nodes,
-
-	% First parse the Ontology axiom
-        owl_parse_annotated_axioms(ontology/1),
-
-        debug(owl_parser,'Replacing patterns [see table 5]',[]),
-	% remove triples based on pattern match (Table 5)
-	(   forall((triple_remove(Pattern,Remove), test_use_owl(Pattern)),
-	        forall(member(owl(S,P,O),Remove),use_owl(S,P,O,removed))) -> true ; true),
-
-
-        % temporary fix to make up for bug in rdf parsing
-        % see email to JanW July-1-2009
-        forall((test_use_owl(S,P,BNode),
-                atom(BNode),
-                sub_atom(BNode,0,1,_,'_'),
-                test_use_owl(BNode,'http://www.w3.org/1999/02/22-rdf-syntax-ns#datatype',literal(_))),
-               (   use_owl(S,P,BNode,datatype_fix),
-                   use_owl(BNode,'http://www.w3.org/1999/02/22-rdf-syntax-ns#datatype',literal(_)),
-                   expand_and_assert(S,P,literal('')))),
-
-	% replace matched patterns (Table 6)
-        debug(owl_parser,'Replacing patterns [see table 6]',[]),
-	(   setof(ReplaceWith,
-                  Pattern^(   triple_replace(Pattern,ReplaceWith), % +Triples:list, ?Triples:list
-                              use_owl(Pattern),
-                              debug(owl_parser,'Replacing ~w ==> ~w [see table 6]',[Pattern,ReplaceWith])),
-                  ReplacementSetList)
-        ->  forall((member(ReplacementSet,ReplacementSetList),member(owl(S,P,O),ReplacementSet)),
-                   expand_and_assert(S,P,O))
-        ;   debug(owl_parser,'No replacements required',[])),
-
-        /*
-	forall(triple_replace(Pattern,ReplaceWith),
-               forall(use_owl(Pattern),
-                      forall(member(owl(S,P,O),ReplaceWith),
-                             (   expand_and_assert(S,P,O),
-                                 debug(owl_parser,'Replacing ~w ==> ~w [see table 6]',[Pattern,owl(S,P,O)]))))),
-        */
-
-	% continue with parsing using the rules...
-	% Table 8, get the set of RIND - anonymous individuals in reification
-	findall(X, (member(Y,['owl:Axiom','owl:Annotation',
-			      'owl:AllDisjointClasses','owl:AllDisljointProperties',
-			      'owl:AllDifferent','owl:NegativePropertyAssertion']),
-                    test_use_owl(X,'rdf:type',Y)
-                   ),
-                RIND),
-	nb_setval(rind,RIND),
-
-        % Table 9, row 5
-	% VV 10/3/2010 get the annotation properties before collecting the annotations.
-        debug(owl_parser,'asserting annotationProperty/1 for all APs',[]),
-	forall( test_use_owl(D,'rdf:type','owl:AnnotationProperty'),
-		assert_axiom(annotationProperty(D))),
-
-        % TODO - make this faster
-        debug(owl_parser,'Implements function ANN(x) 3.2.2 Table 10.',[]),
-	findall(_,ann(_,_),_), % find all annotations, assert annotation(X,AP,AV) axioms.
-
-        debug(owl_parser,'Commencing parse of annotated axioms',[]),
-        forall((axiompred(PredSpec),\+dothislater(PredSpec),\+omitthis(PredSpec)),
-               owl_parse_annotated_axioms(PredSpec)),
-        forall((axiompred(PredSpec),dothislater(PredSpec),\+omitthis(PredSpec)),
-               owl_parse_annotated_axioms(PredSpec)),
-
-        debug(owl_parser_detail,'Commencing parse of unannotated axioms',[]),
-        forall((axiompred(PredSpec),\+dothislater(PredSpec),\+omitthis(PredSpec)),
-               owl_parse_nonannotated_axioms(PredSpec)),
-        forall((axiompred(PredSpec),dothislater(PredSpec),\+omitthis(PredSpec)),
-               owl_parse_nonannotated_axioms(PredSpec)),!,
-	% annotation Assertion
-	parse_annotation_assertions,
-	forall(owl_parse_compatibility_DL(Axiom),assert_axiom(Axiom)),
-	owl_canonical_parse_3(Rest).
-
-rdf_db_to_owl :-
-	owl2_model_init,
-        findall(BaseURI,
-                (   rdf(Ont,'http://www.w3.org/1999/02/22-rdf-syntax-ns#type','http://www.w3.org/2002/07/owl#Ontology',BaseURI:_),
-                    rdf_2_owl(BaseURI,Ont),
-                    owl_canonical_parse_3(IRIs)),
-                IRIs).
-
-%% translate_rdf_db(+IRI)
-% translates a graph in current rdf_db instance into an owl2_model.pl set of facts.
-% assumes that IRI has already been loaded using the semweb package
-translate_rdf_db(BaseURI) :-
-        rdf(Ont,'http://www.w3.org/1999/02/22-rdf-syntax-ns#type','http://www.w3.org/2002/07/owl#Ontology',BaseURI:_),
-        !,
-        rdf_2_owl(BaseURI,Ont),
-        owl2_model_init,
-        owl_canonical_parse_3(BaseURI).
-
-
-omitthis(ontology/1).
-
-
-owl_parse_annotated_axioms(Pred/Arity) :-
-        debug(owl_parser_detail,'[ann] Parsing all of type: ~w',[Pred]),
-        functor(Head,Pred,Arity),
-%        forall(owl_parse_axiom(Mod:Head),
-%               (   debug(owl_parser_detail,' parsed: [~w] ~w',[Mod,Head]),
-%                   assert(Mod:Head))).
-	forall(owl_parse_axiom(Head,true,Annotations),
-	       (   assert_axiom(Head),
-	           debug(owl_parser_detail_anns,' parsed: ~w : anns: ~w',[Head,Annotations]),
-		   forall(member(X,Annotations),
-			  forall(aNN(X,AP,AV),
-				 assert_axiom(annotation(Head,AP,AV))
-		          )
-			 )
-	       )
-	      ),
-        debug(owl_parser_detail,'[ann] Done parsing all of type: ~w',[Pred]).
-
-owl_parse_nonannotated_axioms(Pred/Arity) :-
-        debug(owl_parser_detail,'[unann] Parsing all of type: ~w',[Pred]),
-        functor(Head,Pred,Arity),
-	forall(owl_parse_axiom(Head,false,_),
-	       assert_axiom(Head)
-	      ).
-
-
-
-%%       rdf_load_stream(+URL, -Ontology, -BaseURI, -Imports:list) is det
-%
-%	This predicate calls the rdf parser to parse the RDF/XML URL
-%	into RDF triples. URL can be a local file or a URL.
-%	The predicate returns all Imports based on the 	owl:imports predicate.
-%	Also the Ontology of the URL if an owl:Ontology exists, var
-%	otherise.
-%
-%       If owl_repository/2 is defined, then this is used to map URLs
-%       prior to loading.
-
-
-rdf_load_stream(URL,Ontology,BaseURI,Imports) :-
-        owl_repository(URL,RURL),
-        !,
-        % note: users responsibility to avoid infinite loops by avoid cycles in repository mappings!
-        rdf_load_stream(RURL,Ontology,BaseURI,Imports).
-
-rdf_load_stream(URL,Ontology,BaseURI,Imports) :-
-	BaseURI = URL,
-  	(   sub_atom(URL,0,4,_,'http')
-        ->  catch((http_open(URL,RDF_Stream,[]),
-	      rdf_load(RDF_Stream,[if(true),base_uri(BaseURI),blank_nodes(noshare),
-				   result(Action, Triples, MD5),register_namespaces(true)]),
-		   debug(owl_parser,' Loaded ~w stream: ~w Action: ~w Triples:~w MD5: ~w',[URL,RDF_Stream,Action,Triples,MD5]),
-                   close(RDF_Stream)),
-                  Message,
-                  throw(io_error(URL,'rdf_load/2 failed',Message))) % re-throw with more information
-        ;  RDF_Stream = URL, rdf_load(RDF_Stream,[blank_nodes(noshare),if(true),base_uri(BaseURI),register_namespaces(true)])
-	),
-        % collect all imports directives
-	(   rdf(Ontology,'http://www.w3.org/1999/02/22-rdf-syntax-ns#type','http://www.w3.org/2002/07/owl#Ontology',BaseURI:_)
-        ->  findall(I,rdf(Ontology,'http://www.w3.org/2002/07/owl#imports',I,BaseURI:_),Imports)
-	;   Imports = []
-	).
-
-
-
-% ----------------------------------------------------------------
-% 3 Mapping from RDF Graphs to the Structural Specification
-% ----------------------------------------------------------------
-
-/*
-
-  This section specifies the results of steps CP-2.2 and CP-3.3 of the
-  canonical parsing process from Section 3.6 of the OWL 2
-  Specification [OWL 2 Specification] on an ontology document D that
-  can be parsed into an RDF graph G. ...
-
-  */
-
-%       owl_description_list(+Node, -List)
-%
-%       If +Node is defined as rdf:type rdf:List, then List returns
-%       a prolog list of descriptions for this Node.
-
-owl_description_list('http://www.w3.org/1999/02/22-rdf-syntax-ns#nil',[]) :- !.
-
-owl_description_list(X,[F|R]) :-
-	% use_owl(X,'rdf:type','rdf:List',list), % this is now removed from graph
-	use_owl(X,'rdf:first',Element,first),
-	owl_description(Element,F),
-	use_owl(X,'rdf:rest',Y,rest),
-	!,owl_description_list(Y,R).
-
-
-%       owl_individual_list(+Node, -List)
-%
-%       If +Node is defined as rdf:type rdf:List, then List returns
-%       a prolog list of individuals for this Node.
-
-owl_individual_list('http://www.w3.org/1999/02/22-rdf-syntax-ns#nil',[]) :- !.
-
-owl_individual_list(X,[F|R]) :-
-	% use_owl(X,'rdf:type','rdf:List',list), % this is now removed from graph
-	use_owl(X,'rdf:first',F,first),
-	use_owl(X,'rdf:rest',Y,rest),
-	!,owl_individual_list(Y,R).
-
-%       owl_property_list(+Node, -List)
-%
-%       If +Node is defined as rdf:type rdf:List, then List returns
-%       a prolog list of properties for this Node.
-
-owl_property_list('http://www.w3.org/1999/02/22-rdf-syntax-ns#nil',[]) :- !.
-
-owl_property_list(X,[F|R]) :-
-	% use_owl(X,'rdf:type','rdf:List',list), % this is now removed from graph
-	use_owl(X,'rdf:first',Element,first),
-	owl_property_expression(Element,F),
-	use_owl(X,'rdf:rest',Y,rest),
-	!,owl_property_list(Y,R).
-
-%       owl_datarange_list(+Node, -List)
-%
-%       If +Node is defined as rdf:type rdf:List, then List returns
-%       a prolog list of dataranges for this Node.
-
-owl_datarange_list('http://www.w3.org/1999/02/22-rdf-syntax-ns#nil',[]) :- !.
-
-owl_datarange_list(X,[F|R]) :-
-	% use_owl(X,'rdf:type','rdf:List',list), % this is now removed from graph
-	use_owl(X,'rdf:first',Element,first),
-	owl_datarange(Element,F),
-	use_owl(X,'rdf:rest',Y,rest),
-	!,owl_datarange_list(Y,R).
-
-%       owl_datatype_restriction_list(+Node, -List)
-%
-%       If +Node is defined as rdf:type rdf:List, then List returns
-%       a prolog list of datatype restrictions for this Node.
-
-owl_datatype_restriction_list('http://www.w3.org/1999/02/22-rdf-syntax-ns#nil',[]) :- !.
-
-owl_datatype_restriction_list(X,[facetRestriction(W2,L)|R]) :-
-	% use_owl(X,'rdf:type','rdf:List'), % this is now removed from graph
-	use_owl(X,'rdf:first',Element,first_datatype_restr),
-	use_owl(Element,W,L,datatype_restr),
-	(   concat_atom([_,W2],'#',W)
-	->  true
-	;   W2=W),
-	use_owl(X,'rdf:rest',Y,rest_datatype_restr),
-	!,owl_datatype_restriction_list(Y,R).
-
-
-% 3.1 Extracting Declarations and the IRIs of the Directly Imported Ontology Documents
-% This section specifies the result of step CP-2.2 of the canonical parsing process on an RDF graph G
-
-
-% 3.1.2 Parsing of the Ontology Header and Declarations
-
-%  Table 4.
-owl_parse_axiom(ontology(O),AnnMode,List) :-
-        test_use_owl(O,'rdf:type','owl:Ontology'),
-	\+ test_use_owl([owl(U,_W,O),owl(U,'rdf:type','owl:Ontology')]),
-	valid_axiom_annotation_mode(AnnMode,O,'rdf:type','owl:Ontology',List),
-        use_owl(O,'rdf:type','owl:Ontology',ontology),
-        nb_setval(current_ontology,O),
-	forall(use_owl(O,'owl:imports',IRI,ontology_import), assert_axiom(ontologyImport(O,IRI))),
-	forall(use_owl(O,'owl:versionInfo',IRI2,ontology_version_info), assert_axiom(ontologyVersionInfo(O,IRI2))),!. % Do Once
-
-
-% See table 5.
-% triple_remove(Pattern:list,Remove:list)
-% if Pattern is present, remove triples in Remove
-triple_remove([owl(X,'rdf:type','owl:Ontology')],[owl(X,'rdf:type','owl:Ontology')]).
-triple_remove([owl(X,'rdf:type','owl:Class'),owl(X,'rdf:type','rdfs:Class')],[owl(X,'rdf:type','rdfs:Class')]).
-triple_remove([owl(X,'rdf:type','rdfs:Datatype'),owl(X,'rdf:type','rdfs:Class')],[owl(X,'rdf:type','rdfs:Class')]).
-triple_remove([owl(X,'rdf:type','owl:DataRange'),owl(X,'rdf:type','rdfs:Class')],[owl(X,'rdf:type','rdfs:Class')]).
-triple_remove([owl(X,'rdf:type','owl:Restriction'),owl(X,'rdf:type','rdfs:Class')],[owl(X,'rdf:type','rdfs:Class')]).
-triple_remove([owl(X,'rdf:type','owl:Restriction'),owl(X,'rdf:type','owl:Class')],[owl(X,'rdf:type','owl:Class')]).
-triple_remove([owl(X,'rdf:type','owl:ObjectProperty'),owl(X,'rdf:type','rdf:Property')],[owl(X,'rdf:type','rdf:Property')]).
-triple_remove([owl(X,'rdf:type','owl:FunctionalProperty'),owl(X,'rdf:type','rdf:Property')],[owl(X,'rdf:type','rdf:Property')]).
-triple_remove([owl(X,'rdf:type','owl:InverseFunctionalProperty'),owl(X,'rdf:type','rdf:Property')],[owl(X,'rdf:type','rdf:Property')]).
-triple_remove([owl(X,'rdf:type','owl:TransitiveProperty'),owl(X,'rdf:type','rdf:Property')],[owl(X,'rdf:type','rdf:Property')]).
-triple_remove([owl(X,'rdf:type','owl:DatatypeProperty'),owl(X,'rdf:type','rdf:Property')],[owl(X,'rdf:type','rdf:Property')]).
-triple_remove([owl(X,'rdf:type','owl:AnnotationProperty'),owl(X,'rdf:type','rdf:Property')],[owl(X,'rdf:type','rdf:Property')]).
-triple_remove([owl(X,'rdf:type','owl:OntologyProperty'),owl(X,'rdf:type','rdf:Property')],[owl(X,'rdf:type','rdf:Property')]).
-triple_remove([owl(X,'rdf:type','rdf:List'),owl(X,'rdf:first',_Y),owl(X,'rdf:rest',_Z)],[owl(X,'rdf:type','rdf:List')]).
-/*
-   triple_remove([owl(X,'rdf:type','owl:Thing')],[owl(X,'rdf:type','owl:Thing')]).
-*/
-% See table 6.
-% http://www.w3.org/TR/2008/WD-owl2-mapping-to-rdf-20081202/
-triple_replace([owl(X,'rdf:type','owl:OntologyProperty')],[owl(X,'rdf:type','owl:AnnotationProperty')]).
-triple_replace([owl(X,'rdf:type','owl:InverseFunctionalProperty')],[owl(X,'rdf:type','owl:ObjectProperty'),owl(X,'rdf:type','owl:InverseFunctionalProperty')]).
-triple_replace([owl(X,'rdf:type','owl:TransitiveProperty')],[owl(X,'rdf:type','owl:ObjectProperty'),owl(X,'rdf:type','owl:TransitiveProperty')]).
-triple_replace([owl(X,'rdf:type','owl:SymmetricProperty')],[owl(X,'rdf:type','owl:ObjectProperty'),owl(X,'rdf:type','owl:SymmetricProperty')]).
-
-% NOTE: this is not specified in table 6. However, we treat rdfs:Classes as equivalent to owl:Classes
-triple_replace([owl(X,'rdf:type','rdfs:Class')],[owl(X,'rdf:type','owl:Class')]).
-
-% DECLARATIONS
-%
-% See table 7.
-% http://www.w3.org/TR/2008/WD-owl2-mapping-to-rdf-20081202/
-
-%% owl_parse_axiom(+AxiomSpec,+AnnMode:boolean,?AnnList:list) is det
-%
-% None
-%
-owl_parse_axiom(class(C),AnnMode,List) :-
-	test_use_owl(C,'rdf:type','owl:Class'),
-	valid_axiom_annotation_mode(AnnMode,C,'rdf:type','owl:Class',List),
-        (   use_owl(C,'rdf:type','owl:Class',named,class(C)) -> true ; use_owl(C,'rdf:type','rdfs:Class',named,class(C))),
-	\+ class(C).
-
-
-owl_parse_axiom(datatype(D), AnnMode, List) :-
-        test_use_owl(D,'rdf:type','rdf:Datatype'),
-        valid_axiom_annotation_mode(AnnMode,D,'rdf:type','rdf:Datatype',List),
-        use_owl(D,'rdf:type','rdf:Datatype',datatype(D)).
-
-
-owl_parse_axiom(objectProperty(D), AnnMode, List) :-
-        test_use_owl(D,'rdf:type','owl:ObjectProperty'),
-        valid_axiom_annotation_mode(AnnMode,D,'rdf:type','owl:ObjectProperty',List),
-        use_owl(D,'rdf:type','owl:ObjectProperty',objectProperty(D)),
-	\+ objectProperty(D).
-
-
-% note the difference in names between syntax and rdf
-owl_parse_axiom(dataProperty(D), AnnMode, List) :-
-        test_use_owl(D,'rdf:type','owl:DatatypeProperty'),
-        valid_axiom_annotation_mode(AnnMode,D,'rdf:type','rdf:DatatypeProperty',List),
-        use_owl(D,'rdf:type','owl:DatatypeProperty',dataProperty(D)),
-	\+ dataProperty(D).
-
-owl_parse_axiom(annotationProperty(D), AnnMode, List) :-
-        test_use_owl(D,'rdf:type','owl:AnnotationProperty'),
-        valid_axiom_annotation_mode(AnnMode,D,'rdf:type','rdf:AnnotationProperty',List),
-        use_owl(D,'rdf:type','owl:AnnotationProperty',annotationProperty(D)),
-	\+ annotationProperty(D).
-
-
-% TODO: check this. do we need to assert individual axioms if all we have is an rdf:type?
-owl_parse_axiom(namedIndividual(D), AnnMode, List) :-
-        test_use_owl(D,'rdf:type','owl:NamedIndividual'),
-        valid_axiom_annotation_mode(AnnMode,D,'rdf:type','rdf:NamedIndividual',List),
-        use_owl(D,'rdf:type','owl:NamedIndividual',namedIndividual(D)).
-
-
-% Table 8. Identifying Anonymous Individuals in Reification
-% TODO
-
-
-% 3.2 Populating an Ontology
-
-
-% 3.2.1 Analyzing Declarations
-
-% 3.2.2 Parsing of Annotations
-
-%
-%       ann(?X, -Extension List)
-%
-%       Implements function ANN(x) 3.2.2 Table 10
-%
-%     The annotations in G are parsed next. The function ANN assigns a
-%     set of annotations ANN(x) to each IRI or blank node x. This
-%     function is initialized by setting ANN(x) = â.. for each each IRI
-%     or blank node x. Next, the triple patterns from Table 10 are
-%     matched in G and, for each matched pattern, ANN(x) is extended
-%     with an annotation from the right column. Each time one of these
-%     triple patterns is matched, the matched triples are removed from
-%     G. This process is repeated until no further matches are
-%     possible
-
-ann(X,Y) :-
-	ann(X,X,Y).
-
-
-
-ann(X,X1, annotation(X1,Y,Z)) :-
-	annotationProperty(Y),
-        debug(owl_parser_detail,'annotation property: ~w',[Y]),
-        owl(X,Y,Z,not_used),
-        use_owl(X,Y,Z,annotationProperty(Y)),
-	u_assert(aNN(X1,Y,Z)),
-	ann2(X,Y,Z,X1).
-
-
-ann2(X,Y,Z,X1) :-
-	annotation_r_node(X,Y,Z,W),
-	ann(W,annotation(X1,Y,Z),Term),
-        u_assert(Term).
-
-ann2(X,Y,Z,X1) :-
-	axiom_r_node(X,Y,Z,W),
-	ann(W,annotation(X1,Y,Z),Term),
-        u_assert(Term).
-
-
-ann2(_,_,_,_).
-
-
-% 3.2.4 Parsing of Expressions
-
-is_bnode(C) :-
-	atom(C),
-	sub_atom(C,0,1,_,'_').
-
-
-	% Table 11. Parsing Object Property Expressions
-owl_property_expression(C,C) :-
-	\+ is_bnode(C), % better: IRI(C).
-	% VV added 10/3/2011
-	C\='http://www.w3.org/1999/02/22-rdf-syntax-ns#first',
-	C\='http://www.w3.org/1999/02/22-rdf-syntax-ns#rest',
-        !.
-
-owl_property_expression(C,D) :-
-	blanknode(C,D,Use),
-	(   Use = used,
-	    retractall(blanknode(C,D,used)),
-	    assert(blanknode(C,D,shared))
-	;
-	    true).
-
-owl_property_expression(P,inverseOf(Q)) :-
-        use_owl(P,'owl:inverseOf',Q,inverseof(P,Q)),
-        owl_get_bnode(P,inverseOf(Q)).
-
-
-% Table 12. Parsing of Data Ranges
-
-owl_datarange(D,D) :-
-	\+ is_bnode(D),!.  % better: IRI(C).
-
-owl_datarange(C,D) :-
-	blanknode(C,D,Use),
-	(   Use = used,
-	    retractall(blanknode(C,D,used)),
-	    assert(blanknode(C,D,shared))
-	;
-	true).
-
-owl_datarange(D,intersectionOf(L)) :-
-	use_owl(D,'rdf:type','rdfs:Datatype',datarange(D)),
-	use_owl(D,'owl:intersectionOf',Y,datarange(D)),
-	%print(D-inter-Y),nl,
-        owl_datarange_list(Y,L),
-	owl_get_bnode(D,intersectionOf(L)).
-
-owl_datarange(D,unionOf(L)) :-
-	use_owl(D,'rdf:type','rdfs:Datatype',datarange(D)),
-	use_owl(D,'owl:unionOf',Y,datarange(D)),
-        owl_datarange_list(Y,L),
-	owl_get_bnode(D,unionOf(L)).
-
-
-owl_datarange(D,complementOf(DY)) :-
-	use_owl(D,'rdf:type','rdfs:Datatype',dataRange(D)),
-	use_owl(D,'owl:datatypeComplementOf',Y,datacomplement(D)),
-        owl_datarange(Y,DY),
-	owl_get_bnode(D,complementOf(DY)).
-
-% Table 14, case 2
- owl_datarange(D,complementOf('rdfs:Literal')) :-
-	use_owl(D,'rdf:type','rdfs:DataRange',dataRange(D)),
-	use_owl(D,'owl:oneOf',[],oneOf(D)),
-	owl_get_bnode(D,complementOf('rdfs:Literal')).
-
-owl_datarange(D,oneOf(L)) :-
-	use_owl(D,'rdf:type','rdfs:Datatype',dataType(D)),
-	use_owl(D,'owl:oneOf',L1,oneOf(D)),
-	owl_individual_list(L1,L),
-	owl_get_bnode(D,oneOf(L)).
-
-% Table 14, case 1
-owl_datarange(D,oneOf(L)) :-
-	use_owl(D,'rdf:type','rdfs:DataRange',datarange(D)),
-	use_owl(D,'owl:oneOf',L1,datarange(D)),
-	owl_individual_list(L1,L),
-	owl_get_bnode(D,oneOf(L)).
-
-
-owl_datarange(D,datatypeRestriction(DY,L)) :-
-	use_owl(D,'rdf:type','rdfs:Datatype',datarange(D)),
-	use_owl(D,'owl:onDatatype',Y,datarange(D)),
-	owl_datarange(Y,DY),
-	use_owl(D,'owl:withRestrictions',L1,datarange(D)),
-	owl_datatype_restriction_list(L1,L),
-	owl_get_bnode(D,datatypeRestriction(DY,L)).
-
-% Table 13. Parsing of Class Expressions
-
-% ----------------------------------------------------------------------
-%       owl_description(+Node,-Description).
-%
-%	It implements OWL AS production rules for Descriptions.
-%         During the construction of the Description any blank node
-%         is recorded for later structure sharing checks.
-
-owl_description(C,C) :-
-	\+ is_bnode(C),!. % better: IRI(C).
-
-
-owl_description(C,D) :-
-	blanknode(C,D,Use),
-	(   Use = used,
-	    retractall(blanknode(C,D,used)),
-	    assert(blanknode(C,D,shared))
-	;
-	    true),!.
-
-% TODO: this leaves behind classAssertions of type owlClass for the bnodes
-owl_description(D,intersectionOf(L)) :-
-	use_owl(D,'owl:intersectionOf',L1,intersectionOf(D)),
-	owl_description_list(L1,L),
-	\+L = [],
-	owl_get_bnode(D,intersectionOf(L)),!.
-
-owl_description(D,unionOf(L)) :-
-	use_owl(D,'owl:unionOf',L1,union(D)),
-	owl_description_list(L1,L),
-	owl_get_bnode(D,unionOf(L)),!.
-
-
-owl_description(D,complementOf(Descr)) :-
-	use_owl(D,'owl:complementOf',D1,complementOf(D)),
-	owl_description(D1,Descr),
-	owl_get_bnode(D,complementOf(Descr)),!.
-
-owl_description(D,oneOf(L)) :-
-	use_owl(D,'owl:oneOf',L1,oneOf(D)),
-	(   use_owl(D,'rdf:type','owl:Class',oneOf(D,L)) ; true),
-	owl_individual_list(L1,L),
-	owl_get_bnode(D,oneOf(L)),!.
-
-owl_description(D,datatypeRestriction(DY,L)) :-
-	use_owl(D,'rdf:type','rdfs:Datatype',datatypeRestr(D)),
-	use_owl(D,'owl:onDatatype',Y,dataType(D)),
-	owl_datarange(Y,DY),
-	use_owl(D,'owl:withRestrictions',L1,withRestrictions(D)),
-	owl_datatype_restriction_list(L1,L),
-	owl_get_bnode(D,datatypeRestriction(DY,L)).
-
-owl_description(D,Restriction) :-
-	owl_restriction(D, Restriction),
-	owl_get_bnode(D,Restriction),!.
-
-
-% Table 15 - OWL DL compatibility class expressions
-%
-owl_description(D,Result) :-
-	\+ is_bnode(D), % better: IRI(C).
-	use_owl(D,'rdf:type','owl:Class',description(D)),
-	use_owl(D,'owl:unionOf',L,unionOf(L)),
-	owl_description_list(L,DL),
-	(   DL = [], Result = 'owl:Nothing' ;
-	    DL = [D1], Result = D1),
-	owl_get_bnode(D,Result),!.
-
-owl_description(D,Result) :-
-	\+ is_bnode(D), % better: IRI(C).
-	use_owl(D,'rdf:type','owl:Class',dl_compatibility_descr(D)),
-	use_owl(D,'owl:intersectionOf',L,intersectionOf(D)),
-	owl_description_list(L,DL),
-	(   DL = [], Result = 'owl:Thing' ;
-	    DL = [D1], Result = D1),
-	owl_get_bnode(D,Result),!.
-
-owl_description(D,Result) :-
-	\+ is_bnode(D),!, % better: IRI(C).
-	use_owl(D,'rdf:type','owl:Class',dl_compatibility_descr(D)),
-	use_owl(D,'owl:oneOf',[],oneOf(D)),
-	Result = 'owl:Nothing',
-	owl_get_bnode(D,Result).
-
-% support older deprecated versions of OWL2 spec. See for example hydrology.owl
-onClass(E,D) :- use_owl(E,'http://www.w3.org/2006/12/owl2#onClass',D,onClass(E)).
-onClass(E,D) :- use_owl(E,'owl:onClass',D,onClass(E)).
-
-onDataRange(E,D) :- use_owl(E, 'owl:onDataRange',D,onDatarange(E)).
-
-
-%       owl_restriction(+Element,-Restriction).
-%
-%       If Element is defined as a owl:Restriction on property P then
-%       Restriction binds to a restriction(Property,Type) term,
-%	according to OWL Abstract syntax specification.
-
-owl_restriction(Element,Restriction) :-
-	use_owl(Element,'rdf:type','owl:Restriction',restriction(Element)),
-	(   use_owl(Element, 'owl:onProperty',PropertyID,onProperty(Element,PropertyID)) ;
-    	    use_owl(Element, 'owl:onProperties',PropertyID,onProperties(Element,PropertyID))
-	),
-	owl_restriction_type(Element,PropertyID, Restriction),
-        debug(owl_parser_detail,'Restriction: ~w',[Restriction]).
-
-
-
-owl_restriction_type(E, P, someValuesFrom(PX, DX)) :-
-	use_owl(E, 'owl:someValuesFrom',D,someValuesFrom(E,P)),
-	(   owl_description(D, DX) ; owl_datarange(D,DX)),
-        (   P = [_|_], owl_property_list(P,PX) ;  owl_property_expression(P, PX)).
-
-
-owl_restriction_type(E, P, allValuesFrom(PX,DX)) :-
-	use_owl(E, 'owl:allValuesFrom',D,allValuesFrom(E,P)),
-	(   owl_description(D, DX) ; owl_datarange(D,DX)),
-        (   P = [_|_], owl_property_list(P,PX) ;  owl_property_expression(P, PX)).
-
-
-% changed from thea value-->hasValue
-owl_restriction_type(E, P, hasValue(PX,Value)) :-
-	use_owl(E, 'owl:hasValue',Value,hasValue(E)),
-        owl_property_expression(P, PX).
-
-% VV:check if RDF parser returns a triple with O=true for
-owl_restriction_type(E, P, hasSelf(PX)) :-
-	use_owl(E, 'owl:hasSelf', true,hasSelf(E)),
-        owl_property_expression(P, PX).
-
-% Support of deprecated translations:
-% in the OWL2 RDF mapping, unqualified CRs use owl:{min,max}Cardinality
-% and QCQs use owl:{min,ax}QualifiedCardinality
-%
-% however, there appear to be some ontologies; e.g. Hydrology.owl.
-% that use an older mapping, where the same properties are used
-% for QCR and unqCR
-%
-% it is relatively easy to support this legacy ontologies; however
-% we must process these BEFORE unqualified cardinality restrictions.
-
-owl_restriction_type(E, P, exactCardinality(N,PX,DX)) :-
-	test_use_owl(E, 'owl:cardinality',Lit),
-        onClass(E,D),
-	owl_description(D, DX),!,
-	use_owl(E, 'owl:cardinality',Lit,cardinality(E)),
-        literal_integer(Lit,N),
-        owl_property_expression(P, PX).
-
-owl_restriction_type(E, P, minCardinality(N,PX,DX)) :-
-	test_use_owl(E, 'owl:minCardinality',Lit),
-        (   onClass(E,D),owl_description(D, DX)
-        ;   onDataRange(E,D), owl_datarange(D,DX)),
-	!,
-        % we are sure this is an old-style unqualified CR - now consume triples
-	use_owl(E, 'owl:minCardinality',Lit,minCardinality(E)),
-        literal_integer(Lit,N),
-        owl_property_expression(P, PX).
-
-owl_restriction_type(E, P, maxCardinality(N,PX,DX)) :-
-	test_use_owl(E, 'owl:maxCardinality',Lit),
-        (   onClass(E,D),owl_description(D, DX)
-        ;   onDataRange(E,D), owl_datarange(D,DX)),
-	!,
-        % we are sure this is an old-style unqualified CR - now consume triples
-	use_owl(E, 'owl:maxCardinality',Lit,maxCard(E)),
-        literal_integer(Lit,N),
-        owl_property_expression(P, PX).
-
-% END OF Support of deprecated translations:
-
-% the following are all in the spec:
-
-% changed from Thea1->2: cardinality->exactCardinality
-owl_restriction_type(E, P,exactCardinality(N,PX)) :-
-	use_owl(E, 'owl:cardinality',Lit,cardinality(E)),
-        literal_integer(Lit,N),
-        owl_property_expression(P, PX).
-
-owl_restriction_type(E, P,exactCardinality(N,PX,DX)) :-
-	use_owl(E, 'owl:qualifiedCardinality',Lit),literal_integer(Lit,N),
-	(   onClass(E,D),owl_description(D, DX) ;
-	    onDataRange(E,D), owl_datarange(D,DX)
-	),
-        owl_property_expression(P, PX).
-
-
-owl_restriction_type(E, P, minCardinality(N,PX)) :-
-	use_owl(E, 'owl:minCardinality',Lit,cardinality(E)),literal_integer(Lit,N),
-        owl_property_expression(P, PX).
-
-owl_restriction_type(E, P, minCardinality(N,PX,DX)) :-
-	use_owl(E, 'owl:minQualifiedCardinality',Lit,cardinality(E)),literal_integer(Lit,N),
-	(   onClass(E,D),owl_description(D, DX);
-	    onDataRange(E,D), owl_datarange(D,DX)
-	),
-        owl_property_expression(P, PX).
-
-
-owl_restriction_type(E, P, maxCardinality(N,PX)) :-
-	use_owl(E, 'owl:maxCardinality',Lit,maxCardinality(E)),literal_integer(Lit,N),
-        owl_property_expression(P, PX).
-
-owl_restriction_type(E, P, maxCardinality(N,PX,DX)) :-
-	use_owl(E, 'owl:maxQualifiedCardinality',Lit,cardinality(E,Lit)),
-	literal_integer(Lit,N),
-	(   onClass(E,D),owl_description(D, DX);
-	    onDataRange(E,D), owl_datarange(D,DX)),
-        owl_property_expression(P, PX).
-
-
-% Table 14. Parsing of Data Ranges for Compatibility with OWL DL
-% Included into owl_datarange clauses above
-
-% Table 15. Parsing of Class Expressions for Compatibility with OWL DL
-% Included into owl_dexcription clauses above
-
-% Table 16. Parsing of Axioms without Annotations
-% Declarations handled previously
-% CLASS AXIOMS
-% valid_axiom_annotation_mode: add clauses for the disjoint etc ....
-
-collect_r_nodes :-
-	retractall(axiom_r_node(_,_,_,_)),
-	forall(( test_use_owl(Node,'rdf:type','owl:Axiom'),
-		 test_use_owl(Node,'owl:annotatedSource',S),
-		 test_use_owl(Node,'owl:annotatedProperty',P),
-		 test_use_owl(Node,'owl:annotatedTarget',O)),
-	       (assert(axiom_r_node(S,P,O,Node)),
-                debug(owl_parser_detail,'~w',[axiom_r_node(S,P,O,Node)]),
-		use_owl([owl(Node,'rdf:type','owl:Axiom'),
-			 owl(Node,'owl:annotatedSource',S),
-			 owl(Node,'owl:annotatedProperty',P),
-			 owl(Node,'owl:annotatedTarget',O)]))),
-
-	retractall(annotation_r_node(_,_,_,_)),
-	forall(( test_use_owl(W,'rdf:type','owl:Annotation'),
-		 test_use_owl(W,'owl:annotatedSource',S),
-		 test_use_owl(W,'owl:annotatedProperty',P),
-		 test_use_owl(W,'owl:annotatedTarget',O)),
-	       (assert(annotation_r_node(S,P,O,Node)),
-                debug(owl_parser_detail,'~w',[annotation_r_node(S,P,O,Node)]),
-		use_owl([owl(W,'rdf:type','owl:Annotation'),
-			 owl(W,'owl:annotatedSource',S),
-			 owl(W,'owl:annotatedProperty',P),
-			 owl(W,'owl:annotatedTarget',O)]))).
-
-%% valid_axiom_annotation_mode(+AnnMode,+S,+P,+O,?AnnotationNodes:list) is det
-% if AnnMode is true and annotation triples can be found then
-% unify AnnotationNodes with the Nodes that annotate the triple,
-% otherwise []
-
-valid_axiom_annotation_mode(_Mode,S,P,O,List) :-
-        expand_ns(P,PE),
-        findall(Node,axiom_r_node(S,PE,O,Node),List).
-
-
-owl_parse_axiom(subClassOf(DX,DY),AnnMode,List) :-
-	test_use_owl(X,'rdfs:subClassOf',Y),
-	valid_axiom_annotation_mode(AnnMode,X,'rdfs:subClassOf',Y,List),
-	use_owl(X,'rdfs:subClassOf',Y,subclassOf(X,Y)),
-        owl_description(X,DX),
-	owl_description(Y,DY).
-
-% Process each equivalentClass pair separately in order to capture
-% annotations. Block the maximally connected subgraph.
-% TODO. Process the equivalent(L) axioms to generate maximally connected
-% equivalentClasses(L) axioms. (but without annotations?)
-
-owl_parse_axiom(equivalentClasses(DL),AnnMode,List) :-
-	test_use_owl(X,'owl:equivalentClass',Y),
-	valid_axiom_annotation_mode(AnnMode,X,'owl:equivalentClass',Y,List),
-	use_owl(X,'owl:equivalentClass',Y,equivalentClass(X,Y)),
-        % maximally_connected_subgraph_over('owl:equivalentClass',L),
-        maplist(owl_description,[X,Y],DL),
-        debug(owl_parser_detail,'equivalentClasses Descs: ~w',[DL]).
-
-
-owl_parse_axiom(equivalentClasses([C,intersectionOf(D)]),AnnMode,List) :-
-	class(C),
-	test_use_owl(C,'owl:intersectionOf',D1),
-	debug(owl_parser,'equivalent collection; intersection for ~w',[C]),
-	valid_axiom_annotation_mode(AnnMode,C,'owl:intersectionOf',D1,List),
-	owl_description(C,intersectionOf(D)).
-
-owl_parse_axiom(equivalentClasses([C,unionOf(D)]),AnnMode,List) :-
-	class(C),
-	test_use_owl(C,'owl:unionOf',D1),
-	debug(owl_parser,'equivalent collection; union for ~w',[C]),
-	valid_axiom_annotation_mode(AnnMode,C,'owl:unionOf',D1,List),
-	owl_description(C,unionOf(D)).
-
-owl_parse_axiom(equivalentClasses([C,oneOf(D)]),AnnMode,List) :-
-	class(C),
-	test_use_owl(C,'owl:oneOf',D1),
-	debug(owl_parser,'equivalent collection; one of for ~w',[C]),
-	valid_axiom_annotation_mode(AnnMode,C,'owl:oneOf',D1,List),
-	owl_description(C,oneOf(D)).
-
-
-owl_parse_axiom(equivalentClasses([C,D])) :-
-        % TODO: this could be made more efficient by enforcing order of building
-        (   test_use_owl(C,'rdf:type','owl:Class',named)
-        ;   test_use_owl(C,'rdf:type','rdfs:Class',named)
-        ;   class(C)),
-        owl_description(C,D),
-        C\=D.
-
-% TODO. Process the disjointClasses(L) axioms to generate
-% larger set of disjoint: ie if N classes are pairwise DisJoint
-% then we can assert a disjointClasses for all N
-
-owl_parse_axiom(disjointClasses([DX,DY]),AnnMode,List) :-
-	test_use_owl(X,'owl:disjointWith',Y),
-	valid_axiom_annotation_mode(AnnMode,X,'owl:disjointWith',Y,List),
-	use_owl(X,'owl:disjointWith',Y,disjointWith(X,Y)),
-        owl_description(X,DX),
-	owl_description(Y,DY).
-
-% One of the cases where annotations are those of _x and we do not seek
-% for further annotation axioms. Par. 3.2.5.
-% Whatever the AnnNode, _x is returned (will be ignored if mode false
-
-owl_parse_axiom(disjointClasses(L),_AnnMode,[X]) :-
-        % TODO: X may be referred to in an annotation axiom??
-	use_owl(X,'rdf:type','owl:AllDisjointClasses',allDisjointClasses(X)),
-        use_owl(X,'owl:members',L1,members(L1)),
-        owl_description_list(L1,L).
-
-
-owl_parse_axiom(disjointUnion(DX,DY),AnnMode,List) :-
-	test_use_owl(X,'owl:disjointUnionOf',Y),
-	valid_axiom_annotation_mode(AnnMode,X,'owl:disjointUnionOf',Y,List),
-	use_owl(X,'owl:disjointUnionOf',Y,disjointUnionOf(X,Y)),
-        owl_description(X,DX),
-        owl_description_list(Y,DY).
-
-
-% PROPERTY AXIOMS
-
-
-% introduces bnode
-owl_parse_axiom(subPropertyOf(propertyChain(PL),QX),AnnMode,List) :-
-	test_use_owl(Q,'owl:propertyChainAxiom',L1),
-	valid_axiom_annotation_mode(AnnMode,Q,'owl:propertyChainAxiom',L1,List),
-	use_owl(Q,'owl:propertyChainAxiom',L1,propertyChainAxiom(Q)),
-	owl_property_list(L1,PL),
-        owl_property_expression(Q,QX).
-
-owl_parse_axiom(subPropertyOf(PX,QX),AnnMode,List) :-
-	test_use_owl(P,'rdfs:subPropertyOf',Q),
-	valid_axiom_annotation_mode(AnnMode,P,'rdfs:subPropertyOf',Q,List),
-	use_owl(P,'rdfs:subPropertyOf',Q,subPropertyOf(P,Q)),
-        owl_property_expression(P,PX),
-        owl_property_expression(Q,QX).
-
-
-% Process each equivalentProperty pair separately in order to capture
-% annotations. Block the maximally connected subgraph.
-% TODO. Process the equivalent(L) axioms to generate maximally connected
-% equivalentProperties(L) axioms. (but without annotations?)
-
-owl_parse_axiom(equivalentProperties(OPEL),AnnMode,List) :-
-	test_use_owl(X,'owl:equivalentProperty',Y),
-	valid_axiom_annotation_mode(AnnMode,X,'owl:equivalentProperty',Y,List),
-	use_owl(X,'owl:equivalentProperty',Y,equivProperty(X,Y)),
-	% maximally_connected_subgraph_over('owl:equivalentProperty',L),
-	maplist(owl_property_expression,[X,Y],OPEL).
-
-
-% TODO. Process the disjointProperties(L) axioms to generate
-% larger set of disjoint: ie if N properties are pairwise DisJoint
-% then we can assert a disjointClasses for all N
-
-owl_parse_axiom(disjointProperties([DX,DY]),AnnMode,List) :-
-	test_use_owl(X,'owl:propertyDisjointWith',Y),
-	valid_axiom_annotation_mode(AnnMode,X,'owl:propertyDisjointWith',Y,List),
-	use_owl(X,'owl:propertyDisjointWith',Y,propertyDisjointWith(X,Y)),
-        owl_description(X,DX),
-	owl_description(Y,DY).
-
-% One more of the cases where annotations are those of _x and we do not
-% seek for further annotation axioms. Par. 3.2.5. Whatever the AnnNode,
-% _x is returned (will be ignored if mode false)
-
-owl_parse_axiom(disjointProperties(L),_AnnMode,[X]) :-
-        % TODO: X may be referred to in an annotation axiom??
-	use_owl(X,'rdf:type','owl:AllDisjointProperties',allDisjointProps(X,L1)),
-        use_owl(X,'owl:members',L1,members(L1)),
-        L1 = [_,_|_],           % length >= 2
-        owl_property_list(L1,L).
-
-
-owl_parse_axiom(propertyDomain(PX,CX),AnnMode,List) :-
-	test_use_owl(P,'rdfs:domain',C),
-	valid_axiom_annotation_mode(AnnMode,P,'rdfs:domain',C,List),
-        use_owl(P,'rdfs:domain',C,domain(P,C)),
-	(   annotationProperty(P),CX = C ;
-	    owl_property_expression(P,PX),
-	    owl_description(C,CX)
-	).
-
-% We need to distinguish here between object and data property
-% Currently we first test if the range is a class, this means OPE
-% otherwise if it is a datarange it means a DPE.
-% Ideally we should also check possible declarations of OPE or DPE.
-
-owl_parse_axiom(propertyRange(PX,CX),AnnMode,List) :-
-	test_use_owl(P,'rdfs:range',C),
-	valid_axiom_annotation_mode(AnnMode,P,'rdfs:range',C,List),
-        use_owl(P,'rdfs:range',C,range(P,C)),
-	(   annotationProperty(P) -> PX = P, CX = C ;
-	    owl_property_expression(P,PX),
-            (   owl_description(C,CX) -> true ; owl_datarange(C,CX))
-	).
-
-owl_parse_axiom(inverseProperties(PX,QX),AnnMode,List) :-
-	test_use_owl(P,'owl:inverseOf',Q),
-	valid_axiom_annotation_mode(AnnMode,P,'owl:inverseOf',Q,List),
-	use_owl(P,'owl:inverseOf',Q,inverseOf(P,Q)),
-        owl_property_expression(P,PX),
-        owl_property_expression(Q,QX).
-
-owl_parse_axiom(functionalProperty(P),AnnMode,List) :-
-	test_use_owl(P,'rdf:type','owl:FunctionalProperty'),
-	valid_axiom_annotation_mode(AnnMode,P,'rdf:type','owl:FunctionalProperty',List),
-        use_owl(P,'rdf:type','owl:FunctionalProperty',functionalProperty(P)).
-
-owl_parse_axiom(inverseFunctionalProperty(P),AnnMode,List) :-
-	test_use_owl(P,'rdf:type','owl:InverseFunctionalProperty'),
-	valid_axiom_annotation_mode(AnnMode,P,'rdf:type','owl:InverseFunctionalProperty',List),
-        use_owl(P,'rdf:type','owl:InverseFunctionalProperty',inverseFunctionalProperty(P)).
-
-owl_parse_axiom(reflexiveProperty(P),AnnMode,List) :-
-	test_use_owl(P,'rdf:type','owl:ReflexiveProperty'),
-	valid_axiom_annotation_mode(AnnMode,P,'rdf:type','owl:ReflexiveProperty',List),
-        use_owl(P,'rdf:type','owl:ReflexiveProperty',reflexiveProperty(P)).
-
-owl_parse_axiom(irreflexiveProperty(P),AnnMode,List) :-
-	test_use_owl(P,'rdf:type','owl:IrreflexiveProperty'),
-	valid_axiom_annotation_mode(AnnMode,P,'rdf:type','owl:IrreflexiveProperty',List),
-        use_owl(P,'rdf:type','owl:IrreflexiveProperty',irreflexiveProperty(P)).
-
-owl_parse_axiom(symmetricProperty(P),AnnMode,List) :-
-	test_use_owl(P,'rdf:type','owl:SymmetricProperty'),
-	valid_axiom_annotation_mode(AnnMode,P,'rdf:type','owl:SymmetricProperty',List),
-        use_owl(P,'rdf:type','owl:SymmetricProperty',symmetricProperty(P)).
-
-owl_parse_axiom(asymmetricProperty(P),AnnMode,List) :-
-	test_use_owl(P,'rdf:type','owl:AsymmetricProperty'),
-	valid_axiom_annotation_mode(AnnMode,P,'rdf:type','owl:AsymmetricProperty',List),
-        use_owl(P,'rdf:type','owl:AsymmetricProperty',assymetricProperty(P)).
-
-owl_parse_axiom(transitiveProperty(P),AnnMode,List) :-
-	test_use_owl(P,'rdf:type','owl:TransitiveProperty'),
-	valid_axiom_annotation_mode(AnnMode,P,'rdf:type','owl:TransitiveProperty',List),
-	use_owl(P,'rdf:type','owl:TransitiveProperty',transitiveProperty(P)).
-
-owl_parse_axiom(hasKey(CX,L),AnnMode,List) :-
-	test_use_owl(C,'owl:hasKey',L1),
-	valid_axiom_annotation_mode(AnnMode,C,'owl:hasKey',L1,List),
-	use_owl(C,'owl:hasKey',L1,hasKey(C)),
-	owl_description(C,CX),
-        L1 = [_,_|_],           % length >= 2
-        owl_property_list(L1,L).
-
-% INDIVIDUALS
-
-owl_parse_axiom(sameIndividual([X,Y]),AnnMode,List) :-
-	test_use_owl(X,'owl:sameAs',Y),
-	valid_axiom_annotation_mode(AnnMode,X,'owl:sameAs',Y,List),
-	use_owl(X,'owl:sameAs',Y,sameAs(X,Y)).
-
-owl_parse_axiom(differentIndividuals([X,Y]),AnnMode,List) :-
-	test_use_owl(X,'owl:differentFrom',Y),
-	valid_axiom_annotation_mode(AnnMode,X,'owl:differentFrom',Y,List),
-	use_owl(X,'owl:differentFrom',Y,differentFrom(X,Y)).
-
-owl_parse_axiom(differentIndividuals(L),_AnnMode,[X]) :-
-	use_owl(X,'rdf:type','owl:AllDifferent',allDifferent(L)),
-	use_owl(X,'owl:distinctMembers',L1,distinctMembers(L)),
-        owl_individual_list(L1,L).
-
-owl_parse_axiom(differentIndividuals(L),_AnnMode,[X]) :-
-	use_owl(X,'rdf:type','owl:AllDifferent',allDifferent(X)),
-	use_owl(X,'owl:members',L1,members(L)),
-        owl_individual_list(L1,L).
-
-% make sure this is done before fetching classAssertion/2;
-% -- the annotationAssertion matching clause should preceded the classAssertion/2 matching clause
-owl_parse_axiom(annotationAssertion('owl:deprecated', X, true),AnnMode,List) :-
-	test_use_owl(X, 'rdf:type', 'owl:DeprecatedClass'),
-	valid_axiom_annotation_mode(AnnMode,X,'rdf:type','owl:DeprecatedClass',List),
-	use_owl(X, 'rdf:type', 'owl:DeprecatedClass',deprecatedClass(X)).
-
-% make sure this is done before fetching propertyAssertion/3
-% this clause should precede it
-owl_parse_axiom(annotationAssertion('owl:deprecated', X, true),AnnMode,List) :-
-	test_use_owl(X, 'rdf:type', 'owl:DeprecatedProperty'),
-	valid_axiom_annotation_mode(AnnMode,X,'rdf:type','owl:DeprecatedProperty',List),
-	use_owl(X, 'rdf:type', 'owl:DeprecatedProperty',deprecatedProperty(X)).
-
-% Table 17. Parsing of Annotated Axioms
-
-dothislater(annotationAssertion/3).
-% TODO - only on unnannotated pass?
-%
-
-owl_parse_axiom(annotationAssertion(P,A,B),AnnMode,List) :-
-        annotationProperty(P),
-        test_use_owl(A,P,B),         % B can be literal or individual
-        valid_axiom_annotation_mode(AnnMode,A,P,B,List),
-        use_owl(A,P,B,annotationProperty(P)).
-
-
-dothislater(classAssertion/2).
-owl_parse_axiom(classAssertion(CX,X),AnnMode,List) :-
-	test_use_owl(X,'rdf:type',C),
-        C\='http://www.w3.org/2002/07/owl#DeprecatedClass',
-	% note: some ontologies may include a rdf:type with no
-	%  explicit class declaration. See testfiles/test_undeclared.owl
-	%class(C),
-	valid_axiom_annotation_mode(AnnMode,X,'rdf:type',C,List),
-	use_owl(X,'rdf:type',C,classAssertion(CX,X)),
-        % I added this to avoid class assertions for bNodes. Perhaps a better
-        % way is to simply consume the owl4/ triple at the time of translating
-        % the description? --CJM
-        C\='http://www.w3.org/2002/07/owl#Class',
-        %
-        C\='http://www.w3.org/1999/02/22-rdf-syntax-ns#Property',
-        owl_description(C,CX).
-
-dothislater(propertyAssertion/3).
-owl_parse_axiom(propertyAssertion(PX,A,BX),AnnMode,List) :-
-        test_use_owl(A,P,B), % B can be literal or individual
-        P\='http://www.w3.org/1999/02/22-rdf-syntax-ns#type',
-	% note: some ontologies may include a triples with no
-	%  explicit property declaration. See testfiles/test_undeclared.owl
-	%property(P),
-	valid_axiom_annotation_mode(AnnMode,A,P,B,List),
-        \+ annotationProperty(P), % these triples should have been removed before, during ann parsing
-	owl_property_expression(P,PX), % can also be inverse
-	% next line added by VV 9/3/2011 for Jochem Liem to support ID-lists as PA objects
-	(   owl_individual_list(B,BX) -> true ; BX = B),
-        use_owl(A,P,B,propertyAssertion(PX,A,BX)).
-
-
-owl_parse_axiom(negativePropertyAssertion(PX,A,B),_,X) :-
-        use_owl(X,'rdf:type','owl:NegativePropertyAssertion',negPropertyAssertion(PX,A,B)),
-        use_owl(X,'owl:sourceIndividual',A,negPropertyAssertion(PX,A,B)),
-        use_owl(X,'owl:assertionProperty',P,negPropertyAssertion(PX,A,B)),
-        use_owl(X,'owl:targetValue',B,negPropertyAssertion(PX,A,B)),
-        owl_property_expression(P,PX).
-
-
-% process hooks; SWRL etc
-
-% Parsing annotationAssertions
-%
-
-parse_annotation_assertions :-
-	( nb_current(rind,RIND) -> true ; RIND = []),!,
-	forall((aNN(X,AP,AV),findall( aNN(annotation(X,AP,AV),AP1,AV1),
-				      aNN(annotation(X,AP,AV),AP1,AV1),ANN), \+member(X,RIND), \+name(X,[95, 95, 68, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110|_])),
-	       (   assert_axiom(annotationAssertion(AP,X,AV)),
-		  %  VV 10/3/2010 keep annotation/3
-		  % retract(annotation(X,AP,AV)),
-		   forall(member(aNN(_,AP1,AV1),ANN),
-			    assert_axiom(annotation(annotationAssertion(AP,X,AV),AP1,AV1))
-			 )
-	       )
-	      ),
-	% forall(aNN(X,Y,Z),assert(annotation(X,Y,Z))), VV remove 25/1/11
-	% annotation/3 axioms created already during owl_parse_annotated_axioms/1
-	retractall(aNN(_,_,_)).
-
-% Table 18. Parsing of Axioms for Compatibility with OWL DL
-
-owl_parse_compatibility_DL(equivalentClasses([CEX,complementOf(CEY)])) :-
-	use_owl(X,'owl:complementOf',Y,eq_classes),
-	owl_description(X,CEX),
-	owl_description(Y,CEY).
-
-
-owl_parse_compatibility_DL(equivalentClasses([CEX,CEY])) :-
-	use_owl(X,'owl:unionOf',Y,eq_classes),
-	owl_description(X,CEX),
-	owl_description_list(Y,DL),
-	(   DL = [] -> CEY = 'owl:Nothing' ; (DL=[CEY]->true;CEY = unionOf(DL))).
-
-owl_parse_compatibility_DL(equivalentClasses([CEX,CEY])) :-
-	use_owl(X,'owl:intersectionOf',Y,eq_classes),
-	owl_description(X,CEX),
-	owl_description_list(Y,DL),
-	(   DL = [] -> CEY = 'owl:Thing' ; (DL=[CEY]->true;CEY = intersectionOf(DL))).
-
-owl_parse_compatibility_DL(equivalentClasses([CEX,CEY])) :-
-	use_owl(X,'owl:oneOf',Y,eq_classes),
-	owl_description(X,CEX),
-	owl_description_list(Y,DL),
-	(   DL = [] -> CEY = 'owl:Nothing' ; CEY = oneOf(DL)).
-
-% UTIL
-
-%% maximally_connected_subgraph_over(+P,?ConnectedSets) is semidet
-maximally_connected_subgraph_over(P,CSet):-
-        maximally_connected_subgraph_over(P,[],CSetL),
-        member(CSet,CSetL).
-
-%% maximally_connected_subgraph_over(+P,+Used,?ListOfConnectedSets) is det
-maximally_connected_subgraph_over(P,Used,[CSet|All]):-
-        test_use_owl(X,P,Y), % seed
-        \+ member(X,Used),
-        \+ member(Y,Used),
-        use_owl(X,P,Y,maximally_conected), % seed
-        !,
-        extend_set_over(P,[X,Y],CSet),
-        append(CSet,Used,Used2),
-        maximally_connected_subgraph_over(P,Used2,All).
-maximally_connected_subgraph_over(_,_,[]).
-
-
-% det
-extend_set_over(P,L,L2):-
-        member(X,L),
-        test_use_owl(X,P,Y),
-        \+ member(Y,L),
-        use_owl(X,P,Y,extend_set_over),
-        !,extend_set_over(P,[Y|L],L2).
-extend_set_over(P,L,L2):-
-        member(X,L),
-        test_use_owl(Y,P,X),
-        \+ member(Y,L),
-        use_owl(Y,P,X,extend_set_over),
-        !,extend_set_over(P,[Y|L],L2).
-extend_set_over(_,L,L):- !.
-
-literal_integer(literal(type,A),N) :- atom_number(A,N).
-literal_integer(literal(type(_,A)),N) :- atom_number(A,N).
-
-%% time_goal(+Goal,?Time)
-%  calls Goal and unifies Time with the cputime taken
-time_goal(Goal,Time):-
-        statistics(cputime,T1), Goal,
-        statistics(cputime,T2), Time is T2-T1.
-
-timed_forall(Cond,Action) :-
-        forall(Cond,
-               (   time_goal(Action,Time),
-                   debug(owl2_bench,'Goal: ~w Time:~w',[Action,Time]))).
-
-
-/** <module> Translates an RDF database to OWL2 axioms
-  ---+ Synopsis 1
-==
-:- use_module(bio(owl2_from_rdf)).
-%
-==
----+ Details
----++ Hooks
-* owl_parse_axiom_hook/3
----+ See Also
-The file owl2_from_rdf.plt has some examples
-*/
-:- thread_local ns4query/1.
-
-load_owl(String):-
-  pengine_self(Self),
-  pengine_property(Self,module(M)),
-  open_chars_stream(String,S),
-  process_rdf(stream(S), assert_list(M), [namespaces(NSList)]),
-  rdf_register_prefix('disponte','https://sites.google.com/a/unife.it/ml/disponte#',[keep(true)]),
-  assert(M:ns4query(NSList)),
-  close(S),
-  rdf_2_owl('ont','ont'),
-  owl_canonical_parse_3(['ont']),
-  parse_probabilistic_annotation_assertions.
-
-
-assert_list(_M,[], _):-!.
-assert_list(M,[H|T], Source) :-
-    H=..[_|Args],
-    H1=..[myrdf|Args],
-	assert(M:H1),
-        assert_list(M,T, Source).
-
-find_all_probabilistic_annotations(Ax,PV):-
-	annotation(Ax,'https://sites.google.com/a/unife.it/ml/disponte#probability',literal(type(_Type, PV))),
-	atomic(PV).
-
-find_all_probabilistic_annotations(Ax,PV):-
-	annotation(Ax,'https://sites.google.com/a/unife.it/ml/disponte#probability',literal(PV)),
-	atomic(PV).
-  
-
-parse_probabilistic_annotation_assertions :-
-  forall(find_all_probabilistic_annotations(Ax,PV),
-       (assert_axiom(annotationAssertion('https://sites.google.com/a/unife.it/ml/disponte#probability',Ax,literal(PV))))
-  ),
-  % forall(aNN(X,Y,Z),assert(annotation(X,Y,Z))), VV remove 25/1/11
-  % annotation/3 axioms created already during owl_parse_annotated_axioms/1
-  retractall(annotation(_,'https://sites.google.com/a/unife.it/ml/disponte#probability',_)).
-
-query_is([Q|_],0,Q):-!.
-query_is([_|T],N,Q):-
-  NN is N - 1,
-  query_is(T,NN,Q).
-
-set_new_query([_|T],0,NQ,[NQ|T]):-!.
-set_new_query([Q|T],N,NQ,[Q|NT]):-
-  NN is N - 1,
-  set_new_query(T,NN,NQ,NT).
-
-query_expand(CQ):-
-  CQ =.. [CQP | CQArgs],
-  member((CQP,PosQ),[(aggregate_all,1), (limit,1)]),!,
-  query_is(CQArgs,PosQ,Q),
-  Q =.. [P|Args],
-  pengine_self(Self),
-  pengine_property(Self,module(M)),
-  M:ns4query(NSList),!,
-  retract(M:ns4query(NSList)),
-  expand_all_ns(Args,NSList,NewArgs),!,
-  NQ =.. [P|NewArgs],
-  set_new_query(CQArgs,PosQ,NQ,CQNewArgs),
-  NCQ =.. [CQP|CQNewArgs],
-  call(NCQ).
-  
-query_expand(Q):-
-  Q =.. [P|Args],
-  pengine_self(Self),
-  pengine_property(Self,module(M)),
-  M:ns4query(NSList),!,
-  retract(M:ns4query(NSList)),
-  expand_all_ns(Args,NSList,NewArgs),!,
-  NQ =.. [P|NewArgs],
-  call(NQ).
-
-expand_all_ns([],_,[]).
-
-expand_all_ns([P|T],NSList,[NP|NewArgs]):-
-  compound(P),
-  P =.. [N | [Args]],!,
-  expand_all_ns(Args,NSList,NewPArgs),
-  NP =.. [N, [NewPArgs]],
-  expand_all_ns(T,NSList,NewArgs).
-
-expand_all_ns([P|T],NSList,[NP|NewArgs]):-
-  compound(P),
-  P =.. [N | Args],!,
-  expand_all_ns(Args,NSList,NewPArgs),
-  NP =.. [N| NewPArgs],
-  expand_all_ns(T,NSList,NewArgs).
-
-expand_all_ns([H|T],NSList,[H|NewArgs]):-
-  check_query_arg(H),!,
-  expand_all_ns(T,NSList,NewArgs).
-
-expand_all_ns([H|T],NSList,[NewArg|NewArgs]):-
-  expand_ns4query(H,NSList,NewArg),
-  expand_all_ns(T,NSList,NewArgs).
-
-check_query_arg(Arg) :-
-  atomic(Arg),!,
-  axiom(Ax),
-  Ax =.. [_|L],
-  flatten(L,L1),
-  member(Arg,L1),!.
-
-expand_ns4query(NS_URL, [], NS_URL).
-expand_ns4query(NS_URL, [Short_NSL=Long_NSL|_],Full_URL):- 
-	nonvar(NS_URL),
-	NS_URL \= literal(_),
-	uri_split(NS_URL,Short_NS,Term, ':'),
-	Short_NS = Short_NSL,
-	Long_NS = Long_NSL,!,
-	concat_atom([Long_NS,Term],Full_URL).
-
-expand_ns4query(NS_URL, [[]=Long_NSL|_],Full_URL):- 
-	nonvar(NS_URL),
-	NS_URL \= literal(_),
-	\+ sub_atom(NS_URL,_,_,_,':'),
-	Long_NS = Long_NSL,!,
-	concat_atom([Long_NS,NS_URL],Full_URL).
-
-expand_ns4query(NS_URL, [_|T],Full_URL):- 
-  expand_ns4query(NS_URL, T,Full_URL),!.
-expand_ns4query(URL,_, URL).
-
diff --git a/lib/trill_on_swish/trill/bddem.so b/lib/trill_on_swish/trill/bddem.so
deleted file mode 100755
index e9cbf3b..0000000
Binary files a/lib/trill_on_swish/trill/bddem.so and /dev/null differ
diff --git a/lib/trill_on_swish/trill/trill.pl b/lib/trill_on_swish/trill/trill.pl
deleted file mode 100644
index 2464a50..0000000
--- a/lib/trill_on_swish/trill/trill.pl
+++ /dev/null
@@ -1,2056 +0,0 @@
-
-:- module(trill,[sub_class/2, sub_class/3, prob_sub_class/3,
-                 instanceOf/2, instanceOf/3, prob_instanceOf/3,
-                 unsat/1, unsat/2, prob_unsat/2,
-                 inconsistent_theory/0, inconsistent_theory/1, prob_inconsistent_theory/1,
-                 load_theory/1, check_query_args/1] ).
-
-%:- set_prolog_flag(unknow,fail).
-
-/*:- use_module(library('thea2/owl2_io')).
-:- use_module(library('thea2/owl2_model')).*/
-:- use_module(library(lists)).
-:- use_module(library(ugraphs)).
-:- use_module(library(rbtrees)).
-:- use_module(library(pengines)).
-
-:- use_module(library(dif)).
-
-%:- use_module(library(tries)).
-%:- load_foreign_files(['cplint-swi'],[],init_my_predicates).
-%:-use_foreign_library(bddem,install).
-
-:- use_foreign_library(foreign(bddem),install).
-
-:- thread_local %get_var_n/5
-        rule_n/1,
-        na/2,
-        v/3.
-        
-%:-['trillProbComputation'].
-
-:- thread_local
-	ind/1,
-	exp_found/1.
-
-%:- yap_flag(unknown,fail).
-:- multifile
-	owl2_model:axiom/1,
- 	owl2_model:class/1,
- 	owl2_model:annotationProperty/1,
-  	owl2_model:namedIndividual/1,
-  	owl2_model:objectProperty/1,
-  	owl2_model:dataProperty/1,
- 	owl2_model:transitiveProperty/1,
-        owl2_model:classAssertion/2,
-        owl2_model:propertyAssertion/3,
-        owl2_model:subPropertyOf/2,
-        owl2_model:subClassOf/2,
-        owl2_model:equivalentClasses/1,
-        owl2_model:differentIndividuals/1,
-        owl2_model:sameIndividual/1,
-        owl2_model:intersectionOf/1,
-        owl2_model:unionOf/1,
-        owl2_model:propertyRange/2,
-        owl2_model:propertyDomain/2,
-        owl2_model:annotationAssertion/3,
-        owl2_model:exactCardinality/2,
-        owl2_model:exactCardinality/3,
-        owl2_model:maxCardinality/2,
-