<?xml version="1.0" encoding="UTF-8"?>

<rdf:RDF
 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 xmlns="http://purl.org/rss/1.0/"
 xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/"
 xmlns:dc="http://purl.org/dc/elements/1.1/"
 xmlns:syn="http://purl.org/rss/1.0/modules/syndication/"
 xmlns:admin="http://webns.net/mvcb/"
>

<channel rdf:about="http://protege.cim3.net/cgi-bin/wiki.pl">
<title>ProtegeWiki</title>
<link>http://protege.cim3.net/cgi-bin/wiki.pl</link>
<description></description>
<items>
 <rdf:Seq>
  <rdf:li rdf:resource="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab" />
  <rdf:li rdf:resource="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectThatUseProtegeTemplate" />
  <rdf:li rdf:resource="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab" />
  <rdf:li rdf:resource="http://protege.cim3.net/cgi-bin/wiki.pl?WikiHomePage" />
  <rdf:li rdf:resource="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns" />
  <rdf:li rdf:resource="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL" />
  <rdf:li rdf:resource="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType" />
  <rdf:li rdf:resource="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse" />
  <rdf:li rdf:resource="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI" />
  <rdf:li rdf:resource="http://protege.cim3.net/cgi-bin/wiki.pl?RecentChanges" />
  <rdf:li rdf:resource="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK" />
  <rdf:li rdf:resource="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster" />
  <rdf:li rdf:resource="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabBuilding" />
  <rdf:li rdf:resource="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabOWL2RL" />
  <rdf:li rdf:resource="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ" />
 </rdf:Seq>
</items>
</channel>

<item rdf:about="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab">
<title>SWRLTab</title>
<link>http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab</link>
<description><![CDATA[<p><a name="nidA3E" id="nidA3E"></a>The SWRLTab is a development environment for working with <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ" class="extlink">SWRL</a> rules in <a href="http://protege.stanford.edu/overview/protege-owl.html" class="extlink">Protege-OWL</a>. It supports the editing and execution of SWRL rules and includes a set of libraries that can be used in rules, including libraries to interoperate with XML documents, and spreadsheets, and libraries with mathematical, string, RDFS, and temporal operators. A SWRL-based OWL query language called SQWRL is also provided. &nbsp;&nbsp; <a class="nid" title="A3E" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidA3E">(A3E)</a></p>
<p><a name="nid9EQ" id="nid9EQ"></a>An introduction to the SWRL language can be found <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ" class="extlink">here</a>. An introduction to SQWRL can be found <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SQWRL" class="extlink">here</a>. &nbsp;&nbsp; <a class="nid" title="9EQ" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nid9EQ">(9EQ)</a></p>
<p><a name="nid6GY" id="nid6GY"></a>The SWRLTab has several software components: &nbsp;&nbsp; <a class="nid" title="6GY" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nid6GY">(6GY)</a></p>
<ul>
<li><a name="nid8GS" id="nid8GS"></a><b>SWRL Editor</b> The editor supports editing of SWRL rules in an OWL ontology. See the <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLEditorFAQ" class="extlink">SWRL Editor FAQ</a> for more details. &nbsp;&nbsp; <a class="nid" title="8GS" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nid8GS">(8GS)</a></li>
</ul>
<ul>
<li><a name="nidAWG" id="nidAWG"></a><b>SWRL APIs</b> The SWRLTab provides a collection of Java APIs to work with SWRL rules. These are documented <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLAPI" class="extlink">here</a>. &nbsp;&nbsp; <a class="nid" title="AWG" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidAWG">(AWG)</a></li>
</ul>
<ul>
<li><a name="nid8O1" id="nid8O1"></a><b>SWRL Built-in Libraries</b> A number of built-in libraries are provided by the SWRLTab. These include an implementation of the core SWRL built-ins defined in the <a href="http://www.w3.org/Submission/SWRL/" class="extlink">SWRL Submission</a> and built-ins for querying OWL ontologies. The libraries are documented <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabBuiltInLibraries" class="extlink">here</a>. &nbsp;&nbsp; <a class="nid" title="8O1" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nid8O1">(8O1)</a></li>
</ul>
<ul>
<li><a name="nid8XC" id="nid8XC"></a><b>SQWRL Query Tab</b> The query tab provides a graphical interface to display the results of SQWRL queries. It is documented <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SQWRL" class="extlink">here</a>. &nbsp;&nbsp; <a class="nid" title="8XC" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nid8XC">(8XC)</a></li>
</ul>
<ul>
<li><a name="nid8XD" id="nid8XD"></a><b>SQWRL Query API</b> This API provides a JDBC-like Java interface to retrieve the result of SQWRL queries. It is documented <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SQWRLQueryAPI" class="extlink">here</a>. &nbsp;&nbsp; <a class="nid" title="8XD" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nid8XD">(8XD)</a></li>
</ul>
<ul>
<li><a name="nidCAS" id="nidCAS"></a><b>SWRL Temporal Ontology and Library</b> The SWRLTab provides an array of mechanisms for modeling, reasoning with, and querying temporal information. They are documented <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabTemporal" class="extlink">here</a>. &nbsp;&nbsp; <a class="nid" title="CAS" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidCAS">(CAS)</a></li>
</ul>
<ul>
<li><a name="nid6H2" id="nid6H2"></a><b>SWRL Built-in Bridge</b> <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLBuiltInFAQ" class="extlink">SWRL built-ins</a> are user-defined predicates that can be used in SWRL rules. The SWRLTab has a subcomponent called the <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLBuiltInBridge" class="extlink">built-in bridge</a> that provides a mechanism to define Java implementations of SWRL built-ins. These implementations can then be dynamically loaded by the bridge and invoked from a rule engine. &nbsp;&nbsp; <a class="nid" title="6H2" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nid6H2">(6H2)</a></li>
</ul>
<ul>
<li><a name="nid6H1" id="nid6H1"></a><b>SWRL Bridge</b> The bridge provides the infrastructure necessary to incorporate rule engines into Protege-OWL to execute SWRL rules. See the <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLRuleEngineBridgeFAQ" class="extlink">SWRL Rule Engine Bridge FAQ</a> for more details.   The hope is that bridges for other rule engines will be developed by the Protege-OWL community and than an array of inference mechanism will become available for executing SWRL rules. &nbsp;&nbsp; <a class="nid" title="6H1" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nid6H1">(6H1)</a></li>
</ul>
<ul>
<li><a name="nidBLI" id="nidBLI"></a><b>SWRL Jess Bridge</b> A bridge for the Jess rule engine is provided in the Protege-OWL distribution. 
It is documented <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessBridge" class="extlink">here</a>.
A user interface called the <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab" class="wikiword">SWRLJessTab</a> is also provided to interact with this bridge.
It is documented <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessBridge" class="extlink">here</a>. &nbsp;&nbsp; <a class="nid" title="BLI" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidBLI">(BLI)</a></li>
</ul>
<ul>
<li><a name="nid6H0" id="nid6H0"></a><b>SWRL Factory</b> The factory provides high-level Java APIs that support the creation and modification of SWRL rules in an OWL ontology. This API can be used by developers who wish to work with SWRL rules in their applications. See the <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLFactoryFAQ" class="extlink">SWRL Factory FAQ</a> for more details. &nbsp;&nbsp; <a class="nid" title="6H0" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nid6H0">(6H0)</a></li>
</ul>
<p><a name="nidA6A" id="nidA6A"></a>The SWRLTab is designed to work in Protege-OWL only. However, partial interoperation with Jena is also supported. See <a href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegeJenaIntegration#nid8KU" class="extlink">here</a> for details. Work has proceeded to port it to Protege 4.1. &nbsp;&nbsp; <a class="nid" title="A6A" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidA6A">(A6A)</a></p>
<p><a name="nidB21" id="nidB21"></a>Protege-OWL also contains the <b>Axiome Rule Management Plugin</b>, which provides support for SWRL rule elicitation, paraphrasing, and rule base visualization. It is documented <a href="http://protegewiki.stanford.edu/index.php/Axiom%C3%A9" class="extlink">here</a>. &nbsp;&nbsp; <a class="nid" title="B21" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidB21">(B21)</a></p>
<h3><a name="nid6H3" id="nid6H3"></a>Activation &nbsp;&nbsp; <a class="nid" title="6H3" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nid6H3">(6H3)</a></h3>
<p><a name="nidA6B" id="nidA6B"></a>The SWRLTab should be visible for all OWL ontologies that have a namespace entry for the canonical SWRL namespace <tt>http://www.w3.org/2003/11/swrl</tt> with the alias <tt>swrl</tt>. It is disabled by default if the ontology does not have this entry. In Protege-OWL, ontologies that use SWRL do not need to explicitly import the SWRL ontology. This ontology defines a storage specification only and the necessary OWL constructs it defines are understood by Protege-OWL. &nbsp;&nbsp; <a class="nid" title="A6B" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidA6B">(A6B)</a></p>
<p><a name="nid6H5" id="nid6H5"></a>To activate the SWRLTab in a project that does not include a SWRL namespace entry, go to Project | Configure in the Protege-OWL GUI and check the "SWRLTab" box. The tab will then appear and a namespace entry for SWRL will be added to the active ontology. &nbsp;&nbsp; <a class="nid" title="6H5" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nid6H5">(6H5)</a></p>
<p><a name="nidAIR" id="nidAIR"></a>By default, the SWRLTab will automatically add the <a href="http://swrl.stanford.edu/ontologies/3.3/swrla.owl" class="extlink">SWRLA</a> and <a href="http://swrl.stanford.edu/ontologies/built-ins/3.4/sqwrl.owl" class="extlink">SQWRL</a> ontologies to the import list of the active ontology when it is enabled. If you would like to disable this automatic importation, add the <tt>protege.owl.swrl.exclude_standard_imports</tt> property to the <tt>protege.properties</tt> file in the base Protege installation directory and set its value to be <tt>true</tt>. You can also set this property in the Protege GUI by going to the <i>File | Configure ...</i> menu and enabling the ProtegePropertiesTab. &nbsp;&nbsp; <a class="nid" title="AIR" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidAIR">(AIR)</a></p>
<h3><a name="nid6H6" id="nid6H6"></a>Citing in Publications &nbsp;&nbsp; <a class="nid" title="6H6" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nid6H6">(6H6)</a></h3>
<p><a name="nidC5G" id="nidC5G"></a>To cite general use of the SWRLTab in a publication, use the following paper: &nbsp;&nbsp; <a class="nid" title="C5G" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidC5G">(C5G)</a></p>
<ul>
<li><a name="nidC5H" id="nidC5H"></a>"<a href="http://bmir.stanford.edu/publications/view.php/supporting_rule_system_interoperability_on_the_semantic_web_with_swrl" class="extlink">Supporting Rule System Interoperability on the Semantic Web with SWRL</a>" M.J. O'Connor, H. Knublauch, S.W. Tu, B. Grossof, M. Dean, W.E. Grosso, M.A. Musen. <i>4th International Semantic Web Conference (<a href="http://iswc2005.semanticweb.org/" class="extlink">ISWC</a>)</i>, Galway, Ireland, Springer Verlag, LNCS 3729, 974-986, 2005. &nbsp;&nbsp; <a class="nid" title="C5H" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidC5H">(C5H)</a></li>
</ul>
<p><a name="nidC5I" id="nidC5I"></a>SQWRL can be cited as follows: &nbsp;&nbsp; <a class="nid" title="C5I" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidC5I">(C5I)</a></p>
<ul>
<li><a name="nidC5L" id="nidC5L"></a>"<a href="http://bmir.stanford.edu/publications/view.php/sqwrl_a_query_language_for_owl" class="extlink">SQWRL: a Query Language for OWL</a>" M. J. O'Connor and A. K. Das. <i>OWL: Experiences and Directions (<a href="http://www.webont.org/owled/2009/" class="extlink">OWLED</a>), 6th International Workshop</i>, Chantilly, VA, 2009. &nbsp;&nbsp; <a class="nid" title="C5L" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidC5L">(C5L)</a></li>
</ul>
<p><a name="nidC5O" id="nidC5O"></a>The SWRLTab's temporal functionality is covered in the following paper: &nbsp;&nbsp; <a class="nid" title="C5O" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidC5O">(C5O)</a></p>
<ul>
<li><a name="nidC5P" id="nidC5P"></a><a href="http://bmir.stanford.edu/publications/view.php/a_method_for_representing_and_querying_temporal_information_in_owl" class="extlink">"A Method for Representing and Querying Temporal Information in OWL"</a> M. J. O'Connor and A. K. Das. <i>Biomedical Engineering Systems and Technologies (Selected Papers)</i>, Springer Verlag, CCIS 127, 97-110, 2011. &nbsp;&nbsp; <a class="nid" title="C5P" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidC5P">(C5P)</a></li>
</ul>
<p><a name="nidC5M" id="nidC5M"></a>Papers describing use of specific SWRL components in Protege-OWL may find a more targeted publication to cite in the publication list below. &nbsp;&nbsp; <a class="nid" title="C5M" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidC5M">(C5M)</a></p>
<h3><a name="nidC5K" id="nidC5K"></a>Publications &nbsp;&nbsp; <a class="nid" title="C5K" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidC5K">(C5K)</a></h3>
<p><a name="nidB5D" id="nidB5D"></a>The following publications describe SWRL-related Protege-OWL functionality or illustrate the use of SWRL in the development of applications. &nbsp;&nbsp; <a class="nid" title="B5D" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidB5D">(B5D)</a></p>
<ul>
<li><a name="nidBR1" id="nidBR1"></a>"<a href="http://bmir.stanford.edu/publications/view.php/adaptive_system_for_collaborative_online_laboratories" class="extlink">Adaptive System for Collaborative Online Laboratories</a>" C. Gravier, M. J. O'Connor, J. Fayolle, J. Lardon. <i>IEEE Intelligent Systems</i>, <i>in press</i>. This work describes the use of SWRL to specify and execute a variety of collaborative strategies in online laboratories. &nbsp;&nbsp; <a class="nid" title="BR1" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidBR1">(BR1)</a></li>
</ul>
<ul>
<li><a name="nidC5Q" id="nidC5Q"></a>"<a href="http://bmir.stanford.edu/publications/view.php/evaluation_of_semantic_based_information_retrieval_methods_in_the_autism_phenotype_domain" class="extlink">Evaluation of Semantic-Based Information Retrieval Methods in the Autism Phenotype Domain</a>" S. Hassanpour, M. J. O'Connor, A. K. Das. <i><a href="http://www.amia.org/amia2011" class="extlink">AMIA Annual Symposium</a></i>, Washington, D.C., U.S.A., 2011. This paper shows that incorporating SWRL rules can improved ontology-based information retrieval methods. &nbsp;&nbsp; <a class="nid" title="C5Q" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidC5Q">(C5Q)</a></li>
</ul>
<ul>
<li><a name="nidC5A" id="nidC5A"></a>"<a href="http://bmir.stanford.edu/publications/view.php/web_based_querying_and_temporal_visualization_of_longitudinal_clinical_data" class="extlink">Web-Based Querying and Temporal Visualization of Longitudinal Clinical Data</a>" A. Richards, M. J. O'Connor, S. B. Martins, M. Bingen, S. W. Tu, A. K. Das. <i>13th Conference on Artificial Intelligence in Medicine (<a href="http://aimedicine.info/aime11/" class="extlink">AIME</a>)</i>, Bled, Solvenia, 2011. This paper describes the <a href="http://bmir.stanford.edu/projects/view.php/sweetinfo" class="extlink">SWEETInfo</a> temporal data management system, which uses SWRL and SQWRL for data processing. &nbsp;&nbsp; <a class="nid" title="C5A" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidC5A">(C5A)</a></li>
</ul>
<ul>
<li><a name="nidC5B" id="nidC5B"></a>"<a href="http://bmir.stanford.edu/publications/view.php/a_rule_based_method_for_specifying_and_querying_temporal_abstractions" class="extlink">A Rule-Based Method for Specifying and Querying Temporal Abstractions</a>". M. J. O'Connor, G. Hernandez, Jr., A. K. Das. <i>13th Conference on Artificial Intelligence in Medicine (<a href="http://aimedicine.info/aime11/" class="extlink">AIME</a>)</i>, Bled, Solvenia, 2011. This paper describes outlines the implementation of a temporal abstraction mechanism in the SQWRL query language. &nbsp;&nbsp; <a class="nid" title="C5B" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidC5B">(C5B)</a></li>
</ul>
<ul>
<li><a name="nidC56" id="nidC56"></a>"<a href="http://bmir.stanford.edu/publications/view.php/a_framework_for_the_automatic_extraction_of_rules_from_online_text" class="extlink">A Framework for the Automatic Extraction of Rules from Online Text</a>" S. Hassanpour, M. J. O'Connor, A. K. Das. <i>International <a href="http://www.defeasible.org/ruleml2011ijcai/" class="extlink">RuleML</a> Symposium on Rule Interchange and Applications</i>, Barcelona, Spain, 2011. This work describes a framework for automatically extracting SWRL rules from online text. &nbsp;&nbsp; <a class="nid" title="C56" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidC56">(C56)</a></li>
</ul>
<ul>
<li><a name="nidBR2" id="nidBR2"></a><a href="http://bmir.stanford.edu/publications/view.php/web_based_exploration_of_temporal_data_in_biomedicine" class="extlink">"Web-Based Exploration of Temporal Data in Biomedicine"</a>
M. J. O'Connor, M. Bingen, A. Richards, S. B. Martins, S. W. Tu, A. K. Das. <i>7th International Conference on Web Information Systems and Technologies (<a href="http://www.webist.org/" class="extlink">WEBIST</a>)</i>, Noordwijkerhout, Netherlands, 352-359, 2011. This paper discusses the use of SWRL and SQWRL in the development of a web-based application for performing temporal data analysis. &nbsp;&nbsp; <a class="nid" title="BR2" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidBR2">(BR2)</a></li>
</ul>
<ul>
<li><a name="nidBLY" id="nidBLY"></a><a href="http://bmir.stanford.edu/publications/view.php/a_method_for_representing_and_querying_temporal_information_in_owl" class="extlink">"A Method for Representing and Querying Temporal Information in OWL"</a> M. J. O'Connor and A. K. Das. <i>Biomedical Engineering Systems and Technologies (Selected Papers)</i>, Springer Verlag, CCIS 127, 97-110, 2011. This paper is an extended version of the HEALTHINF paper with more details on the writing of temporal rules and queries. &nbsp;&nbsp; <a class="nid" title="BLY" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidBLY">(BLY)</a></li>
</ul>
<ul>
<li><a name="nidC57" id="nidC57"></a>"<a href="http://bmir.stanford.edu/publications/view.php/visualizing_logical_dependencies_in_swrl_rule_bases" class="extlink">Visualizing Logical Dependencies in SWRL Rule Bases</a>" S. Hassanpour, M. J. O'Connor, A. K. Das. <i>International <a href="http://www.csw.inf.fu-berlin.de/ruleml2010/" class="extlink">RuleML</a> Symposium on Rule Interchange and Applications</i>, Washington, DC, Springer Verlag, 6403, 259-272, 2010. Nominated for Best Paper award. This work involves automatically detecting high-level patterns in SWRL rule bases, which can then be used for rule base analysis and comprehension. &nbsp;&nbsp; <a class="nid" title="C57" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidC57">(C57)</a></li>
</ul>
<ul>
<li><a name="nidB6D" id="nidB6D"></a><a href="http://bmir.stanford.edu/publications/view.php/a_lightweight_model_for_representing_and_reasoning_with_temporal_information_in_biomedical_ontologies" class="extlink">"A Lightweight Model for Representing and Reasoning with Temporal Information in Biomedical Ontologies"</a> M. J. O'Connor and A. K. Das. <i>International Conference on Health Informatics (<a href="http://www.healthinf.biostec.org/HEALTHINF2010/index.htm" class="extlink">HEALTHINF</a>)</i>, Valencia, Spain, 2010. Winner of Best Paper award. This paper describes the representation of a temporal information in OWL and shows how SWRL and SQWRL can then be used to reason with and query this information. &nbsp;&nbsp; <a class="nid" title="B6D" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidB6D">(B6D)</a></li>
</ul>
<ul>
<li><a name="nidC58" id="nidC58"></a>"<a href="http://bmir.stanford.edu/publications/view.php/a_software_tool_for_visualizing_managing_and_eliciting_swrl_rules" class="extlink">A Software Tool for Visualizing, Managing and Eliciting SWRL Rules</a>" S. Hassanpour, M. J. O'Connor, A. K. Das. <i>Extended Semantic Web Conference (<a href="http://www.eswc2010.org/" class="extlink">ESWC</a>)</i>, Heraklion, Greece, Springer Verlag, LNCS 6089, 381–385, 2010. Winner of Best Demo award. This demo presents the <a href="http://protegewiki.stanford.edu/index.php/Axiom%C3%A9" class="extlink">Axiome</a> rule management Protege-OWL plugin. &nbsp;&nbsp; <a class="nid" title="C58" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidC58">(C58)</a></li>
</ul>
<ul>
<li><a name="nidC5C" id="nidC5C"></a>"<a href="http://bmir.stanford.edu/publications/view.php/semantic_reasoning_with_xml_based_biomedical_information_models" class="extlink">Semantic Reasoning with XML-based Biomedical Information Models</a>" M. J. O'Connor and  A. K. Das. <i>13th World Congress on Medical Informatics (MedInfo)</i>, Cape Town, South Africa, 985-990, 2010. This paper outlines the use of SWRL in the devlopment of reasoning methods to work with information models describing data in the HIV and radiological image domains. &nbsp;&nbsp; <a class="nid" title="C5C" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidC5C">(C5C)</a></li>
</ul>
<ul>
<li><a name="nidB6E" id="nidB6E"></a>"<a href="http://bmir.stanford.edu/publications/view.php/sqwrl_a_query_language_for_owl" class="extlink">SQWRL: a Query Language for OWL</a>" M. J. O'Connor and A. K. Das. <i>OWL: Experiences and Directions (<a href="http://www.webont.org/owled/2009/" class="extlink">OWLED</a>), 6th International Workshop</i>, Chantilly, VA, 2009. This paper gives a basic introduction to SQWRL's collection-based features. &nbsp;&nbsp; <a class="nid" title="B6E" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidB6E">(B6E)</a></li>
</ul>
<ul>
<li><a name="nidC58" id="nidC58"></a>"<a href="http://bmir.stanford.edu/publications/view.php/a_rule_management_and_elicitation_tool_for_swrl_rule_bases" class="extlink">A Rule Management and Elicitation Tool for SWRL Rule Bases</a>" S. Hassanpour, M. J. O'Connor, A. K. Das. <i>OWL: Experiences and Directions (<a href="http://www.webont.org/owled/2009/" class="extlink">OWLED</a>), 6th International Workshop</i>, Chantilly, VA, 2009. This paper describes the <a href="http://protegewiki.stanford.edu/index.php/Axiom%C3%A9" class="extlink">Axiome</a> rule management Protege-OWL plugin. &nbsp;&nbsp; <a class="nid" title="C58" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidC58">(C58)</a></li>
</ul>
<ul>
<li><a name="nidC59" id="nidC59"></a>"<a href="http://bmir.stanford.edu/publications/view.php/exploration_of_swrl_rule_bases_through_visualization_paraphrasing_and_categorization_of_rules" class="extlink">Exploration of SWRL Rule Bases through Visualization, Paraphrasing, and Categorization of Rules</a>" S. Hassanpour, M. J. O'Connor, A. K. Das. <i>International <a href="http://www.defeasible.org/ruleml2009/" class="extlink">RuleML</a> Symposium on Rule Interchange and Applications</i>, Las Vegas, NV, 5858, 246-261, 2009. Winner of Best Paper award. This work describes a set of techniques for visualizing and exploring SWRL rule bases. &nbsp;&nbsp; <a class="nid" title="C59" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidC59">(C59)</a></li>
</ul>
<ul>
<li><a name="nidB6F" id="nidB6F"></a>"<a href="http://bmir.stanford.edu/publications/view.php/using_the_semantic_web_rule_language_in_the_development_of_ontology_driven_applications" class="extlink">Using the Semantic Web Rule Language in the Development of Ontology-Driven Applications</a>" M. J. O'Connor, M. A. Musen, A. K. Das. <i>Handbook of Research on Emerging Rule-Based Languages and Technologies: Open Solutions and Approaches</i>, Chapter XXII, IGI Global, Hershey, Pennsylvania, 2009. This book chapter gives on overview of SWRL and describes its use in the development of Semantic Web applications. &nbsp;&nbsp; <a class="nid" title="B6F" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidB6F">(B6F)</a></li>
</ul>
<ul>
<li><a name="nidC5D" id="nidC5D"></a>"<a href="http://bmir.stanford.edu/publications/view.php/semantic_reasoning_with_image_annotations_for_tumor_assessment" class="extlink">Semantic Reasoning with Image Annotations for Tumor Assessment</a>" M. Levy, M. J. O'Connor, D. L. Rubin. <i><a href="http://symposium2009.amia.org/" class="extlink">AMIA Annual Symposium</a></i>, San Francisco, CA, U.S.A., 359-363, 2009. This paper describes the use of SWRL to reason with image annotations for tumor assessment in breast cancer. &nbsp;&nbsp; <a class="nid" title="C5D" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidC5D">(C5D)</a></li>
</ul>
<ul>
<li><a name="nidB6G" id="nidB6G"></a><a href="http://bmir.stanford.edu/publications/view.php/the_swrlapi_a_development_environment_for_working_with_swrl_rules" class="extlink">"The SWRLAPI: A Development Environment for Working with SWRL Rules."</a> M. J. O'Connor, C. I. Nyulas, R. D. Shankar, A. K. Das, M. A. Musen. <i>OWL: Experiences and Directions (<a href="http://www.webont.org/owled/2008/" class="extlink">OWLED</a>), 5th International Workshop</i>, Karlsruhe, Germany, 2008. This paper gives a basic overview of the features offered by the SWRLTab. &nbsp;&nbsp; <a class="nid" title="B6G" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidB6G">(B6G)</a></li>
</ul>
<ul>
<li><a name="nidB6H" id="nidB6H"></a><a href="http://bmir.stanford.edu/publications/view.php/developing_a_web_based_application_using_owl_and_swrl" class="extlink">"Developing a Web-Based Application using OWL and SWRL"</a> M. J. O'Connor, R. D. Shankar, S. W. Tu, C. I. Nyulas, A. K. Das. <i><a href="http://www.aaai.org/Symposia/Spring/sss08.php" class="extlink">AAAI Spring Symposium</a></i>, Stanford, CA, 2008. This paper describes the use of SWRL in the development of a simple web application. &nbsp;&nbsp; <a class="nid" title="B6H" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidB6H">(B6H)</a></li>
</ul>
<ul>
<li><a name="nidC5E" id="nidC5E"></a>"<a href="http://bmir.stanford.edu/publications/view.php/using_an_integrated_ontology_and_information_model_for_querying_and_reasoning_about_phenotypes_the_case_of_autism" class="extlink">Using an Integrated Ontology and Information Model for Querying and Reasoning about Phenotypes: The Case of Autism</a>" S. W. Tu, J. Tenenbaum, M. J. O'Connor, R. D. Shankar, A. K. Das. <i><a href="http://symposium2008.amia.org/" class="extlink">AMIA Annual Symposium</a></i>, Washington, DC, U.S.A., 727-731, 2008. This paper describes the use of SWRL to reason with autism phenotypes. &nbsp;&nbsp; <a class="nid" title="C5E" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidC5E">(C5E)</a></li>
</ul>
<ul>
<li><a name="nidB6I" id="nidB6I"></a>"<a href="http://bmir.stanford.edu/publications/view.php/querying_the_semantic_web_with_swrl" class="extlink">Querying the Semantic Web with SWRL"</a> M. J. O'Connor and A. K. Das. <i>International <a href="http://2007.ruleml.org/" class="extlink">RuleML</a> Symposium on Rule Interchange and Applications</i>, Orlando, FL, Springer Verlag, LNCS 4824, 155-159, 2007. Winner of <a href="http://2007.ruleml.org/index-Dateien/Page787.htm" class="extlink">RuleML Challenge</a>. This demo illustrates the use of SWRL to tackle the challenge of data integration. &nbsp;&nbsp; <a class="nid" title="B6I" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidB6I">(B6I)</a></li>
</ul>
<ul>
<li><a name="nidC55" id="nidC55"></a>"<a href="http://bmir.stanford.edu/publications/view.php/efficiently_querying_relational_databases_using_owl_and_swrl" class="extlink">Efficiently Querying Relational Databases using OWL and SWRL</a>" M. J. O'Connor, R. D. Shankar, S. W. Tu, C. I. Nyulas, A. K. Das, M. A. Musen. <i>1st International Conference on Web Reasoning and Rule Systems (<a href="http://www.wrrs.info/" class="extlink">RR</a>)</i>, Innsbruck, Austria, Springer Verlag, LNCS 4524, 361-363, 2007. This poster described the use of SWRL to access relational data in OWL-based applications. &nbsp;&nbsp; <a class="nid" title="C55" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidC55">(C55)</a></li>
</ul>
<ul>
<li><a name="nidA3H" id="nidA3H"></a>"<a href="http://bmir.stanford.edu/publications/view.php/using_semantic_web_technologies_for_knowledge_driven_querying_of_biomedical_data" class="extlink">Using Semantic Web Technologies for Knowledge-Driven Querying of Biomedical Data</a>" M. J. O'Connor, R. D. Shankar, S. W. Tu, C. I. Nyulas, D. B. Parrish, A. K. Das, M. A. Musen. <i>11th Conference on Artificial Intelligence in Medicine (<a href="http://www.aimedicine.eu/AIME07/index.jsp" class="extlink">AIME</a>)</i>, Amsterdam, Netherlands, Springer Verlag, LNAI 4594, 267-276, 2007. &nbsp;&nbsp; <a class="nid" title="A3H" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidA3H">(A3H)</a></li>
</ul>
<ul>
<li><a name="nid6H7" id="nid6H7"></a>"<a href="http://bmir.stanford.edu/publications/view.php/supporting_rule_system_interoperability_on_the_semantic_web_with_swrl" class="extlink">Supporting Rule System Interoperability on the Semantic Web with SWRL</a>" M.J. O'Connor, H. Knublauch, S.W. Tu, B. Grossof, M. Dean, W.E. Grosso, M.A. Musen. <i>4th International Semantic Web Conference (<a href="http://iswc2005.semanticweb.org/" class="extlink">ISWC</a>)</i>, Galway, Ireland, Springer Verlag, LNCS 3729, 974-986, 2005. &nbsp;&nbsp; <a class="nid" title="6H7" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nid6H7">(6H7)</a></li>
</ul>
<ul>
<li><a name="nidBN7" id="nidBN7"></a>"<a href="http://bmir.stanford.edu/publications/view.php/writing_rules_for_the_semantic_web_using_swrl_and_jess" class="extlink">Writing Rules for the Semantic Web Using SWRL and Jess</a>" M.J. O'Connor, H. Knublauch, S.W. Tu, M.A. Musen. <i>Protégé with Rules Workshop</i>, held with <i><a href="http://protege.stanford.edu/conference/2005/" class="extlink">8th International Protégé Conference</a></i>, Madrid, Spain, 2005. &nbsp;&nbsp; <a class="nid" title="BN7" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidBN7">(BN7)</a></li>
</ul>
<p><a name="nidA3I" id="nidA3I"></a>Other papers that describe systems that use this software can be found <a href="http://bmir.stanford.edu/publications/by_author.php/martin_j_oconnor/date" class="extlink">here</a>. &nbsp;&nbsp; <a class="nid" title="A3I" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidA3I">(A3I)</a></p>
<h3><a name="nid6H8" id="nid6H8"></a>Presentations &nbsp;&nbsp; <a class="nid" title="6H8" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nid6H8">(6H8)</a></h3>
<ul>
<li><a name="nidB5F" id="nidB5F"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTutorialESWC2010" class="extlink">Page</a> describing the SWRL Tutorial at the <a href="http://www.eswc2010.org/" class="extlink">2010 Extended Semantic Web Conference</a> &nbsp;&nbsp; <a class="nid" title="B5F" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidB5F">(B5F)</a></li>
<li><a name="nidA3J" id="nidA3J"></a><a href="http://protege.stanford.edu/conference/2009/slides/SWRL2009ProtegeConference.pdf" class="extlink">Slides</a> from SWRL Tutorial at the <a href="http://protege.stanford.edu/conference/2009/" class="extlink">2009 International Protege Conference</a> &nbsp;&nbsp; <a class="nid" title="A3J" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidA3J">(A3J)</a></li>
<li><a name="nid9VW" id="nid9VW"></a><a href="http://protege.cim3.net/file/pub/files/SWRL/SWRLTalkProtegeShortCourse2006.pdf" class="extlink">Slides</a> from 60 minute talk at the <a href="http://protege.stanford.edu/shortcourse/protege/200603/" class="extlink">2006 Protege Short Course</a> &nbsp;&nbsp; <a class="nid" title="9VW" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nid9VW">(9VW)</a></li>
<li><a name="nid9VX" id="nid9VX"></a><a href="http://protege.cim3.net/file/pub/files/SWRL/SWRLTalkISWC2005.pdf" class="extlink">Slides</a> from 20 minute talk at the <a href="http://iswc2005.semanticweb.org/" class="extlink">ISWC2005</a> &nbsp;&nbsp; <a class="nid" title="9VX" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nid9VX">(9VX)</a></li>
</ul>
<h3><a name="nid6HB" id="nid6HB"></a>Installation &nbsp;&nbsp; <a class="nid" title="6HB" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nid6HB">(6HB)</a></h3>
<p><a name="nid72M" id="nid72M"></a>The SWRLTab is installed as part of Protege-OWL and does not need to be downloaded separately. However, since many of the SWRLTab components are under active development, the most recent Protege-OWL release should be used when possible. &nbsp;&nbsp; <a class="nid" title="72M" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nid72M">(72M)</a></p>
<p><a name="nidCHB" id="nidCHB"></a>The Protege-OWL distribution does not include any rule engines. If a particular rule engine is used, it must be installed separately. In 3.4.8, only the Jess rule engine is supported. Information on installing Jess is described <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab#nid6RJ" class="extlink">here</a>. In 3.5 and later, the Drools rule engine is also supported. Unlike Jess, Drools is open source and does not require a license for use so is preinstalled. &nbsp;&nbsp; <a class="nid" title="CHB" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidCHB">(CHB)</a></p>
<h3><a name="nid6HE" id="nid6HE"></a>Source Code &nbsp;&nbsp; <a class="nid" title="6HE" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nid6HE">(6HE)</a></h3>
<p><a name="nidCHC" id="nidCHC"></a>The SWRLTab is open source and in 3.4.8 and earlier all of its source code is bundled with the Protege-OWL source code.  This source code is available for download from the <a href="http://smi-protege.stanford.edu/svn/owl/trunk/" class="extlink">Protege-OWL Subversion Repository</a>. In 3.5 and later, the SWRLTab is built from a number of components. Information on downloading the source code for these components can be found <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabBuilding#nidCGI" class="extlink">here</a>. &nbsp;&nbsp; <a class="nid" title="CHC" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidCHC">(CHC)</a></p>
<h3><a name="nidB46" id="nidB46"></a>Building &nbsp;&nbsp; <a class="nid" title="B46" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidB46">(B46)</a></h3>
<p><a name="nidCH5" id="nidCH5"></a>In Protege 3.4.8 and earlier, the SWRLTab is built as part of the Protege-OWL plugin. (Information on building in 3.5 or later can be found <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabBuilding" class="extlink">here</a>.) &nbsp;&nbsp; <a class="nid" title="CH5" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidCH5">(CH5)</a></p>
<p><a name="nidCH6" id="nidCH6"></a>The Protege-OWL source code can be downloaded from the <a href="https://smi-protege.stanford.edu/svn/owl/trunk/" class="extlink">Protege-OWL Subversion Repository</a>. &nbsp;&nbsp; <a class="nid" title="CH6" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidCH6">(CH6)</a></p>
<p><a name="nidCH7" id="nidCH7"></a>A standard Subversion client can be used to download the code contained in these repositories. On the command line, with a Subversion command line client installed, something like the following should work: &nbsp;&nbsp; <a class="nid" title="CH7" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidCH7">(CH7)</a></p>
<p><a name="nidCH8" id="nidCH8"></a><tt>svn checkout https://smi-protege.stanford.edu/repos/protege/owl/trunk &lt;your-destination-dir&gt;</tt> &nbsp;&nbsp; <a class="nid" title="CH8" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidCH8">(CH8)</a></p>
<p><a name="nidCH9" id="nidCH9"></a>In general, the trunk is under active development so downloading the code for a particular public release may be safer. Each Subversion repository has a <tt>tags</tt> subdirectory containing the code for each numbered release. &nbsp;&nbsp; <a class="nid" title="CH9" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidCH9">(CH9)</a></p>
<p><a name="nidCHA" id="nidCHA"></a>The root of the download directory has an <a href="http://ant.apache.org/" class="extlink">Ant</a> build file that can be used to compile and install the plugin. An option called <tt>install</tt> can be used to perform an install. The installation step is expecting an existing Protege installation directory (e.g., <tt>C:/Program Files/Protege_3.4.5</tt>) and determines its location using the <tt>PROTEGE_HOME</tt> environment variable. &nbsp;&nbsp; <a class="nid" title="CHA" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidCHA">(CHA)</a></p>
<p><a name="nidCHD" id="nidCHD"></a>If an associated rule engine bridge is being used it may also need to be downloaded and installed. In general, it is advisable to download and build the latest version of bridges after installing a new SWRLTab. The <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab" class="wikiword">SWRLJessTab</a> and <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLDroolsTab" class="wikiword">SWRLDroolsTab</a>, for example, should always be built after a new Protege-OWL build. Information on updating to the latest <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab" class="wikiword">SWRLJessTab</a> can be found <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab#nidB4A" class="extlink">here</a>; instructions for building the <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLDroolsTab" class="wikiword">SWRLDroolsTab</a> are <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLDroolsTab#nidCG2" class="extlink">here</a>. &nbsp;&nbsp; <a class="nid" title="CHD" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidCHD">(CHD)</a></p>
<h3><a name="nid6HH" id="nid6HH"></a>Author &nbsp;&nbsp; <a class="nid" title="6HH" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nid6HH">(6HH)</a></h3>
<p><a name="nid6HI" id="nid6HI"></a>The SWRLTab was written by <a href="http://bmir.stanford.edu/people/view.php/martin_j_oconnor" class="extlink">Martin O'Connor</a> at <a href="http://bmir.stanford.edu/" class="extlink">Stanford Center for Biomedical Informatics Research</a>. &nbsp;&nbsp; <a class="nid" title="6HI" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nid6HI">(6HI)</a></p>
<h3><a name="nid6HJ" id="nid6HJ"></a>How can I get help? &nbsp;&nbsp; <a class="nid" title="6HJ" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nid6HJ">(6HJ)</a></h3>
<p><a name="nid6HK" id="nid6HK"></a>Questions and comments on the SWRLTab should be sent to the Protege-OWL mailing list (protege-owl at lists dot stanford dot edu). This list is monitored by the developers of the SWRLTab. &nbsp;&nbsp; <a class="nid" title="6HK" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nid6HK">(6HK)</a></p>
]]>
</description>
<dc:creator>48875</dc:creator>
</item>

<item rdf:about="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectThatUseProtegeTemplate">
<title>ProjectThatUseProtegeTemplate</title>
<link>http://protege.cim3.net/cgi-bin/wiki.pl?ProjectThatUseProtegeTemplate</link>
<description><![CDATA[<h2><a name="nid3M9" id="nid3M9"></a>How to use this template &nbsp;&nbsp; <a class="nid" title="3M9" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectThatUseProtegeTemplate#nid3M9">(3M9)</a></h2>
<ol>
<li><a name="nid3MA" id="nid3MA"></a>If you haven't done so before, go to the <a href="http://protege.cim3.net/cgi-bin/wiki.pl?action=editprefs" class="extlink">preference page</a> and create yourself a login account.  Then, you will need to <a href="http://protege.cim3.net/cgi-bin/wiki.pl?action=login" class="extlink">login</a> prior to editing this page. &nbsp;&nbsp; <a class="nid" title="3MA" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectThatUseProtegeTemplate#nid3MA">(3MA)</a></li>
<li><a name="nid3MB" id="nid3MB"></a>Go to the <a href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtege" class="wikiword">ProjectsThatUseProtege</a> page. &nbsp;&nbsp; <a class="nid" title="3MB" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectThatUseProtegeTemplate#nid3MB">(3MB)</a></li>
<li><a name="nid3MC" id="nid3MC"></a>Click on the "Edit this page" link at the bottom of the page. &nbsp;&nbsp; <a class="nid" title="3MC" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectThatUseProtegeTemplate#nid3MC">(3MC)</a></li>
<li><a name="nid3MD" id="nid3MD"></a>Add your entry in the appropriate (alphabetical) position on the page. Be sure to include a <a href="http://protege.cim3.net/cgi-bin/wiki.pl?WikiWord" class="wikiword">WikiWord</a> such as MyProjectName (look at how the others did it; you may want to look at the <a href="http://protege.cim3.net/cgi-bin/wiki.pl?WikiStyleGuide" class="wikiword">WikiStyleGuide</a> documentation for details). &nbsp;&nbsp; <a class="nid" title="3MD" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectThatUseProtegeTemplate#nid3MD">(3MD)</a></li>
<li><a name="nid3ME" id="nid3ME"></a>Save the page. &nbsp;&nbsp; <a class="nid" title="3ME" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectThatUseProtegeTemplate#nid3ME">(3ME)</a></li>
<li><a name="nid3MF" id="nid3MF"></a>At this point, you should see the line that you have added, with a dotted-underscore to your <a href="http://protege.cim3.net/cgi-bin/wiki.pl?WikiWord" class="wikiword">WikiWord</a> project name. This indicates that your new page will be created when you click on the question mark. Before actually editing your page, we will first copy the template: &nbsp;&nbsp; <a class="nid" title="3MF" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectThatUseProtegeTemplate#nid3MF">(3MF)</a><ol>
<li><a name="nid3MG" id="nid3MG"></a>Go to the <a href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectThatUseProtegeTemplate" class="wikiword">ProjectThatUseProtegeTemplate</a> page (this one). &nbsp;&nbsp; <a class="nid" title="3MG" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectThatUseProtegeTemplate#nid3MG">(3MG)</a></li>
<li><a name="nid3MH" id="nid3MH"></a>Click on the "Edit this page" link at the bottom of the page. &nbsp;&nbsp; <a class="nid" title="3MH" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectThatUseProtegeTemplate#nid3MH">(3MH)</a></li>
<li><a name="nid3MI" id="nid3MI"></a>Copy the text. &nbsp;&nbsp; <a class="nid" title="3MI" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectThatUseProtegeTemplate#nid3MI">(3MI)</a></li>
<li><a name="nid3MJ" id="nid3MJ"></a>Go back to <a href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtege" class="wikiword">ProjectsThatUseProtege</a>. &nbsp;&nbsp; <a class="nid" title="3MJ" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectThatUseProtegeTemplate#nid3MJ">(3MJ)</a></li>
</ol>
</li>
<li><a name="nid3MK" id="nid3MK"></a>Click on the question mark just after your <a href="http://protege.cim3.net/cgi-bin/wiki.pl?WikiWord" class="wikiword">WikiWord</a> (MyProjectName in the previous example). &nbsp;&nbsp; <a class="nid" title="3MK" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectThatUseProtegeTemplate#nid3MK">(3MK)</a></li>
<li><a name="nid3ML" id="nid3ML"></a>Click on the "Edit this page" link at the bottom of the page. &nbsp;&nbsp; <a class="nid" title="3ML" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectThatUseProtegeTemplate#nid3ML">(3ML)</a></li>
<li><a name="nid3MM" id="nid3MM"></a>Delete the first line. &nbsp;&nbsp; <a class="nid" title="3MM" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectThatUseProtegeTemplate#nid3MM">(3MM)</a></li>
<li><a name="nid3MN" id="nid3MN"></a>Paste what you previously had copied. &nbsp;&nbsp; <a class="nid" title="3MN" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectThatUseProtegeTemplate#nid3MN">(3MN)</a></li>
<li><a name="nid3MO" id="nid3MO"></a>Delete these explanations and adapt the rest :-). &nbsp;&nbsp; <a class="nid" title="3MO" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectThatUseProtegeTemplate#nid3MO">(3MO)</a></li>
<li><a name="nid3MP" id="nid3MP"></a>You <b>must</b> also delete the "purple numbers" (the things between curly brackets) when you copy content over from another page, so that the system can generate new <a href="http://protege.cim3.net/cgi-bin/wiki.pl?PurpleNumbers" class="wikiword">PurpleNumbers</a> for your new content. (Suggestion: would someone consider doing a pure text, purple number free template, please. ref: bottom of the <a href="http://protege.cim3.net/cgi-bin/wiki.pl?TemplateProjectPage" class="wikiword">TemplateProjectPage</a>.  --ppy/2006.01.26) &nbsp;&nbsp; <a class="nid" title="3MP" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectThatUseProtegeTemplate#nid3MP">(3MP)</a></li>
</ol>
<h2><a name="nid3MQ" id="nid3MQ"></a>Project Name &nbsp;&nbsp; <a class="nid" title="3MQ" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectThatUseProtegeTemplate#nid3MQ">(3MQ)</a></h2>
<h3><a name="nid3MR" id="nid3MR"></a>Summary &nbsp;&nbsp; <a class="nid" title="3MR" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectThatUseProtegeTemplate#nid3MR">(3MR)</a></h3>
<p><a name="nid3MS" id="nid3MS"></a>Provide a short description of your project (What people should know to decide if they want to learn more about you). &nbsp;&nbsp; <a class="nid" title="3MS" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectThatUseProtegeTemplate#nid3MS">(3MS)</a></p>
<h3><a name="nid3MT" id="nid3MT"></a>Homepage &nbsp;&nbsp; <a class="nid" title="3MT" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectThatUseProtegeTemplate#nid3MT">(3MT)</a></h3>
<p><a name="nid3MU" id="nid3MU"></a>Include a <a href="http://protege.stanford.edu" class="extlink">link</a> here. &nbsp;&nbsp; <a class="nid" title="3MU" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectThatUseProtegeTemplate#nid3MU">(3MU)</a></p>
<h3><a name="nid3MV" id="nid3MV"></a>Screenshot (optional) &nbsp;&nbsp; <a class="nid" title="3MV" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectThatUseProtegeTemplate#nid3MV">(3MV)</a></h3>
<p><a name="nid3MW" id="nid3MW"></a>Add a nice picture. (Just paste the URL into the file.)
<img alt="http://smi-web.stanford.edu/people/dameron/protegeScript/image/script06exampleRuby.png" src="http://smi-web.stanford.edu/people/dameron/protegeScript/image/script06exampleRuby.png" /> &nbsp;&nbsp; <a class="nid" title="3MW" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectThatUseProtegeTemplate#nid3MW">(3MW)</a></p>
<h3><a name="nid3MX" id="nid3MX"></a>Funding (optional) &nbsp;&nbsp; <a class="nid" title="3MX" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectThatUseProtegeTemplate#nid3MX">(3MX)</a></h3>
<p><a name="nid3MY" id="nid3MY"></a>Describe which agency or agencies are funding your project or have a contract with you related to this project. Please provide grant numbers, if appropriate. &nbsp;&nbsp; <a class="nid" title="3MY" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectThatUseProtegeTemplate#nid3MY">(3MY)</a></p>
<h3><a name="nid3MZ" id="nid3MZ"></a>Description (optional) &nbsp;&nbsp; <a class="nid" title="3MZ" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectThatUseProtegeTemplate#nid3MZ">(3MZ)</a></h3>
<p><a name="nid3N0" id="nid3N0"></a>Here you can provide a lengthy explanation on what your project does, how it works, and how it contributes to make the world a better place :-). Please also provide references to publications that describe your work. &nbsp;&nbsp; <a class="nid" title="3N0" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectThatUseProtegeTemplate#nid3N0">(3N0)</a></p>
]]>
</description>
<dc:creator>48875</dc:creator>
</item>

<item rdf:about="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab">
<title>SWRLJessTab</title>
<link>http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab</link>
<description><![CDATA[<p><a name="nidBLH" id="nidBLH"></a>The SWRLJessTab is a plug-in to the  <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab" class="extlink">SWRLTab</a> in <a href="http://protege.stanford.edu/overview/protege-owl.html" class="extlink">Protege-OWL</a> that supports the execution of <a href="http://www.daml.org/2003/11/swrl/" class="extlink">SWRL rules</a> using the <a href="http://herzberg.ca.sandia.gov/jess/" class="extlink">Jess rule engine</a>. 
It provides a graphical interface to interact with the <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessBridge" class="wikiword">SWRLJessBridge</a>. &nbsp;&nbsp; <a class="nid" title="BLH" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab#nidBLH">(BLH)</a></p>
<h4><a name="nid6RJ" id="nid6RJ"></a>Installation &nbsp;&nbsp; <a class="nid" title="6RJ" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab#nid6RJ">(6RJ)</a></h4>
<p><a name="nid9W3" id="nid9W3"></a>The SWRLJessTab is part of Protege-OWL and does not need to be downloaded separately. Since many of the SWRLTab components are under active development, the most recent Protege-OWL release should be used when possible. &nbsp;&nbsp; <a class="nid" title="9W3" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab#nid9W3">(9W3)</a></p>
<p><a name="nidBJ9" id="nidBJ9"></a>The <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab" class="wikiword">SWRLJessTab</a> requires that the <a href="http://www.jessrules.com/" class="extlink">Jess</a> rule engine is installed.
Information on installing Jess can be found <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessInstall" class="extlink">here</a>.
If Jess is not installed the SWRLJessTab will display an error when it is activated. &nbsp;&nbsp; <a class="nid" title="BJ9" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab#nidBJ9">(BJ9)</a></p>
<h4><a name="nid6QN" id="nid6QN"></a>Activation &nbsp;&nbsp; <a class="nid" title="6QN" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab#nid6QN">(6QN)</a></h4>
<p><a name="nid6QO" id="nid6QO"></a>When the SWRLTab is <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nid6H3" class="extlink">activated</a>, the <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLEditorFAQ" class="extlink">SWRL Editor</a> will display a list of icons for <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLRuleEngineBridgeFAQ" class="extlink">plugins that have registered themselves with the SWRLTab</a>. These icons will be displayed on the top right of the SWRL rules table. The Jess tab is activated by pressing the "J" icon. &nbsp;&nbsp; <a class="nid" title="6QO" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab#nid6QO">(6QO)</a></p>
<p><a name="nid7GD" id="nid7GD"></a>When it is pressed, the SWRLJessTab will be displayed within the SWRLTab in a window under the SWRL Editor. &nbsp;&nbsp; <a class="nid" title="7GD" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab#nid7GD">(7GD)</a></p>
<p><a name="nidCJW" id="nidCJW"></a><img alt="http://swrl.stanford.edu/images/3.5/SWRLJessTab.png" src="http://swrl.stanford.edu/images/3.5/SWRLJessTab.png" /> &nbsp;&nbsp; <a class="nid" title="CJW" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab#nidCJW">(CJW)</a></p>
<p><a name="nid6QP" id="nid6QP"></a>If the tab successfully loads the Jess rule engine, it will display a series of tabbed sub windows that can be used to interact with Jess. If it fails, an error message will be displayed indicating that the Jess rule engine was not found. The <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab#nid6RJ" class="extlink">installation instructions</a> above describe how to install the Jess rule engine so that the SWRLJessTab can find it. &nbsp;&nbsp; <a class="nid" title="6QP" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab#nid6QP">(6QP)</a></p>
<p><a name="nid6RC" id="nid6RC"></a>Pressing the "J" icon again will hide the tab and deactivate the Jess rule engine. Note that when the tab is deactivated, the associated rule engine is deactivated too so all state that it may hold will be lost. &nbsp;&nbsp; <a class="nid" title="6RC" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab#nid6RC">(6RC)</a></p>
<h4><a name="nid6RD" id="nid6RD"></a>Interacting with the SWRLJessTab &nbsp;&nbsp; <a class="nid" title="6RD" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab#nid6RD">(6RD)</a></h4>
<p><a name="nid6QQ" id="nid6QQ"></a>The interaction between OWL and the Jess rule engine is user-driven. The user controls when OWL knowledge and SWRL rules are transferred to Jess, when inference is performed using those knowledge and rules, and when the resulting Jess facts are transferred back to Protégé-OWL as OWL knowledge. The paper "<a href="http://bmir.stanford.edu/publications/view.php/supporting_rule_system_interoperability_on_the_semantic_web_with_swrl" class="extlink">Supporting Rule System Interoperability on the Semantic Web with SWRL</a>" gives a high-level overview of this process and describes how SWRL rules and OWL knowledge are represented in Jess. &nbsp;&nbsp; <a class="nid" title="6QQ" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab#nid6QQ">(6QQ)</a></p>
<p><a name="nid6QS" id="nid6QS"></a>The SWRLJessTab has eight tabbed subwindows that can be used to control and review this interaction. The primary tab is the Jess Control tab, which provides the control functionality. It provides a status window to display a record of the interaction between the user and Jess and three buttons to control the knowledge transfer and inference process. &nbsp;&nbsp; <a class="nid" title="6QS" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab#nid6QS">(6QS)</a></p>
<p><a name="nid6QT" id="nid6QT"></a>The button marked "OWL+SWRL-&gt;Jess" will transfer all SWRL rules and appropriate OWL knowledge to the Jess rule engine. The status window will indicate the number of rules and OWL classes, properties, and individuals that have been transferred. Pressing the button again will clear all previously transferred knowledge in Jess and will reinitate the transfer process. &nbsp;&nbsp; <a class="nid" title="6QT" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab#nid6QT">(6QT)</a></p>
<p><a name="nidCIR" id="nidCIR"></a>The "Inferred Axioms" sub tab in the <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLDroolsTab" class="wikiword">SWRLDroolsTab</a> can be used to examine the OWL axioms that have been transferred to Drools. &nbsp;&nbsp; <a class="nid" title="CIR" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab#nidCIR">(CIR)</a></p>
<p><a name="nidCJW" id="nidCJW"></a><img alt="http://swrl.stanford.edu/images/3.5/SWRLJessTabAssertedAxioms.png" src="http://swrl.stanford.edu/images/3.5/SWRLJessTabAssertedAxioms.png" /> &nbsp;&nbsp; <a class="nid" title="CJW" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab#nidCJW">(CJW)</a></p>
<p><a name="nidCIS" id="nidCIS"></a>The "Run Jess" button can then be pressed to initiate the inference process. When pressed, Drools will run its inference engine and possibly generate new knowledge. This inferred knowledge can be reviewed in the "Inferred Axioms" subtab. &nbsp;&nbsp; <a class="nid" title="CIS" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab#nidCIS">(CIS)</a></p>
<p><a name="nidCJW" id="nidCJW"></a><img alt="http://swrl.stanford.edu/images/3.5/SWRLJessTabInferredAxioms.png" src="http://swrl.stanford.edu/images/3.5/SWRLJessTabInferredAxioms.png" /> &nbsp;&nbsp; <a class="nid" title="CJW" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab#nidCJW">(CJW)</a></p>
<p><a name="nid8AU" id="nid8AU"></a>At that point, this inferred knowledge can be passed back to OWL by pressing the "Jess-&gt;OWL" button. At the moment, this new inferred knowledge is not distinguished from asserted knowledge, as is the common practice with reasoner-inferred knowledge in Protege-OWL. We will be fixing this shortcoming in a later release. &nbsp;&nbsp; <a class="nid" title="8AU" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab#nid8AU">(8AU)</a></p>
<h4><a name="nidCJS" id="nidCJS"></a>What reasoner does the SWRLJessTab use? &nbsp;&nbsp; <a class="nid" title="CJS" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab#nidCJS">(CJS)</a></h4>
<p><a name="nidCJT" id="nidCJT"></a>As of the 3.5 release of Protege-OWL, the Jess tab uses an OWL 2 RL-based reasoner. 
The 'OWL 2 RL' subtab within the <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab" class="wikiword">SWRLJessTab</a> provides control of this reasoner.
See <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabOWL2RL" class="extlink">here</a> for additional details on this subtab. &nbsp;&nbsp; <a class="nid" title="CJT" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab#nidCJT">(CJT)</a></p>
<h4><a name="nid6UX" id="nid6UX"></a>Where can I get the source code for the <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab" class="wikiword">SWRLJessTab</a>? &nbsp;&nbsp; <a class="nid" title="6UX" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab#nid6UX">(6UX)</a></h4>
<p><a name="nid6UY" id="nid6UY"></a>The source code is available in the <a href="https://smi-protege.stanford.edu/svn/swrl-jess-bridge/trunk/" class="extlink">SWRL Jess bridge Subversion Repository</a>. &nbsp;&nbsp; <a class="nid" title="6UY" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab#nid6UY">(6UY)</a></p>
<h4><a name="nidB4A" id="nidB4A"></a>How can I build the <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab" class="wikiword">SWRLJessTab</a>? &nbsp;&nbsp; <a class="nid" title="B4A" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab#nidB4A">(B4A)</a></h4>
<p><a name="nidCBT" id="nidCBT"></a>The <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab" class="wikiword">SWRLJessTab</a> can be downloaded from the <a href="https://smi-protege.stanford.edu/svn/swrl-jess-bridge/trunk/" class="extlink">SWRL Jess Bridge Subversion Repository</a>. &nbsp;&nbsp; <a class="nid" title="CBT" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab#nidCBT">(CBT)</a></p>
<p><a name="nidCBU" id="nidCBU"></a>On the command line, with Subversion installed, something like the following should work: &nbsp;&nbsp; <a class="nid" title="CBU" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab#nidCBU">(CBU)</a></p>
<p><a name="nidCBV" id="nidCBV"></a><tt>svn checkout https://smi-protege.stanford.edu/repos/protege/swrl-jess-bridge/trunk &lt;your-destination-dir&gt;</tt> &nbsp;&nbsp; <a class="nid" title="CBV" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab#nidCBV">(CBV)</a></p>
<p><a name="nidCH0" id="nidCH0"></a>In general, the trunk is under active development so downloading the code for a particular public release may be safer. The Subversion repository has a <tt>tags</tt> subdirectory containing the code for each numbered release. &nbsp;&nbsp; <a class="nid" title="CH0" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab#nidCH0">(CH0)</a></p>
<p><a name="nidB4B" id="nidB4B"></a>If using the trunk, it is advisable to download and build the latest version of Protege and Protege-OWL before building a new <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab" class="wikiword">SWRLJessTab</a>. These can be obtained at the <a href="http://smi-protege.stanford.edu/svn/protege-core/" class="extlink">Core Protege</a> and <a href="http://smi-protege.stanford.edu/svn/owl/" class="extlink">OWL</a> Subversion repositories. Instructions on how to build the SWRLTab can be found <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nidB46" class="extlink">here</a>. &nbsp;&nbsp; <a class="nid" title="B4B" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab#nidB4B">(B4B)</a></p>
<p><a name="nidB4G" id="nidB4G"></a>The root of the download directory has an <a href="http://ant.apache.org/" class="extlink">Ant</a> build file that can be used to compile and install it.  An option called <tt>install</tt> can be used to perform an install. The installation step is expecting an existing Protege installation and determines its location using the <tt>PROTEGE_HOME</tt> environment variable. An example Protege installation directory could be <tt>C:/Program Files/Protege_3.5</tt>. It is also expecting a Jess installation directory containing <tt>jess.jar</tt>, which it locates using the <tt>JESSHOME</tt> environment variable. &nbsp;&nbsp; <a class="nid" title="B4G" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab#nidB4G">(B4G)</a></p>
]]>
</description>
<dc:creator>48875</dc:creator>
</item>

<item rdf:about="http://protege.cim3.net/cgi-bin/wiki.pl?WikiHomePage">
<title>WikiHomePage</title>
<link>http://protege.cim3.net/cgi-bin/wiki.pl?WikiHomePage</link>
<description><![CDATA[<p><a name="nid39Y" id="nid39Y"></a><b>Protege Community of Practice</b> (<a href="http://protege.cim3.net/cgi-bin/wiki.pl?CoP" class="extlink">CoP</a>) is a community of users, researchers, and developers who are using the Protege ontology-development environment.  For a more detailed explanation of Protege, please see the <a href="http://protege.stanford.edu/overview/" class="extlink">overview section</a> of the main <a href="http://protege.stanford.edu" class="extlink">Protege Web site</a>. &nbsp;&nbsp; <a class="nid" title="39Y" href="http://protege.cim3.net/cgi-bin/wiki.pl?WikiHomePage#nid39Y">(39Y)</a></p>
<hr />

<h3><a name="nid39Z" id="nid39Z"></a>Table of Contents &nbsp;&nbsp; <a class="nid" title="39Z" href="http://protege.cim3.net/cgi-bin/wiki.pl?WikiHomePage#nid39Z">(39Z)</a></h3>
<ul>
<li><a name="nid3A0" id="nid3A0"></a><b><a href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtege" class="extlink">Projects that use Protege</a>:</b> Tell us what you are doing with Protege and its plug-ins! &nbsp;&nbsp; <a class="nid" title="3A0" href="http://protege.cim3.net/cgi-bin/wiki.pl?WikiHomePage#nid3A0">(3A0)</a></li>
</ul>
<ul>
<li><a name="nid3A1" id="nid3A1"></a><b><a href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegeOntologiesLibrary" class="extlink">Protege Ontologies Library</a></b> &nbsp;&nbsp; <a class="nid" title="3A1" href="http://protege.cim3.net/cgi-bin/wiki.pl?WikiHomePage#nid3A1">(3A1)</a></li>
</ul>
<ul>
<li><a name="nid3A2" id="nid3A2"></a><b>Protege Plug-ins &amp; Applications Library</b> &nbsp;&nbsp; <a class="nid" title="3A2" href="http://protege.cim3.net/cgi-bin/wiki.pl?WikiHomePage#nid3A2">(3A2)</a><ul>
<li><a name="nid3A3" id="nid3A3"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByTopic" class="extlink">view by topic</a> &nbsp;&nbsp; <a class="nid" title="3A3" href="http://protege.cim3.net/cgi-bin/wiki.pl?WikiHomePage#nid3A3">(3A3)</a></li>
<li><a name="nid3A4" id="nid3A4"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType" class="extlink">view by type</a> &nbsp;&nbsp; <a class="nid" title="3A4" href="http://protege.cim3.net/cgi-bin/wiki.pl?WikiHomePage#nid3A4">(3A4)</a></li>
</ul>
</li>
</ul>
<ul>
<li><a name="nidAD8" id="nidAD8"></a><b>Protege  4 Links</b> &nbsp;&nbsp; <a class="nid" title="AD8" href="http://protege.cim3.net/cgi-bin/wiki.pl?WikiHomePage#nidAD8">(AD8)</a><ul>
<li><a name="nidAD9" id="nidAD9"></a><a href="http://protegewiki.stanford.edu/index.php/Protege4UserDocs" class="extlink">Protege 4 User Docs (wiki)</a> &nbsp;&nbsp; <a class="nid" title="AD9" href="http://protege.cim3.net/cgi-bin/wiki.pl?WikiHomePage#nidAD9">(AD9)</a></li>
<li><a name="nidADA" id="nidADA"></a><a href="http://protegewiki.stanford.edu/index.php/Protege4DevDocs" class="extlink">Protege 4 Developer Docs (wiki)</a> &nbsp;&nbsp; <a class="nid" title="ADA" href="http://protege.cim3.net/cgi-bin/wiki.pl?WikiHomePage#nidADA">(ADA)</a></li>
<li><a name="nidADB" id="nidADB"></a><a href="http://protegewiki.stanford.edu/index.php/Protege-OWL_4.0" class="extlink">Protege 4 Plugins Page</a> &nbsp;&nbsp; <a class="nid" title="ADB" href="http://protege.cim3.net/cgi-bin/wiki.pl?WikiHomePage#nidADB">(ADB)</a></li>
</ul>
</li>
</ul>
<ul>
<li><a name="nid3A5" id="nid3A5"></a><b>Protege How-To</b> &nbsp;&nbsp; <a class="nid" title="3A5" href="http://protege.cim3.net/cgi-bin/wiki.pl?WikiHomePage#nid3A5">(3A5)</a><ul>
<li><a name="nid3A6" id="nid3A6"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?ModelingTipsAndTricks" class="extlink">Modeling Tips and Tricks</a> &nbsp;&nbsp; <a class="nid" title="3A6" href="http://protege.cim3.net/cgi-bin/wiki.pl?WikiHomePage#nid3A6">(3A6)</a></li>
<li><a name="nid3A7" id="nid3A7"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?ProgrammingTipsAndTricks" class="extlink">Programming Tips and Tricks</a> &nbsp;&nbsp; <a class="nid" title="3A7" href="http://protege.cim3.net/cgi-bin/wiki.pl?WikiHomePage#nid3A7">(3A7)</a></li>
<li><a name="nid3A8" id="nid3A8"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?UsageTipsAndTricks" class="extlink">Using Protégé for your application purpose</a> &nbsp;&nbsp; <a class="nid" title="3A8" href="http://protege.cim3.net/cgi-bin/wiki.pl?WikiHomePage#nid3A8">(3A8)</a></li>
</ul>
</li>
</ul>
<ul>
<li><a name="nid3A9" id="nid3A9"></a><b>Protege Related</b> &nbsp;&nbsp; <a class="nid" title="3A9" href="http://protege.cim3.net/cgi-bin/wiki.pl?WikiHomePage#nid3A9">(3A9)</a><ul>
<li><a name="nid3AA" id="nid3AA"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?Tutorials" class="extlink">Tutorials</a> &nbsp;&nbsp; <a class="nid" title="3AA" href="http://protege.cim3.net/cgi-bin/wiki.pl?WikiHomePage#nid3AA">(3AA)</a></li>
<li><a name="nid3AB" id="nid3AB"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?Publications" class="extlink">Publications</a> &nbsp;&nbsp; <a class="nid" title="3AB" href="http://protege.cim3.net/cgi-bin/wiki.pl?WikiHomePage#nid3AB">(3AB)</a></li>
<li><a name="nid3AC" id="nid3AC"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?ScalabilityAndTuning" class="extlink">ScalabilityAndTuning</a> &nbsp;&nbsp; <a class="nid" title="3AC" href="http://protege.cim3.net/cgi-bin/wiki.pl?WikiHomePage#nid3AC">(3AC)</a></li>
<li><a name="nid3AD" id="nid3AD"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?DesignRationale" class="extlink">DesignRationale</a> &nbsp;&nbsp; <a class="nid" title="3AD" href="http://protege.cim3.net/cgi-bin/wiki.pl?WikiHomePage#nid3AD">(3AD)</a></li>
</ul>
</li>
</ul>
<hr />

<h3><a name="nid3AE" id="nid3AE"></a>First time users &nbsp;&nbsp; <a class="nid" title="3AE" href="http://protege.cim3.net/cgi-bin/wiki.pl?WikiHomePage#nid3AE">(3AE)</a></h3>
<p><a name="nid4CF" id="nid4CF"></a>Read about the <a href="http://c2.com/cgi/wiki?WikiWikiWeb" class="extlink">WikiWikiWeb</a> and then play in the <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SandBox" class="extlink">SandBox</a>. Text formatting rules can be found at the <a href="http://protege.cim3.net/cgi-bin/wiki.pl?TextFormattingRules" class="extlink">TextFormattingRules</a> page. For rules about using this Wiki, read our <a href="http://protege.cim3.net/cgi-bin/wiki.pl?WikiStyleGuide" class="extlink">WikiStyleGuide</a> and <a href="http://protege.cim3.net/cgi-bin/wiki.pl?WikiProcessGuide" class="extlink">WikiProcessGuide</a>. &nbsp;&nbsp; <a class="nid" title="4CF" href="http://protege.cim3.net/cgi-bin/wiki.pl?WikiHomePage#nid4CF">(4CF)</a></p>
<p><a name="nid4CG" id="nid4CG"></a>Please create an account and login with a "<a href="http://protege.cim3.net/cgi-bin/wiki.pl?WikiWord" class="extlink">WikiWord</a>" styled user name (like "<a href="http://protege.cim3.net/cgi-bin/wiki.pl?JaneDoe" class="extlink">JaneDoe</a>" or "AbrahamLincoln") for yourself before you proceed with a wiki authoring/editing session. &nbsp;&nbsp; <a class="nid" title="4CG" href="http://protege.cim3.net/cgi-bin/wiki.pl?WikiHomePage#nid4CG">(4CG)</a></p>
<p><a name="nid3AF" id="nid3AF"></a>You can also read more about <a href="http://protege.cim3.net/cgi-bin/wiki.pl?CollaborativeWorkEnvironments" class="extlink">Collaborative Work Environments</a> &nbsp;&nbsp; <a class="nid" title="3AF" href="http://protege.cim3.net/cgi-bin/wiki.pl?WikiHomePage#nid3AF">(3AF)</a></p>
<hr />

<h3><a name="nid3AG" id="nid3AG"></a>File-Sharing Workspace / Document Repository &nbsp;&nbsp; <a class="nid" title="3AG" href="http://protege.cim3.net/cgi-bin/wiki.pl?WikiHomePage#nid3AG">(3AG)</a></h3>
<ul>
<li><a name="nid3AH" id="nid3AH"></a>File-Sharing Workspace / Document Repository  - <a href="http://protege.cim3.net/file/" class="extlink">http://protege.cim3.net/file/</a> &nbsp;&nbsp; <a class="nid" title="3AH" href="http://protege.cim3.net/cgi-bin/wiki.pl?WikiHomePage#nid3AH">(3AH)</a><ul>
<li><a name="nid3AI" id="nid3AI"></a>password protected file workspace - <a href="http://protege.cim3.net/file/community/" class="extlink">http://protege.cim3.net/file/community/</a> &nbsp;&nbsp; <a class="nid" title="3AI" href="http://protege.cim3.net/cgi-bin/wiki.pl?WikiHomePage#nid3AI">(3AI)</a></li>
<li><a name="nid3AJ" id="nid3AJ"></a>To access the File Workspace - see: <a href="http://community.cim3.net/cgi-bin/wiki.pl?FileWorkspaceAccess" class="extlink">http://community.cim3.net/cgi-bin/wiki.pl?FileWorkspaceAccess</a> &nbsp;&nbsp; <a class="nid" title="3AJ" href="http://protege.cim3.net/cgi-bin/wiki.pl?WikiHomePage#nid3AJ">(3AJ)</a></li>
</ul>
</li>
</ul>
<hr />

<p><a name="nid3AK" id="nid3AK"></a><i>------ please retain the portion of the content below this line ------</i> &nbsp;&nbsp; <a class="nid" title="3AK" href="http://protege.cim3.net/cgi-bin/wiki.pl?WikiHomePage#nid3AK">(3AK)</a></p>
<h4><a name="nid3AL" id="nid3AL"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?CreditsAcknowledgement" class="wikiword">CreditsAcknowledgement</a> &nbsp;&nbsp; <a class="nid" title="3AL" href="http://protege.cim3.net/cgi-bin/wiki.pl?WikiHomePage#nid3AL">(3AL)</a></h4>
<ul>
<li><a name="nid3AM" id="nid3AM"></a><b>Intellectual Property Rights Policy</b> - all contribution to this collaborative work environment shall be deemed to have been made under an open content license, open publication license or one of the <a href="http://www.gnu.org/philosophy/free-sw.html" class="extlink">free software</a> or <a href="http://www.opensource.org/docs/definition.php" class="extlink">open source</a> licenses. (See also: <a href="http://en.wikipedia.org/wiki/free_content" class="extlink">http://en.wikipedia.org/wiki/free_content</a>) &nbsp;&nbsp; <a class="nid" title="3AM" href="http://protege.cim3.net/cgi-bin/wiki.pl?WikiHomePage#nid3AM">(3AM)</a><ul>
<li><a name="nid3AN" id="nid3AN"></a>unless otherwise specified, content within this collaborative work environment shall be subject to Open Content License (OPL), Version 1.0, July 14, 1998 or its successor. (see <a href="http://opencontent.org/opl.shtml" class="extlink">http://opencontent.org/opl.shtml</a>) &nbsp;&nbsp; <a class="nid" title="3AN" href="http://protege.cim3.net/cgi-bin/wiki.pl?WikiHomePage#nid3AN">(3AN)</a></li>
<li><a name="nid3AO" id="nid3AO"></a>those who are unable to contribute under the above licensing arrangements should refrain from contributing to the cwe content. &nbsp;&nbsp; <a class="nid" title="3AO" href="http://protege.cim3.net/cgi-bin/wiki.pl?WikiHomePage#nid3AO">(3AO)</a></li>
</ul>
</li>
</ul>
<ul>
<li><a name="nid3AP" id="nid3AP"></a>see <a href="http://protege.cim3.net/cgi-bin/wiki.pl?AboutThisWiki" class="extlink">AboutThisWiki</a> &nbsp;&nbsp; <a class="nid" title="3AP" href="http://protege.cim3.net/cgi-bin/wiki.pl?WikiHomePage#nid3AP">(3AP)</a></li>
</ul>
]]>
</description>
<dc:creator>48875</dc:creator>
</item>

<item rdf:about="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns">
<title>SWRLQueryBuiltIns</title>
<link>http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns</link>
<description><![CDATA[<p><a name="nidA3B" id="nidA3B"></a><i>As of Protege 3.4 beta, build 108, this built-in library has been replaced by the <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SQWRL" class="extlink">SQWRL built-in library</a>. To update existing ontologies that use this library, simply change the prefix of any query built-ins from 'query' to 'sqwrl'.</i> &nbsp;&nbsp; <a class="nid" title="A3B" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nidA3B">(A3B)</a></p>
<p><a name="nid8V8" id="nid8V8"></a>The SWRL Query Built-In Library is one of the <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabBuiltInLibraries" class="wikiword">SWRLTabBuiltInLibraries</a>. It defines a set of built-ins that can be used in SWRL rules to query OWL ontologies. The built-ins in this library can be used to effectively turn SWRL into a query language. They provide SQL-like operations to format knowledge retrieved from an OWL ontology. The resulting  query language does not alter SWRL's semantics and uses the standard <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ" class="extlink">presentation syntax</a> supported by the SWRLTab. &nbsp;&nbsp; <a class="nid" title="8V8" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8V8">(8V8)</a></p>
<p><a name="nid9LS" id="nid9LS"></a>This document assumes that the reader is already familiar with SWRL. An introduction can be found <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ" class="extlink">here</a>. &nbsp;&nbsp; <a class="nid" title="9LS" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid9LS">(9LS)</a></p>
<p><a name="nid9X6" id="nid9X6"></a>These built-ins are defined in the <a href="http://swrl.stanford.edu/ontologies/built-ins/3.3/query.owl" class="extlink">SWRL Query Ontology</a>. It has the default namespace prefix <tt>query</tt>. A copy of this file can be found the standard Protege-OWL repositories, and can be imported through the 'Import Ontology' option in the Metadata tab. &nbsp;&nbsp; <a class="nid" title="9X6" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid9X6">(9X6)</a></p>
<h4><a name="nid8UI" id="nid8UI"></a>Basic Queries &nbsp;&nbsp; <a class="nid" title="8UI" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8UI">(8UI)</a></h4>
<p><a name="nid8WY" id="nid8WY"></a>Assume we have a simple ontology with classes <tt>Person</tt>, which has subclasses <tt>Male</tt> and <tt>Female</tt> with associated functional properties <tt>hasAge</tt> and <tt>hasName</tt>, and a class <tt>Car</tt>, that can be associated with individual of class <tt>Person</tt> through the <tt>hasCar</tt> property. &nbsp;&nbsp; <a class="nid" title="8WY" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8WY">(8WY)</a></p>
<p><a name="nid8SW" id="nid8SW"></a>Here, for example, is a simple SWRL query to extract all known persons in an ontology whose age is less than 25, together with their ages: &nbsp;&nbsp; <a class="nid" title="8SW" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8SW">(8SW)</a></p>
<ul>
<li><a name="nid8SX" id="nid8SX"></a>Person(?p) ^ hasAge(?p, ?a) ^ swrlb:lessThan(?a, 25) -&gt; query:select(?p, ?a) &nbsp;&nbsp; <a class="nid" title="8SX" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8SX">(8SX)</a></li>
</ul>
<p><a name="nid8WZ" id="nid8WZ"></a>This query will return pairs of individuals and ages. &nbsp;&nbsp; <a class="nid" title="8WZ" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8WZ">(8WZ)</a></p>
<p><a name="nid8SY" id="nid8SY"></a>To list all the cars owned by each person, we can write: &nbsp;&nbsp; <a class="nid" title="8SY" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8SY">(8SY)</a></p>
<ul>
<li><a name="nid8SZ" id="nid8SZ"></a>Person(?p) ^ hasCar(?p, ?c) -&gt; query:select(?p, ?c) &nbsp;&nbsp; <a class="nid" title="8SZ" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8SZ">(8SZ)</a></li>
</ul>
<p><a name="nid8T0" id="nid8T0"></a>This query will return pairs of individuals and their cars. Assuming <tt>hasCar</tt> is a non functional property, multiple pairs would be displayed for each individual - one pair for each car that they own. &nbsp;&nbsp; <a class="nid" title="8T0" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8T0">(8T0)</a></p>
<p><a name="nid91A" id="nid91A"></a>The <tt>select</tt> built-in accepts a variable number of arguments. Literal values can also be passed to it. Those values are simply returned as row content. For example, the query: &nbsp;&nbsp; <a class="nid" title="91A" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid91A">(91A)</a></p>
<ul>
<li><a name="nid91B" id="nid91B"></a>Person(?p) ^ hasCar(?p, ?c) -&gt; query:select(?p, ?c, "Cars and Persons") &nbsp;&nbsp; <a class="nid" title="91B" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid91B">(91B)</a></li>
</ul>
<p><a name="nid91C" id="nid91C"></a>will return with the string "Cars and Persons" as the third column contents of every row in the result. &nbsp;&nbsp; <a class="nid" title="91C" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid91C">(91C)</a></p>
<h4><a name="nid8UY" id="nid8UY"></a>Accessing the Results of Queries &nbsp;&nbsp; <a class="nid" title="8UY" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8UY">(8UY)</a></h4>
<p><a name="nid8TA" id="nid8TA"></a>There are two mechanisms provides by the SWRLTab for accessing the results of queries: (1) a Java API that provides a JDBC-like interface called the <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryAPI" class="wikiword">SWRLQueryAPI</a>, which can be used to retrieve query results in Java application; and (2) a graphical user interface called the <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryTab" class="wikiword">SWRLQueryTab</a> that supports interactive querying and results display within the SWRLTab. &nbsp;&nbsp; <a class="nid" title="8TA" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8TA">(8TA)</a></p>
<h4><a name="nid8YR" id="nid8YR"></a>Queries and Rules &nbsp;&nbsp; <a class="nid" title="8YR" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8YR">(8YR)</a></h4>
<p><a name="nid8YX" id="nid8YX"></a>Rules with query built-ins are not independent of other SWRL rules in an ontology - they operate in conjunction with those rules as part of a rule base. Queries can thus be used to retrieve knowledge inferred by other rules. &nbsp;&nbsp; <a class="nid" title="8YX" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8YX">(8YX)</a></p>
<p><a name="nid8YT" id="nid8YT"></a>Assume, for example, that we define the person subclass <tt>Adult</tt> and attach the functional property <tt>hasAge</tt> to persons and write the following rule to classify persons older than 17 as adults: &nbsp;&nbsp; <a class="nid" title="8YT" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8YT">(8YT)</a></p>
<ul>
<li><a name="nid8YU" id="nid8YU"></a>Person(?p) ^ hasAge(?p, ?age) ^ swrlb:greaterThan(?age, 17) -&gt; Adult(?p) &nbsp;&nbsp; <a class="nid" title="8YU" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8YU">(8YU)</a></li>
</ul>
<p><a name="nid8YV" id="nid8YV"></a>We can then write a query to list all the adults in an ontolgy as follows: &nbsp;&nbsp; <a class="nid" title="8YV" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8YV">(8YV)</a></p>
<ul>
<li><a name="nid8YW" id="nid8YW"></a>Adult(?p) -&gt; query:select(?p) &nbsp;&nbsp; <a class="nid" title="8YW" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8YW">(8YW)</a></li>
</ul>
<p><a name="nid8YY" id="nid8YY"></a>While, one could write a single rule that simply retrieved all persons older than 17 years old, the use of an intermediate class assists readability and permits reuse of the intermediate concept in other rules. While subqueries are not possible in SWRL queries, these intermediate concepts can be used to provide an effective equivalent. &nbsp;&nbsp; <a class="nid" title="8YY" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8YY">(8YY)</a></p>
<h4><a name="nid8UK" id="nid8UK"></a>Counting &nbsp;&nbsp; <a class="nid" title="8UK" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8UK">(8UK)</a></h4>
<p><a name="nid8T1" id="nid8T1"></a>Basic counting is also supported by the query built-in library. A built-in called <tt>count</tt> provides this functionality. It  takes a single argument. If we wished to, say, get a count of the number of cars owned by a individuals in an ontology, we could write the following query: &nbsp;&nbsp; <a class="nid" title="8T1" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8T1">(8T1)</a></p>
<ul>
<li><a name="nid8T2" id="nid8T2"></a>Person(?p) ^ hasCar(?p, ?c) -&gt; query:select(?p) ^ query:count(?c) &nbsp;&nbsp; <a class="nid" title="8T2" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8T2">(8T2)</a></li>
</ul>
<p><a name="nid8TD" id="nid8TD"></a>This query would return a list of individuals and counts, with one row for each individual together with a count of the number of cars that they own. Individuals that have no cars would not be matched by this query. &nbsp;&nbsp; <a class="nid" title="8TD" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8TD">(8TD)</a></p>
<p><a name="nid8UL" id="nid8UL"></a>A similar query to count the number of cars owned by persons in an ontology can be written as: &nbsp;&nbsp; <a class="nid" title="8UL" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8UL">(8UL)</a></p>
<ul>
<li><a name="nid8UM" id="nid8UM"></a>Person(?p) ^ hasCar(?p, ?c) -&gt; query:count(?c) &nbsp;&nbsp; <a class="nid" title="8UM" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8UM">(8UM)</a></li>
</ul>
<p><a name="nid8WW" id="nid8WW"></a>If we wish to simply count the number of cars in an ontology irrespective of whether they have owners or not, we can write: &nbsp;&nbsp; <a class="nid" title="8WW" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8WW">(8WW)</a></p>
<ul>
<li><a name="nid8WX" id="nid8WX"></a>Car(?c) -&gt; query:count(?c) &nbsp;&nbsp; <a class="nid" title="8WX" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8WX">(8WX)</a></li>
</ul>
<p><a name="nid912" id="nid912"></a>When the <tt>count</tt> built-in is used in a query, all variables mentioned in the <tt>select</tt> built-in are effectively coalesced - that is, all value equivalent rows are merged. For example, the following query will return a list of all person names in an ontology: &nbsp;&nbsp; <a class="nid" title="912" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid912">(912)</a></p>
<ul>
<li><a name="nid913" id="nid913"></a>Person(?p) ^ hasName(?p, ?name) -&gt; query:select(?name) &nbsp;&nbsp; <a class="nid" title="913" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid913">(913)</a></li>
</ul>
<p><a name="nid914" id="nid914"></a>If more than one person has a particular name it will be returned multiple times. If, however, we wish to count the number of times each person name occurs in an ontology, we can do the following: &nbsp;&nbsp; <a class="nid" title="914" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid914">(914)</a></p>
<ul>
<li><a name="nid915" id="nid915"></a>Person(?p) ^ hasName(?p, ?name) -&gt; query:select(?name) ^ query:count(?name) &nbsp;&nbsp; <a class="nid" title="915" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid915">(915)</a></li>
</ul>
<p><a name="nid916" id="nid916"></a>Every duplicate name will be grouped and the <tt>count</tt> built-in will keep track of the number of occurrences of each name. &nbsp;&nbsp; <a class="nid" title="916" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid916">(916)</a></p>
<p><a name="nid917" id="nid917"></a>This process is analogous to SQL's GROUP BY clause - the only difference being that grouping is implicit. &nbsp;&nbsp; <a class="nid" title="917" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid917">(917)</a></p>
<p><a name="nid8Z0" id="nid8Z0"></a>Clearly, counting operates on the result itself - not on the underlying ontology. &nbsp;&nbsp; <a class="nid" title="8Z0" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8Z0">(8Z0)</a></p>
<h4><a name="nid8UO" id="nid8UO"></a>Aggregation &nbsp;&nbsp; <a class="nid" title="8UO" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8UO">(8UO)</a></h4>
<p><a name="nid8UP" id="nid8UP"></a>Basic aggregation is also supported. Four built-ins called <tt>min</tt>, <tt>max</tt>, <tt>sum</tt>, and <tt>avg</tt> provide this functionality. Aggregation built-ins take a single argument which must represent a numeric type. For example, a query to return the average age of persons in an ontology (for which an age is known) can be written as: &nbsp;&nbsp; <a class="nid" title="8UP" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8UP">(8UP)</a></p>
<ul>
<li><a name="nid8UQ" id="nid8UQ"></a>Person(?p) ^ hasAge(?p, ?age) -&gt; query:avg(?age) &nbsp;&nbsp; <a class="nid" title="8UQ" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8UQ">(8UQ)</a></li>
</ul>
<p><a name="nid8UR" id="nid8UR"></a>Similarly, a query to return the maximum age of a person in an ontology can be written as: &nbsp;&nbsp; <a class="nid" title="8UR" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8UR">(8UR)</a></p>
<ul>
<li><a name="nid8US" id="nid8US"></a>Person(?p) ^ hasAge(?p, ?age) -&gt; query:max(?age) &nbsp;&nbsp; <a class="nid" title="8US" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8US">(8US)</a></li>
</ul>
<p><a name="nid8TH" id="nid8TH"></a>Any numeric variable not passed to a <tt>select</tt> built-in can be aggregated. Variables that have already been passed to a <tt>select</tt> built-in cannot be aggregated - an error will be generated by the query library if an attempt is made to use them in this way. &nbsp;&nbsp; <a class="nid" title="8TH" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8TH">(8TH)</a></p>
<p><a name="nid918" id="nid918"></a>As with the <tt>count</tt> built-in above, the aggregation process is similar to grouping in SQL. &nbsp;&nbsp; <a class="nid" title="918" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid918">(918)</a></p>
<h4><a name="nid8VN" id="nid8VN"></a>Ordering of Results &nbsp;&nbsp; <a class="nid" title="8VN" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8VN">(8VN)</a></h4>
<p><a name="nid8W0" id="nid8W0"></a>Results can be ordered using the <tt>orderBy</tt> and <tt>orderByDescending</tt> built-ins. For example, to extend the earlier query that returns a count of the number of cars owned by each person to order the results by each person's name, we can write: &nbsp;&nbsp; <a class="nid" title="8W0" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8W0">(8W0)</a></p>
<ul>
<li><a name="nid8VU" id="nid8VU"></a>Person(?p) ^ hasName(, p, ?name) ^ hasCar(?p, ?c) -&gt; query:select(?name) ^ query:count(?c) ^ query:orderBy(?name) &nbsp;&nbsp; <a class="nid" title="8VU" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8VU">(8VU)</a></li>
</ul>
<p><a name="nid98U" id="nid98U"></a>The <tt>orderBy</tt> and <tt>orderByDescending</tt> built-ins take one or more variables as arguments. All such arguments must have been used in a <tt>select</tt>, <tt>count</tt>, or aggregate built-in in the same query. &nbsp;&nbsp; <a class="nid" title="98U" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid98U">(98U)</a></p>
<p><a name="nid98V" id="nid98V"></a>So, for example, we can rewrite the previous query to order the results but the number of cars owned by each person in descending order as follows: &nbsp;&nbsp; <a class="nid" title="98V" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid98V">(98V)</a></p>
<ul>
<li><a name="nid98W" id="nid98W"></a>Person(?p) ^ hasName(, p, ?name) ^ hasCar(?p, ?c) -&gt; query:select(?name) ^ query:count(?c) ^ query:orderByDescending(?c) &nbsp;&nbsp; <a class="nid" title="98W" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid98W">(98W)</a></li>
</ul>
<p><a name="nid8YZ" id="nid8YZ"></a>If an attempt is made to mix ascending and descending ordering in the same rule an error will be generated. &nbsp;&nbsp; <a class="nid" title="8YZ" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8YZ">(8YZ)</a></p>
<h4><a name="nid92C" id="nid92C"></a>Eliminating Duplicate Rows &nbsp;&nbsp; <a class="nid" title="92C" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid92C">(92C)</a></h4>
<p><a name="nid92D" id="nid92D"></a>Duplicate rows can be eliminated by using the <tt>selectDistinct</tt> built-in. For example, to retrieve all the distinct names of persons in an ontology, we can write: &nbsp;&nbsp; <a class="nid" title="92D" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid92D">(92D)</a></p>
<ul>
<li><a name="nid92E" id="nid92E"></a>Person(?p) ^ hasName(?p, ?name) -&gt; query:selectDistinct(?name) &nbsp;&nbsp; <a class="nid" title="92E" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid92E">(92E)</a></li>
</ul>
<h4><a name="nid91D" id="nid91D"></a>Naming of Result Columns &nbsp;&nbsp; <a class="nid" title="91D" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid91D">(91D)</a></h4>
<p><a name="nid91E" id="nid91E"></a>The columns in a result are automatically named. Selected columns are named after the relevant variable; aggregate columns are named after the aggregate function name with the aggregated variable in parentheses; and, literal values are enclosed by square braces. So, for example, the following query: &nbsp;&nbsp; <a class="nid" title="91E" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid91E">(91E)</a></p>
<ul>
<li><a name="nid91F" id="nid91F"></a>Person(?p) ^ hasName(?p, ?namer) ^ hasCar(?p, ?c) -&gt; select(?name, "Number of cars") ^ query:count(?c) &nbsp;&nbsp; <a class="nid" title="91F" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid91F">(91F)</a></li>
</ul>
<p><a name="nid91G" id="nid91G"></a>will generate three columns with names "?name", "[Number of cars]", and "count(?c)". &nbsp;&nbsp; <a class="nid" title="91G" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid91G">(91G)</a></p>
<p><a name="nid91H" id="nid91H"></a>A <tt>columnNames</tt> built-in is provided to specify user-defined column names. This built-in takes a list of string arguments and uses them as the names of the result column. For example, if we wish to explicitly name the result columns in the previous query, we can write: &nbsp;&nbsp; <a class="nid" title="91H" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid91H">(91H)</a></p>
<ul>
<li><a name="nid91I" id="nid91I"></a>Person(?p) ^ hasName(?p, ?namer) ^ hasCar(?p, ?c) -&gt; select(?name, "Number of cars") ^ query:count(?c) ^ query:columnNames("Name", "Description", "Count") &nbsp;&nbsp; <a class="nid" title="91I" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid91I">(91I)</a></li>
</ul>
<p><a name="nid91J" id="nid91J"></a>The <tt>columnNames</tt> arguments are used left-to-right to assign names to columns. If fewer names than result columns are supplied, the remaining columns will keep their automatically generated names. If more names are supplied than are present in the query, the excess names will be ignored. &nbsp;&nbsp; <a class="nid" title="91J" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid91J">(91J)</a></p>
<h4><a name="nid8UZ" id="nid8UZ"></a>Interoperation with other Built-In Libraries &nbsp;&nbsp; <a class="nid" title="8UZ" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8UZ">(8UZ)</a></h4>
<p><a name="nid8W2" id="nid8W2"></a>Query built-ins can be used freely with other built-in libraries. For example, to retrieve the name of all males in an ontology and prepend the title "Mr." to each name, we can use <a href="http://protege.cim3.net/cgi-bin/wiki.pl?CoreSWRLBuiltIns" class="extlink">Core SWRL Built-in</a> <tt>stringConcat</tt> as follows: &nbsp;&nbsp; <a class="nid" title="8W2" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8W2">(8W2)</a></p>
<ul>
<li><a name="nid8V0" id="nid8V0"></a>Person(?p) ^ Male(?p) ^ hasName(?p, ?name) ^ swrlb:stringConcat(?fullname, "Mr. ", ?name) -&gt; query:select(?fullname) &nbsp;&nbsp; <a class="nid" title="8V0" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8V0">(8V0)</a></li>
</ul>
<p><a name="nid8VX" id="nid8VX"></a>Using the <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTBoxBuiltIns" class="extlink">TBox Query Library</a> with query built-ins allows the writing of queries that ask questions about the classes and properties in an OWL ontology. For example, a query that returns all the direct subclasses of the <tt>Person</tt> class can be written as follows: &nbsp;&nbsp; <a class="nid" title="8VX" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8VX">(8VX)</a></p>
<ul>
<li><a name="nid8VQ" id="nid8VQ"></a>tbox:isDirectSubClassOf(?subClass, Person) - &gt; query:select(?subClass) &nbsp;&nbsp; <a class="nid" title="8VQ" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8VQ">(8VQ)</a></li>
</ul>
<p><a name="nid8VY" id="nid8VY"></a>To retrieve all properties (both direct and indirect) of the <tt>hasName</tt> property, one can write: &nbsp;&nbsp; <a class="nid" title="8VY" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8VY">(8VY)</a></p>
<ul>
<li><a name="nid8VR" id="nid8VR"></a>tbox:isSubPropertyOf(?supProperty, hasName) - &gt; query:select(?subProperty) &nbsp;&nbsp; <a class="nid" title="8VR" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8VR">(8VR)</a></li>
</ul>
<p><a name="nid8W3" id="nid8W3"></a>The ability to freely use built-ins in a query provides a means of continuously expanding the power of the query language. &nbsp;&nbsp; <a class="nid" title="8W3" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8W3">(8W3)</a></p>
<h4><a name="nid8UU" id="nid8UU"></a>Semantics of Query Built-ins &nbsp;&nbsp; <a class="nid" title="8UU" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8UU">(8UU)</a></h4>
<p><a name="nid8VZ" id="nid8VZ"></a>The query built-ins operate on known individuals in the currently loaded OWL ontology - they thus effectively adopt the <a href="http://en.wikipedia.org/wiki/Closed_world_assumption" class="extlink">closed world assumption</a>. It is very important to note that the built-ins provide no way of accessing the information they accumulate from within a rule so the closed world results cannot be written back back to the ontology. There is no way, for example, to insert the result of a computed aggregate count back into the ontology. Such a mechanism could invalidate OWL's <a href="http://en.wikipedia.org/wiki/Open_World_Assumption" class="extlink">open world assumption</a> and lead to <a href="http://en.wikipedia.org/wiki/Non-monotonic_logic" class="extlink">nonmonotonicity</a>. &nbsp;&nbsp; <a class="nid" title="8VZ" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8VZ">(8VZ)</a></p>
<p><a name="nid98X" id="nid98X"></a>The query built-ins do not look like normal SWRL built-ins. Unlike most built-ins, they do not evaluate their arguments and return <tt>true</tt> if the arguments satisfy some predicate. Instead, they act as accumulators and build up data structures <i>outside</i> of an ontology. &nbsp;&nbsp; <a class="nid" title="98X" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid98X">(98X)</a></p>
<p><a name="nid8VC" id="nid8VC"></a>Repeated use of the same query built-in in a rule is possible. For example, one could use the <tt>select</tt> built-in twice, as in the following fragment: &nbsp;&nbsp; <a class="nid" title="8VC" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8VC">(8VC)</a></p>
<ul>
<li><a name="nid8VD" id="nid8VD"></a>query:select(?a, ?b) ^ query:select(?c, ?d) &nbsp;&nbsp; <a class="nid" title="8VD" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8VD">(8VD)</a></li>
</ul>
<p><a name="nid8VE" id="nid8VE"></a>Such usage is equivalent to a single invocation of <tt>select</tt> with all four parameters. &nbsp;&nbsp; <a class="nid" title="8VE" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8VE">(8VE)</a></p>
<p><a name="nid8VF" id="nid8VF"></a>More complicated invocation ordering is also possible. For example, the invocation &nbsp;&nbsp; <a class="nid" title="8VF" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8VF">(8VF)</a></p>
<ul>
<li><a name="nid8VG" id="nid8VG"></a>query:select(?a, ?b) ^ query:count(?c) ^ query:select(?d, ?e) &nbsp;&nbsp; <a class="nid" title="8VG" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8VG">(8VG)</a></li>
</ul>
<p><a name="nid8VH" id="nid8VH"></a>is perfectly valid. Semantically, this is equivalent to: &nbsp;&nbsp; <a class="nid" title="8VH" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8VH">(8VH)</a></p>
<ul>
<li><a name="nid8VI" id="nid8VI"></a>query:select(?a, ?b, ?d, ?e) ^ query:count?c) &nbsp;&nbsp; <a class="nid" title="8VI" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8VI">(8VI)</a></li>
</ul>
<p><a name="nid8VK" id="nid8VK"></a>However, the order of the data in the result structure will be different for each case - variable data ordering is controlled by the left-to-right ordering of arguments in the built-ins. &nbsp;&nbsp; <a class="nid" title="8VK" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid8VK">(8VK)</a></p>
<h4><a name="nid9AC" id="nid9AC"></a>Examples &nbsp;&nbsp; <a class="nid" title="9AC" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid9AC">(9AC)</a></h4>
<p><a name="nid9AD" id="nid9AD"></a>All the <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabBuiltInLibraries" class="wikiword">SWRLTabBuiltInLibraries</a> have an example section on their associated Wiki page describing their use with with the query built-ins. See <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTBoxBuiltIns#nid99P" class="extlink">here</a> and <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLABoxBuiltIns#nid9A5" class="extlink">here</a>, for example. &nbsp;&nbsp; <a class="nid" title="9AD" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLQueryBuiltIns#nid9AD">(9AD)</a></p>
]]>
</description>
<dc:creator>48875</dc:creator>
</item>

<item rdf:about="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL">
<title>MappingMasterDSL</title>
<link>http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL</link>
<description><![CDATA[<p><a name="nidC4C" id="nidC4C"></a><i>This  wiki describes language features available in the 3.4.7 or later release of Protege-OWL. Earlier versions are missing many of the features described here.</i> &nbsp;&nbsp; <a class="nid" title="C4C" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidC4C">(C4C)</a></p>
<p><a name="nidC4A" id="nidC4A"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster" class="wikiword">MappingMaster</a> uses a domain specific language (DSL) to define mappings from spreadsheet content to OWL ontologies. This language is based on the <a href="http://www.co-ode.org/resources/reference/manchester_syntax/" class="extlink">Manchester OWL Syntax</a>, which is itself a DSL for describing OWL ontologies. The Manchester Syntax supports the declarative specification of OWL axioms. Some example Manchester Syntax expressions can be found <a href="http://www.w3.org/TR/owl2-manchester-syntax/#Quick_Reference" class="extlink">here</a>. &nbsp;&nbsp; <a class="nid" title="C4A" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidC4A">(C4A)</a></p>
<p><a name="nidBBJ" id="nidBBJ"></a>For example, a Manchester Syntax declaration of an OWL named class <tt>Gum</tt> that is a subclass of a named class called <tt>Product</tt> can be written using using a class declaration clause as: &nbsp;&nbsp; <a class="nid" title="BBJ" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBBJ">(BBJ)</a></p>
<ul>
<li><a name="nidC60" id="nidC60"></a><b>Class:</b> Gum <b>SubClassOf:</b> Product &nbsp;&nbsp; <a class="nid" title="C60" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidC60">(C60)</a></li>
</ul>
<p><a name="nidBFX" id="nidBFX"></a>The <a href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster" class="wikiword">MappingMaster</a> DSL extends the Manchester Syntax to support references to spreadsheet content in these declarations.
<a href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster" class="wikiword">MappingMaster</a> introduces a new <i>reference</i> clause for referring to spreadsheet content.
In this DSL, any clause in a Manchester Syntax expression that indicates an OWL named class, OWL property, OWL individual, data type, or a data value can be substituted with this reference clause. Any declarations containing such references are preprocessed and the relevant spreadsheet content specified by these references is imported. As each declaration is processed, the appropriate spreadsheet content is retrieved for each reference. This content can then be used in four main ways: &nbsp;&nbsp; <a class="nid" title="BFX" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBFX">(BFX)</a></p>
<ul>
<li><a name="nidBFY" id="nidBFY"></a>It can be used to directly name OWL entities that are created on demand. &nbsp;&nbsp; <a class="nid" title="BFY" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBFY">(BFY)</a></li>
<li><a name="nidBFZ" id="nidBFZ"></a>It can be used to annotate OWL entities that are created on demand. &nbsp;&nbsp; <a class="nid" title="BFZ" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBFZ">(BFZ)</a></li>
<li><a name="nidBG0" id="nidBG0"></a>The content may reference existing OWL entities, either directly as a URI or through an annotation property. &nbsp;&nbsp; <a class="nid" title="BG0" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBG0">(BG0)</a></li>
<li><a name="nidBG1" id="nidBG1"></a>Finally, the content may be used as a data value. &nbsp;&nbsp; <a class="nid" title="BG1" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBG1">(BG1)</a></li>
</ul>
<p><a name="nidAXX" id="nidAXX"></a>Using one of these approaches, each reference within an expression is thus resolved during preprocessing to a named OWL entity, a data type, or a data value. The resulting expression can then be executed by a standard Manchester Syntax processor. &nbsp;&nbsp; <a class="nid" title="AXX" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidAXX">(AXX)</a></p>
<h3><a name="nidBEM" id="nidBEM"></a>Basic References Use In Expressions &nbsp;&nbsp; <a class="nid" title="BEM" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBEM">(BEM)</a></h3>
<p><a name="nidBP0" id="nidBP0"></a>Reference in the <a href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster" class="wikiword">MappingMaster</a> DSL are prefixed by the character ‘@’. These are generally followed by an Excel-style cell reference. In the standard Excel cell notation, cells extend from A1 in the top left corner of a sheet within a spreadsheet to successively higher columns and rows, with alpha characters referring to columns and numerical values referring to rows . For example, a reference to cell A5 in a spreadsheet is written as follows: &nbsp;&nbsp; <a class="nid" title="BP0" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBP0">(BP0)</a></p>
<ul>
<li><a name="nidBP1" id="nidBP1"></a>@A5 &nbsp;&nbsp; <a class="nid" title="BP1" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBP1">(BP1)</a></li>
</ul>
<p><a name="nidBP2" id="nidBP2"></a>The above cell specification indicates that the reference is relative, meaning that if a formula containing the reference is copied to another cell then the row and column components of the reference are updated appropriately. An equivalent absolute reference, again adopting Excel notation, can be written as follows: &nbsp;&nbsp; <a class="nid" title="BP2" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBP2">(BP2)</a></p>
<ul>
<li><a name="nidBP3" id="nidBP3"></a>@$A$5 &nbsp;&nbsp; <a class="nid" title="BP3" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBP3">(BP3)</a></li>
</ul>
<p><a name="nidBS8" id="nidBS8"></a>Sheets can also be specified by enclosing them in single quotes and using the "!" character separator: &nbsp;&nbsp; <a class="nid" title="BS8" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBS8">(BS8)</a></p>
<ul>
<li><a name="nidBS9" id="nidBS9"></a>@'A sheet'!A3 &nbsp;&nbsp; <a class="nid" title="BS9" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBS9">(BS9)</a></li>
</ul>
<p><a name="nidBEP" id="nidBEP"></a>For example, in the following spreadsheet rows 4 to 6 of column B contain product categories; columns D to G of row 2 contain state identifiers, and the grid range D4 to G6 contains sales amounts. &nbsp;&nbsp; <a class="nid" title="BEP" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBEP">(BEP)</a></p>
<p><a name="nidBEN" id="nidBEN"></a><img alt="http://swrl.stanford.edu/MappingMaster/1.0/ScreenShots/ProductSales.png" src="http://swrl.stanford.edu/MappingMaster/1.0/ScreenShots/ProductSales.png" /> &nbsp;&nbsp; <a class="nid" title="BEN" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBEN">(BEN)</a></p>
<p><a name="nidBCM" id="nidBCM"></a>These references can then be used in <a href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster" class="wikiword">MappingMaster</a>'s DSL to define OWL constructs using spreadsheet content. &nbsp;&nbsp; <a class="nid" title="BCM" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBCM">(BCM)</a></p>
<p><a name="nidBBL" id="nidBBL"></a>For example, a <a href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster" class="wikiword">MappingMaster</a> expression to declare that a class <tt>FlavouredGum</tt> is a subclass of the class named by the contents of cell B4 can be written: &nbsp;&nbsp; <a class="nid" title="BBL" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBBL">(BBL)</a></p>
<ul>
<li><a name="nidC9G" id="nidC9G"></a><b>Class:</b> FlavouredGum <b>SubClassOf:</b> @B4 &nbsp;&nbsp; <a class="nid" title="C9G" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidC9G">(C9G)</a></li>
</ul>
<p><a name="nidBQE" id="nidBQE"></a>When processed, this expression will create an OWL named class using the contents of cell B4 ("Gum") as the class name and declare <tt>FlavouredGum</tt> to be its subclass. 
If the class <tt>Gum</tt> already exists, the subclass relationship will simply be established. &nbsp;&nbsp; <a class="nid" title="BQE" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBQE">(BQE)</a></p>
<p><a name="nidBQP" id="nidBQP"></a>That is, references can be used both to define new OWL entities or to refer to existing entities. &nbsp;&nbsp; <a class="nid" title="BQP" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBQP">(BQP)</a></p>
<p><a name="nidBBR" id="nidBBR"></a>A similar expression to declare that the class <tt>SalesItem</tt> is equivalent to the class named by the contents of cell B4 can be written: &nbsp;&nbsp; <a class="nid" title="BBR" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBBR">(BBR)</a></p>
<ul>
<li><a name="nidC9H" id="nidC9H"></a><b>Class:</b> SalesItem <b>EquivalentTo:</b> @B4 &nbsp;&nbsp; <a class="nid" title="C9H" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidC9H">(C9H)</a></li>
</ul>
<p><a name="nidBCH" id="nidBCH"></a>The Manchester Syntax also supports an individual declaration clause for declaring individuals; property values can be associated with the declared individuals using a facts subclause, which contains a list of property value declarations. &nbsp;&nbsp; <a class="nid" title="BCH" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBCH">(BCH)</a></p>
<p><a name="nidBCI" id="nidBCI"></a>For example, an expression to specify that an individual created from the contents of cell D2 ("CA") has a value of "California" for a data property value <tt>hasStateName</tt> can be written: &nbsp;&nbsp; <a class="nid" title="BCI" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBCI">(BCI)</a></p>
<ul>
<li><a name="nidC9I" id="nidC9I"></a><b>Individual:</b> @D2 <b>Facts:</b> hasStateName "California" &nbsp;&nbsp; <a class="nid" title="C9I" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidC9I">(C9I)</a></li>
</ul>
<p><a name="nidBEU" id="nidBEU"></a>Here, an individual will <tt>CA</tt> be created if necessary and associated with the data property <tt>hasStateName</tt>, which will be given the string value "California". &nbsp;&nbsp; <a class="nid" title="BEU" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBEU">(BEU)</a></p>
<p><a name="nidBQF" id="nidBQF"></a>Using the standard Manchester Syntax, annotation properties can also be associated with declared entities. &nbsp;&nbsp; <a class="nid" title="BQF" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBQF">(BQF)</a></p>
<p><a name="nidBQG" id="nidBQG"></a>For example, an existing string data type annotation property called <tt>hasSource</tt> can be used to associated the above declared California individual with the source document as follows: &nbsp;&nbsp; <a class="nid" title="BQG" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBQG">(BQG)</a></p>
<ul>
<li><a name="nidC9J" id="nidC9J"></a><b>Individual:</b> @D2 <b>Facts:</b> hasStateName "California" <b>Annotations:</b> hasSource "DMV Spreadsheet 12/12/2010" &nbsp;&nbsp; <a class="nid" title="C9J" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidC9J">(C9J)</a></li>
</ul>
<p><a name="nidC4W" id="nidC4W"></a>Classes or properties can be annotated in the same way. For example, a class can be annotated with the <tt>hasSource</tt> annotation property as follows: &nbsp;&nbsp; <a class="nid" title="C4W" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidC4W">(C4W)</a></p>
<ul>
<li><a name="nidC9K" id="nidC9K"></a><b>Class:</b> @D2 <b>Annotations:</b> hasSource "DMV Spreadsheet 12/12/2010" &nbsp;&nbsp; <a class="nid" title="C9K" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidC9K">(C9K)</a></li>
</ul>
<p><a name="nidBCU" id="nidBCU"></a>The Manchester Syntax also supports the use of OWL class expressions. 
In general, a class expression may occur anywhere a named class can occur. &nbsp;&nbsp; <a class="nid" title="BCU" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBCU">(BCU)</a></p>
<p><a name="nidAY3" id="nidAY3"></a>For example, an expression to define a necessary and sufficient condition of a class <tt>Sale</tt> used the contents of cell D4 as the filler of an <tt>owl:HasValue</tt> axiom with the property <tt>hasAmount</tt> can be written: &nbsp;&nbsp; <a class="nid" title="AY3" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidAY3">(AY3)</a></p>
<ul>
<li><a name="nidC9L" id="nidC9L"></a><b>Class:</b> Sale <b>SubClassOf:</b> (hasAmount value @D4) &nbsp;&nbsp; <a class="nid" title="C9L" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidC9L">(C9L)</a></li>
</ul>
<p><a name="nidBCO" id="nidBCO"></a>In general, OWL entities named explicitly in a <a href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster" class="wikiword">MappingMaster</a> expression must already exist in the target ontology. 
In these examples, the classes <tt>Sale</tt>, <tt>SalesItem</tt> and <tt>FlavouredGum</tt>, and properties <tt>hasAmount</tt>, <tt>hasStateName</tt> and <tt>hasSource</tt> must already exist. &nbsp;&nbsp; <a class="nid" title="BCO" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBCO">(BCO)</a></p>
<p><a name="nidBCP" id="nidBCP"></a>As mentioned, OWL entities specified through cell references are created on demand by default, though they may also refer to previously declared entities. &nbsp;&nbsp; <a class="nid" title="BCP" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBCP">(BCP)</a></p>
<h3><a name="nidBRO" id="nidBRO"></a>Specifying the Type of a Reference &nbsp;&nbsp; <a class="nid" title="BRO" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBRO">(BRO)</a></h3>
<p><a name="nidBP5" id="nidBP5"></a>In the above state declaration example, reference @D2 clearly refers to an OWL individual. 
However, the type cannot always be inferred and ambiguities may arise regarding the type of the referenced entity. 
To deal with this case, explicit entity type specifications are supported. &nbsp;&nbsp; <a class="nid" title="BP5" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBP5">(BP5)</a></p>
<p><a name="nidBP6" id="nidBP6"></a>Specifically, a reference may be optionally followed by a parenthesis-enclosed entity type specification to explicitly declare the type of referenced entity. This specification can indicate that the entity is a named OWL class, an OWL object or data property, or an OWL individual or a data type. The <a href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster" class="wikiword">MappingMaster</a> keywords to specify the types are the standard Manchester Syntax keywords <tt>Class</tt>, <tt>ObjectProperty</tt>, <tt>DataProperty</tt>, and <tt>Individual</tt>, plus any XSD type name (e.g., <tt>xsd:int</tt>). &nbsp;&nbsp; <a class="nid" title="BP6" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBP6">(BP6)</a></p>
<p><a name="nidBP7" id="nidBP7"></a>Using this specification, the above drug declaration, for example, can be written: &nbsp;&nbsp; <a class="nid" title="BP7" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBP7">(BP7)</a></p>
<ul>
<li><a name="nidCBC" id="nidCBC"></a><b>Class:</b> @A5(<b>Class</b>) <b>SubClassOf:</b> Drug &nbsp;&nbsp; <a class="nid" title="CBC" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidCBC">(CBC)</a></li>
</ul>
<p><a name="nidBRH" id="nidBRH"></a>A declaration of an individual from cell B5 with an associated property value from cell C5 that is of type float can be specified as follows: &nbsp;&nbsp; <a class="nid" title="BRH" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBRH">(BRH)</a></p>
<ul>
<li><a name="nidC9N" id="nidC9N"></a><b>Individual:</b> @B5 <b>Facts:</b> hasSalary @C5(<b>xsd:float</b>) &nbsp;&nbsp; <a class="nid" title="C9N" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidC9N">(C9N)</a></li>
</ul>
<p><a name="nidBRL" id="nidBRL"></a>If the <tt>hasSalary</tt> data property is already declared to be of type <tt>xsd:float</tt> then the explicit type qualification is not needed. 
A global default type can also be specified for data values in the case where the type of the associated data property is either unknown or unspecified or if no explicit type is provided in the reference. &nbsp;&nbsp; <a class="nid" title="BRL" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBRL">(BRL)</a></p>
<p><a name="nidCBD" id="nidCBD"></a>In many cases, specifying the super class, super property, or individual class membership of an entity is also
desired. While these types of relationships can be defined using standard Manchester Syntax expressions, this approach will often entail the use
of multiple mapping expressions. To concisely support defining these types of relationships, a reference may optionally be followed by a
parenthesis-enclosed list of type names. Using this approach, the above drug declaration, for example, can be written: &nbsp;&nbsp; <a class="nid" title="CBD" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidCBD">(CBD)</a></p>
<ul>
<li><a name="nidCBE" id="nidCBE"></a><b>Class:</b> @A5(Drug) &nbsp;&nbsp; <a class="nid" title="CBE" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidCBE">(CBE)</a></li>
</ul>
<p><a name="nidCBF" id="nidCBF"></a>References to OWL properties and individuals can be qualified in the same way. &nbsp;&nbsp; <a class="nid" title="CBF" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidCBF">(CBF)</a></p>
<h3><a name="nidBG3" id="nidBG3"></a>Name Resolution for OWL Entities &nbsp;&nbsp; <a class="nid" title="BG3" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBG3">(BG3)</a></h3>
<p><a name="nidBQM" id="nidBQM"></a>A variety of name resolution strategies are supported when creating or referencing OWL entities from cells. 
The three primary strategies are to: &nbsp;&nbsp; <a class="nid" title="BQM" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBQM">(BQM)</a></p>
<ul>
<li><a name="nidBQN" id="nidBQN"></a>Using <tt>rdf:ID</tt>s to create or resolve entities. &nbsp;&nbsp; <a class="nid" title="BQN" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBQN">(BQN)</a></li>
<li><a name="nidBQO" id="nidBQO"></a>Use <tt>rdfs:label</tt>s to create or resolve entities &nbsp;&nbsp; <a class="nid" title="BQO" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBQO">(BQO)</a></li>
<li><a name="nidBQH" id="nidBQH"></a>Create entities based on the location of a cell ignoring its value. &nbsp;&nbsp; <a class="nid" title="BQH" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBQH">(BQH)</a></li>
</ul>
<p><a name="nidBQI" id="nidBQI"></a>With <tt>rdf:ID</tt> encoding, and OWL entity generated from a cell reference is assigned its <tt>rdf:ID</tt> directly from the cell contents. 
Obviously, this content must represent a valid identifier (spaces are not, allowed in <tt>rdf:ID</tt>s for example). &nbsp;&nbsp; <a class="nid" title="BQI" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBQI">(BQI)</a></p>
<p><a name="nidBQJ" id="nidBQJ"></a>Using <tt>rdfs:label</tt> encoding, an OWL entity generated from a cell reference is given an automatically generated (and non meaningful) URI and its <tt>rdfs:label</tt> annotation value is set to the content of the cell. &nbsp;&nbsp; <a class="nid" title="BQJ" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBQJ">(BQJ)</a></p>
<p><a name="nidBQK" id="nidBQK"></a>With location encoding, an OWL entity generated from a cell reference also given an automatically generated (and non meaningful) URI but in this case the cell contents are unused. &nbsp;&nbsp; <a class="nid" title="BQK" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBQK">(BQK)</a></p>
<p><a name="nidBQL" id="nidBQL"></a>The default naming encoding uses the <tt>rdfs:label</tt> annotation property. The default may also be changed globally. &nbsp;&nbsp; <a class="nid" title="BQL" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBQL">(BQL)</a></p>
<p><a name="nidBPL" id="nidBPL"></a>A name encoding clause is provided to explicitly specify a desired encoding for a particular reference. 
As with entity type specifications, this clause is enclosed by parentheses after the cell reference. 
The keywords to specify the three types of encoding are <tt>mm:Location</tt>, <tt>rdf:ID</tt>, and <tt>rdfs:label</tt>. &nbsp;&nbsp; <a class="nid" title="BPL" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBPL">(BPL)</a></p>
<p><a name="nidBPM" id="nidBPM"></a>Using this clause, a specification of <tt>rdf:ID</tt> encoding for the previous drug example can be written: &nbsp;&nbsp; <a class="nid" title="BPM" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBPM">(BPM)</a></p>
<ul>
<li><a name="nidC9O" id="nidC9O"></a><b>Class:</b> @B4(<b>rdf:ID</b>) <b>SubClassOf:</b> Drug &nbsp;&nbsp; <a class="nid" title="C9O" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidC9O">(C9O)</a></li>
</ul>
<p><a name="nidBFC" id="nidBFC"></a>As mentioned, <a href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster" class="wikiword">MappingMaster</a> also supports entity creation where cell values are ignored. 
In this case, the keyword <tt>mm:Location</tt> can be used in parenthesis following a reference. &nbsp;&nbsp; <a class="nid" title="BFC" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBFC">(BFC)</a></p>
<p><a name="nidBFE" id="nidBFE"></a>For example, an expression to create an individual for cell D4 while ignoring the contents of the cell can be written: &nbsp;&nbsp; <a class="nid" title="BFE" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBFE">(BFE)</a></p>
<ul>
<li><a name="nidC9P" id="nidC9P"></a><b>Individual:</b> @D4(<b>mm:Location</b>) &nbsp;&nbsp; <a class="nid" title="C9P" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidC9P">(C9P)</a></li>
</ul>
<p><a name="nidBS1" id="nidBS1"></a>By default, OWL entities names are resolved or generated using the namespace of the currently active ontology. The language includes <tt>mm:prefix</tt> and <tt>mm:namespace</tt> clauses to override this default behavior. &nbsp;&nbsp; <a class="nid" title="BS1" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBS1">(BS1)</a></p>
<p><a name="nidBS2" id="nidBS2"></a>For example, an expression to indicate that an individual created or resolved from the contents of cell A2 (assuming <tt>rdfs:label</tt> resolution) should use the namespace identified by the prefix "clinical", can be written: &nbsp;&nbsp; <a class="nid" title="BS2" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBS2">(BS2)</a></p>
<ul>
<li><a name="nidBS3" id="nidBS3"></a><b>Individual:</b> @A2(<b>mm:prefix</b>="clinical") &nbsp;&nbsp; <a class="nid" title="BS3" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBS3">(BS3)</a></li>
</ul>
<p><a name="nidBS4" id="nidBS4"></a>Similarly, an expression to indicate that it must use the namespace "http://clinical.stanford.edu/Clinical.owl#" can be written: &nbsp;&nbsp; <a class="nid" title="BS4" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBS4">(BS4)</a></p>
<ul>
<li><a name="nidC9Q" id="nidC9Q"></a><b>Individual:</b> @A2(<b>mm:namespace</b>="<a href="http://clinical.stanford.edu/Clinical.owl" class="extlink">http://clinical.stanford.edu/Clinical.owl</a>#") &nbsp;&nbsp; <a class="nid" title="C9Q" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidC9Q">(C9Q)</a></li>
</ul>
<p><a name="nidBS6" id="nidBS6"></a>Explicit namespace or prefix qualification in reference allows disambiguation of duplicate labels in an ontology. &nbsp;&nbsp; <a class="nid" title="BS6" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBS6">(BS6)</a></p>
<h3><a name="nidBPO" id="nidBPO"></a>Referring to OWL Entities in Expressions Using Annotation Values &nbsp;&nbsp; <a class="nid" title="BPO" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBPO">(BPO)</a></h3>
<p><a name="nidBF5" id="nidBF5"></a>To support direct references to annotation values in expressions, <a href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster" class="wikiword">MappingMaster</a>'s DSL adopts the Manchester Syntax mechanism of enclosing these references in single quotes. &nbsp;&nbsp; <a class="nid" title="BF5" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBF5">(BF5)</a></p>
<p><a name="nidBF2" id="nidBF2"></a>For example, if the OWL class <tt>Product</tt> has an <tt>rdfs:label</tt> annotation value 'A sellable product' it can be referred as follows: &nbsp;&nbsp; <a class="nid" title="BF2" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBF2">(BF2)</a></p>
<ul>
<li><a name="nidC9R" id="nidC9R"></a><b>Class:</b> @B4 <b>SubClassOf:</b> 'A sellable product' &nbsp;&nbsp; <a class="nid" title="C9R" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidC9R">(C9R)</a></li>
</ul>
<p><a name="nidBF3" id="nidBF3"></a>‘A sellable product’ will be resolved through an annotation value to the class <tt>Product</tt> when this expression is processed. &nbsp;&nbsp; <a class="nid" title="BF3" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBF3">(BF3)</a></p>
<h3><a name="nidBPP" id="nidBPP"></a>Processing Cell Content &nbsp;&nbsp; <a class="nid" title="BPP" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBPP">(BPP)</a></h3>
<p><a name="nidBQY" id="nidBQY"></a>The default behavior is to directly use the contents of the referenced cell when encoding a name. However, this default can be overridden using an optional <i>value specification clause</i>. This clause is indicated by the '=' character immediately after the encoding specification keyword and is followed by a parenthesis-enclosed, comma-separated list of <i>value specifications</i>, which are appended to each other. These value specifications can be cell references, quoted values, regular expressions containing capturing groups (see <a href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBPS" class="extlink">below</a>), or inbuilt text processing functions. &nbsp;&nbsp; <a class="nid" title="BQY" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBQY">(BQY)</a></p>
<p><a name="nidBPC" id="nidBPC"></a>For example, an expression that extends a reference to specify that the entity created from cell A5 is to use <tt>rdfs:label</tt> name encoding and that the name is to be the value of the cell preceded by the string "Sale:" can be written as follows: &nbsp;&nbsp; <a class="nid" title="BPC" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBPC">(BPC)</a></p>
<ul>
<li><a name="nidC9S" id="nidC9S"></a><b>Class:</b> @A5(<b>rdfs:label</b>=("Sale:", @A5)) &nbsp;&nbsp; <a class="nid" title="C9S" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidC9S">(C9S)</a></li>
</ul>
<p><a name="nidBRU" id="nidBRU"></a>Value specification references are not restricted to the referenced cell itself and may indicate arbitrary cells. More than one encoding can also be specified for a particular reference so, for example, separate identifier and label annotation values can be generated for a particular entity using the contents of different cells. &nbsp;&nbsp; <a class="nid" title="BRU" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBRU">(BRU)</a></p>
<p><a name="nidBRV" id="nidBRV"></a>For example, we can extend the example above to assign the <tt>rdf:ID</tt> of generated classes to cell B5 as follows: &nbsp;&nbsp; <a class="nid" title="BRV" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBRV">(BRV)</a></p>
<ul>
<li><a name="nidC9T" id="nidC9T"></a><b>Class:</b> @A5(<b>rdf:ID</b>=(@B5) <b>rdfs:label</b>=("Sale:", @A5)) &nbsp;&nbsp; <a class="nid" title="C9T" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidC9T">(C9T)</a></li>
</ul>
<p><a name="nidBSA" id="nidBSA"></a>If the assignment list includes only a single value then the opening and closing parenthesis can be omitted: &nbsp;&nbsp; <a class="nid" title="BSA" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBSA">(BSA)</a></p>
<ul>
<li><a name="nidC9U" id="nidC9U"></a><b>Class:</b> @A5(<b>rdf:ID</b>=@B5 <b>rdfs:label</b>=("Sale:", @A5)) &nbsp;&nbsp; <a class="nid" title="C9U" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidC9U">(C9U)</a></li>
</ul>
<p><a name="nidBRB" id="nidBRB"></a>The language includes several inbuilt text processing methods that be used in value specifications. At present, several methods are supported. These include <tt>mm:prepend</tt>, <tt>mm:append</tt>, <tt>mm:toLowerCase</tt>, <tt>mm:toUpperCase</tt>, <tt>mm:trim</tt>, <tt>mm:reverse</tt>, <tt>mm:replace</tt>, <tt>mm:replaceAll</tt>, and <tt>mm:replaceFirst</tt>. 
These methods take zero or more arguments and return a value.  Supplied arguments may be quoted string or a references. &nbsp;&nbsp; <a class="nid" title="BRB" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBRB">(BRB)</a></p>
<p><a name="nidBRP" id="nidBRP"></a>The <tt>mm:replace</tt> and <tt>mm:replaceAll</tt> functions follow from the associated methods in the standard Java <a href="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/String.html" class="extlink">String</a> class. &nbsp;&nbsp; <a class="nid" title="BRP" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBRP">(BRP)</a></p>
<p><a name="nidBRM" id="nidBRM"></a>For example, the <tt>mm:prepend</tt> method can be used as follows to simplify the above example: &nbsp;&nbsp; <a class="nid" title="BRM" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBRM">(BRM)</a></p>
<ul>
<li><a name="nidC9V" id="nidC9V"></a><b>Class:</b> @A5(<b>rdfs:label</b>=<b>mm:prepend</b>("Sale:")) &nbsp;&nbsp; <a class="nid" title="C9V" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidC9V">(C9V)</a></li>
</ul>
<p><a name="nidC47" id="nidC47"></a>The expression can be further simplified by omitting the explicit <tt>rdfs:label</tt> qualification if it is the default: &nbsp;&nbsp; <a class="nid" title="C47" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidC47">(C47)</a></p>
<ul>
<li><a name="nidC9W" id="nidC9W"></a><b>Class:</b> @A5(<b>mm:prepend</b>("Sale:")) &nbsp;&nbsp; <a class="nid" title="C9W" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidC9W">(C9W)</a></li>
</ul>
<p><a name="nidBR0" id="nidBR0"></a>An expression to convert the contents of cell A5 to upper case before label assignment in the previous example can be written: &nbsp;&nbsp; <a class="nid" title="BR0" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBR0">(BR0)</a></p>
<ul>
<li><a name="nidC9X" id="nidC9X"></a><b>Class:</b> @A5(<b>mm:toUpperCase</b>(@A5)) &nbsp;&nbsp; <a class="nid" title="C9X" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidC9X">(C9X)</a></li>
</ul>
<p><a name="nidBR7" id="nidBR7"></a>A method can also have an explicit first argument omitted if the argument refers to the current location value. The previous expression can thus also be written: &nbsp;&nbsp; <a class="nid" title="BR7" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBR7">(BR7)</a></p>
<ul>
<li><a name="nidC9Y" id="nidC9Y"></a><b>Class:</b> @A5(<b>mm:toUpperCase</b>) &nbsp;&nbsp; <a class="nid" title="C9Y" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidC9Y">(C9Y)</a></li>
</ul>
<p><a name="nidBQU" id="nidBQU"></a>The language supports a data value encoding clause to allow a value specification clause to be used to assign values to data value. This clause has a similar form to the <tt>rdf:ID</tt> and <tt>rdfs:label</tt> name resolution clauses and is introduced by the keyword <tt>mm:DataValue</tt>. For example, an expression using this clause to create a string data value that is composed of the contents of cell A5 preceded by the string "Sale:" can be written: &nbsp;&nbsp; <a class="nid" title="BQU" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBQU">(BQU)</a></p>
<ul>
<li><a name="nidC9Z" id="nidC9Z"></a><b>Individual:</b> @A5 <b>Facts:</b> hasItems @B5(<b>mm:DataValue</b>=<b>mm:prepend</b>("Sale:")) &nbsp;&nbsp; <a class="nid" title="C9Z" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidC9Z">(C9Z)</a></li>
</ul>
<p><a name="nidC45" id="nidC45"></a>If the parser can determine that the reference is a data value, explicit qualification can be omitted: &nbsp;&nbsp; <a class="nid" title="C45" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidC45">(C45)</a></p>
<ul>
<li><a name="nidC46" id="nidC46"></a><b>Individual:</b> @A5 <b>Facts:</b> hasItems @B5(<b>mm:prepend</b>("Sale:")) &nbsp;&nbsp; <a class="nid" title="C46" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidC46">(C46)</a></li>
</ul>
<p><a name="nidBRQ" id="nidBRQ"></a>For example, to remove all non alphanumeric characters from a cell before assignment, the <tt>mm:replaceAll</tt> function can be used as follows: &nbsp;&nbsp; <a class="nid" title="BRQ" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBRQ">(BRQ)</a></p>
<ul>
<li><a name="nidBRR" id="nidBRR"></a><b>Individual:</b> @A5 <b>Facts:</b> hasItems @B5(<b>mm:replaceAll</b>("[^a-zA-Z0-9]","")) &nbsp;&nbsp; <a class="nid" title="BRR" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBRR">(BRR)</a></li>
</ul>
<p><a name="nidBPE" id="nidBPE"></a>A similar approach can be used to selectively extract values from referenced cells. A regular expression <a href="http://download.oracle.com/javase/tutorial/essential/regex/groups.html" class="extlink">capturing groups</a> clause is provided and can be used in any position in a value specification clause. This clause is contained in a quoted string enclosed by square parenthesis. For example, if cell A5 in a spreadsheet contains the string "Pfizer:Zyvox" but only the text following the ':' character is to be used in the label encoding, an appropriate capture expression could be written as: &nbsp;&nbsp; <a class="nid" title="BPE" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBPE">(BPE)</a></p>
<ul>
<li><a name="nidCB9" id="nidCB9"></a><b>Class:</b> @A5(<b>rdfs:label</b>=[":(\S+)"] Drug) &nbsp;&nbsp; <a class="nid" title="CB9" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidCB9">(CB9)</a></li>
</ul>
<p><a name="nidBQQ" id="nidBQQ"></a>Note that parentheses around the sub-expressions in a regular expression clause specify capture groups and indicate that the matched strings are to be extracted. In some cases, more than one group may be matched for a cell value, in which case the matched strings are extracted in the order that they are matched and are appended to each other. &nbsp;&nbsp; <a class="nid" title="BQQ" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBQQ">(BQQ)</a></p>
<p><a name="nidBQS" id="nidBQS"></a>Capturing groups can also be used to generate data values. For example, if cell A2 in a spreadsheet has a person's forename, middle initial, and surname separated by a single space, three capturing expressions can be used to selectively extract each name portion and separately assign them to different properties as follows: &nbsp;&nbsp; <a class="nid" title="BQS" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBQS">(BQS)</a></p>
<ul>
<li><a name="nidCA1" id="nidCA1"></a><b>Individual:</b> @A2 <b>Types:</b> Person <b>Facts:</b> hasForename @A2(["(\S+)"]), hasInitial @A2(["\S+\s(\S+)"]), hasSurname @A2(["\S+\s\S+\s(\S+)"]) &nbsp;&nbsp; <a class="nid" title="CA1" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidCA1">(CA1)</a></li>
</ul>
<p><a name="nidBQW" id="nidBQW"></a>A similar example to separately extract two space-separated integers from a cell can be written as: &nbsp;&nbsp; <a class="nid" title="BQW" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBQW">(BQW)</a></p>
<ul>
<li><a name="nidCA2" id="nidCA2"></a><b>Individual:</b> @A2 <b>Types:</b> Person <b>Facts:</b> hasMin @A2(["([-+]\d+)\s+"]), hasMax @A2(["\s+([-+]\d+)"]) &nbsp;&nbsp; <a class="nid" title="CA2" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidCA2">(CA2)</a></li>
</ul>
<p><a name="nidBRC" id="nidBRC"></a>A more complex variant to convert commma-specified floating point numbers to dot-specified can be written: &nbsp;&nbsp; <a class="nid" title="BRC" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBRC">(BRC)</a></p>
<ul>
<li><a name="nidCA3" id="nidCA3"></a><b>Individual:</b> @A2 <b>Types:</b> Person <b>Facts:</b> hasSalary @A2(<b>xsd:float</b> <b>mm:DataValue</b>=(["([-+]*\d+),"], ".", [",(\d+)"]))) &nbsp;&nbsp; <a class="nid" title="CA3" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidCA3">(CA3)</a></li>
</ul>
<p><a name="nidBRG" id="nidBRG"></a>If the <tt>hasSalary</tt> property is already of type <tt>xsd:float</tt> then the explicit qualification is not required here. &nbsp;&nbsp; <a class="nid" title="BRG" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBRG">(BRG)</a></p>
<p><a name="nidBRE" id="nidBRE"></a>Of course, the <tt>mm:replace</tt> method would also work here: &nbsp;&nbsp; <a class="nid" title="BRE" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBRE">(BRE)</a></p>
<ul>
<li><a name="nidCA4" id="nidCA4"></a><b>Individual:</b> @A2 <b>Types:</b> Person <b>Facts:</b> hasSalary @A2(<b>mm:replace</b>(",", ".")) &nbsp;&nbsp; <a class="nid" title="CA4" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidCA4">(CA4)</a></li>
</ul>
<p><a name="nidBRS" id="nidBRS"></a>Capturing expressions can also be invoked via the <tt>mm:capturing</tt> function: &nbsp;&nbsp; <a class="nid" title="BRS" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBRS">(BRS)</a></p>
<ul>
<li><a name="nidCA5" id="nidCA5"></a><b>Individual:</b> @A2 <b>Types:</b> Person <b>Facts:</b> hasForename @A2(<b>mm:capturing</b>("(\S+)") { &nbsp;&nbsp; <a class="nid" title="CA5" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidCA5">(CA5)</a></li>
</ul>
<p><a name="nidBQT" id="nidBQT"></a>The syntax of capturing expressions follows that supported by the Java <a href="http://download.oracle.com/javase/1.4.2/docs/api/java/util/regex/Pattern.html" class="extlink">Pattern</a> class. &nbsp;&nbsp; <a class="nid" title="BQT" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBQT">(BQT)</a></p>
<p><a name="nidBRW" id="nidBRW"></a>Value processing functions can also used outside of value specification clauses - but only if these clause are not used in a reference, and only a single function can be used. &nbsp;&nbsp; <a class="nid" title="BRW" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBRW">(BRW)</a></p>
<p><a name="nidBRX" id="nidBRX"></a>For example, assuming default <tt>rdfs:label</tt> encoding, the string "_MM" can be appended to a generated label as follows using the <tt>mm:append</tt> function: &nbsp;&nbsp; <a class="nid" title="BRX" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBRX">(BRX)</a></p>
<ul>
<li><a name="nidBRY" id="nidBRY"></a><b>Individual:</b> @A2(<b>mm:append</b>("_MM")) &nbsp;&nbsp; <a class="nid" title="BRY" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBRY">(BRY)</a></li>
</ul>
<p><a name="nidBRZ" id="nidBRZ"></a>Similarly, the <tt>mm:replace</tt> method can be used to replace commas with periods when processing data values: &nbsp;&nbsp; <a class="nid" title="BRZ" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBRZ">(BRZ)</a></p>
<ul>
<li><a name="nidCA6" id="nidCA6"></a><b>Individual:</b> @A2 <b>Facts:</b> hasSalary @A3(<b>xsd:float</b> <b>mm:replace</b>(",", ".")) &nbsp;&nbsp; <a class="nid" title="CA6" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidCA6">(CA6)</a></li>
</ul>
<h3><a name="nidBG5" id="nidBG5"></a>Iterating Over a Range of Cells in a Reference &nbsp;&nbsp; <a class="nid" title="BG5" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBG5">(BG5)</a></h3>
<p><a name="nidBCV" id="nidBCV"></a>Obviously, most mappings will not just reference individual cells but will instead iterate of a range of columns or rows in a spreadsheet. The wildcard character '*' can then be used in references to refer to the current column and/or row in an iteration. <a href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster" class="wikiword">MappingMaster</a> provides a graphical interface to specify these ranges. (They will soon be supported in the DSL.) &nbsp;&nbsp; <a class="nid" title="BCV" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBCV">(BCV)</a></p>
<p><a name="nidAZT" id="nidAZT"></a>Example references using this wildcard notation include: &nbsp;&nbsp; <a class="nid" title="AZT" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidAZT">(AZT)</a></p>
<ul>
<li><a name="nidB0O" id="nidB0O"></a>@A3 &nbsp;&nbsp; <a class="nid" title="B0O" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidB0O">(B0O)</a></li>
<li><a name="nidB0P" id="nidB0P"></a>@A* &nbsp;&nbsp; <a class="nid" title="B0P" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidB0P">(B0P)</a></li>
<li><a name="nidB0Q" id="nidB0Q"></a>@** &nbsp;&nbsp; <a class="nid" title="B0Q" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidB0Q">(B0Q)</a></li>
</ul>
<p><a name="nidBFI" id="nidBFI"></a>For example, an expression that iterates over the grid D4 to G6 to create an individual of class <tt>Sale</tt> for each cell can be written: &nbsp;&nbsp; <a class="nid" title="BFI" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBFI">(BFI)</a></p>
<ul>
<li><a name="nidBFJ" id="nidBFJ"></a><b>Individual:</b> @** <b>Types:</b> Sale &nbsp;&nbsp; <a class="nid" title="BFJ" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBFJ">(BFJ)</a></li>
</ul>
<p><a name="nidBFL" id="nidBFL"></a>This expression can be extended to assign property values to these individuals: &nbsp;&nbsp; <a class="nid" title="BFL" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBFL">(BFL)</a></p>
<ul>
<li><a name="nidCA7" id="nidCA7"></a><b>Individual:</b> @** <b>Types:</b> Sale <b>Facts:</b> hasAmount @**, hasProduct @B*, hasState @*2 &nbsp;&nbsp; <a class="nid" title="CA7" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidCA7">(CA7)</a></li>
</ul>
<h3><a name="nidBPU" id="nidBPU"></a>Missing Value Handling &nbsp;&nbsp; <a class="nid" title="BPU" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBPU">(BPU)</a></h3>
<p><a name="nidBPV" id="nidBPV"></a>To deal with missing cell values, default values can also be specified in references. A default value clause is provided to assign these values. This clause is indicated by the keyword mm:default and is followed by a parenthesis-enclosed, comma-separated list of value specifications. For example, the following expression uses this clause to indicate that the value “Unknown” should be used as the created class label if cell A5 is empty: &nbsp;&nbsp; <a class="nid" title="BPV" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBPV">(BPV)</a></p>
<ul>
<li><a name="nidCBA" id="nidCBA"></a><b>Class:</b> @A5(<b>rdfs:label</b> <b>mm:default</b>=(“Unknown”) Drug) &nbsp;&nbsp; <a class="nid" title="CBA" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidCBA">(CBA)</a></li>
</ul>
<p><a name="nidBPX" id="nidBPX"></a>Additional behaviors are also supported to deal with missing cell values. The default behavior is to skip an entire expression if it contains any references with empty cells. Four keywords are supplied to modify this behavior. These keywords indicate that: &nbsp;&nbsp; <a class="nid" title="BPX" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBPX">(BPX)</a></p>
<ul>
<li><a name="nidBPY" id="nidBPY"></a>An error should be thrown if a cell value is missing and the mapping process should be stopped (<tt>mm:ErrorIfEmptyLocation</tt>) &nbsp;&nbsp; <a class="nid" title="BPY" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBPY">(BPY)</a></li>
</ul>
<ul>
<li><a name="nidBPZ" id="nidBPZ"></a>Expressions containing references with empty cells should be skipped (<tt>mm:SkipIfEmptyLocation</tt>) &nbsp;&nbsp; <a class="nid" title="BPZ" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBPZ">(BPZ)</a></li>
</ul>
<ul>
<li><a name="nidBQ0" id="nidBQ0"></a>Expressions containing references with empty cells should generate a warning in addition to being skipped (<tt>mm:WarningIfEmptyLocation</tt>) &nbsp;&nbsp; <a class="nid" title="BQ0" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBQ0">(BQ0)</a></li>
</ul>
<ul>
<li><a name="nidBQ1" id="nidBQ1"></a>Expressions containing such empty cells should be processed (<tt>mm:ProcessIfEmptyLocation</tt>). &nbsp;&nbsp; <a class="nid" title="BQ1" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBQ1">(BQ1)</a></li>
</ul>
<p><a name="nidBQ2" id="nidBQ2"></a>The last option allows processing of spreadsheets that may contain a large amount of missing values. The option indicates that the language processor should, if possible, conservatively drop the sub-expression containing the empty reference rather than dropping the entire expression. &nbsp;&nbsp; <a class="nid" title="BQ2" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBQ2">(BQ2)</a></p>
<p><a name="nidBQ3" id="nidBQ3"></a>Consider, for example, the following expression declaring an individual from cell A5 of a spreadsheet and associating a property <tt>hasAge</tt> with it using the value in cell A6: &nbsp;&nbsp; <a class="nid" title="BQ3" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBQ3">(BQ3)</a></p>
<ul>
<li><a name="nidCA9" id="nidCA9"></a><b>Individual:</b> @A5 <b>Facts:</b> hasAge @A6(<b>mm:ProcessIfEmptyLocation</b>) &nbsp;&nbsp; <a class="nid" title="CA9" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidCA9">(CA9)</a></li>
</ul>
<p><a name="nidBQ5" id="nidBQ5"></a>Here, using the default skip behavior action, a missing value in cell A5 will cause the expression to be skipped. However, the process directive for the hasAge property value in cell A6 will instead drop only the sub-expression containing it if that cell is empty. So, if cell A5 contains a value and cell A6 is empty, the resulting expression will still declare an individual. &nbsp;&nbsp; <a class="nid" title="BQ5" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBQ5">(BQ5)</a></p>
<p><a name="nidC4K" id="nidC4K"></a>Using a similar approach, more fine grained empty value handling is also supported to specify different empty value handling behaviors for <tt>mm:DataValue</tt>, <tt>rdf:ID</tt> and <tt>rdfs:label</tt> values. Here, the label directives are <tt>mm:ErrorIfEmptyLabel</tt>, <tt>mm:SkipIfEmptyLabel</tt>, <tt>mm:WarningIfEmptyLabel</tt>, and <tt>mm:ProcessIfEmptyLabel</tt>, with equivalent keywords for RDF identifier and data value handling. These are <tt>mm:ErrorIfEmptyID</tt>, <tt>mm:SkipIfEmptyID</tt>, <tt>mm:WarningIfEmptyID</tt>,  <tt>mm:ProcessIfEmptyID</tt> and <tt>mm:ErrorIfEmptyDataValue</tt>, <tt>mm:SkipIfEmptyDataValue</tt>, <tt>mm:WarningIfEmptyDataValue</tt>, <tt>mm:ProcessIfEmptyDataValue</tt>. &nbsp;&nbsp; <a class="nid" title="C4K" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidC4K">(C4K)</a></p>
<p><a name="nidBQ7" id="nidBQ7"></a>One additional option is provided to deal with empty cell values. This option is targeted to the common case in many spreadsheets where a particular cell is supplied with a value and all empty cells below it are implied to have the same value. In this case, when these empty cells are being processed, their location must be ‘shifted’ to the location above it containing a value. For example, the following expression uses this keyword to indicate that call A5 does not contain a value for the name of the declared class then the row number must be shifted upwards until a value is found: &nbsp;&nbsp; <a class="nid" title="BQ7" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBQ7">(BQ7)</a></p>
<ul>
<li><a name="nidCBB" id="nidCBB"></a><b>Class:</b> @A5(<b>mm:ShiftUp</b> Drug) &nbsp;&nbsp; <a class="nid" title="CBB" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidCBB">(CBB)</a></li>
</ul>
<p><a name="nidBQ9" id="nidBQ9"></a>If no value is found, normal empty value handling processing is applied. Similar directives provide for shifting down (<tt>mm:ShiftDown</tt>), and to allow shifting to the left (<tt>mm:ShiftLeft</tt>), or to the right (<tt>mm:ShiftRight</tt>). &nbsp;&nbsp; <a class="nid" title="BQ9" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidBQ9">(BQ9)</a></p>
<h3><a name="nidB17" id="nidB17"></a>Manchester Syntax Coverage &nbsp;&nbsp; <a class="nid" title="B17" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidB17">(B17)</a></h3>
<p><a name="nidB18" id="nidB18"></a>The DSL supports arbitrary OWL class expressions. The DSL will ultimately support the entire Manchester syntax. For the moment, because of limitations in the Manchester OWL Syntax parser in Protege-OWL 3.4, it supports only the following two additional constructs: &nbsp;&nbsp; <a class="nid" title="B18" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidB18">(B18)</a></p>
<ul>
<li><a name="nidCAB" id="nidCAB"></a><b>OWLClassDeclaration</b> &nbsp;&nbsp; <a class="nid" title="CAB" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidCAB">(CAB)</a></li>
<li><a name="nidCAC" id="nidCAC"></a><b>OWLIndividalDeclaration</b> &nbsp;&nbsp; <a class="nid" title="CAC" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidCAC">(CAC)</a></li>
</ul>
<h3><a name="nidB15" id="nidB15"></a>Configuration Options &nbsp;&nbsp; <a class="nid" title="B15" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidB15">(B15)</a></h3>
<p><a name="nidB0R" id="nidB0R"></a>A set of global defaults can be specified for entity types and name encoding. The language has a number of clauses to specify these defaults. &nbsp;&nbsp; <a class="nid" title="B0R" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidB0R">(B0R)</a></p>
<p><a name="nidB0S" id="nidB0S"></a>The following examples illustrate the use of these clauses together with the current defaults. &nbsp;&nbsp; <a class="nid" title="B0S" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidB0S">(B0S)</a></p>
<ul>
<li><a name="nidB0T" id="nidB0T"></a><b>mm:DefaultNameEncoding</b> = <b>rdf:ID</b> -- Encode entity names as rdf:ID by default &nbsp;&nbsp; <a class="nid" title="B0T" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidB0T">(B0T)</a></li>
</ul>
<ul>
<li><a name="nidB0U" id="nidB0U"></a><b>mm:DefaultEntityType</b> = <b>owl:Class</b> -- If an entity type cannot be inferred, use owl:Class &nbsp;&nbsp; <a class="nid" title="B0U" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidB0U">(B0U)</a></li>
</ul>
<ul>
<li><a name="nidB0V" id="nidB0V"></a><b>mm:DefaultPropertyType</b> = <b>owl:ObjectProperty</b> -- If we are expecting a property, use an OWL object property &nbsp;&nbsp; <a class="nid" title="B0V" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidB0V">(B0V)</a></li>
</ul>
<ul>
<li><a name="nidB0W" id="nidB0W"></a><b>mm:DefaultPropertyValueType</b> = <b>xsd:String</b> -- If we are expecting a data property (object or datatype) value, use xsd:String &nbsp;&nbsp; <a class="nid" title="B0W" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidB0W">(B0W)</a></li>
</ul>
<ul>
<li><a name="nidB0X" id="nidB0X"></a><b>mm:DefaultDataTypePropertyValueType</b> = <b>xsd:String</b> -- If we are expecting a data property value, use xsd:String &nbsp;&nbsp; <a class="nid" title="B0X" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidB0X">(B0X)</a></li>
</ul>
<h3><a name="nidB16" id="nidB16"></a>Summary &nbsp;&nbsp; <a class="nid" title="B16" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidB16">(B16)</a></h3>
<p><a name="nidB1Z" id="nidB1Z"></a>The <a href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster" class="wikiword">MappingMaster</a> DSL effectively allows OWL entities to be created from or reference by arbitrary spreadsheet content. More importantly, the use of the Manchester syntax allows these entities to be related to each other in complex ways. Since the Manchester syntax supports the full OWL specification, very complex interrelationships can be specified. &nbsp;&nbsp; <a class="nid" title="B1Z" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidB1Z">(B1Z)</a></p>
<p><a name="nidAYJ" id="nidAYJ"></a>Declaratively specifying mappings in this way has several advantages. The writing of these mappings does not require any programming or scripting expertise. These mappings can be shared easily using the <a href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster" class="wikiword">MappingMaster</a> plugin, which saves the mappings in an OWL ontology. The mappings can easily be executed repeatedly on different spreadsheets with the same structure. Since <a href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster" class="wikiword">MappingMaster</a> is available as a plugin in Protégé-OWL, the results of these mappings can be examined immediately and the mappings modified as needed and immediately re-executed, speeding the development process. <a href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster" class="wikiword">MappingMaster</a> provides <a href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterGUI" class="extlink">an interactive editor</a> for the mapping DSL that supports on-the-fly entity name checking and dynamic expansion of entity references. &nbsp;&nbsp; <a class="nid" title="AYJ" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL#nidAYJ">(AYJ)</a></p>
]]>
</description>
<dc:creator>48875</dc:creator>
</item>

<item rdf:about="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType">
<title>ProtegePluginsLibraryByType</title>
<link>http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType</link>
<description><![CDATA[<p><a name="nid3SM" id="nid3SM"></a>This section of our Wiki is a guide to plug-ins and applications (alphabetically organized within type) that are of potential interest to our user community. They were developed both here at <a href="http://smi.stanford.edu/" class="extlink">Stanford Medical Informatics (SMI)</a> and outside of Stanford.  We encourage you to add links to your plug-ins and applications.  If you have questions about specific plug-ins, please contact individual authors. &nbsp;&nbsp; <a class="nid" title="3SM" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3SM">(3SM)</a></p>
<p><a name="nid4UG" id="nid4UG"></a>Note: The notation "(LR)", following a package name, indicates that the package has known licensing restrictions on use, redistribution, etc. That is, it is not <a href="http://www.opensource.org" class="extlink">Open Source</a>. &nbsp;&nbsp; <a class="nid" title="4UG" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid4UG">(4UG)</a></p>
<h3><a name="nid3SN" id="nid3SN"></a>Types: &nbsp;&nbsp; <a class="nid" title="3SN" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3SN">(3SN)</a></h3>
<ul>
<li><a name="nid7YJ" id="nid7YJ"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid7YI" class="extlink">APIs</a> &nbsp;&nbsp; <a class="nid" title="7YJ" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid7YJ">(7YJ)</a></li>
<li><a name="nid3SO" id="nid3SO"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3SU" class="extlink">Applications</a> &nbsp;&nbsp; <a class="nid" title="3SO" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3SO">(3SO)</a></li>
<li><a name="nid3SP" id="nid3SP"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3T2" class="extlink">Backends</a> &nbsp;&nbsp; <a class="nid" title="3SP" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3SP">(3SP)</a></li>
<li><a name="nid3SQ" id="nid3SQ"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3TE" class="extlink">Import/Export</a> &nbsp;&nbsp; <a class="nid" title="3SQ" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3SQ">(3SQ)</a></li>
<li><a name="nid3SR" id="nid3SR"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3TI" class="extlink">Project</a> &nbsp;&nbsp; <a class="nid" title="3SR" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3SR">(3SR)</a></li>
<li><a name="nid3SS" id="nid3SS"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3TK" class="extlink">Slot Widgets</a> &nbsp;&nbsp; <a class="nid" title="3SS" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3SS">(3SS)</a></li>
<li><a name="nid3ST" id="nid3ST"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3TV" class="extlink">Tab Widgets</a> &nbsp;&nbsp; <a class="nid" title="3ST" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3ST">(3ST)</a></li>
</ul>
<h3><a name="nid7YI" id="nid7YI"></a>APIs &nbsp;&nbsp; <a class="nid" title="7YI" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid7YI">(7YI)</a></h3>
<ul>
<li><a name="nid7YK" id="nid7YK"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?SearchAPI" class="extlink">Search API</a>: Implements a number of ways to search a Protege knowledge base &nbsp;&nbsp; <a class="nid" title="7YK" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid7YK">(7YK)</a></li>
</ul>
<h3><a name="nid3SU" id="nid3SU"></a>Applications &nbsp;&nbsp; <a class="nid" title="3SU" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3SU">(3SU)</a></h3>
<ul>
<li><a name="nid3SV" id="nid3SV"></a><a href="http://sourceforge.net/projects/jadejessprotege/" class="extlink">JadeJessProtege</a>: An integration of <a href="http://jade.cselt.it/" class="extlink">JADE</a>, <a href="http://herzberg.ca.sandia.gov/jess/" class="extlink">Jess</a> (LR), and Protégé using the <a href="http://www.ida.liu.se/~her/JessTab/" class="extlink">JessTab</a>. &nbsp;&nbsp; <a class="nid" title="3SV" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3SV">(3SV)</a></li>
</ul>
<ul>
<li><a name="nid3SW" id="nid3SW"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?JSave" class="extlink">JSave</a>: Generate Java class definition stubs for Protege classes. &nbsp;&nbsp; <a class="nid" title="3SW" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3SW">(3SW)</a></li>
</ul>
<ul>
<li><a name="nid4JK" id="nid4JK"></a><a href="http://www.omnipresentsystems.com/products/Neuron/NeuronWebServices/index.html" class="extlink">Neuron Web Services</a>: Provides a WSDL Web Services interface to the Protégé Server, enabling access to the server using SOAP/HTTP from any SOAP standard client. &nbsp;&nbsp; <a class="nid" title="4JK" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid4JK">(4JK)</a></li>
</ul>
<ul>
<li><a name="nid5C3" id="nid5C3"></a><a href="http://www.omnipresentsystems.com/products/Neuron/NeuronSpreadsheet/index.html" class="extlink">Neuron Spreadsheet</a>: Uses Neuron Web Services to download views of your knowledge base instance information into an Excel spreadsheet, for example for analysis. &nbsp;&nbsp; <a class="nid" title="5C3" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid5C3">(5C3)</a></li>
</ul>
<ul>
<li><a name="nid4M2" id="nid4M2"></a><a href="http://semantical.org/" class="extlink">Ontology Navigator</a>: Semantic Web search engine platform and tools. Allows users to navigate their ontologies. &nbsp;&nbsp; <a class="nid" title="4M2" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid4M2">(4M2)</a></li>
</ul>
<ul>
<li><a name="nid3SX" id="nid3SX"></a><a href="http://protege.stanford.edu/plugins/projectbrowser/" class="extlink">Project Browser</a>: An application that helps manage a library of Protégé projects. &nbsp;&nbsp; <a class="nid" title="3SX" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3SX">(3SX)</a></li>
</ul>
<ul>
<li><a name="nid3SY" id="nid3SY"></a><a href="http://www.mitre.org/work/tech_transfer/protegeserver/index.html" class="extlink">Protégé Server</a>: A CORBA-Based server for Protégé. &nbsp;&nbsp; <a class="nid" title="3SY" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3SY">(3SY)</a></li>
</ul>
<ul>
<li><a name="nid3SZ" id="nid3SZ"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegeWebBrowser" class="extlink">Protege Web Browser</a>: A Java-based Web application that allows users to share, browse, and do some basic editing of Protege knowledge bases via the World Wide Web. &nbsp;&nbsp; <a class="nid" title="3SZ" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3SZ">(3SZ)</a></li>
</ul>
<h3><a name="nid3T2" id="nid3T2"></a>Backends &nbsp;&nbsp; <a class="nid" title="3T2" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3T2">(3T2)</a></h3>
<ul>
<li><a name="nid3T3" id="nid3T3"></a><a href="http://www.ai.sri.com/daml/DAML+OIL-plugin/protege-form.htm" class="extlink">DAML+OIL</a>: Create and edit <a href="http://www.daml.org/2001/03/daml+oil-index.html" class="extlink">DAML+OIL</a> ontologies with Protégé. &nbsp;&nbsp; <a class="nid" title="3T3" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3T3">(3T3)</a></li>
</ul>
<ul>
<li><a name="nid3T4" id="nid3T4"></a><a href="http://www.oekon.de/protege/jcalls/" class="extlink">Java Function Calls Slot Widgets and Storage Backend</a>: A group of plug-ins that allows the description of things in flux, activities, and processes which cause a knowledge base to change over a time scale. &nbsp;&nbsp; <a class="nid" title="3T4" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3T4">(3T4)</a></li>
</ul>
<ul>
<li><a name="nid3T5" id="nid3T5"></a><b>OWL</b>: Load, save, and edit <a href="http://www.w3.org/2001/sw/WebOnt/" class="extlink">Web Ontology Language (OWL)</a> ontologies in Protégé. &nbsp;&nbsp; <a class="nid" title="3T5" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3T5">(3T5)</a><ul>
<li><a name="nid3T6" id="nid3T6"></a><a href="http://protege.stanford.edu/plugins/owl/" class="extlink">Web site</a> &nbsp;&nbsp; <a class="nid" title="3T6" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3T6">(3T6)</a></li>
<li><a name="nid3T7" id="nid3T7"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegeOWL" class="extlink">Wiki page</a> &nbsp;&nbsp; <a class="nid" title="3T7" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3T7">(3T7)</a></li>
</ul>
</li>
</ul>
<ul>
<li><a name="nid3T8" id="nid3T8"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?RDFBackend" class="extlink">RDF Storage Backend</a>: Create, import, and save <a href="http://www.w3.org/RDF/" class="extlink">RDF(S)</a> files in Protégé. &nbsp;&nbsp; <a class="nid" title="3T8" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3T8">(3T8)</a></li>
</ul>
<ul>
<li><a name="nid3T9" id="nid3T9"></a><a href="http://protege.stanford.edu/plugins/rdfs-db/" class="extlink">RDF(s)-DB</a>: Store and load ontology and instance data from a <a href="http://www.openrdf.org/" class="extlink">Sesame</a> repository. &nbsp;&nbsp; <a class="nid" title="3T9" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3T9">(3T9)</a></li>
</ul>
<ul>
<li><a name="nid3TA" id="nid3TA"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?UMLBackend" class="extlink">UML</a>: Store a Protege knowledge base in <a href="http://www.omg.org/uml/" class="extlink">UML</a>. &nbsp;&nbsp; <a class="nid" title="3TA" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3TA">(3TA)</a></li>
</ul>
<ul>
<li><a name="nid3TB" id="nid3TB"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?XMIBackend" class="extlink">XMI</a>: Store a Protege knowledge base as XMI files. XMI is a standard format for metadata exchange supported by <a href="http://www.omg.org" class="extlink">OMG</a>, the group that is responsible for standards such as UML, CORBA and the Common Warehouse Metamodel. &nbsp;&nbsp; <a class="nid" title="3TB" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3TB">(3TB)</a></li>
</ul>
<ul>
<li><a name="nid3TC" id="nid3TC"></a><a href="http://protege.stanford.edu/plugins/xmlbackend_xu/index.html" class="extlink">XML Ontology</a>: Store a Protégé knowledge base in XML. Classes are represented in a Schema file as types and instances are output into an XML document instance conforming to the generated schema. &nbsp;&nbsp; <a class="nid" title="3TC" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3TC">(3TC)</a></li>
</ul>
<ul>
<li><a name="nid3TD" id="nid3TD"></a><a href="http://faculty.washington.edu/gennari/Protege-plugins/XMLBackend/XMLBackend.html" class="extlink">XML Schema</a>: Store a Protégé knowledge base in XML. The backend will generate an XML Schema file which conforms to the Protégé knowledge model and an XML file which contains classes and instances. &nbsp;&nbsp; <a class="nid" title="3TD" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3TD">(3TD)</a></li>
</ul>
<h3><a name="nid3TE" id="nid3TE"></a>Import/Export &nbsp;&nbsp; <a class="nid" title="3TE" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3TE">(3TE)</a></h3>
<ul>
<li><a name="nid3U0" id="nid3U0"></a><a href="http://faculty.washington.edu/gennari/Protege-plugins/DataGenie/index.html" class="extlink">Data Genie</a>: Inports data from an arbitrary database into Protégé. &nbsp;&nbsp; <a class="nid" title="3U0" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3U0">(3U0)</a></li>
</ul>
<ul>
<li><a name="nid4G4" id="nid4G4"></a><a href="http://protege-docgen.sourceforge.net/" class="extlink">Docgen (Documentation Generator)</a>: provides a quick export of all the content of an ontology (classes, instances and documentation) in various formats (html, pdf, fo...). &nbsp;&nbsp; <a class="nid" title="4G4" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid4G4">(4G4)</a></li>
</ul>
<ul>
<li><a name="nid3UC" id="nid3UC"></a><a href="http://faculty.washington.edu/gennari/Protege-plugins/OBO-import/" class="extlink">OBO ImportTab</a>: Imports <a href="http://obo.sourceforge.net/" class="extlink">OBO format files</a> into Protégé (frames). &nbsp;&nbsp; <a class="nid" title="3UC" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3UC">(3UC)</a></li>
</ul>
<ul>
<li><a name="nid8DJ" id="nid8DJ"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?OBOConverter" class="extlink">OBOConverter</a>: Imports and converts OBO format files into Protege-OWL using the OBO to OWL mapping described at <a href="http://www.bioontology.org/wiki/index.php/OboInOwl:Main_Page" class="extlink">http://www.bioontology.org/wiki/index.php/OboInOwl:Main_Page</a> &nbsp;&nbsp; <a class="nid" title="8DJ" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid8DJ">(8DJ)</a></li>
</ul>
<ul>
<li><a name="nid4VS" id="nid4VS"></a><a href="http://www.oracle.com/technology/tech/semantic_technologies/sample_code/index.html" class="extlink">Oracle RDF Data Model</a>: Manage OWL ontologies developed in Protege in the Oracle RDF store. &nbsp;&nbsp; <a class="nid" title="4VS" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid4VS">(4VS)</a></li>
</ul>
<ul>
<li><a name="nid4LJ" id="nid4LJ"></a><a href="http://www.lri.jur.uva.nl/~rinke/owl2xhtml" class="extlink">OWL2XHTML Tab</a>: Lightweight tabwidget plugin for exporting an OWL ontology to a single HTML file. &nbsp;&nbsp; <a class="nid" title="4LJ" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid4LJ">(4LJ)</a></li>
</ul>
<ul>
<li><a name="nid3TF" id="nid3TF"></a><a href="http://semweb.krasu.ru/protege2jena/" class="extlink">Protege2Jena</a>: Import/export Protégé ontologies from/to <a href="http://jena.sourceforge.net/" class="extlink">Jena</a> persistent storage. &nbsp;&nbsp; <a class="nid" title="3TF" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3TF">(3TF)</a></li>
</ul>
<ul>
<li><a name="nid3TG" id="nid3TG"></a><a href="http://semweb.krasu.ru/protege2joseki/" class="extlink">Protege2Joseki</a>: Import/export Protégé ontologies from/to <a href="http://www.joseki.org/" class="extlink">Joseki RDF Server</a>. &nbsp;&nbsp; <a class="nid" title="3TG" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3TG">(3TG)</a></li>
</ul>
<ul>
<li><a name="nid3TH" id="nid3TH"></a><a href="http://www.bioinf.mdc-berlin.de/~schober/TheQueryExportTab/" class="extlink">Query Export Tab</a> (by D. Schober and T. Tudorache): Query Protégé knowledge bases as with the QueryTab and export the results (classes, slots, instance names, or slot values) as a tab-delimited text file for further processing in spreadsheet-based tools. &nbsp;&nbsp; <a class="nid" title="3TH" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3TH">(3TH)</a></li>
</ul>
<ul>
<li><a name="nid8PE" id="nid8PE"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?Reporting_Database" class="extlink">Reporting Database</a> (by Frank Sauer &amp; Christopher Creel): XSL to convert the XML file that Protege can use as a back-end to a SQL statement to create a fully normalized reporting database. This is very handy for creating recurring, canned reports using technologies like <a href="http://jasperforge.org/sf/projects/jasperreports" class="extlink">Jasper Reports</a> &nbsp;&nbsp; <a class="nid" title="8PE" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid8PE">(8PE)</a></li>
</ul>
<h3><a name="nid3TI" id="nid3TI"></a>Project &nbsp;&nbsp; <a class="nid" title="3TI" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3TI">(3TI)</a></h3>
<ul>
<li><a name="nid9AR" id="nid9AR"></a><a href="http://smi-protege.stanford.edu/collab-protege/collab-protege.html" class="extlink">Collaborative Protégé</a>: Extension of Protégé that supports the collaborative ontology development process &nbsp;&nbsp; <a class="nid" title="9AR" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid9AR">(9AR)</a></li>
</ul>
<ul>
<li><a name="nid3TJ" id="nid3TJ"></a><a href="http://www.co-ode.org/downloads/wizard/" class="extlink">Protégé Wizards</a>: Easier and faster creation of knowledge bases through wizards supporting task-oriented development. &nbsp;&nbsp; <a class="nid" title="3TJ" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3TJ">(3TJ)</a></li>
</ul>
<h3><a name="nid3TK" id="nid3TK"></a>Slot Widgets &nbsp;&nbsp; <a class="nid" title="3TK" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3TK">(3TK)</a></h3>
<ul>
<li><a name="nid3TL" id="nid3TL"></a><a href="http://www.geocities.com/rpenalozan/protege/BNplugin.html" class="extlink">Bayesian Network</a> (LR): Make approximate inferences over ontologies where classes are arranged in DAG form. &nbsp;&nbsp; <a class="nid" title="3TL" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3TL">(3TL)</a></li>
</ul>
<ul>
<li><a name="nid3TM" id="nid3TM"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?DateWidget" class="wikiword">DateWidget</a>: Automatically fills in a slot value with current date and time. &nbsp;&nbsp; <a class="nid" title="3TM" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3TM">(3TM)</a></li>
</ul>
<ul>
<li><a name="nid3TN" id="nid3TN"></a><a href="http://www.emotionalbrain.nl/protege_plugins/The%20Indirect%20Instance%20Widget.html" class="extlink">Display Indirect Instances</a>: Automatically displays all the indirect instances of a class. &nbsp;&nbsp; <a class="nid" title="3TN" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3TN">(3TN)</a></li>
</ul>
<ul>
<li><a name="nid3TO" id="nid3TO"></a><a href="http://protege.stanford.edu/plugins/enhanced_widgets/EnhancedWidgets.html" class="extlink">Enhanced Standard Widgets</a>: Enhanced versions of most of the commonly used widgets in Protégé. &nbsp;&nbsp; <a class="nid" title="3TO" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3TO">(3TO)</a></li>
</ul>
<ul>
<li><a name="nid3TP" id="nid3TP"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?GetAuthor" class="wikiword">GetAuthor</a>: Automatically fill a slot value with a user name. &nbsp;&nbsp; <a class="nid" title="3TP" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3TP">(3TP)</a></li>
</ul>
<ul>
<li><a name="nid3TQ" id="nid3TQ"></a><a href="http://www.oekon.de/protege/jcalls/" class="extlink">Java Function Calls Slot Widgets and Storage Backend</a>: A group of plug-ins that allows the description of things in flux, activities, and processes which cause a knowledge base to change over a time scale. &nbsp;&nbsp; <a class="nid" title="3TQ" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3TQ">(3TQ)</a></li>
</ul>
<ul>
<li><a name="nid3TR" id="nid3TR"></a><a href="http://www.fmridc.org/f/fmridc/dmt/plugin_measurement.html" class="extlink">Measurement</a>: Provides flexible measurement entry. &nbsp;&nbsp; <a class="nid" title="3TR" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3TR">(3TR)</a></li>
</ul>
<ul>
<li><a name="nid3TS" id="nid3TS"></a><a href="http://www.ecs.soton.ac.uk/~ha/MediaSlotWidgets/" class="extlink">Media</a>: Include and display video and audio files. &nbsp;&nbsp; <a class="nid" title="3TS" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3TS">(3TS)</a></li>
</ul>
<ul>
<li><a name="nid3TT" id="nid3TT"></a><a href="http://protege.stanford.edu/plugins/powerplant/powerPlant.html" class="extlink">Power-plant Control</a>: Edit control rules for a simple nuclear power plant simulator. &nbsp;&nbsp; <a class="nid" title="3TT" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3TT">(3TT)</a></li>
</ul>
<ul>
<li><a name="nid3TU" id="nid3TU"></a><a href="http://protege.stanford.edu/plugins/swapwidget/swap_slot_widget.htm" class="extlink">Swap Values</a>: Swap slot values between slots. &nbsp;&nbsp; <a class="nid" title="3TU" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3TU">(3TU)</a></li>
</ul>
<h3><a name="nid3TV" id="nid3TV"></a>Tab Widgets &nbsp;&nbsp; <a class="nid" title="3TV" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3TV">(3TV)</a></h3>
<ul>
<li><a name="nid3TW" id="nid3TW"></a><a href="http://algernon-j.sourceforge.net/doc/algernon-protege.html" class="extlink">Algernon</a>: A rule-based inference system implemented in Java and interfaced with Protégé. Performs forward and backward rule-based processing of frame-based knowledge bases. &nbsp;&nbsp; <a class="nid" title="3TW" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3TW">(3TW)</a></li>
</ul>
<ul>
<li><a name="nid3TX" id="nid3TX"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?OntologyBeanGenerator" class="wikiword">OntologyBeanGenerator</a>: Generate FIPA/JADE compliant ontologies from Protégé projects. &nbsp;&nbsp; <a class="nid" title="3TX" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3TX">(3TX)</a></li>
</ul>
<ul>
<li><a name="nid3TY" id="nid3TY"></a><a href="http://www.fmridc.org/f/fmridc/dmt/plugin_beanshell.html" class="extlink">BeanShell</a>: Interactively use the the Protégé Knowledge-Base API. &nbsp;&nbsp; <a class="nid" title="3TY" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3TY">(3TY)</a></li>
</ul>
<ul>
<li><a name="nid5X1" id="nid5X1"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?ChangeManagement" class="extlink">Change Management</a>: Track and annotate changes to Protege ontologies. &nbsp;&nbsp; <a class="nid" title="5X1" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid5X1">(5X1)</a></li>
</ul>
<ul>
<li><a name="nid3TZ" id="nid3TZ"></a><a href="http://protege.stanford.edu/plugins/CLIPSTabPages/CLIPS_tab.html" class="extlink">CLIPSTab</a>: Use the <a href="http://www.ghg.net/clips/CLIPS.html" class="extlink">CLIPS Rule Engine</a> from within Protégé. &nbsp;&nbsp; <a class="nid" title="3TZ" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3TZ">(3TZ)</a></li>
</ul>
<ul>
<li><a name="nid3U0" id="nid3U0"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?DataGenie" class="extlink">DataGenie</a>: Read data from an arbitrary database into Protege. &nbsp;&nbsp; <a class="nid" title="3U0" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3U0">(3U0)</a></li>
</ul>
<ul>
<li><a name="nid9C9" id="nid9C9"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?DataMaster" class="extlink">DataMaster</a>: Import schema structure and data from relational databases into Protege. &nbsp;&nbsp; <a class="nid" title="9C9" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid9C9">(9C9)</a></li>
</ul>
<ul>
<li><a name="nid3U1" id="nid3U1"></a><a href="http://faculty.washington.edu/gennari/Protege-plugins/EligScreeningTab/eligibility_screening_tab.html" class="extlink">Eligibility Screening</a>: Find a set of clinical trial protocols in breast cancer for which a patient might be eligible. &nbsp;&nbsp; <a class="nid" title="3U1" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3U1">(3U1)</a></li>
</ul>
<ul>
<li><a name="nid3U2" id="nid3U2"></a><a href="http://iweb.etri.re.kr/ezowl/index.html" class="extlink">ezOWL</a>: Visual <a href="http://www.w3.org/2001/sw/WebOnt/" class="extlink">OWL (Web Ontology Language)</a> editor for Protégé. &nbsp;&nbsp; <a class="nid" title="3U2" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3U2">(3U2)</a></li>
</ul>
<ul>
<li><a name="nid3U3" id="nid3U3"></a><a href="http://protegewiki.stanford.edu/index.php/EZPal" class="extlink">EZPal</a>: Facilitate acquisition of <a href="http://protegewiki.stanford.edu/index.php/Protege_Axiom_Language_%28PAL%29_Tabs" class="extlink">Protégé Axiom Language (PAL)</a> constraints without knowing the PAL language. &nbsp;&nbsp; <a class="nid" title="3U3" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3U3">(3U3)</a></li>
</ul>
<ul>
<li><a name="nid3U4" id="nid3U4"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?FacetConstraintsTab" class="extlink">Facet Constraints</a>: Identify and fix Instances that have constraint violating facets. &nbsp;&nbsp; <a class="nid" title="3U4" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3U4">(3U4)</a></li>
</ul>
<ul>
<li><a name="nid3U5" id="nid3U5"></a><a href="http://informatics.mayo.edu/LexGrid/index.php?page=fca" class="extlink">FCAView</a>: Visualize Protégé classic or OWL ontologies using the formal concept analysis (FCA) technique. &nbsp;&nbsp; <a class="nid" title="3U5" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3U5">(3U5)</a></li>
</ul>
<ul>
<li><a name="nid733" id="nid733"></a><a href="http://www.moemais.ufam.edu.br/plugin.php" class="extlink">FOAM Plugin Tab Widget</a>: This Plugin performs mapping between two ontologies based on similaity heuristics of the individual entities (concepts, relations and instances). &nbsp;&nbsp; <a class="nid" title="733" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid733">(733)</a></li>
</ul>
<ul>
<li><a name="nid3U6" id="nid3U6"></a><a href="http://www.newmiracle.com/gutao/" class="extlink">Formal Concept Analysis (FCA)</a>: Demonstrate the benefit of applying FCA while building an ontology. &nbsp;&nbsp; <a class="nid" title="3U6" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3U6">(3U6)</a></li>
</ul>
<ul>
<li><a name="nid3U7" id="nid3U7"></a><a href="http://www.dfki.uni-kl.de/~sintek/FloraTab/" class="extlink">Flora</a>: A query tab based on <a href="http://www.cs.sunysb.edu/~sbprolog/xsb-page.html" class="extlink">F-Logic</a>. &nbsp;&nbsp; <a class="nid" title="3U7" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3U7">(3U7)</a></li>
</ul>
<ul>
<li><a name="nid9AI" id="nid9AI"></a><a href="http://www.uvm.edu/~skrivov/growl/" class="extlink">GrOWL Tab Widget</a>: Visualize   OWL ontologies using <a href="http://protege.cim3.net/cgi-bin/wiki.pl?action=edit&amp;id=GrOWL" class="create">GrOWL</a> visualization model. &nbsp;&nbsp; <a class="nid" title="9AI" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid9AI">(9AI)</a></li>
</ul>
<ul>
<li><a name="nid4FA" id="nid4FA"></a><a href="http://www.dbmi.columbia.edu/~cop7001/iAnnotateTab/iannotate.htm" class="extlink">iAnnotate</a>: Annotate text or Web documents with OWL ontology concepts. &nbsp;&nbsp; <a class="nid" title="4FA" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid4FA">(4FA)</a></li>
</ul>
<ul>
<li><a name="nid3U8" id="nid3U8"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?InstanceTreeWidgets" class="extlink">InstanceTree</a>: Provides a tree view of frames referenced directly or indirectly by a Protege instance. &nbsp;&nbsp; <a class="nid" title="3U8" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3U8">(3U8)</a></li>
</ul>
<ul>
<li><a name="nid3UXX" id="nid3UXX"></a><a href="http://dac.icore.at/one/solutions#InstanceXL" class="extlink">InstanceXL</a>: Provides a spreadsheet representation of classes. &nbsp;&nbsp; <a class="nid" title="3UXX" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3UXX">(3UXX)</a></li>
</ul>
<ul>
<li><a name="nid3U9" id="nid3U9"></a><a href="http://www.thechiselgroup.org/jambalaya/" class="extlink">Jambalaya</a>: Visualize Protégé ontologies with <a href="http://www.thechiselgroup.org/shrimp/" class="extlink">SHriMP</a> (Simple Hierarchical Multi-Perspective). &nbsp;&nbsp; <a class="nid" title="3U9" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3U9">(3U9)</a></li>
</ul>
<ul>
<li><a name="nid5FK" id="nid5FK"></a><a href="http://oogis.ru/content/view/129/123/lang,en/" class="extlink">JBRSTab</a>: Visual integrated spatial simulation scenario development and replay environment based on <a href="http://labs.jboss.com/portal/jbossrules/" class="extlink">JBoss Rules</a> inference engine and  <a href="http://openmap.bbn.com/" class="extlink">Openmap</a> geoinformation system library &nbsp;&nbsp; <a class="nid" title="5FK" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid5FK">(5FK)</a></li>
</ul>
<ul>
<li><a name="nid3UA" id="nid3UA"></a><a href="http://www-i4.informatik.rwth-aachen.de/agentcities/main/tools/JessAgentTab/doc/jat.html" class="extlink">JessAgentTab</a>: Export Protégé ontologies to <a href="http://herzberg.ca.sandia.gov/jess/" class="extlink">Jess</a> (LR) in a template-based representation. &nbsp;&nbsp; <a class="nid" title="3UA" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3UA">(3UA)</a></li>
</ul>
<ul>
<li><a name="nid3UB" id="nid3UB"></a><a href="http://www.ida.liu.se/~her/JessTab/" class="extlink">JessTab</a>: Allows the use of <a href="http://herzberg.ca.sandia.gov/jess/" class="extlink">Jess</a> (LR) and Protégé together. &nbsp;&nbsp; <a class="nid" title="3UB" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3UB">(3UB)</a></li>
</ul>
<ul>
<li><a name="nid4H5" id="nid4H5"></a><a href="http://bionlp.sourceforge.net/Knowtator" class="extlink">Knowtator</a>: Knowtator is a general-purpose text annotation tool that facilitates the manual creation of training and evaluation corpora for a variety of natural language processing tasks. &nbsp;&nbsp; <a class="nid" title="4H5" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid4H5">(4H5)</a></li>
</ul>
<ul>
<li><a name="nid3UZ" id="nid3UZ"></a><a href="http://www.cs.concordia.ca/~k_bhoopa/nrql.html" class="extlink">nRQL Tab Plugin</a>: Racer Query Language interface to Protégé ontologies using Racer reasoner. &nbsp;&nbsp; <a class="nid" title="3UZ" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3UZ">(3UZ)</a></li>
</ul>
<ul>
<li><a name="nid3UC" id="nid3UC"></a><a href="http://faculty.washington.edu/gennari/Protege-plugins/OBO-import/" class="extlink">OBO ImportTab</a>: Imports <a href="http://obo.sourceforge.net/" class="extlink">OBO format files</a> into Protégé. &nbsp;&nbsp; <a class="nid" title="3UC" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3UC">(3UC)</a></li>
</ul>
<ul>
<li><a name="nid8DJ" id="nid8DJ"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?OBOConverter" class="extlink">OBOConverter</a>: Imports and converts OBO format files into Protege-OWL using the OBO to OWL mapping described at <a href="http://www.bioontology.org/wiki/index.php/OboInOwl:Main_Page" class="extlink">http://www.bioontology.org/wiki/index.php/OboInOwl:Main_Page</a> &nbsp;&nbsp; <a class="nid" title="8DJ" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid8DJ">(8DJ)</a></li>
</ul>
<ul>
<li><a name="nid8PB" id="nid8PB"></a><a href="http://www.aiai.ed.ac.uk/project/cobra-ct/COBrA_downloads.htm" class="extlink">OBO Explorer</a>: Provides an editor for OBO terms, i.e. for the synonyms, subsets, <a href="http://protege.cim3.net/cgi-bin/wiki.pl?action=edit&amp;id=DbXRefs" class="create">DbXRefs</a> and other annotations that are associated with OBO terms as defined by the OBO to OWL mapping <a href="http://www.bioontology.org/wiki/index.php/OboInOwl:Main_Page" class="extlink">http://www.bioontology.org/wiki/index.php/OboInOwl:Main_Page</a> &nbsp;&nbsp; <a class="nid" title="8PB" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid8PB">(8PB)</a></li>
</ul>
<ul>
<li><a name="nid3UD" id="nid3UD"></a><a href="http://protege.stanford.edu/plugins/oiltab/index.html" class="extlink">OIL Classifier</a>: Classify <a href="http://www.ontoknowledge.org/oil/" class="extlink">OIL</a> ontologies with the <a href="http://www.cs.man.ac.uk/~horrocks/FaCT/" class="extlink">FaCT descriptions-logic classifier</a>. &nbsp;&nbsp; <a class="nid" title="3UD" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3UD">(3UD)</a></li>
</ul>
<ul>
<li><a name="nid603" id="nid603"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?OKBCTab" class="extlink">OKBC Tab</a>: Import and export ontologies to and from <a href="http://www.ai.sri.com/~okbc/" class="extlink">OKBC</a> servers via the OKBC interface. &nbsp;&nbsp; <a class="nid" title="603" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid603">(603)</a></li>
</ul>
<ul>
<li><a name="nid3UF" id="nid3UF"></a><a href="http://www.ontospace.net/pages/3/index.htm" class="extlink">OntoBase</a> (LR): Represent a relational database as an ontology and the database data as an instance tree. &nbsp;&nbsp; <a class="nid" title="3UF" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3UF">(3UF)</a></li>
</ul>
<ul>
<li><a name="nid3UG" id="nid3UG"></a><a href="http://ai-nlp.info.uniroma2.it/software/OntoLing/" class="extlink">OntoLing</a>: Facilitates terminological enrichment of ontologies and includes an interface for <a href="http://www.cogsci.princeton.edu/~wn/" class="extlink">WordNet</a> (from 1.6 to 2.0) and <a href="http://www.dict.org/bin/Dict" class="extlink">DICT</a> dictionaries. &nbsp;&nbsp; <a class="nid" title="3UG" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3UG">(3UG)</a></li>
</ul>
<ul>
<li><a name="nid3UH" id="nid3UH"></a><a href="http://olp.dfki.de/OntoLT/OntoLT.htm" class="extlink">OntoLT</a>: A Protégé plug-in for ontology extraction from text. &nbsp;&nbsp; <a class="nid" title="3UH" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3UH">(3UH)</a></li>
</ul>
<ul>
<li><a name="nid3UI" id="nid3UI"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?OntoViz" class="extlink">OntoViz</a>: Visualize Protégé ontologies with the help of <a href="http://www.research.att.com/sw/tools/graphviz/" class="extlink">Graphviz</a> graph drawing software. &nbsp;&nbsp; <a class="nid" title="3UI" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3UI">(3UI)</a></li>
</ul>
<ul>
<li><a name="nid3UJ" id="nid3UJ"></a><a href="http://oogis.ru/en/projects/OpenMapTab/openmap_tab.htm" class="extlink">OpenMAP Tab</a>: Combine spatial simulation and the geoinformation system (GIS) functionality of <a href="http://openmap.bbn.com/" class="extlink">OpenMAP</a> with Protégé's knowledge representation functionality. &nbsp;&nbsp; <a class="nid" title="3UJ" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3UJ">(3UJ)</a></li>
</ul>
<ul>
<li><a name="nid3UK" id="nid3UK"></a><a href="http://www.cs.toronto.edu/km/openome" class="extlink">OpenOME</a> plug-in for Protégé: OpenOME is a toolset to support goal-oriented, agent-oriented and aspect-oriented requirements engineering. &nbsp;&nbsp; <a class="nid" title="3UK" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3UK">(3UK)</a></li>
</ul>
<ul>
<li><a name="nid3UL" id="nid3UL"></a><a href="http://owlseditor.semwebcentral.org/" class="extlink">OWL-S Editor</a>: Load, create, manage, and visualize OWL-S services. &nbsp;&nbsp; <a class="nid" title="3UL" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3UL">(3UL)</a></li>
</ul>
<ul>
<li><a name="nid3UM" id="nid3UM"></a><a href="http://www.co-ode.org/downloads/owlviz/" class="extlink">OWLViz</a>: Navigate OWL ontologies easily and switch between the asserted and inferred model after classification. Protégé colour coding and several export formats are supported. &nbsp;&nbsp; <a class="nid" title="3UM" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3UM">(3UM)</a></li>
</ul>
<ul>
<li><a name="nid3UN" id="nid3UN"></a><a href="http://prologtab.sourceforge.net" class="extlink">Prolog</a>: An integration of <a href="http://gnuprologjava.sourceforge.net/" class="extlink">GNU Prolog for Java</a>: with Protégé. &nbsp;&nbsp; <a class="nid" title="3UN" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3UN">(3UN)</a></li>
</ul>
<ul>
<li><a name="nid3UO" id="nid3UO"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?Prompt" class="extlink">Wiki '''PROMPT'''</a>: Manage multiple ontologies, create a mapping between ontologies, merge separate ontologies to create a single coherent ontology, extract a part of an ontology, and move frames from an included to an including project. &nbsp;&nbsp; <a class="nid" title="3UO" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3UO">(3UO)</a></li>
</ul>
<ul>
<li><a name="nid3UR" id="nid3UR"></a><a href="http://www.thechiselgroup.org/promptviz" class="extlink">PromptViz</a> (LR): Create visual representations of the differences between two versions of an ontology. &nbsp;&nbsp; <a class="nid" title="3UR" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3UR">(3UR)</a></li>
</ul>
<ul>
<li><a name="nid3US" id="nid3US"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?PALTabs" class="extlink">Protege Axiom Language (PAL)</a>: Express constraints about a knowledge base and make logical queries about the contents of a knowledge base. &nbsp;&nbsp; <a class="nid" title="3US" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3US">(3US)</a></li>
</ul>
<ul>
<li><a name="nid84W" id="nid84W"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegeScriptTab" class="extlink">Protege Script Console Tab Widget</a>: A scripting interface to Protege for automating modifications, consistency checking, and queries. Supports languages such as Python, Perl, Beanshell and Ruby. &nbsp;&nbsp; <a class="nid" title="84W" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid84W">(84W)</a></li>
</ul>
<ul>
<li><a name="nid3UW" id="nid3UW"></a><a href="http://protege.stanford.edu/plugins/psmtab/PSMTab.html" class="extlink">PSM Librarian</a>: Browse a Problem-Solving Methods library. &nbsp;&nbsp; <a class="nid" title="3UW" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3UW">(3UW)</a></li>
</ul>
<ul>
<li><a name="nid3UX" id="nid3UX"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?RelationsTab" class="extlink">Relations Tab</a>: Browse reified relations in the same way you can browse regular relations. &nbsp;&nbsp; <a class="nid" title="3UX" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3UX">(3UX)</a></li>
</ul>
<ul>
<li><a name="nid3UY" id="nid3UY"></a><a href="http://protege.stanford.edu/plugins/remotekbtab/remote_kb_tab.htm" class="extlink">Remote KB</a>: Create your own tab to browse a remote knowledge source using a standard API and user interface. &nbsp;&nbsp; <a class="nid" title="3UY" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3UY">(3UY)</a></li>
</ul>
<ul>
<li><a name="nid9F1" id="nid9F1"></a><a href="http://www.hansschevers.nl/scriptRules.htm" class="extlink">ScriptRules</a>: a prototype plugin for developing and executing 'scriptrules' using a graphical interface &nbsp;&nbsp; <a class="nid" title="9F1" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid9F1">(9F1)</a></li>
</ul>
<ul>
<li><a name="nid3V0" id="nid3V0"></a><a href="http://protege.stanford.edu/plugins/string_search/index.html" class="extlink">String Search</a>: Search all values of type String in a knowledge base. Search includes classes, slots, instances, slot values, and metaclasses. &nbsp;&nbsp; <a class="nid" title="3V0" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3V0">(3V0)</a></li>
</ul>
<ul>
<li><a name="nid3V1" id="nid3V1"></a><a href="http://www.ecs.soton.ac.uk/~ha/TGVizTab/TGVizTab.htm" class="extlink">TGVizTab</a>: Visualize Protege ontologies using the <a href="http://www.touchgraph.com/" class="extlink">TouchGraph</a> library. &nbsp;&nbsp; <a class="nid" title="3V1" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3V1">(3V1)</a></li>
</ul>
<ul>
<li><a name="nid3V2" id="nid3V2"></a><a href="http://www.techquila.com/tmtab" class="extlink">TMTab (Topic Map Tab)</a> (LR): Build an ontology which may be exported as a topic map in XTM syntax. &nbsp;&nbsp; <a class="nid" title="3V2" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3V2">(3V2)</a></li>
</ul>
<ul>
<li><a name="nid3V3" id="nid3V3"></a><a href="http://www.ruleml.org/txruleml/protege" class="extlink">TX RuleML</a>: Convert Taxonomic RuleML files to corresponding taxonomic class hierarchies in Protege and vice versa. &nbsp;&nbsp; <a class="nid" title="3V3" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3V3">(3V3)</a></li>
</ul>
<ul>
<li><a name="nid3V4" id="nid3V4"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?UMLSTab" class="extlink">UMLS Tab</a>: Search the <a href="http://www.nlm.nih.gov/research/umls/umlsmain.html" class="extlink">Unified Medical Language System</a> and annotate your Protege ontology with terms, concept IDs, synonyms, relations, and other information from UMLS. &nbsp;&nbsp; <a class="nid" title="3V4" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3V4">(3V4)</a></li>
</ul>
<ul>
<li><a name="nid82X" id="nid82X"></a><a href="http://www.mcoletti.net/dev/iskb/velociowlPlugin.html" class="extlink">Velocity Tab</a> : You can generate reports and other kind of file output from the OWL Model using the power of the Velocity templating engine from Apache Jakarta project (alpha code) &nbsp;&nbsp; <a class="nid" title="82X" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid82X">(82X)</a></li>
</ul>
<ul>
<li><a name="nid3V5" id="nid3V5"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?WordNetTab" class="extlink">WordNet Tab</a>: Search <a href="http://www.cogsci.princeton.edu/~wn/" class="extlink">WordNet</a> and annotate your Protege ontology with terms, concept ids, synonyms, relations, and other information from WordNet. &nbsp;&nbsp; <a class="nid" title="3V5" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid3V5">(3V5)</a></li>
</ul>
<ul>
<li><a name="nid4CJ" id="nid4CJ"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?XMLTab" class="freelink">XMLTab</a>: Import arbitrary XML into Protege and/or export Protege knowledge bases to an XML file. &nbsp;&nbsp; <a class="nid" title="4CJ" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProtegePluginsLibraryByType#nid4CJ">(4CJ)</a></li>
</ul>
]]>
</description>
<dc:creator>48875</dc:creator>
</item>

<item rdf:about="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse">
<title>CompileProtegeCoreInEclipse</title>
<link>http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse</link>
<description><![CDATA[<h3><a name="nid93A" id="nid93A"></a>Compile and Run Core Protege from <a href="http://www.eclipse.org/" class="extlink">Eclipse</a> &nbsp;&nbsp; <a class="nid" title="93A" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid93A">(93A)</a></h3>
<p><a name="nid96G" id="nid96G"></a>To follow is some documentation on how one would go about compiling and running Core Protege from the Eclipse development environment. &nbsp;&nbsp; <a class="nid" title="96G" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid96G">(96G)</a></p>
<p><a name="nid96H" id="nid96H"></a><b>Important notes:</b> &nbsp;&nbsp; <a class="nid" title="96H" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid96H">(96H)</a></p>
<ol>
<li><a name="nid93B" id="nid93B"></a>There is more than one way to compile and run Core Protege from Eclipse.  This page documents one possibility, but is not meant to be exhaustive. &nbsp;&nbsp; <a class="nid" title="93B" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid93B">(93B)</a></li>
<li><a name="nid96I" id="nid96I"></a>These instructions are valid for the 3.x series of Core Protege.  They are not applicable to Protege 4.0. &nbsp;&nbsp; <a class="nid" title="96I" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid96I">(96I)</a></li>
<li><a name="nid96J" id="nid96J"></a>If you don't like development environments, we provide an Ant build script called "build.xml" for Core Protege that is located in our Subversion repository: <a href="http://smi-protege.stanford.edu/repos/protege/protege-core/trunk/build.xml" class="extlink">http://smi-protege.stanford.edu/repos/protege/protege-core/trunk/build.xml</a>. &nbsp;&nbsp; <a class="nid" title="96J" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid96J">(96J)</a></li>
</ol>
<p><a name="nid96K" id="nid96K"></a><b>Quick Links</b> &nbsp;&nbsp; <a class="nid" title="96K" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid96K">(96K)</a></p>
<ul>
<li><a name="nid94H" id="nid94H"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid93C" class="extlink">Checkout the source code for Core Protege</a> &nbsp;&nbsp; <a class="nid" title="94H" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid94H">(94H)</a></li>
<li><a name="nid94I" id="nid94I"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid93R" class="extlink">Configure the Core Protege Project</a> &nbsp;&nbsp; <a class="nid" title="94I" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid94I">(94I)</a></li>
<li><a name="nid94J" id="nid94J"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid93Z" class="extlink">Handle Auto-Generated Code</a> &nbsp;&nbsp; <a class="nid" title="94J" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid94J">(94J)</a></li>
<li><a name="nid94G" id="nid94G"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid949" class="extlink">Run Protege</a> &nbsp;&nbsp; <a class="nid" title="94G" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid94G">(94G)</a></li>
<li><a name="nid96F" id="nid96F"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid95Z" class="extlink">Eliminate Warning Messages in the Console</a> &nbsp;&nbsp; <a class="nid" title="96F" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid96F">(96F)</a></li>
</ul>
<hr />

<h3><a name="nid93C" id="nid93C"></a>Checkout the source code for Core Protege &nbsp;&nbsp; <a class="nid" title="93C" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid93C">(93C)</a></h3>
<p><a name="nid93F" id="nid93F"></a>Launch Eclipse and go to the SVN Repository Exploring perspective.  (This step assumes that you have already installed an Eclipse plug-in called <a href="http://subclipse.tigris.org/" class="extlink">Subclipse</a> that adds Subversion integration to the Eclipse IDE).  Click the "Add SVN Repository" button to bring up the "Add SVN Repository" dialog.  In the "Url" text box, type the following URL: &nbsp;&nbsp; <a class="nid" title="93F" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid93F">(93F)</a></p>
<p><a name="nid93G" id="nid93G"></a><a href="http://smi-protege.stanford.edu/repos/protege/" class="extlink">http://smi-protege.stanford.edu/repos/protege/</a> &nbsp;&nbsp; <a class="nid" title="93G" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid93G">(93G)</a></p>
<p><a name="nid93H" id="nid93H"></a>... and click Finish.  Eclipse should look like the following screenshot at this point: &nbsp;&nbsp; <a class="nid" title="93H" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid93H">(93H)</a></p>
<p><a name="nid93I" id="nid93I"></a><img alt="http://protege.cim3.net/file/work/images/compile-protege-eclipse/svn-repos-perspective.jpg" src="http://protege.cim3.net/file/work/images/compile-protege-eclipse/svn-repos-perspective.jpg" /> &nbsp;&nbsp; <a class="nid" title="93I" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid93I">(93I)</a></p>
<p><a name="nid93J" id="nid93J"></a>Once you have successfully connected to the Protege Subversion repository, navigate to the folder protege-core/trunk and right click to bring up the context menu.  Choose the "Checkout..." option to bring up the "Checkout from SVN" dialog.  Choose the options indicated in the screenshot below and click Finish. &nbsp;&nbsp; <a class="nid" title="93J" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid93J">(93J)</a></p>
<p><a name="nid93K" id="nid93K"></a><img alt="http://protege.cim3.net/file/work/images/compile-protege-eclipse/checkout-dialog.jpg" src="http://protege.cim3.net/file/work/images/compile-protege-eclipse/checkout-dialog.jpg" /> &nbsp;&nbsp; <a class="nid" title="93K" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid93K">(93K)</a></p>
<p><a name="nid93L" id="nid93L"></a>In the resulting "New Project" wizard, select "Java Project" and click Next.  In the "New Java Project" dialog, type a project name (for this documentation, we will use "protege-core").  In the JRE section of this dialog, it is important to pick a version of Java that Protege supports (as of the writing of this documentation on April 3, 2007, the necessary version of Java is 1.5).  Choose the options indicated in the screenshot below and click Next. &nbsp;&nbsp; <a class="nid" title="93L" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid93L">(93L)</a></p>
<p><a name="nid93M" id="nid93M"></a><img alt="http://protege.cim3.net/file/work/images/compile-protege-eclipse/new-project-dialog.jpg" src="http://protege.cim3.net/file/work/images/compile-protege-eclipse/new-project-dialog.jpg" /> &nbsp;&nbsp; <a class="nid" title="93M" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid93M">(93M)</a></p>
<p><a name="nid93N" id="nid93N"></a>In the "Java Settings" portion of the wizard, change the default output folder to protege-core/classes as indicated in the screenshot below and click Finish. &nbsp;&nbsp; <a class="nid" title="93N" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid93N">(93N)</a></p>
<p><a name="nid93O" id="nid93O"></a><img alt="http://protege.cim3.net/file/work/images/compile-protege-eclipse/java-settings.jpg" src="http://protege.cim3.net/file/work/images/compile-protege-eclipse/java-settings.jpg" /> &nbsp;&nbsp; <a class="nid" title="93O" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid93O">(93O)</a></p>
<p><a name="nid93P" id="nid93P"></a>At this point, Eclipse will begin checking out the source code for Core Protege.  When the process is completed, switch to the Java perspective and Eclipse should look something like the following: &nbsp;&nbsp; <a class="nid" title="93P" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid93P">(93P)</a></p>
<p><a name="nid93Q" id="nid93Q"></a><img alt="http://protege.cim3.net/file/work/images/compile-protege-eclipse/java-perspective.jpg" src="http://protege.cim3.net/file/work/images/compile-protege-eclipse/java-perspective.jpg" /> &nbsp;&nbsp; <a class="nid" title="93Q" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid93Q">(93Q)</a></p>
<h3><a name="nid93R" id="nid93R"></a>Configure the Core Protege Project &nbsp;&nbsp; <a class="nid" title="93R" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid93R">(93R)</a></h3>
<p><a name="nid93S" id="nid93S"></a>Right-click on protege-core in the Package Explorer and choose Properties.  In the "Properties for protege-core" dialog, click "Java Build Path" on the left, and click the Libraries tab.  On the Libraries tab, click the "Add Jars..." button and select the protege-core/lib folder: &nbsp;&nbsp; <a class="nid" title="93S" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid93S">(93S)</a></p>
<p><a name="nid93T" id="nid93T"></a><img alt="http://protege.cim3.net/file/work/images/compile-protege-eclipse/jar-selection.jpg" src="http://protege.cim3.net/file/work/images/compile-protege-eclipse/jar-selection.jpg" /> &nbsp;&nbsp; <a class="nid" title="93T" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid93T">(93T)</a></p>
<p><a name="nid93U" id="nid93U"></a>Select all of the JAR files in the lib directory and click OK.  The Libraries tab should now look like the following screenshot: &nbsp;&nbsp; <a class="nid" title="93U" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid93U">(93U)</a></p>
<p><a name="nid93V" id="nid93V"></a><img alt="http://protege.cim3.net/file/work/images/compile-protege-eclipse/libraries-tab.jpg" src="http://protege.cim3.net/file/work/images/compile-protege-eclipse/libraries-tab.jpg" /> &nbsp;&nbsp; <a class="nid" title="93V" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid93V">(93V)</a></p>
<p><a name="nid93Y" id="nid93Y"></a>Click OK to close the Properties dialog. &nbsp;&nbsp; <a class="nid" title="93Y" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid93Y">(93Y)</a></p>
<h3><a name="nid93Z" id="nid93Z"></a>Handle Auto-Generated Code &nbsp;&nbsp; <a class="nid" title="93Z" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid93Z">(93Z)</a></h3>
<p><a name="nid93W" id="nid93W"></a>At this point, you will notice that there are still some errors in the Java perspective that indicate that the source code is not compiling: &nbsp;&nbsp; <a class="nid" title="93W" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid93W">(93W)</a></p>
<p><a name="nid93X" id="nid93X"></a><img alt="http://protege.cim3.net/file/work/images/compile-protege-eclipse/compile-errors.jpg" src="http://protege.cim3.net/file/work/images/compile-protege-eclipse/compile-errors.jpg" /> &nbsp;&nbsp; <a class="nid" title="93X" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid93X">(93X)</a></p>
<p><a name="nid940" id="nid940"></a>The reason for the compiler errors is that Core Protege uses some auto-generated code that is not housed in the Subversion repository.  The code must be generated using an application called <a href="https://javacc.dev.java.net/" class="extlink">JavaCC</a>.  After you have installed JavaCC, you can run the following from the command line: &nbsp;&nbsp; <a class="nid" title="940" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid940">(940)</a></p>
<p><a name="nid941" id="nid941"></a><tt>javacc &lt;your-path-to-grammar-file&gt;</tt> &nbsp;&nbsp; <a class="nid" title="941" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid941">(941)</a></p>
<p><a name="nid942" id="nid942"></a>Note that the grammar file for Core Protege is called "Parser.jj" and is located in the protege-core/bin directory.  To follow is a screenshot of running JavaCC on a Windows machine: &nbsp;&nbsp; <a class="nid" title="942" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid942">(942)</a></p>
<p><a name="nid943" id="nid943"></a><img alt="http://protege.cim3.net/file/work/images/compile-protege-eclipse/javacc.jpg" src="http://protege.cim3.net/file/work/images/compile-protege-eclipse/javacc.jpg" /> &nbsp;&nbsp; <a class="nid" title="943" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid943">(943)</a></p>
<p><a name="nid946" id="nid946"></a>Running JavaCC on Parser.jj will produce seven new Java files.  These files must be copied into the following directory of the protege-core source tree: protege-core/src/edu/stanford/smi/protege/storage/clips. &nbsp;&nbsp; <a class="nid" title="946" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid946">(946)</a></p>
<p><a name="nid947" id="nid947"></a>You may need to right-click on the clips directory in the Package Explorer and choose Refresh to make sure that Eclipse detects these new files in the source tree.  After adding the new source files, you will see that there are no longer any compile errors: &nbsp;&nbsp; <a class="nid" title="947" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid947">(947)</a></p>
<p><a name="nid948" id="nid948"></a><img alt="http://protege.cim3.net/file/work/images/compile-protege-eclipse/compiles-ok-now.jpg" src="http://protege.cim3.net/file/work/images/compile-protege-eclipse/compiles-ok-now.jpg" /> &nbsp;&nbsp; <a class="nid" title="948" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid948">(948)</a></p>
<h3><a name="nid949" id="nid949"></a>Run Protege &nbsp;&nbsp; <a class="nid" title="949" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid949">(949)</a></h3>
<p><a name="nid94A" id="nid94A"></a>Now that the Protege source code compiles, we can create a run configuration that will allow us to run Protege from Eclipse. &nbsp;&nbsp; <a class="nid" title="94A" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid94A">(94A)</a></p>
<p><a name="nid94B" id="nid94B"></a>Click the small down arrow next to the Run button on the Eclipse toolbar and choose "Run..." to bring up the "Run" dialog.  Choose Java Application from the list on the left and click the "New launch configuration" button.  In the Name text box, type "protege-core" and fill in the rest of the fields as indicated by the screenshot below: &nbsp;&nbsp; <a class="nid" title="94B" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid94B">(94B)</a></p>
<p><a name="nid94C" id="nid94C"></a><img alt="http://protege.cim3.net/file/work/images/compile-protege-eclipse/run-config.jpg" src="http://protege.cim3.net/file/work/images/compile-protege-eclipse/run-config.jpg" /> &nbsp;&nbsp; <a class="nid" title="94C" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid94C">(94C)</a></p>
<p><a name="nid94D" id="nid94D"></a>Click the Apply button and then click the Close button.  When running Protege, it is a good idea to enable the Console view in Eclipse because Protege outputs helpful logging information to the console.  To enable the Console view, choose Window -&gt; Show View -&gt; Console. &nbsp;&nbsp; <a class="nid" title="94D" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid94D">(94D)</a></p>
<p><a name="nid94E" id="nid94E"></a>To run Protege, click on the small down arrow again next to the Run button and choose the newly created protege-core run configuration.  Protege should launch from Eclipse and you should see the following output in the console view: &nbsp;&nbsp; <a class="nid" title="94E" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid94E">(94E)</a></p>
<p><a name="nid94F" id="nid94F"></a><img alt="http://protege.cim3.net/file/work/images/compile-protege-eclipse/console-output.jpg" src="http://protege.cim3.net/file/work/images/compile-protege-eclipse/console-output.jpg" /> &nbsp;&nbsp; <a class="nid" title="94F" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid94F">(94F)</a></p>
<h3><a name="nid95Z" id="nid95Z"></a>Eliminate Warning Messages in the Console &nbsp;&nbsp; <a class="nid" title="95Z" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid95Z">(95Z)</a></h3>
<p><a name="nid960" id="nid960"></a>In the above screenshot you can see that there are two warning messages displayed when you run Protege. &nbsp;&nbsp; <a class="nid" title="960" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid960">(960)</a></p>
<p><a name="nid963" id="nid963"></a>The first warning: &nbsp;&nbsp; <a class="nid" title="963" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid963">(963)</a></p>
<p><a name="nid964" id="nid964"></a><tt>WARNING: missing bundle: protege_text -- BundleHelper.&lt;init&gt;()</tt> &nbsp;&nbsp; <a class="nid" title="964" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid964">(964)</a></p>
<p><a name="nid961" id="nid961"></a>... is displayed because Protege is expecting a particular Java properties file in the directory from where it is executed.  To fix this warning, copy the file <tt>protege-core/src/edu/stanford/smi/protege/resource/files/protege_text.properties</tt> to the root directory of your protege-core Eclipse project.  This is the directory from which the Protege executable is launched. &nbsp;&nbsp; <a class="nid" title="961" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid961">(961)</a></p>
<p><a name="nid965" id="nid965"></a>The second warning: &nbsp;&nbsp; <a class="nid" title="965" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid965">(965)</a></p>
<p><a name="nid962" id="nid962"></a><tt>WARNING: Plugins directory not found: C:\eclipse-workspace\protege-core\plugins -- PluginUtilities.findPluginsDirectory()</tt> &nbsp;&nbsp; <a class="nid" title="962" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid962">(962)</a></p>
<p><a name="nid966" id="nid966"></a>... is displayed because Protege expects a subdirectory to exist below the execution directory called "plugins".  This is the directory that houses all the Protege plug-ins that are loaded when Protege starts up.  There are two options for eliminating this warning message: &nbsp;&nbsp; <a class="nid" title="966" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid966">(966)</a></p>
<p><a name="nid967" id="nid967"></a><b>Option 1:</b> Create an empty directory called "plugins" directly below your protege-core Eclipse project.  On a Windows machine, the directory structure would look like this: &nbsp;&nbsp; <a class="nid" title="967" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid967">(967)</a></p>
<p><a name="nid968" id="nid968"></a><img alt="http://protege.cim3.net/file/work/images/compile-protege-eclipse/directory-structure.jpg" src="http://protege.cim3.net/file/work/images/compile-protege-eclipse/directory-structure.jpg" /> &nbsp;&nbsp; <a class="nid" title="968" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid968">(968)</a></p>
<p><a name="nid969" id="nid969"></a><b>Option 2:</b> Alternatively, if you already have an installation of Protege somewhere else and you are interested in having the contents of the plugins subdirectory loaded, you can pass a VM parameter called protege.dir to specify the location of the desired plugins directory.  To specify a VM parameter, you need to bring up the Run dialog again, choose the protege-core Java Application, and click the Arguments tab.  To follow is a screenshot of specifying the protege.dir VM parameter for the protege-core project: &nbsp;&nbsp; <a class="nid" title="969" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid969">(969)</a></p>
<p><a name="nid96A" id="nid96A"></a><img alt="http://protege.cim3.net/file/work/images/compile-protege-eclipse/vm-parameter.jpg" src="http://protege.cim3.net/file/work/images/compile-protege-eclipse/vm-parameter.jpg" /> &nbsp;&nbsp; <a class="nid" title="96A" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid96A">(96A)</a></p>
<p><a name="nid96B" id="nid96B"></a>To follow is a screenshot of Protege's output to the console window after performing the steps above to eliminate warning messages: &nbsp;&nbsp; <a class="nid" title="96B" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid96B">(96B)</a></p>
<p><a name="nid96C" id="nid96C"></a><img alt="http://protege.cim3.net/file/work/images/compile-protege-eclipse/console-output2.jpg" src="http://protege.cim3.net/file/work/images/compile-protege-eclipse/console-output2.jpg" /> &nbsp;&nbsp; <a class="nid" title="96C" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid96C">(96C)</a></p>
<p><a name="nid96D" id="nid96D"></a>Note that the "missing bundle" warning is no longer present and that Protege loaded the contents of a plugins directory that was specified as a VM parameter. &nbsp;&nbsp; <a class="nid" title="96D" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid96D">(96D)</a></p>
<p><a name="nid96E" id="nid96E"></a>It is also helpful to note that Protege prints the version number, build number, and version of Java it is using to the console.  This information can be very helpful when trying to debug problems. &nbsp;&nbsp; <a class="nid" title="96E" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid96E">(96E)</a></p>
<p><a name="nid96P" id="nid96P"></a><b>Author:</b> <a href="http://protege.cim3.net/cgi-bin/wiki.pl?JenniferVendetti" class="extlink">Jennifer Vendetti</a> &nbsp;&nbsp; <a class="nid" title="96P" href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse#nid96P">(96P)</a></p>
]]>
</description>
<dc:creator>48875</dc:creator>
</item>

<item rdf:about="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI">
<title>ChoosingUI</title>
<link>http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI</link>
<description><![CDATA[<h2><a name="nid476" id="nid476"></a>Which User Interface to Use to edit ontologies in OWL and RDF Schema: Protege Traditional Frame-based interface or the OWL Plugin interface? &nbsp;&nbsp; <a class="nid" title="476" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid476">(476)</a></h2>
<p><a name="nid477" id="nid477"></a>Note: This document reflects contradicting opinions about OWL and RDF support in Protege.  Based on the original document by one Stanford team member, several comments were added by the "OWL guy", Holger Knublauch (these paragraphs are marked) -- <a href="http://protege.cim3.net/cgi-bin/wiki.pl?HolgerKnublauch" class="wikiword">HolgerKnublauch</a> &nbsp;&nbsp; <a class="nid" title="477" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid477">(477)</a></p>
<h3><a name="nid478" id="nid478"></a>General issue &nbsp;&nbsp; <a class="nid" title="478" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid478">(478)</a></h3>
<p><a name="nid479" id="nid479"></a>Protege provides two user interfaces for editing ontologies: its <b>standard frame-based interface</b> and the <b>interface for the OWL plugin</b>. Each of the user interfaces has its pros and cons. However, you can use both interfaces to edit RDF and OWL ontologies. How do you choose which interface is more appropriate? How do you move from on to the other? &nbsp;&nbsp; <a class="nid" title="479" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid479">(479)</a></p>
<h3><a name="nid47A" id="nid47A"></a>User interfaces Versus Backends &nbsp;&nbsp; <a class="nid" title="47A" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid47A">(47A)</a></h3>
<p><a name="nid47B" id="nid47B"></a>In Protege, user interfaces are separated from backends. User interfaces enable users to edit ontologies and backends save the ontologies in appropriate file formats. The list of formats that you see in Save Project in Format dialog... for example are the available backends. &nbsp;&nbsp; <a class="nid" title="47B" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid47B">(47B)</a></p>
<p><a name="nid47C" id="nid47C"></a>Therefore, in theory at least, you can use any user interface to create your ontology and then save it using the appropriate backend. In practice, of course, things are not so simple. The two user interfaces are designed for different modeling paradigms and therefore do not support exactly the same elements. Therefore, if you use the frame-based interface, you will not be able to edit all features of OWL ontologies. At the same time, if you use only the elements that are present both in frame-based Protege and in OWL, you can easily and seamlessly move between the two interfaces by using Save As... and Build... functionalities. &nbsp;&nbsp; <a class="nid" title="47C" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid47C">(47C)</a></p>
<h3><a name="nid47D" id="nid47D"></a>Which user interface is more appropriate for editing RDF and OWL ontologies? &nbsp;&nbsp; <a class="nid" title="47D" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid47D">(47D)</a></h3>
<p><a name="nid47E" id="nid47E"></a>It depends. The OWL plugin gives you access to the full power of OWL. It is designed specifically to edit OWL ontologies and many of its components are optimized for OWL. You can access all OWL-specific features from the OWL plugin, such as nice handling of namespaces and imports, access to DL reasoners, species validator, OWLViz, OWL wizards, etc. At the same time, OWL is a very complex language and any editor for OWL will be necessity be rather complex. &nbsp;&nbsp; <a class="nid" title="47E" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid47E">(47E)</a></p>
<p><a name="nid47F" id="nid47F"></a>By the way, the OWL Plugin can also be used to edit pure RDF documents. It provides a language profile mechanism in which you can specify in detail which features of OWL you want to use in your project.  So the remaining discussion is really mostly about the user interface. -- <a href="http://protege.cim3.net/cgi-bin/wiki.pl?HolgerKnublauch" class="wikiword">HolgerKnublauch</a> &nbsp;&nbsp; <a class="nid" title="47F" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid47F">(47F)</a></p>
<p><a name="nid47G" id="nid47G"></a>If your ontology does not use any of the complex OWL features and you do not plan to use an OWL reasoner, if you use RDF OWL essentially as a standard interchange format for ontologies, you may want to use the frame-based user interface to develop your ontology and then export it to OWL. Since the frame-based interface does not provide many of the advanced features, it is actually much simpler and easier to use. It is also considerably faster on larger but simpler ontologies (at least at the moment). &nbsp;&nbsp; <a class="nid" title="47G" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid47G">(47G)</a></p>
<p><a name="nid47H" id="nid47H"></a>However, of course the definition of "simpler and easier" strongly depends on the personal preferences and experience.  It is clear that if you already have a background in the core Protege system, then you will find the RDF plugin easy to use.  OWL is not by definition more difficult than other languages (see below).  -- <a href="http://protege.cim3.net/cgi-bin/wiki.pl?HolgerKnublauch" class="wikiword">HolgerKnublauch</a> &nbsp;&nbsp; <a class="nid" title="47H" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid47H">(47H)</a></p>
<p><a name="nid47I" id="nid47I"></a>Note that if the features that you use in your ontology remain in the common subset of the two knowledge models (the one supported by the OWL plugin and the one supported by the frame-based interface), you can easily go back and forth between the interfaces. So, for instance, you can start with the frame-based interface, and if you later discover that you do need some of the more advanced OWL features, you can export your ontology to OWL and open it with the OWL plugin. &nbsp;&nbsp; <a class="nid" title="47I" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid47I">(47I)</a></p>
<p><a name="nid47J" id="nid47J"></a>Starting with the RDF plugin however has the risk that you could use many features which are neither standard RDF nor OWL.  The whole Protege core user interface is geared towards a more mighty language called OKBC and does not enforce limitations when the user in reality just wants to use RDF.  For example, you can easily create global value restrictions in the core Protege system and then save them to RDF.  However, RDF is used only as a syntax here, not semantically.  This means that even while you have the impression that you are inside valid RDF, the resulting files will potentially have very different meaning to a true OWL system such as Protege-OWL. -- <a href="http://protege.cim3.net/cgi-bin/wiki.pl?HolgerKnublauch" class="wikiword">HolgerKnublauch</a> &nbsp;&nbsp; <a class="nid" title="47J" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid47J">(47J)</a></p>
<h4><a name="nid47K" id="nid47K"></a>When and why to use the <b>OWL plugin</b> to edit RDF and OWL &nbsp;&nbsp; <a class="nid" title="47K" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid47K">(47K)</a></h4>
<p><a name="nid47L" id="nid47L"></a>If you plan to use any of the following features, the OWL Plugin is your best choice: &nbsp;&nbsp; <a class="nid" title="47L" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid47L">(47L)</a></p>
<ul>
<li><a name="nid47M" id="nid47M"></a>the following OWL elements: &nbsp;&nbsp; <a class="nid" title="47M" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid47M">(47M)</a><ul>
<li><a name="nid47N" id="nid47N"></a>Annotation properties &nbsp;&nbsp; <a class="nid" title="47N" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid47N">(47N)</a></li>
<li><a name="nid47O" id="nid47O"></a>some<a href="http://protege.cim3.net/cgi-bin/wiki.pl?action=edit&amp;id=ValuesFrom" class="create">ValuesFrom</a> restrictions &nbsp;&nbsp; <a class="nid" title="47O" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid47O">(47O)</a></li>
<li><a name="nid47P" id="nid47P"></a>Disjoint statements &nbsp;&nbsp; <a class="nid" title="47P" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid47P">(47P)</a></li>
<li><a name="nid47Q" id="nid47Q"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?action=edit&amp;id=UnionOf" class="create">UnionOf</a> (except for specifying property domain or range or all<a href="http://protege.cim3.net/cgi-bin/wiki.pl?action=edit&amp;id=ValuesFrom" class="create">ValuesFrom</a> restriction) &nbsp;&nbsp; <a class="nid" title="47Q" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid47Q">(47Q)</a></li>
<li><a name="nid47R" id="nid47R"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?action=edit&amp;id=IntersectionOf" class="create">IntersectionOf</a> &nbsp;&nbsp; <a class="nid" title="47R" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid47R">(47R)</a></li>
<li><a name="nid47S" id="nid47S"></a>arbitrary XML Schema datatypes -- <a href="http://protege.cim3.net/cgi-bin/wiki.pl?HolgerKnublauch" class="wikiword">HolgerKnublauch</a> &nbsp;&nbsp; <a class="nid" title="47S" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid47S">(47S)</a></li>
<li><a name="nid47T" id="nid47T"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?action=edit&amp;id=InverseFunctional" class="create">InverseFunctional</a>, Transitive, Symmetric properties -- <a href="http://protege.cim3.net/cgi-bin/wiki.pl?HolgerKnublauch" class="wikiword">HolgerKnublauch</a> &nbsp;&nbsp; <a class="nid" title="47T" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid47T">(47T)</a></li>
</ul>
</li>
<li><a name="nid47U" id="nid47U"></a>access a DL reasoner, such as Racer &nbsp;&nbsp; <a class="nid" title="47U" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid47U">(47U)</a></li>
<li><a name="nid47V" id="nid47V"></a>OWL wizards &nbsp;&nbsp; <a class="nid" title="47V" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid47V">(47V)</a></li>
<li><a name="nid47W" id="nid47W"></a>visualization plugins like OWLViz or OWLDoc (and other CO-ODE plugins) -- <a href="http://protege.cim3.net/cgi-bin/wiki.pl?HolgerKnublauch" class="wikiword">HolgerKnublauch</a> &nbsp;&nbsp; <a class="nid" title="47W" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid47W">(47W)</a></li>
<li><a name="nid47X" id="nid47X"></a>species validator &nbsp;&nbsp; <a class="nid" title="47X" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid47X">(47X)</a></li>
<li><a name="nid47Y" id="nid47Y"></a>namespaces in OWL &nbsp;&nbsp; <a class="nid" title="47Y" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid47Y">(47Y)</a></li>
<li><a name="nid47Z" id="nid47Z"></a>some complex namespaces in RDF. The RDF backend can handle namespaces directly with the frame-based interface, but does it much more clumsy than the OWL plugin &nbsp;&nbsp; <a class="nid" title="47Z" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid47Z">(47Z)</a></li>
<li><a name="nid480" id="nid480"></a>if you are a software developer for Semantic Web/OWL/RDF based applications.  The OWL Plugin provides a custom-tailored Java API with consistent support for OWL.  Using the OWL Plugin as a starting point means that you can evolve your application out of a Protege plugin. -- <a href="http://protege.cim3.net/cgi-bin/wiki.pl?HolgerKnublauch" class="wikiword">HolgerKnublauch</a> &nbsp;&nbsp; <a class="nid" title="480" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid480">(480)</a></li>
<li><a name="nid481" id="nid481"></a>if you want to interface OWL-based services with Jena - <a href="http://protege.cim3.net/cgi-bin/wiki.pl?HolgerKnublauch" class="wikiword">HolgerKnublauch</a> &nbsp;&nbsp; <a class="nid" title="481" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid481">(481)</a></li>
<li><a name="nid482" id="nid482"></a>if you want to use modern RDF query languages -- <a href="http://protege.cim3.net/cgi-bin/wiki.pl?HolgerKnublauch" class="wikiword">HolgerKnublauch</a> &nbsp;&nbsp; <a class="nid" title="482" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid482">(482)</a></li>
<li><a name="nid483" id="nid483"></a>if you need to create an ontology in multiple languages, using RDF language tags -- <a href="http://protege.cim3.net/cgi-bin/wiki.pl?HolgerKnublauch" class="wikiword">HolgerKnublauch</a> &nbsp;&nbsp; <a class="nid" title="483" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid483">(483)</a></li>
<li><a name="nid484" id="nid484"></a>if you would like to join a very active and helpful mailing list, full of OWL users -- <a href="http://protege.cim3.net/cgi-bin/wiki.pl?HolgerKnublauch" class="wikiword">HolgerKnublauch</a> &nbsp;&nbsp; <a class="nid" title="484" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid484">(484)</a></li>
<li><a name="nid485" id="nid485"></a><i>... add others here...</i> &nbsp;&nbsp; <a class="nid" title="485" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid485">(485)</a></li>
</ul>
<h4><a name="nid486" id="nid486"></a>When and why you may <i>not</i> want to use the <b>OWL plugin</b> for editing RDF and OWL &nbsp;&nbsp; <a class="nid" title="486" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid486">(486)</a></h4>
<ul>
<li><a name="nid487" id="nid487"></a>Since OWL is a complex language and the OWL Plugin is excellent at providing users access to all the features of the languages, the interface can be overwhelming and difficult to use for those who do not have training in knowledge engineering. &nbsp;&nbsp; <a class="nid" title="487" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid487">(487)</a></li>
<li><a name="nid488" id="nid488"></a>If you find the user interface too difficult an option may be to switch to the "Properties View" on the classes tab.  This provides a view that is very similar to the core Protege "template slots" view but has the benefit that makes sure the users stay safely inside the bounds of interoperable OWL/RDF. -- <a href="http://protege.cim3.net/cgi-bin/wiki.pl?HolgerKnublauch" class="wikiword">HolgerKnublauch</a> &nbsp;&nbsp; <a class="nid" title="488" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid488">(488)</a></li>
<li><a name="nid489" id="nid489"></a>Some of the widgets (both slot and tab widgets) do not work with the OWL plugin. &nbsp;&nbsp; <a class="nid" title="489" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid489">(489)</a></li>
<li><a name="nid48A" id="nid48A"></a>Since the OWL Plugin relies on third-party libraries for parsing (Jena), loading performance may be an issue for large ontologies (The standard backend is an order of magnitude faster when loading a hierarchy of 5,000 classes with no slots).  (The new ARP parser for Protege-OWL is approximately as fast as Jena, and Jena is considered the standard OWL parser in the community -- <a href="http://protege.cim3.net/cgi-bin/wiki.pl?HolgerKnublauch" class="wikiword">HolgerKnublauch</a>). &nbsp;&nbsp; <a class="nid" title="48A" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid48A">(48A)</a></li>
</ul>
<h4><a name="nid48B" id="nid48B"></a>When and why to use the <b>standard frame-based interface</b> to edit RDF and OWL &nbsp;&nbsp; <a class="nid" title="48B" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid48B">(48B)</a></h4>
<p><a name="nid48C" id="nid48C"></a>You can use the standard interface for editing RDF and OWL ontologies if (or while) you plan to use <i>only</i> the following features of OWL and RDF: &nbsp;&nbsp; <a class="nid" title="48C" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid48C">(48C)</a></p>
<ul>
<li><a name="nid48D" id="nid48D"></a>Classes and a class hierarchy &nbsp;&nbsp; <a class="nid" title="48D" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid48D">(48D)</a></li>
<li><a name="nid48E" id="nid48E"></a>Properties and subproperties &nbsp;&nbsp; <a class="nid" title="48E" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid48E">(48E)</a></li>
<li><a name="nid48F" id="nid48F"></a>Cardinality restrictions &nbsp;&nbsp; <a class="nid" title="48F" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid48F">(48F)</a></li>
<li><a name="nid48G" id="nid48G"></a>Domains and ranges for properties with values that are single classes or unions of classes &nbsp;&nbsp; <a class="nid" title="48G" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid48G">(48G)</a></li>
<li><a name="nid48H" id="nid48H"></a>Range restrictions for properties (all<a href="http://protege.cim3.net/cgi-bin/wiki.pl?action=edit&amp;id=ValuesFrom" class="create">ValuesFrom</a> in OWL) where the value is a single class or union of classes &nbsp;&nbsp; <a class="nid" title="48H" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid48H">(48H)</a></li>
<li><a name="nid48I" id="nid48I"></a>Property values for individuals and classes &nbsp;&nbsp; <a class="nid" title="48I" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid48I">(48I)</a></li>
<li><a name="nid48J" id="nid48J"></a>Individuals &nbsp;&nbsp; <a class="nid" title="48J" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid48J">(48J)</a></li>
<li><a name="nid48K" id="nid48K"></a>Metaclasses &nbsp;&nbsp; <a class="nid" title="48K" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid48K">(48K)</a></li>
<li><a name="nid48L" id="nid48L"></a><i>... add others here...</i> &nbsp;&nbsp; <a class="nid" title="48L" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid48L">(48L)</a></li>
</ul>
<p><a name="nid48M" id="nid48M"></a>Why would you want to use an interface that provides fewer features? &nbsp;&nbsp; <a class="nid" title="48M" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid48M">(48M)</a></p>
<ul>
<li><a name="nid48N" id="nid48N"></a>Because it has the "luxury" of providing only simpler features, many find the interface itself much simpler and straightforward to use (This view is of course subjective). You don't have the forAll and Exists signs, much more of the interface is in the form of filling forms and you get fewer options to choose from. Naturally, you have to pay for it with limited expressivity. &nbsp;&nbsp; <a class="nid" title="48N" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid48N">(48N)</a></li>
<li><a name="nid48O" id="nid48O"></a>If you use the standard backend (.pont and .pins) file to store your ontology and import it to RDF or OWL only when you need to exchange it with others, you may also get better performance on loading large ontologies. &nbsp;&nbsp; <a class="nid" title="48O" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid48O">(48O)</a></li>
<li><a name="nid48P" id="nid48P"></a>Some of the plugins work only with this interface. &nbsp;&nbsp; <a class="nid" title="48P" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid48P">(48P)</a></li>
</ul>
<h4><a name="nid48Q" id="nid48Q"></a>When and why you may <i>not</i> want to use the <b>standard frame-based interface</b> for editing RDF and OWL &nbsp;&nbsp; <a class="nid" title="48Q" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid48Q">(48Q)</a></h4>
<ul>
<li><a name="nid48R" id="nid48R"></a>You do not get many of the more advanced OWL features -- see the list above &nbsp;&nbsp; <a class="nid" title="48R" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid48R">(48R)</a></li>
<li><a name="nid48S" id="nid48S"></a>While the RDF backend handles different namespaces, the handling is clumsy &nbsp;&nbsp; <a class="nid" title="48S" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid48S">(48S)</a></li>
<li><a name="nid48T" id="nid48T"></a>You have interface for entering features that are not directly supported by OWL, such as default values. Note that you will still be able to save your ontology in OWL and it will use the protege namespace to record those features, but these features will have no semantics once your ontology is used by OWL tools. &nbsp;&nbsp; <a class="nid" title="48T" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid48T">(48T)</a></li>
<li><a name="nid48U" id="nid48U"></a>You don't have access to many of the nice features of the OWL Plugin, such as ontology tests. &nbsp;&nbsp; <a class="nid" title="48U" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid48U">(48U)</a></li>
<li><a name="nid48V" id="nid48V"></a>You won't be able to use most of the new plugins that are being developed for OWL, including for example SWRL rules support. -- <a href="http://protege.cim3.net/cgi-bin/wiki.pl?HolgerKnublauch" class="wikiword">HolgerKnublauch</a> &nbsp;&nbsp; <a class="nid" title="48V" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid48V">(48V)</a></li>
<li><a name="nid48W" id="nid48W"></a>The RDF plugin lacks features when multiple ranges and domains are defined. The output in these cases is incorrect (should be union semantics).  The OWL Plugin has it of course much easier in this respect, because it has been designed after OWL with its union operand has been defined, while the RDF backend hasn't really been further developed for several years. -- <a href="http://protege.cim3.net/cgi-bin/wiki.pl?HolgerKnublauch" class="wikiword">HolgerKnublauch</a> &nbsp;&nbsp; <a class="nid" title="48W" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid48W">(48W)</a></li>
</ul>
<h3><a name="nid48X" id="nid48X"></a>How to move between different interfaces &nbsp;&nbsp; <a class="nid" title="48X" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid48X">(48X)</a></h3>
<p><a name="nid48Y" id="nid48Y"></a>If you have an OWL file, you have two option for opening it in Protege: &nbsp;&nbsp; <a class="nid" title="48Y" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid48Y">(48Y)</a></p>
<ol>
<li><a name="nid48Z" id="nid48Z"></a>Use Build to build a project in the OWL Plugin &nbsp;&nbsp; <a class="nid" title="48Z" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid48Z">(48Z)</a></li>
<li><a name="nid490" id="nid490"></a>Use Export into the standard interface &nbsp;&nbsp; <a class="nid" title="490" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid490">(490)</a></li>
</ol>
<p><a name="nid491" id="nid491"></a>If you have an RDF file, you have three options for opening it in Protege: &nbsp;&nbsp; <a class="nid" title="491" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid491">(491)</a></p>
<ol>
<li><a name="nid492" id="nid492"></a>Use Build to build a project in the OWL Plugin &nbsp;&nbsp; <a class="nid" title="492" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid492">(492)</a></li>
<li><a name="nid493" id="nid493"></a>Use Build to build a project in the standard interface with the RDFS backend &nbsp;&nbsp; <a class="nid" title="493" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid493">(493)</a></li>
<li><a name="nid494" id="nid494"></a>Use Export into the standard interface &nbsp;&nbsp; <a class="nid" title="494" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid494">(494)</a></li>
</ol>
<p><a name="nid495" id="nid495"></a>Saving your work: &nbsp;&nbsp; <a class="nid" title="495" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid495">(495)</a></p>
<ol>
<li><a name="nid496" id="nid496"></a>If you are using the OWL Plugin, simply save your project in the OWL Format &nbsp;&nbsp; <a class="nid" title="496" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid496">(496)</a></li>
<li><a name="nid497" id="nid497"></a>If you are using the standard interface, save your project in the standard text format (.pont and .pins files). When you want to get a version of your ontology in OWL (for instance, for distribution), use Export... &nbsp;&nbsp; <a class="nid" title="497" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid497">(497)</a></li>
<li><a name="nid498" id="nid498"></a>If you are using the standard interface with the RDFS backend, simple save your project. &nbsp;&nbsp; <a class="nid" title="498" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid498">(498)</a></li>
</ol>
<p><a name="nid499" id="nid499"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?ModelingTipsAndTricks" class="extlink">Back to ModelingTipsAndTricks page</a> &nbsp;&nbsp; <a class="nid" title="499" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid499">(499)</a></p>
<p><a name="nid49A" id="nid49A"></a>-- <a href="http://protege.cim3.net/cgi-bin/wiki.pl?Natasha_Noy" class="extlink">NatashaNoy</a> &nbsp;&nbsp; <a class="nid" title="49A" href="http://protege.cim3.net/cgi-bin/wiki.pl?ChoosingUI#nid49A">(49A)</a></p>
]]>
</description>
<dc:creator>48875</dc:creator>
</item>

<item rdf:about="http://protege.cim3.net/cgi-bin/wiki.pl?RecentChanges">
<title>RecentChanges</title>
<link>http://protege.cim3.net/cgi-bin/wiki.pl?RecentChanges</link>
<description><![CDATA[<p><a name="nid3LX" id="nid3LX"></a>Unless you have set the local time offset in your personal preferences, the time stamp defaults to Pacific Time (i.e. US California time, where the server is located): &nbsp;&nbsp; <a class="nid" title="3LX" href="http://protege.cim3.net/cgi-bin/wiki.pl?RecentChanges#nid3LX">(3LX)</a></p>
]]>
</description>
<dc:creator>48875</dc:creator>
</item>

<item rdf:about="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK">
<title>ProjectsThatUseProtegeFtoK</title>
<link>http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK</link>
<description><![CDATA[<p><a name="nid5N0" id="nid5N0"></a>This is an alphabetized list of some of the projects that use Protégé. If you want to add yours, we suggest that you use the following template <a href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectThatUseProtegeTemplate" class="wikiword">ProjectThatUseProtegeTemplate</a> (the explanations on how to use this template are included). &nbsp;&nbsp; <a class="nid" title="5N0" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5N0">(5N0)</a></p>
<p><a name="nid5N1" id="nid5N1"></a><b><a href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtege" class="extlink">(A-E)</a> (F-K) <a href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeLtoQ" class="extlink">(L-Q)</a> <a href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeRtoZ" class="extlink">(R-Z)</a></b> &nbsp;&nbsp; <a class="nid" title="5N1" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5N1">(5N1)</a></p>
<hr />

<ul>
<li><a name="nidC48" id="nidC48"></a><b><a href="http://www.dataindia.org/" class="extlink">Farm Automation and Agro-Processing </a></b> &nbsp;&nbsp; <a class="nid" title="C48" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nidC48">(C48)</a></li>
</ul>
<div class="indent">
<p><a name="nidC49" id="nidC49"></a>Joint project between <a href="http://www.amaljyothi.com/" class="extlink">AMAL JYOTHI College of Engineering</a> and <a href="http://www.drmgrdu.ac.in" class="extlink">Dr. M.G.R. University</a> to support farm automation and agro-processing.  Created a <a href="http://www.dataindia.org/ontologies/OntoBlackPepper.owl" class="extlink">black pepper ontology</a> for <a href="http://www.dataindia.org/" class="extlink">DataIndia.ORG</a>. &nbsp;&nbsp; <a class="nid" title="C49" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nidC49">(C49)</a></p>
</div>
<ul>
<li><a name="nid5SW" id="nid5SW"></a><b>Field Knowledge Management (FKM)</b> &nbsp;&nbsp; <a class="nid" title="5SW" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5SW">(5SW)</a></li>
</ul>
<div class="indent">
<p><a name="nid5SX" id="nid5SX"></a>Applied Materials makes the tools that make the chips that make the Protege software run. We have 3000 field engineers working in bunny suits on our ~$1M tools worldwide. The FKM Project goals are (a) gather actual issue-cases from field engineers into KM system, (b) Diagnostic Drilldown Search to find existing cases, (c) experimenting with Bayesian drilldown - what test to do next based on cost, time, probability of success, (d) using Protege to build our Troubleshooting Ontology. &nbsp;&nbsp; <a class="nid" title="5SX" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5SX">(5SX)</a></p>
</div>
<ul>
<li><a name="nid5N2" id="nid5N2"></a><b><a href="http://csabaveres.net/" class="extlink">Folksonomy to Ontology</a></b> &nbsp;&nbsp; <a class="nid" title="5N2" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5N2">(5N2)</a></li>
</ul>
<div class="indent">
<p><a name="nid5N3" id="nid5N3"></a>The aim of this project is to extract the regularities in the folksonomies created by user tagging on sites like del.icio.us. Social tagging is a new phenomenon which has recently been surrounded by a lot of noise. Many claim that they are superior to ontologies and that Semantic Web applications based on formal ontologies have been super ceded. My aim is to show that folksonomies and ontologies are not that different. &nbsp;&nbsp; <a class="nid" title="5N3" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5N3">(5N3)</a></p>
</div>
<div class="indent">
<p><a name="nid5N4" id="nid5N4"></a>I am currently building a method for translating between folksonomy and ontology. This will be implemented in Protege. The link above points to my blog in which I discuss my ideas, and potential contributions to the Protege implementation are very welcome. Protege projects will be made available on that site. &nbsp;&nbsp; <a class="nid" title="5N4" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5N4">(5N4)</a></p>
</div>
<ul>
<li><a name="nid5N5" id="nid5N5"></a><b><a href="http://protege.cim3.net/cgi-bin/wiki.pl?FoundationalModelAnatomy" class="extlink">Foundational Model of Anatomy</a></b> -  (<a href="http://sig.biostr.washington.edu/" class="extlink">University of Washington, Structural Informatics Group</a>) &nbsp;&nbsp; <a class="nid" title="5N5" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5N5">(5N5)</a></li>
</ul>
<ul>
<li><a name="nid5N6" id="nid5N6"></a><b><a href="http://www.bioinf.mdc-berlin.de/~schober/GandrIntro/" class="extlink">GandrKB (Gene annotation data representation)</a></b> &nbsp;&nbsp; <a class="nid" title="5N6" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5N6">(5N6)</a></li>
</ul>
<div class="indent">
<p><a name="nid5N7" id="nid5N7"></a>An ontology and knowledgebase describing gene functions enabeling biologists to annotate (multiple) genes on Affymetrix Microarrays per simple drag and drop. Annotation-classes and genes (instances) can be linked for fast and intuitive context-exploration and extensive querying using relations and is_a subsumptions. Generated gene annotations can be explored as interactive semantic networks with advanced visualisation tools. &nbsp;&nbsp; <a class="nid" title="5N7" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5N7">(5N7)</a></p>
</div>
<ul>
<li><a name="nid5SY" id="nid5SY"></a><b><a href="http://linguistics-ontology.org/" class="extlink">General Ontology for Linguistic Description (GOLD)</a></b> &nbsp;&nbsp; <a class="nid" title="5SY" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5SY">(5SY)</a></li>
</ul>
<div class="indent">
<p><a name="nid5SZ" id="nid5SZ"></a>GOLD is an ontology for descriptive linguistics. It gives a formalized account of the most basic categories and relations used in the scientific description of human language. First and foremost, GOLD is intended to capture the knowledge of a well-trained linguist. It is an attempt to codify the general knowledge of the field. GOLD is aimed at facilitating automated reasoning over linguistic data and at establishing the basic concepts through which intelligent search can be carried out. Furthermore, GOLD is meant to be compatible with the general goals of the Semantic Web. &nbsp;&nbsp; <a class="nid" title="5SZ" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5SZ">(5SZ)</a></p>
</div>
<ul>
<li><a name="nid5N8" id="nid5N8"></a><b><a href="http://purl.org/net/gum2" class="extlink">Generalized Upper Model</a></b> &nbsp;&nbsp; <a class="nid" title="5N8" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5N8">(5N8)</a></li>
</ul>
<div class="indent">
<p><a name="nid5N9" id="nid5N9"></a> The Generalized Upper Model (GUM) is a general task and domain independent `linguistically motivated ontology' intended for organizing information for expression in natural language. It is a descendent of the <a href="http://www.fb10.uni-bremen.de/anglistik/langpro/kpml/um89/um89-root.htm" class="extlink">Penman Upper Model</a>, originally developed by Bill Mann, Christian Matthiessen and others at the USC/ISI in Los Angeles. We are currently providing a full re-axiomatization of the Generalized Upper Model in OWL-DL using Protégé as the main development environment. The current ontology contains around 220 classes and 80 properties. Domain knowledge organized in terms of the GUM is known to be expressible in natural language and so forms a useful interface language for relating between applications and natural language technology. The GUM is a development of the <b><a href="http://www.fb10.uni-bremen.de/ontology/" class="extlink">Bremen Ontology Research Group</a></b>. &nbsp;&nbsp; <a class="nid" title="5N9" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5N9">(5N9)</a></p>
</div>
<ul>
<li><a name="nid5NA" id="nid5NA"></a><b><a href="http://www.generationcp.org/model" class="extlink">Generation Challenge Programme, Informatics Subprogramme</a></b> &nbsp;&nbsp; <a class="nid" title="5NA" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5NA">(5NA)</a></li>
</ul>
<div class="indent">
<p><a name="nid5NB" id="nid5NB"></a>Developing a next generation crop information platform which is very domain model and ontology driven. Protege is being incorporated as part of the strategy for ontology management on the project. We are also trying to couple Protege with other ontology systems, like the <a href="http://www.gmod.org" class="extlink">GMOD</a> CV module. We are also working to directly integrate OWL/RDF with our Java-based platform, portions of which are using the <a href="http://www.eclipse.org" class="extlink">Eclipse</a> Rich Client Platform. &nbsp;&nbsp; <a class="nid" title="5NB" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5NB">(5NB)</a></p>
</div>
<div class="indent">
<p><a name="nid5NC" id="nid5NC"></a>Dr. Richard Bruskiewich, Senior Scientist, Bioinformatics, International Rice Research Institute, (Principal Investigator: GCP domain modeling) &nbsp;&nbsp; <a class="nid" title="5NC" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5NC">(5NC)</a></p>
</div>
<ul>
<li><a name="nid5ND" id="nid5ND"></a><b><a href="http://protege.cim3.net/cgi-bin/wiki.pl?GeoLexDe" class="wikiword">GeoLexDe</a></b> - Geographic entities and their German names. &nbsp;&nbsp; <a class="nid" title="5ND" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5ND">(5ND)</a></li>
</ul>
<ul>
<li><a name="nid5NE" id="nid5NE"></a><b><a href="http://jungla.dit.upm.es/~jlopez/geseman/" class="extlink">GESEMAN</a></b> &nbsp;&nbsp; <a class="nid" title="5NE" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5NE">(5NE)</a></li>
</ul>
<div class="indent">
<p><a name="nid5NF" id="nid5NF"></a>The multiplicity of Network Management models (SNMP, CMIP, DMI, CORBA, WBEM...) has posed in the last decade the set up of mechanisms to allow the interoperability among all involved management domains. One of the basic pillars of such interoperability is the mapping between the information models that each domain specifies. Usually, these mappings have been carried out with syntactical translations that do not bear in mind the semantic aspects of the defined information. These translations could reach the semantic level by using ontologies. These ontologies, widely used in Artificial Intelligence, exactly focus on the meaning of those concepts composing an information model.
The goal of this project is the improvement of current network management interoperability techniques through the study and application of formal ontologies. They would eventually allow the specification of management information in an optimal way, obtaining the integration of all concepts that currently belongs to different management domains in the same model. One of the additional advantages of this approach is the ability of using the capacity of the ontologies to specify behavior for including it as part of the managed resources definitions, so that intelligent network managers can interpret these rules to perform management tasks. &nbsp;&nbsp; <a class="nid" title="5NF" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5NF">(5NF)</a></p>
</div>
<div class="indent">
<p><a name="nid5NG" id="nid5NG"></a>In this way, the management information handling can be simplified, avoiding managers' current problems, which have to deal with independent information models for each domain, and without the possibility of setting up direct relationships between them. &nbsp;&nbsp; <a class="nid" title="5NG" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5NG">(5NG)</a></p>
</div>
<ul>
<li><a name="nid5NH" id="nid5NH"></a><b><a href="http://www.kizukigroup.com/index.php?option=com_content&amp;task=blogsection&amp;id=5&amp;Itemid=38" class="extlink">Ghana Tourism</a></b> &nbsp;&nbsp; <a class="nid" title="5NH" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5NH">(5NH)</a></li>
</ul>
<div class="indent">
<p><a name="nid5NI" id="nid5NI"></a>The idea is to develop an ontology for the whole of the Ghana Tourism Industry. &nbsp;&nbsp; <a class="nid" title="5NI" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5NI">(5NI)</a></p>
</div>
<ul>
<li><a name="nid7RP" id="nid7RP"></a><b><a href="http://protege.cim3.net/cgi-bin/wiki.pl?GistServiceManagement" class="extlink">Gist Service Management</a></b> &nbsp;&nbsp; <a class="nid" title="7RP" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid7RP">(7RP)</a></li>
</ul>
<div class="indent">
<p><a name="nid7SC" id="nid7SC"></a>This is a project to build a pilot knowledge base to serve a Service Management environment for Gist IT Service Delivery, the service support arm of Gist. That environment is in a state of evolution and migration to maximize utilization of best practice elements of ITIL (IT Infrastructure Library) and similar standards for customer and service management.  Those standards are complimentary to international recommendations for process quality and service security. &nbsp;&nbsp; <a class="nid" title="7SC" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid7SC">(7SC)</a></p>
</div>
<ul>
<li><a name="nid7RN" id="nid7RN"></a><b><a href="http://www.gnu.org/software/classpath/" class="extlink">GNU Classpath</a></b> &nbsp;&nbsp; <a class="nid" title="7RN" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid7RN">(7RN)</a></li>
</ul>
<div class="indent">
<p><a name="nid7RO" id="nid7RO"></a>GNU Classpath, Essential Libraries for Java, is a GNU project to create Free core class libraries for use with virtual machines and compilers for the java programming language. Protégé extensively uses Swing and multiple plugins, being an excellent (and also very serious) application to test. Protégé starts with Classpath 0.91 or CVS release, finds and loads plug-ins and it is possible to create ontologies with it. However more serious work reveals various instabilities and some features does not work as they probably should. As the GNU Classpath project is not yet complete, Protege on Classpath still is not yet ready for the end user, but it is interesing for the developers. See <a href="http://developer.classpath.org/mediation/FreeSwingTestApps#head-359433b15d3d8934ad3d5553321a19b97934d13e" class="extlink">Protege entry in GNU Classpath Wiki</a> &nbsp;&nbsp; <a class="nid" title="7RO" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid7RO">(7RO)</a></p>
</div>
<ul>
<li><a name="nid5NJ" id="nid5NJ"></a><b><a href="http://www.harmoniqua.org/" class="extlink">HarmoniQuA</a></b> &nbsp;&nbsp; <a class="nid" title="5NJ" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5NJ">(5NJ)</a></li>
</ul>
<div class="indent">
<p><a name="nid5NK" id="nid5NK"></a>Multidisciplinary model-based water management projects have to follow a complex process and may encounter many problems, related to miscommunication, malpractice, misuse of the model, insufficient problem knowledge and overselling of model capabilities. This leads to model projects, which are not transparent and difficult to audit. The knowledge based system (KBS) discussed here provides guidelines on what to do, derived from an ontological knowledge base (KB) with state-of-the-art knowledge on 'best modelling practice' for teams, which members have different disciplinary backgrounds and play different roles in a project. Furthermore, the KBS monitors what team members actually do and helps in generating project reports for various audiences and purposes. Multimedia training material helps novice users to find their way in the KBS. The KBS is organized in a client-server architecture, enabling cooperation in distributed teams. The developers of this KBS learned that arriving at consensus on a process KB for model-based water management has an intrinsic value in itself. Professional users tested the KBS in two series of ten test cases, touching different types of problems and coping with a variety of environmental conditions across Europe. They like the KBS and their numerous comments have significantly improved the KBS. But they also expect that it will be hard to persuade the professional modelling community to use it. &nbsp;&nbsp; <a class="nid" title="5NK" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5NK">(5NK)</a></p>
</div>
<ul>
<li><a name="nid5NL" id="nid5NL"></a><b><a href="http://harmonisa.uni-klu.ac.at/" class="extlink">HarmonISA</a></b> &nbsp;&nbsp; <a class="nid" title="5NL" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5NL">(5NL)</a></li>
</ul>
<div class="indent">
<p><a name="nid5NM" id="nid5NM"></a>The HarmonISA project uses Protege to model ontologies of land-use catalogues that are then used to provide semantic integration of land-use data. &nbsp;&nbsp; <a class="nid" title="5NM" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5NM">(5NM)</a></p>
</div>
<ul>
<li><a name="nid5SU" id="nid5SU"></a><b><a href="http://www.klinikum.uni-heidelberg.de/helen3" class="extlink">HELEN 3</a></b> &nbsp;&nbsp; <a class="nid" title="5SU" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5SU">(5SU)</a></li>
</ul>
<div class="indent">
<p><a name="nid5SV" id="nid5SV"></a>HELEN is a framework for the whole life-cycle of clinical practice guidelines (CPGs). It provides both methods and tools for each step of the life-cycle. One of them is authoring, another one adaptation. For both steps we use Protege to easily create a user interface. Furthermore, we use a Protege ontology to represent CPGs and to export it to our own XML-based format. &nbsp;&nbsp; <a class="nid" title="5SV" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5SV">(5SV)</a></p>
</div>
<ul>
<li><a name="nid5NN" id="nid5NN"></a><b><a href="http://acs.ist.psu.edu/projects/Herbal/" class="extlink">Herbal</a></b> - Automated creation of cognitive models in Soar. &nbsp;&nbsp; <a class="nid" title="5NN" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5NN">(5NN)</a></li>
</ul>
<ul>
<li><a name="nid5NO" id="nid5NO"></a><b><a href="http://www.greyc.ensicaen.fr/~arenouf/" class="extlink">Hermes</a></b> &nbsp;&nbsp; <a class="nid" title="5NO" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5NO">(5NO)</a></li>
</ul>
<div class="indent">
<p><a name="nid5NP" id="nid5NP"></a>Hermes is an human machine interface that allows users inexperienced in the image processing field to formulate their problem in their own terms. I use two ontologies for this project : one for the user with visual concepts to describe his images, the effects of the acquisition system, and his objectives of image transformation, the other ontology is made from an image processing viewpoint and permits the Hermes system to translate the user formulation in an image processing formulation for his application. &nbsp;&nbsp; <a class="nid" title="5NP" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5NP">(5NP)</a></p>
</div>
<div class="indent">
<p><a name="nid5NQ" id="nid5NQ"></a>It is a research project as I work on this for my PhD. It is far to be efficient but the main goal of this work is to make explicit image processing knowledge used during application development. My home page is only in french at the moment. Translation into english will come soon. &nbsp;&nbsp; <a class="nid" title="5NQ" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5NQ">(5NQ)</a></p>
</div>
<ul>
<li><a name="nid5NR" id="nid5NR"></a><b><a href="http://www.hexamind.com" class="extlink">Hexamind</a></b> &nbsp;&nbsp; <a class="nid" title="5NR" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5NR">(5NR)</a></li>
</ul>
<div class="indent">
<p><a name="nid5NS" id="nid5NS"></a>A Java-based platform for modelling and managing complex configuration data for various applications and systems. &nbsp;&nbsp; <a class="nid" title="5NS" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5NS">(5NS)</a></p>
</div>
<ul>
<li><a name="nid5NT" id="nid5NT"></a><b><a href="http://www.olst.umontreal.ca/dicoeng.html" class="extlink">Hierarchy of French Semantic Labels for the DiCo Lexical Database</a></b> &nbsp;&nbsp; <a class="nid" title="5NT" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5NT">(5NT)</a></li>
</ul>
<div class="indent">
<p><a name="nid5NU" id="nid5NU"></a>The DiCo is French lexical database of semantic derivations (synonymy, antonymy, conversivity, standard names of actants/instruments/..., etc.) and collocations. In this project, we use semantic labels to tag each lexical unit described in the database. A semantic label can be seen as being the core (genus) of the definition of the lexical unit it is associated to, and is used as a classifying "semantic identifier" for that unit. &nbsp;&nbsp; <a class="nid" title="5NU" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5NU">(5NU)</a></p>
</div>
<div class="indent">
<p><a name="nid5NV" id="nid5NV"></a>We make use of Protege as a tool for building, structuring, and accessing our hierarchy of semantic labels. Our methodology is data-driven and this hierarchy is developed together with the lexical database itself. &nbsp;&nbsp; <a class="nid" title="5NV" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5NV">(5NV)</a></p>
</div>
<ul>
<li><a name="nid83Z" id="nid83Z"></a><b><a href="http://integrativebioinformatics.nl/semanticdataintegration.html" class="extlink">Histone ontology (HistOn)</a></b> &nbsp;&nbsp; <a class="nid" title="83Z" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid83Z">(83Z)</a></li>
</ul>
<div class="indent">
<p><a name="nid840" id="nid840"></a>We use Protégé/OWL plugin for creating an ontology to represent knowledge relevant to data integration experiments to elucidate the relationship between the histone code, transcription activity, and DNA sequence. We see it as an experiment for the application of ontologies and semantic web technology for integration of biological data, and for learning how to best create useful OWL ontologies for computational (molecular) biology. For instance, we experiment with the use of upper ontologies from CO-ODE. &nbsp;&nbsp; <a class="nid" title="840" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid840">(840)</a></p>
</div>
<div class="indent">
<p><a name="nid841" id="nid841"></a>Histones are proteins that bind DNA to package the long DNA molecules. The proteins have a tail that can be chemically modified, there are distinct combinations of modifications. Consequently, histones along the DNA molecule form a code. The relationship of this code with gene expression and DNA sequence is poorly understood. &nbsp;&nbsp; <a class="nid" title="841" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid841">(841)</a></p>
</div>
<div class="indent">
<p><a name="nid842" id="nid842"></a>This work is funded by the <a href="http://www.vl-e.nl" class="extlink">Virtual Laboratory e-Science project</a> in the Netherlands. &nbsp;&nbsp; <a class="nid" title="842" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid842">(842)</a></p>
</div>
<ul>
<li><a name="nid5NW" id="nid5NW"></a><b><a href="http://protege.cim3.net/cgi-bin/wiki.pl?HolburneMuseProject" class="wikiword">HolburneMuseProject</a></b>, (<a href="http://www.bath.ac.uk/" class="extlink">University of Bath</a>) - An online museum resource. &nbsp;&nbsp; <a class="nid" title="5NW" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5NW">(5NW)</a></li>
</ul>
<ul>
<li><a name="nidB1D" id="nidB1D"></a><b><a href="http://www.homesecurity.org" class="extlink">Home Security</a></b> &nbsp;&nbsp; <a class="nid" title="B1D" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nidB1D">(B1D)</a></li>
</ul>
<div class="indent">
<p><a name="nidB1E" id="nidB1E"></a>A Web-based system that models the the configuration, and applications to secure residences &nbsp;&nbsp; <a class="nid" title="B1E" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nidB1E">(B1E)</a></p>
</div>
<ul>
<li><a name="nid843" id="nid843"></a><b><a href="http://protege.cim3.net/cgi-bin/wiki.pl?HospitalWardDocumentation" class="wikiword">HospitalWardDocumentation</a></b>,  - Mapping ward documentation in the medical ward of Wodonga hospital in Victoria Australia. The object is to map documentation to better understand data redundancy and structure. This is an experimental exercise as a possible preliminary to a <a href="http://protege.cim3.net/cgi-bin/wiki.pl?PhD" class="wikiword">PhD</a> in this area. &nbsp;&nbsp; <a class="nid" title="843" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid843">(843)</a></li>
</ul>
<ul>
<li><a name="nid5NX" id="nid5NX"></a><b><a href="http://www.hybrow.org/" class="extlink">HyBrow</a></b> &nbsp;&nbsp; <a class="nid" title="5NX" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5NX">(5NX)</a></li>
</ul>
<div class="indent">
<p><a name="nid5NY" id="nid5NY"></a>HyBrow (Hypothesis Browser) system is a proof-of-concept, prototype tool for designing hypotheses and evaluating them for consistency with existing knowledge. HyBrow consists of a mathematical framework with the ability to represent diverse biological information sources, an ontology for describing biological processes at different levels of detail, a database to query information in the ontology, and programs to design, evaluate and revise hypotheses. HyBrow allows the integration of different types of biological information, such as gene expression data, gene and protein sequence homologies, as well as data on protein interactions and modifications for the purpose of evaluating alternative hypotheses about biological processes. &nbsp;&nbsp; <a class="nid" title="5NY" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5NY">(5NY)</a></p>
</div>
<ul>
<li><a name="nid5U8" id="nid5U8"></a><b>i2b2 Vocabulary Mapping</b> &nbsp;&nbsp; <a class="nid" title="5U8" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5U8">(5U8)</a></li>
</ul>
<div class="indent">
<p><a name="nid5U9" id="nid5U9"></a>This vocabulary mapping project is one project within the Informatics for Integrating Biology and the Bedside (i2b2) initiative.  It involves maintaining strict vocabulary control over a base hierarchy of concepts, using Protégé along with developing a new tool that can integrate with Protégé and allow mapping of other source terms to terms in the base hierarchy. &nbsp;&nbsp; <a class="nid" title="5U9" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5U9">(5U9)</a></p>
</div>
<ul>
<li><a name="nid5NZ" id="nid5NZ"></a><b>Identity Management Reference Model</b> &nbsp;&nbsp; <a class="nid" title="5NZ" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5NZ">(5NZ)</a></li>
</ul>
<div class="indent">
<p><a name="nid5O0" id="nid5O0"></a>Development of a technical reference model for identity management for use with The Open Group Architecture Framework (TOGAF). &nbsp;&nbsp; <a class="nid" title="5O0" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5O0">(5O0)</a></p>
</div>
<ul>
<li><a name="nid5O1" id="nid5O1"></a><b><a href="http://www.ieeeltsc.org/wg11CMI/" class="extlink">IEEE/LTSC 1484.11.4, Resource Aggregation Model for Learning Education and Training</a></b> &nbsp;&nbsp; <a class="nid" title="5O1" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5O1">(5O1)</a></li>
</ul>
<div class="indent">
<p><a name="nid5O2" id="nid5O2"></a>The Resource Aggregation Model for Learning Education and Training is a new activity within the IEEE Learning Technology Standards Committee (LTSC). This activity is defining a nomenclature and a conceptual model for digital aggregates of resources for learning, education, and training applications. &nbsp;&nbsp; <a class="nid" title="5O2" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5O2">(5O2)</a></p>
</div>
<ul>
<li><a name="nid5O3" id="nid5O3"></a><b><a href="http://www.posccaesar.com/downloads/POSCCaesar_IIP.pdf" class="extlink">IIP (Integrated Information Platform for reservoir and subsea production systems)</a></b> &nbsp;&nbsp; <a class="nid" title="5O3" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5O3">(5O3)</a></li>
</ul>
<div class="indent">
<p><a name="nid5O4" id="nid5O4"></a>The project has the objective of increasing petroleum production from subsea systems by making accessible high quality real time information for decision support in operational centres onshore. An optimal set of real time data from reservoirs, wells and subsea production facilities will be identified, partially improved and integrated to provide an open and standardised information platform. &nbsp;&nbsp; <a class="nid" title="5O4" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5O4">(5O4)</a></p>
</div>
<ul>
<li><a name="nid5O5" id="nid5O5"></a><b><a href="http://protege.cim3.net/cgi-bin/wiki.pl?IntegratedKnowledgeEnvironment" class="extlink">IKE</a></b> (<a href="http://www.asinc.com" class="extlink">Applied Systems Intelligence, Inc.</a>) &nbsp;&nbsp; <a class="nid" title="5O5" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5O5">(5O5)</a></li>
</ul>
<div class="indent">
<p><a name="nid5O6" id="nid5O6"></a>Integrated Knowledge Environment for development of PreAct knowledge bases. &nbsp;&nbsp; <a class="nid" title="5O6" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5O6">(5O6)</a></p>
</div>
<ul>
<li><a name="nid5O7" id="nid5O7"></a><b><a href="http://protege.cim3.net/cgi-bin/wiki.pl?Inbiomed" class="extlink">INBIOMED</a></b> &nbsp;&nbsp; <a class="nid" title="5O7" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5O7">(5O7)</a></li>
</ul>
<div class="indent">
<p><a name="nid5O8" id="nid5O8"></a><a href="http://inbiomed.retics.net/" class="extlink">INBIOMED</a> is a Thematic Network of Cooperative Research about Biomedical Informatics  funded by <a href="http://www.isciii.es/fis/" class="extlink">FIS</a> (Health Investigation Found) of <a href="http://www.isciii.es/" class="extlink">Institute Carlos III</a> (Spain). In the technological context is the name of a storage, integration and clinical, genetics, epidemiology and images data analysis platform. &nbsp;&nbsp; <a class="nid" title="5O8" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5O8">(5O8)</a></p>
</div>
<ul>
<li><a name="nid5O9" id="nid5O9"></a><b><a href="http://protege.cim3.net/cgi-bin/wiki.pl?IntelligentGIS" class="wikiword">IntelligentGIS</a></b> - Intelligent Geo-Information System &nbsp;&nbsp; <a class="nid" title="5O9" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5O9">(5O9)</a></li>
</ul>
<ul>
<li><a name="nid5OA" id="nid5OA"></a><b>International Benchmark Insurance Standards</b> &nbsp;&nbsp; <a class="nid" title="5OA" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5OA">(5OA)</a></li>
</ul>
<div class="indent">
<p><a name="nid5OB" id="nid5OB"></a>First an overview of insurance-related standards within the European countries participating to the eEG7
will be made. This overview can be completed with remaining European countries later on. &nbsp;&nbsp; <a class="nid" title="5OB" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5OB">(5OB)</a></p>
</div>
<div class="indent">
<p><a name="nid5OC" id="nid5OC"></a>The focus will be initially on data standards, such as libraries and data models, and who is using them. Later on the overview should be extended with more technical standards such as internet protocols, XML etc. &nbsp;&nbsp; <a class="nid" title="5OC" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5OC">(5OC)</a></p>
</div>
<ul>
<li><a name="nid8BT" id="nid8BT"></a><b><a href="http://www.interop-noe.org/" class="extlink">INTEROP (Interoperability Research for Networked Enterprises Applications and Software)</a></b> &nbsp;&nbsp; <a class="nid" title="8BT" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid8BT">(8BT)</a></li>
</ul>
<div class="indent">
<p><a name="nid8BU" id="nid8BU"></a>INTEROP is a Network of Excellence supported by the European Commission for a three-year-period.
INTEROP aims to create the conditions of an innovative and competitive research in the domain of Interoperability for Enterprise Applications and Software. &nbsp;&nbsp; <a class="nid" title="8BU" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid8BU">(8BU)</a></p>
</div>
<ul>
<li><a name="nid5OD" id="nid5OD"></a><b>IOTA (International Organization for Terminologies in Anesthesia)</b> &nbsp;&nbsp; <a class="nid" title="5OD" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5OD">(5OD)</a></li>
</ul>
<div class="indent">
<p><a name="nid5OE" id="nid5OE"></a>Uses Protégé-OWL with a GUI created by the CO-ODE group to develop a terminology for Anesthesia. It is a project originated by the Anesthetic Patient Safety Foundation (APSF) and the terms are submitted by IOTA for inclusion in SNOMED CT. &nbsp;&nbsp; <a class="nid" title="5OE" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5OE">(5OE)</a></p>
</div>
<ul>
<li><a name="nid5SR" id="nid5SR"></a><b>ISKB - A knowledge base for security and compliance</b> &nbsp;&nbsp; <a class="nid" title="5SR" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5SR">(5SR)</a></li>
</ul>
<div class="indent">
<p><a name="nid5SS" id="nid5SS"></a>Creating a unified conceptual model used to integrate concepts and information about security, data privacy, and risks, as required by different methodologies and laws. This pilot project wants to explore the usage of Protege-OWL as a knowledge acquisition system, and a repository for company information. Financial sector, Italy. &nbsp;&nbsp; <a class="nid" title="5SS" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5SS">(5SS)</a></p>
</div>
<div class="indent">
<p><a name="nid5ST" id="nid5ST"></a>Contact: mc at mcoletti dot net &nbsp;&nbsp; <a class="nid" title="5ST" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5ST">(5ST)</a></p>
</div>
<ul>
<li><a name="nid5S9" id="nid5S9"></a><b><a href="http://protege.cim3.net/cgi-bin/wiki.pl?ISME" class="extlink">ISME: Integration &amp; Steering of Multi-site Experiments to Assemble Engineering Body Scans</a></b> &nbsp;&nbsp; <a class="nid" title="5S9" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5S9">(5S9)</a></li>
</ul>
<ul>
<li><a name="nid5OF" id="nid5OF"></a><b><a href="http://kgrt.org/" class="extlink">KGRT- Knowledge Guided Radiation Therapy</a></b> &nbsp;&nbsp; <a class="nid" title="5OF" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5OF">(5OF)</a></li>
</ul>
<div class="indent">
<p><a name="nid5OG" id="nid5OG"></a>This project is focused on development and support of a knowledge-based framework for integration and control to support research into individualized radiation therapy.  This project builds on the <a href="http://smi-web.stanford.edu/projects/eon/" class="extlink">EON project</a> using protocol-based guidelines for process sequencing, data gathering, and decision support. Various existing systems to be integrated include medical image acquisition and analysis, treatment planning, and treatment delivery. &nbsp;&nbsp; <a class="nid" title="5OG" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5OG">(5OG)</a></p>
</div>
<div class="indent">
<p><a name="nid5OH" id="nid5OH"></a>Contact: Daniel L. McShan (dlmcshan@umich.edu) &nbsp;&nbsp; <a class="nid" title="5OH" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5OH">(5OH)</a></p>
<p><a name="nid5OI" id="nid5OI"></a>Affiliation: University of Michigan / Department of Radiation Oncology &nbsp;&nbsp; <a class="nid" title="5OI" href="http://protege.cim3.net/cgi-bin/wiki.pl?ProjectsThatUseProtegeFtoK#nid5OI">(5OI)</a></p>
</div>
]]>
</description>
<dc:creator>50324</dc:creator>
</item>

<item rdf:about="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster">
<title>MappingMaster</title>
<link>http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster</link>
<description><![CDATA[<p><a name="nidB1F" id="nidB1F"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster" class="wikiword">MappingMaster</a> is an open source Protege-OWL plugin that can be used to transform the content of spreadsheets in to OWL ontologies. It has two primary components: &nbsp;&nbsp; <a class="nid" title="B1F" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster#nidB1F">(B1F)</a></p>
<ul>
<li><a name="nidB1G" id="nidB1G"></a><b>Domain Specific Language</b> Mappings in <a href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster" class="wikiword">MappingMaster</a> are specified using a domain specific language (DSL). This DSL is documented <a href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterDSL" class="extlink">here</a>. &nbsp;&nbsp; <a class="nid" title="B1G" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster#nidB1G">(B1G)</a></li>
</ul>
<ul>
<li><a name="nidAZ3" id="nidAZ3"></a><b><a href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster" class="wikiword">MappingMaster</a> Tab</b> A graphical user interface for defining, managing, and executing mappings defined using this DSL is also provided. It is documented <a href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterGUI" class="extlink">here</a>. &nbsp;&nbsp; <a class="nid" title="AZ3" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster#nidAZ3">(AZ3)</a></li>
</ul>
<h3><a name="nidBN8" id="nidBN8"></a>Publications &nbsp;&nbsp; <a class="nid" title="BN8" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster#nidBN8">(BN8)</a></h3>
<ul>
<li><a name="nidBN9" id="nidBN9"></a>M.J. O'Connor, C. Halaschek-Wiener, M. A. Musen <a href="http://bmir.stanford.edu/publications/view.php/mapping_master_a_flexible_approach_for_mapping_spreadsheets_to_owl" class="extlink">"Mapping Master: A Flexible Approach for Mapping Spreadsheets to OWL"</a>  9th International Semantic Web Conference (<a href="http://iswc2010.semanticweb.org/" class="extlink">ISWC</a>), Shanghai, China, 2010. &nbsp;&nbsp; <a class="nid" title="BN9" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster#nidBN9">(BN9)</a></li>
</ul>
<ul>
<li><a name="nidBNA" id="nidBNA"></a>P. Rocca-Serra, A. Ruttenberg, M. J. O'Connor, T. Whetzel, D. Schober, J. Greenbaum, M. Courtot, S. A. Sansone, R. Scheurmann, B. Peters <a href="http://bmir.stanford.edu/publications/view.php/overcoming_the_ontology_enrichment_bottleneck_with_quick_term_templates" class="extlink">"Overcoming the Ontology Enrichment Bottleneck with Quick Term Templates"</a> Journal of Applied Ontology, 6(1):13-22, 2011. This paper describes the use of Mapping Master to acquire biomedical knowledge from spreadheets. &nbsp;&nbsp; <a class="nid" title="BNA" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster#nidBNA">(BNA)</a></li>
</ul>
<ul>
<li><a name="nidBNB" id="nidBNB"></a>M.J. O'Connor, C. Halaschek-Wiener, M. A. Musen <a href="http://bmir.stanford.edu/publications/view.php/m2_a_language_for_mapping_spreadsheets_to_owl" class="extlink">"M2: A Language for Mapping Spreadsheets to OWL"</a> OWL: Experiences and Directions Workshop (<a href="http://www.webont.org/owled/2010/" class="extlink">OWLED </a>), San Francisco, CA, 2010. This is an earlier version of the ISWC paper. &nbsp;&nbsp; <a class="nid" title="BNB" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster#nidBNB">(BNB)</a></li>
</ul>
<ul>
<li><a name="nidBNC" id="nidBNC"></a>C. Nyulas, M.J. O’Connor, S.W. Tu. "DataMaster - a Plug-in for Importing Schemas and Data from Relational Databases into Protégé". 10th International Protégé Conference, Budapest, Hungary, 2007. <a href="http://protegewiki.stanford.edu/wiki/DataMaster" class="extlink">DataMaster</a> supports the importation of relational databases into OWL. It can also be used to import spreadsheets with the use of an Excel JDBC driver. &nbsp;&nbsp; <a class="nid" title="BNC" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster#nidBNC">(BNC)</a></li>
</ul>
<h3><a name="nidAYU" id="nidAYU"></a>Activation &nbsp;&nbsp; <a class="nid" title="AYU" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster#nidAYU">(AYU)</a></h3>
<p><a name="nidAZM" id="nidAZM"></a>To activate the <a href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster" class="wikiword">MappingMaster</a> tab, go to Project | Configure in the Protege-OWL GUI and check the MappingMasterTab box. The tab will then appear. If the loaded ontology is then saved the tab will appear when this ontology is opened in future. The operation of this tab is outlined <a href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMasterGUI" class="extlink">here</a>. &nbsp;&nbsp; <a class="nid" title="AZM" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster#nidAZM">(AZM)</a></p>
<p><a name="nidBIK" id="nidBIK"></a><img alt="http://swrl.stanford.edu/MappingMaster/1.0/ScreenShots/MMWorkbookView.png" src="http://swrl.stanford.edu/MappingMaster/1.0/ScreenShots/MMWorkbookView.png" /> &nbsp;&nbsp; <a class="nid" title="BIK" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster#nidBIK">(BIK)</a></p>
<h3><a name="nidAYV" id="nidAYV"></a>Installation &nbsp;&nbsp; <a class="nid" title="AYV" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster#nidAYV">(AYV)</a></h3>
<p><a name="nidAYW" id="nidAYW"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster" class="wikiword">MappingMaster</a> is part of Protege-OWL 3.4.3 and does not need to be downloaded separately. However, since many of the <a href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster" class="wikiword">MappingMaster</a> components are under active development, the most recent Protege-OWL 3.4 build should be used when possible. &nbsp;&nbsp; <a class="nid" title="AYW" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster#nidAYW">(AYW)</a></p>
<h3><a name="nidAYX" id="nidAYX"></a>Source Code &nbsp;&nbsp; <a class="nid" title="AYX" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster#nidAYX">(AYX)</a></h3>
<p><a name="nidAYY" id="nidAYY"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster" class="wikiword">MappingMaster</a> is open source.  This source code is available for download from the <a href="http://smi-protege.stanford.edu/svn/mapping-master/trunk/" class="extlink">MappingMaster Subversion Repository</a>. &nbsp;&nbsp; <a class="nid" title="AYY" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster#nidAYY">(AYY)</a></p>
<h3><a name="nidC4X" id="nidC4X"></a>Building &nbsp;&nbsp; <a class="nid" title="C4X" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster#nidC4X">(C4X)</a></h3>
<p><a name="nidCBM" id="nidCBM"></a>As mentioned, <a href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster" class="wikiword">MappingMaster</a> source code can be downloaded from the <a href="https://smi-protege.stanford.edu/svn/mapping-master/trunk/" class="extlink">Mapping Master Subversion Repository</a>. &nbsp;&nbsp; <a class="nid" title="CBM" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster#nidCBM">(CBM)</a></p>
<p><a name="nidCBN" id="nidCBN"></a>On the command line, with Subversion installed, something like the following should work: &nbsp;&nbsp; <a class="nid" title="CBN" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster#nidCBN">(CBN)</a></p>
<p><a name="nidCBO" id="nidCBO"></a><tt>svn checkout https://smi-protege.stanford.edu/repos/protege/mapping-master/trunk &lt;your-destination-dir&gt;</tt> &nbsp;&nbsp; <a class="nid" title="CBO" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster#nidCBO">(CBO)</a></p>
<p><a name="nidCBW" id="nidCBW"></a>The root of the download directory has an <a href="http://ant.apache.org/" class="extlink">Ant</a> build file that can be used to compile and install it.  An option called <tt>install</tt> can be used to perform an install. The installation step is expecting an existing Protege installation and determines its location using the <tt>PROTEGE_HOME</tt> environment variable. 
An example Protege installation directory could be <tt>C:/Program Files/Protege_3.4.8</tt>. &nbsp;&nbsp; <a class="nid" title="CBW" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster#nidCBW">(CBW)</a></p>
<p><a name="nidCBQ" id="nidCBQ"></a>In general, it is advisable to download and build the latest version of Protege and Protege-OWL before building Mapping Master. These can be obtained at the <a href="http://smi-protege.stanford.edu/svn/protege-core/" class="extlink">Core Protege</a> and <a href="http://smi-protege.stanford.edu/svn/owl/" class="extlink">OWL</a> Subversion repositories. &nbsp;&nbsp; <a class="nid" title="CBQ" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster#nidCBQ">(CBQ)</a></p>
<h3><a name="nidAYZ" id="nidAYZ"></a>Author &nbsp;&nbsp; <a class="nid" title="AYZ" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster#nidAYZ">(AYZ)</a></h3>
<p><a name="nidAZ0" id="nidAZ0"></a><a href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster" class="wikiword">MappingMaster</a> was written by <a href="http://bmir.stanford.edu/people/view.php/martin_j_oconnor" class="extlink">Martin O'Connor</a> at <a href="http://bmir.stanford.edu/" class="extlink">Stanford Center for Biomedical Informatics Research</a>. &nbsp;&nbsp; <a class="nid" title="AZ0" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster#nidAZ0">(AZ0)</a></p>
<h3><a name="nidAZ1" id="nidAZ1"></a>How can I get help? &nbsp;&nbsp; <a class="nid" title="AZ1" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster#nidAZ1">(AZ1)</a></h3>
<p><a name="nidAZ2" id="nidAZ2"></a>Questions and comments on <a href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster" class="wikiword">MappingMaster</a> should be sent to the Protege-OWL mailing list (protege-owl at lists dot stanford dot edu). This list is monitored by the developers of this plugin. &nbsp;&nbsp; <a class="nid" title="AZ2" href="http://protege.cim3.net/cgi-bin/wiki.pl?MappingMaster#nidAZ2">(AZ2)</a></p>
]]>
</description>
<dc:creator>49269</dc:creator>
</item>

<item rdf:about="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabBuilding">
<title>SWRLTabBuilding</title>
<link>http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabBuilding</link>
<description><![CDATA[<p><a name="nidCK5" id="nidCK5"></a>All SWRLTab APIs are part of the standard Protege-OWL distribution.
The JARs containing these APIs are included in the Protege-OWL plugins directory (e.g., <tt>C:/Development/Protege_3.5/plugins/edu.stanford.smi.protegex.owl</tt>). 
In general, a Java program that wishes to use these APIs should simply include all the JARs in this plugin directory in their classpath.
All the source code for the APIs can be downloaded from Protege's Subversion repository (see <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabBuilding#nidCGI" class="extlink">below</a>). &nbsp;&nbsp; <a class="nid" title="CK5" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabBuilding#nidCK5">(CK5)</a></p>
<p><a name="nidCK6" id="nidCK6"></a>Users wishing to compile these APIs can use the instructions on this page. &nbsp;&nbsp; <a class="nid" title="CK6" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabBuilding#nidCK6">(CK6)</a></p>
<p><a name="nidCH2" id="nidCH2"></a>In Protege 3.4.8 and earlier, the SWRLTab code was part of the standard Protege-OWL distribution and all SWRLTab components were built when Protege-OWL was built. As of the 3.5 release, the SWRLTab is no longer part of Protege-OWL and is built from several projects. &nbsp;&nbsp; <a class="nid" title="CH2" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabBuilding#nidCH2">(CH2)</a></p>
<p><a name="nidCGA" id="nidCGA"></a>These projects are: &nbsp;&nbsp; <a class="nid" title="CGA" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabBuilding#nidCGA">(CGA)</a></p>
<ul>
<li><a name="nidCGD" id="nidCGD"></a>owl-portability &nbsp;&nbsp; <a class="nid" title="CGD" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabBuilding#nidCGD">(CGD)</a></li>
<li><a name="nidCGF" id="nidCGF"></a>swrl-api &nbsp;&nbsp; <a class="nid" title="CGF" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabBuilding#nidCGF">(CGF)</a></li>
<li><a name="nidCIN" id="nidCIN"></a>swrl-jess-bridge &nbsp;&nbsp; <a class="nid" title="CIN" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabBuilding#nidCIN">(CIN)</a></li>
<li><a name="nidCIO" id="nidCIO"></a>swrl-drools-bridge &nbsp;&nbsp; <a class="nid" title="CIO" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabBuilding#nidCIO">(CIO)</a></li>
<li><a name="nidCGE" id="nidCGE"></a>owl-portability-p3 &nbsp;&nbsp; <a class="nid" title="CGE" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabBuilding#nidCGE">(CGE)</a></li>
<li><a name="nidCGB" id="nidCGB"></a>swrl-tab-p3 &nbsp;&nbsp; <a class="nid" title="CGB" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabBuilding#nidCGB">(CGB)</a></li>
</ul>
<p><a name="nidCGH" id="nidCGH"></a>The owl-portability package provides an API for interacting with OWL ontologies that aims to bridge Protege 3 and Protege 4, each of which uses different underlying APIs to interact with OWL. The owl-portability-p3 projects provide an implementation for Protege 3.5. The swrl-api project provides much of the functionality of the SWRLTab. It includes, for example, the <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLAPI" class="extlink">SWRLTab Java APIs</a>, the <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SQWRL" class="extlink">SQWRL</a> query language, an array of <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabBuiltInLibraries" class="extlink">SWRL built-in libraries</a>, and pretty much all of the graphical interfaces provided by the SWRLTab. The Jess and Drools projects provide SWRL back ends for using the Jess and Drools rule engines. The swrl-tab-p3 project provides wrapping functionality for integrating these components into Protege 3.5. &nbsp;&nbsp; <a class="nid" title="CGH" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabBuilding#nidCGH">(CGH)</a></p>
<h3><a name="nidCGI" id="nidCGI"></a>Downloading the Code &nbsp;&nbsp; <a class="nid" title="CGI" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabBuilding#nidCGI">(CGI)</a></h3>
<p><a name="nidCGJ" id="nidCGJ"></a>Each project is contained in a Subversion repository. The locations of these repositories are as follows: &nbsp;&nbsp; <a class="nid" title="CGJ" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabBuilding#nidCGJ">(CGJ)</a></p>
<ul>
<li><a name="nidCGK" id="nidCGK"></a>owl-portability: <a href="https://smi-protege.stanford.edu/repos/protege/owl-portability" class="extlink">https://smi-protege.stanford.edu/repos/protege/owl-portability</a> &nbsp;&nbsp; <a class="nid" title="CGK" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabBuilding#nidCGK">(CGK)</a></li>
<li><a name="nidCGM" id="nidCGM"></a>swrl-api: <a href="https://smi-protege.stanford.edu/repos/protege/swrl-api" class="extlink">https://smi-protege.stanford.edu/repos/protege/swrl-api</a> &nbsp;&nbsp; <a class="nid" title="CGM" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabBuilding#nidCGM">(CGM)</a></li>
<li><a name="nidCIP" id="nidCIP"></a>swrl-jess-bridge: <a href="https://smi-protege.stanford.edu/repos/protege/swrl-jess-bridge" class="extlink">https://smi-protege.stanford.edu/repos/protege/swrl-jess-bridge</a> &nbsp;&nbsp; <a class="nid" title="CIP" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabBuilding#nidCIP">(CIP)</a></li>
<li><a name="nidCGM" id="nidCGM"></a>swrl-drools-bridge: <a href="https://smi-protege.stanford.edu/repos/protege/swrl-drools-bridge" class="extlink">https://smi-protege.stanford.edu/repos/protege/swrl-drools-bridge</a> &nbsp;&nbsp; <a class="nid" title="CGM" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabBuilding#nidCGM">(CGM)</a></li>
<li><a name="nidCGL" id="nidCGL"></a>owl-portability-p3: <a href="https://smi-protege.stanford.edu/repos/protege/owl-portability-p3" class="extlink">https://smi-protege.stanford.edu/repos/protege/owl-portability-p3</a> &nbsp;&nbsp; <a class="nid" title="CGL" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabBuilding#nidCGL">(CGL)</a></li>
<li><a name="nidCGN" id="nidCGN"></a>swrl-tab-p3: <a href="https://smi-protege.stanford.edu/repos/protege/swrl-tab-p3" class="extlink">https://smi-protege.stanford.edu/repos/protege/swrl-tab-p3</a> &nbsp;&nbsp; <a class="nid" title="CGN" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabBuilding#nidCGN">(CGN)</a></li>
</ul>
<p><a name="nidCGS" id="nidCGS"></a>A standard Subversion client can be used to download the code contained in these repositories. On the command line, with a Subversion command line client installed, something like the following should work: &nbsp;&nbsp; <a class="nid" title="CGS" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabBuilding#nidCGS">(CGS)</a></p>
<p><a name="nidCGT" id="nidCGT"></a><tt>svn checkout https://smi-protege.stanford.edu/repos/protege/owl-portability/trunk &lt;your-destination-dir&gt;</tt> &nbsp;&nbsp; <a class="nid" title="CGT" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabBuilding#nidCGT">(CGT)</a></p>
<p><a name="nidCGW" id="nidCGW"></a>In general, the trunk is under active development so downloading the code for a particular public release may be safer. Each Subversion repository has a <tt>tags</tt> subdirectory containing the code for each numbered release. &nbsp;&nbsp; <a class="nid" title="CGW" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabBuilding#nidCGW">(CGW)</a></p>
<p><a name="nidCK7" id="nidCK7"></a>Protege-OWL itself is divided into the protege-core and protege-owl projects, though it is generally not necessary to download and build these projects. If required, they can be obtained at the <a href="http://smi-protege.stanford.edu/svn/protege-core/" class="extlink">Core Protege</a> and <a href="http://smi-protege.stanford.edu/svn/owl/" class="extlink">OWL</a> Subversion repositories. They can be built using the same process outlined above. 
(For instructions on how to build Protege and Protege-OWL in Eclipse, see <a href="http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeOWLInEclipse" class="extlink">here</a>.) &nbsp;&nbsp; <a class="nid" title="CK7" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabBuilding#nidCK7">(CK7)</a></p>
<h3><a name="nidCGP" id="nidCGP"></a>Building the SWRLTab Projects &nbsp;&nbsp; <a class="nid" title="CGP" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabBuilding#nidCGP">(CGP)</a></h3>
<p><a name="nidCGU" id="nidCGU"></a>The SWRLTab build process is expecting an existing Protege installation (e.g., <tt>C:/Program Files/Protege_3.5</tt>). It determines this location location using the <tt>PROTEGE_HOME</tt> environment variable. &nbsp;&nbsp; <a class="nid" title="CGU" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabBuilding#nidCGU">(CGU)</a></p>
<p><a name="nidCK8" id="nidCK8"></a>The root each project directory has an <a href="http://ant.apache.org/" class="extlink">Ant</a> build file that can be used to compile and install the project. An option called <tt>install</tt> can be used to perform an install. This option will compile the relevant project and install it in the OWL plugins directory of Protege-OWL (e.g., <tt>C:/Development/Protege_3.5/plugins/edu.stanford.smi.protegex.owl</tt>). &nbsp;&nbsp; <a class="nid" title="CK8" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabBuilding#nidCK8">(CK8)</a></p>
<h3><a name="nidCGR" id="nidCGR"></a>Building Additional Rule Engines &nbsp;&nbsp; <a class="nid" title="CGR" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabBuilding#nidCGR">(CGR)</a></h3>
<p><a name="nidCK9" id="nidCK9"></a>At present, the SWRLTab come with plugins for the Drools and Jess rules engines. &nbsp;&nbsp; <a class="nid" title="CK9" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabBuilding#nidCK9">(CK9)</a></p>
<p><a name="nidCKA" id="nidCKA"></a>The code for each plugin is contained in a Subversion repository. The locations of these repositories are: &nbsp;&nbsp; <a class="nid" title="CKA" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabBuilding#nidCKA">(CKA)</a></p>
<ul>
<li><a name="nidCKB" id="nidCKB"></a>swrl-jess-bridge: <a href="https://smi-protege.stanford.edu/repos/protege/swrl-jess-bridge" class="extlink">https://smi-protege.stanford.edu/repos/protege/swrl-jess-bridge</a> &nbsp;&nbsp; <a class="nid" title="CKB" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabBuilding#nidCKB">(CKB)</a></li>
<li><a name="nidCKC" id="nidCKC"></a>swrl-drools-bridge: <a href="https://smi-protege.stanford.edu/repos/protege/swrl-drools-bridge" class="extlink">https://smi-protege.stanford.edu/repos/protege/swrl-drools-bridge</a> &nbsp;&nbsp; <a class="nid" title="CKC" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabBuilding#nidCKC">(CKC)</a></li>
</ul>
<p><a name="nidCGX" id="nidCGX"></a>Information on building the <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab" class="wikiword">SWRLJessTab</a> can be found <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab#nidB4A" class="extlink">here</a>. The process for Drools is described <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLDroolsTab#nidCG2" class="extlink">here</a>. &nbsp;&nbsp; <a class="nid" title="CGX" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabBuilding#nidCGX">(CGX)</a></p>
]]>
</description>
<dc:creator>49269</dc:creator>
</item>

<item rdf:about="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabOWL2RL">
<title>SWRLTabOWL2RL</title>
<link>http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabOWL2RL</link>
<description><![CDATA[<p><a name="nidCJD" id="nidCJD"></a>The <a href="http://www.w3.org/TR/owl-overview/" class="extlink">OWL 2 W3C Recommendation</a> is described in a series of documents, which contain both a high level overview of the OWL 2 DL language and it formal specification. 
<a href="http://www.w3.org/TR/owl-profiles/" class="extlink">One of these documents</a> contains a description of several so-called language <i>profiles</i>. 
These profiles are restricted subsets of OWL DL that trade some expressivity to provide more desirable computational guarantees. 
These profiles restrict the types of OWL axioms that can be used in an ontology and place syntactic restrictions on how axioms can be used.
Many real world ontologies do not use the full set of features provides by OWL 2 DL and often fall into one or more of these profiles. &nbsp;&nbsp; <a class="nid" title="CJD" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabOWL2RL#nidCJD">(CJD)</a></p>
<p><a name="nidCJF" id="nidCJF"></a>Three profiles are provided. These are: <a href="http://www.w3.org/TR/owl-profiles/#OWL_2_EL" class="extlink">OWL 2 EL</a>, which is designed for ontologies that contain a large number of classes or properties; <a href="http://www.w3.org/TR/owl-profiles/#OWL_2_QL" class="extlink">OWL 2 QL</a>, which is aimed primarily at query answering; and <a href="http://www.w3.org/TR/owl-profiles/#OWL_2_RL" class="extlink">OWL 2 RL</a>, which is aimed at application that require quite a bit of the expressivity provided by OWL 2 DL but also require scalable reasoning. &nbsp;&nbsp; <a class="nid" title="CJF" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabOWL2RL#nidCJF">(CJF)</a></p>
<p><a name="nidCJH" id="nidCJH"></a>A notable feature of the OWL 2 RL is that the profile is designed to be implementable using a rule-based reasoner. The specification document contains a set of first order implication rules of rules that can be used to implement such a reasoner. The rules are described in terms of an RDF serialization of an OWL ontology. In the document, the rules are divided into seven tables and each rule is given a unique name. For example, a rule called <tt>eq-sym</tt> that describes the symmetric property of the <tt>owl:sameAs</tt> axiom is written: &nbsp;&nbsp; <a class="nid" title="CJH" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabOWL2RL#nidCJH">(CJH)</a></p>
<pre><a name="nidCJI" id="nidCJI"></a>T(?x, owl:sameAs, ?y) -&gt; T(?y, owl:sameAs, ?x) &nbsp;&nbsp; <a class="nid" title="CJI" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabOWL2RL#nidCJI">(CJI)</a></pre>
<p><a name="nidCJO" id="nidCJO"></a>Based on their functionality, rules are subdivided into eight groups. 
Each group is presented as a table in the specification (numbered 3 to 9). 
For example, table 5 contains rules relating to reasoning with OWL object and data properties. &nbsp;&nbsp; <a class="nid" title="CJO" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabOWL2RL#nidCJO">(CJO)</a></p>
<p><a name="nidCK2" id="nidCK2"></a>Reasoning with the OWL 2 RL profile is polynomial with respect to the size of the ontology. &nbsp;&nbsp; <a class="nid" title="CK2" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabOWL2RL#nidCK2">(CK2)</a></p>
<h3><a name="nidCJE" id="nidCJE"></a>OWL 2 RL in the Protege-OWL SWRLTab &nbsp;&nbsp; <a class="nid" title="CJE" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabOWL2RL#nidCJE">(CJE)</a></h3>
<p><a name="nidCK1" id="nidCK1"></a>As of release 3.5, <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab" class="extlink">Protege-OWL's SWRLTab</a> supports two OWL 2 RL-based reasoners - one for the existing <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab" class="extlink">Jess tab</a>, which is implemented using the <a href="http://www.jessrules.com/" class="extlink">Jess rule engine</a>, and one for the new <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLDroolsTab" class="extlink">Drools tab</a>, which is written using the <a href="http://www.jboss.org/drools" class="extlink">Drools rule engine</a>. These reasoners are also used for SQWRL query execution. 
Users of SQWRL can <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SQWRLQueryTab#nidCIY" class="extlink">select one these reasoners</a> to execute their queries. &nbsp;&nbsp; <a class="nid" title="CK1" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabOWL2RL#nidCK1">(CK1)</a></p>
<p><a name="nidCK0" id="nidCK0"></a>As mentioned above, reasoning in OWL 2 RL can be implemented using a set of implication rules.
These rules are divided into seven tables (numbered 3 to 9) in the specification document and each rule is given a unique name. &nbsp;&nbsp; <a class="nid" title="CK0" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabOWL2RL#nidCK0">(CK0)</a></p>
<h4><a name="nidCKD" id="nidCKD"></a>Controlling OWL 2 RL Rules via the Graphical Interface &nbsp;&nbsp; <a class="nid" title="CKD" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabOWL2RL#nidCKD">(CKD)</a></h4>
<p><a name="nidCJ9" id="nidCJ9"></a>The SWRLTab provides a graphical interface that allow control of these reasoners. This interface is accessible in the <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab" class="wikiword">SWRLJessTab</a>, the <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLDroolsTab" class="wikiword">SWRLDroolsTab</a>, and the <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SQWRLQueryTab" class="wikiword">SQWRLQueryTab</a>.
Each provides a subtab that allows control of the OWL 2 RL inference process by allowing the selective enabling and disabling of the rules or tables of rules. 
This interface also provides a control tab to indicate if rule tables are active or inactive. 
The following is an example of this interface as displayed in the <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab" class="wikiword">SWRLJessTab</a>. &nbsp;&nbsp; <a class="nid" title="CJ9" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabOWL2RL#nidCJ9">(CJ9)</a></p>
<p><a name="nidCJB" id="nidCJB"></a><img alt="http://swrl.stanford.edu/images/3.5/OWL2RLControlTab.png" src="http://swrl.stanford.edu/images/3.5/OWL2RLControlTab.png" /> &nbsp;&nbsp; <a class="nid" title="CJB" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabOWL2RL#nidCJB">(CJB)</a></p>
<p><a name="nidCK3" id="nidCK3"></a>The interface contains subtabs for tables 4 to 9, which represent six of the seven OWL 2 RL rule tables. 
Table 3 is omitted because it contains unnamed low-level list processing that can not meaningfully be disabled. All rules in table 7, which relate to literal reasoning, are also permanently on.
These subtabs list these rule names,
indicate their support status, and allow supported rules to be enabled or disabled. A check next to each rule indicates
whether that rule is enabled or disabled. Greyed-out rules are either permanently enabled or currently unsupported and
cannot be toggled. &nbsp;&nbsp; <a class="nid" title="CK3" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabOWL2RL#nidCK3">(CK3)</a></p>
<p><a name="nidCJB" id="nidCJB"></a><img alt="http://swrl.stanford.edu/images/3.5/OWL2RLTable5Tab.png" src="http://swrl.stanford.edu/images/3.5/OWL2RLTable5Tab.png" /> &nbsp;&nbsp; <a class="nid" title="CJB" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabOWL2RL#nidCJB">(CJB)</a></p>
<h4><a name="nidCKE" id="nidCKE"></a>Controlling OWL 2 RL Rules via the API &nbsp;&nbsp; <a class="nid" title="CKE" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabOWL2RL#nidCKE">(CKE)</a></h4>
<p><a name="nidCKF" id="nidCKF"></a>Control of OWL 2 RL rules is also provided at the Java API level via the <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLRuleEngineAPI" class="extlink">SWRL Rule Engine API</a> or the <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SQWRLQueryEngineAPI" class="extlink">SQWRL Query Engine API</a>. &nbsp;&nbsp; <a class="nid" title="CKF" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabOWL2RL#nidCKF">(CKF)</a></p>
<p><a name="nidCKG" id="nidCKG"></a>Each provides the method <tt>getOWL2RLController</tt>, which returns a controller. This controller provides an API for switching on and off rules or tables of rules. &nbsp;&nbsp; <a class="nid" title="CKG" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabOWL2RL#nidCKG">(CKG)</a></p>
<pre><a name="nidCKL" id="nidCKL"></a>
SWRLRuleEngine ruleEngine = P3SWRLRuleEngineFactory.create(owlModel);
OWL2RLController controller = ruleEngine.getOWL2RLController();

controller.enableTables(OWL2RLNames.Table.Table4);
controller.enableRules(OWL2RLNames.Rule.PRP_AP);
 &nbsp;&nbsp; <a class="nid" title="CKL" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabOWL2RL#nidCKL">(CKL)</a></pre>
<p><a name="nidCKI" id="nidCKI"></a>The method <tt>reset</tt> must be called on the rule engine after these settings are changed so that the rule engine reflects the updates. &nbsp;&nbsp; <a class="nid" title="CKI" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabOWL2RL#nidCKI">(CKI)</a></p>
<h4><a name="nidCKJ" id="nidCKJ"></a>Saving the OWL 2 RL Rule Selections &nbsp;&nbsp; <a class="nid" title="CKJ" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabOWL2RL#nidCKJ">(CKJ)</a></h4>
<p><a name="nidCKM" id="nidCKM"></a>Protege-OWL can also save the OWL 2 RL rule settings for a particular ontology. 
These settings are saved as annotation properties in that ontology. &nbsp;&nbsp; <a class="nid" title="CKM" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabOWL2RL#nidCKM">(CKM)</a></p>
<p><a name="nidCKN" id="nidCKN"></a>If you wish to save these settings, the <a href="http://swrl.stanford.edu/ontologies/3.3/swrla.owl" class="extlink">SWRL Annotations Ontology</a> must be imported by the ontology.
This ontology is imported by default if the SWRLTab is enabled for an ontology (see <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab#nid6H3" class="extlink">here</a>).
Otherwise, a copy of this ontology can be found the standard Protege-OWL repositories and can be imported through the 'Import Ontology' option in Protege-OWL's Metadata tab. &nbsp;&nbsp; <a class="nid" title="CKN" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabOWL2RL#nidCKN">(CKN)</a></p>
]]>
</description>
<dc:creator>49269</dc:creator>
</item>

<item rdf:about="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ">
<title>SWRLLanguageFAQ</title>
<link>http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ</link>
<description><![CDATA[<h4><a name="nid6ZK" id="nid6ZK"></a>What is SWRL? &nbsp;&nbsp; <a class="nid" title="6ZK" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid6ZK">(6ZK)</a></h4>
<p><a name="nidAIN" id="nidAIN"></a>The Semantic Web Rule Language (SWRL) is an expressive <a href="http://www.w3.org/TR/owl-ref/" class="extlink">OWL</a>-based rule language. SWRL allows users to write rules that can be expressed in terms of OWL concepts to provide more powerful deductive reasoning capabilities than OWL alone. Semantically, SWRL is built on the same description logic foundation as OWL and provides similar strong formal guarantees when performing inference. &nbsp;&nbsp; <a class="nid" title="AIN" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidAIN">(AIN)</a></p>
<p><a name="nid9KQ" id="nid9KQ"></a>This FAQ assumes that the reader is already familiar with OWL. A good user-level introduction to OWL can be found <a href="http://www.co-ode.org/resources/tutorials/ProtegeOWLTutorial.pdf" class="extlink">here</a>. This FAQ uses the presentation syntax that is supported by the <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTab" class="extlink">Protege-OWL SWRLTab</a>. This syntax is described <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabSyntax" class="extlink">here</a>. Other SWRL implementations may chose an alternate presentation syntax. &nbsp;&nbsp; <a class="nid" title="9KQ" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid9KQ">(9KQ)</a></p>
<h4><a name="nidASX" id="nidASX"></a>What does a SWRL Rule look like? &nbsp;&nbsp; <a class="nid" title="ASX" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidASX">(ASX)</a></h4>
<p><a name="nidBNJ" id="nidBNJ"></a>A SWRL rule contains an antecedent part, which is referred to as the <i>body</i>, and a consequent part, which is referred to as the <i>head</i>. 
Both the body and head consist of positive conjunctions of <i>atoms</i>: &nbsp;&nbsp; <a class="nid" title="BNJ" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBNJ">(BNJ)</a></p>
<ul>
<li><a name="nidBNI" id="nidBNI"></a><i>atom</i> ^ <i>atom</i> .... -&gt; <i>atom</i> ^ <i>atom</i> &nbsp;&nbsp; <a class="nid" title="BNI" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBNI">(BNI)</a></li>
</ul>
<p><a name="nidC54" id="nidC54"></a>Informally, a SWRL rule may be read as meaning that if all the atoms in the antecedent are true, then the consequent must also be true. 
SWRL does not support negated atoms or disjunction. &nbsp;&nbsp; <a class="nid" title="C54" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidC54">(C54)</a></p>
<p><a name="nidBNT" id="nidBNT"></a>An atom is an expression of the form: &nbsp;&nbsp; <a class="nid" title="BNT" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBNT">(BNT)</a></p>
<ul>
<li><a name="nidBNU" id="nidBNU"></a>p(arg1, arg2, ... argn) &nbsp;&nbsp; <a class="nid" title="BNU" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBNU">(BNU)</a></li>
</ul>
<p><a name="nidBNV" id="nidBNV"></a>where <i>p</i> is a predicate symbol and <i>arg1</i>, <i>arg2</i>, ..., <i>argn</i> are the terms or arguments of the expression. &nbsp;&nbsp; <a class="nid" title="BNV" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBNV">(BNV)</a></p>
<p><a name="nidBO3" id="nidBO3"></a>In SWRL, the predicate symbols can include OWL classes, properties or data types. 
Arguments can be OWL individuals or data values, or variables referring to them.
All variables in SWRL are treated as universally quantified, with their scope limited to a given rule. &nbsp;&nbsp; <a class="nid" title="BO3" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBO3">(BO3)</a></p>
<h4><a name="nidBNK" id="nidBNK"></a>How many Atom types are provided by SWRL? &nbsp;&nbsp; <a class="nid" title="BNK" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBNK">(BNK)</a></h4>
<p><a name="nidBNL" id="nidBNL"></a>SWRL provides seven types of atoms: &nbsp;&nbsp; <a class="nid" title="BNL" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBNL">(BNL)</a></p>
<ul>
<li><a name="nidBNM" id="nidBNM"></a>Class Atoms &nbsp;&nbsp; <a class="nid" title="BNM" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBNM">(BNM)</a></li>
<li><a name="nidBNN" id="nidBNN"></a>Individual Property atoms &nbsp;&nbsp; <a class="nid" title="BNN" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBNN">(BNN)</a></li>
<li><a name="nidBNO" id="nidBNO"></a>Data Valued Property atoms &nbsp;&nbsp; <a class="nid" title="BNO" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBNO">(BNO)</a></li>
<li><a name="nidBNP" id="nidBNP"></a>Different Individuals atoms &nbsp;&nbsp; <a class="nid" title="BNP" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBNP">(BNP)</a></li>
<li><a name="nidBNQ" id="nidBNQ"></a>Same Individual atoms &nbsp;&nbsp; <a class="nid" title="BNQ" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBNQ">(BNQ)</a></li>
<li><a name="nidBNR" id="nidBNR"></a>Built-in atoms &nbsp;&nbsp; <a class="nid" title="BNR" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBNR">(BNR)</a></li>
<li><a name="nidBNS" id="nidBNS"></a>Data Range atoms &nbsp;&nbsp; <a class="nid" title="BNS" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBNS">(BNS)</a></li>
</ul>
<h4><a name="nidBNX" id="nidBNX"></a>What is a Class atom? &nbsp;&nbsp; <a class="nid" title="BNX" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBNX">(BNX)</a></h4>
<p><a name="nidBO4" id="nidBO4"></a>A class atom consists of an OWL named class or class expression and a single argument representing an OWL individual. Examples include: &nbsp;&nbsp; <a class="nid" title="BO4" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBO4">(BO4)</a></p>
<ul>
<li><a name="nidBO5" id="nidBO5"></a>Person(?p) &nbsp;&nbsp; <a class="nid" title="BO5" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBO5">(BO5)</a></li>
<li><a name="nidBO6" id="nidBO6"></a>Man(Fred) &nbsp;&nbsp; <a class="nid" title="BO6" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBO6">(BO6)</a></li>
</ul>
<p><a name="nidBOL" id="nidBOL"></a>Here, <tt>Person</tt> and <tt>Man</tt> are OWL named classes, ?p is a variable representing an OWL individual, and <tt>Fred</tt> is the name of an OWL individual. &nbsp;&nbsp; <a class="nid" title="BOL" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBOL">(BOL)</a></p>
<p><a name="nidBR3" id="nidBR3"></a>A simple example rule using class atoms to declare that all individual of type <tt>Man</tt> are also or type <tt>Person</tt> can be written: &nbsp;&nbsp; <a class="nid" title="BR3" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBR3">(BR3)</a></p>
<ul>
<li><a name="nidBR4" id="nidBR4"></a>Man(?p) -&gt; Person(?p) &nbsp;&nbsp; <a class="nid" title="BR4" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBR4">(BR4)</a></li>
</ul>
<p><a name="nidBR5" id="nidBR5"></a>Of course, this statement can also be made directly in OWL. &nbsp;&nbsp; <a class="nid" title="BR5" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBR5">(BR5)</a></p>
<h4><a name="nidBNX" id="nidBNX"></a>What is an Individual Property atom? &nbsp;&nbsp; <a class="nid" title="BNX" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBNX">(BNX)</a></h4>
<p><a name="nidBO7" id="nidBO7"></a>An individual property atom consists of an OWL object property and two arguments representing OWL individuals. Examples include: &nbsp;&nbsp; <a class="nid" title="BO7" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBO7">(BO7)</a></p>
<ul>
<li><a name="nidBO8" id="nidBO8"></a>hasBrother(?x, ?y) &nbsp;&nbsp; <a class="nid" title="BO8" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBO8">(BO8)</a></li>
<li><a name="nidBO9" id="nidBO9"></a>hasSibling(Fred, ?y) &nbsp;&nbsp; <a class="nid" title="BO9" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBO9">(BO9)</a></li>
</ul>
<p><a name="nidBOL" id="nidBOL"></a>Here, <tt>hasBrother</tt> and <tt>hasSibling</tt> are OWL object properties, ?x and ?y are variables representing OWL individuals, and <tt>Fred</tt> is the name of an OWL individual. &nbsp;&nbsp; <a class="nid" title="BOL" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBOL">(BOL)</a></p>
<p><a name="nid71R" id="nid71R"></a>An example SWRL rule expressing that a person with a male sibling has a brother would thus require capturing the concepts of person, female, sibling of and brother of in OWL. 
Intuitively, the concept of person and male can be captured using an OWL class called <tt>Person</tt> with a subclass <tt>Man</tt>; the sibling and brother relationships can be expressed using OWL object properties <tt>hasSibling</tt> and <tt>hasBrother</tt> with a domain and range of <tt>Person</tt>. The rule in SWRL would then be: &nbsp;&nbsp; <a class="nid" title="71R" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid71R">(71R)</a></p>
<ul>
<li><a name="nid721" id="nid721"></a>Person(?p) ^ hasSibling(?p,?s) ^ Man(?s) -&gt; hasBrother(?p,?s) &nbsp;&nbsp; <a class="nid" title="721" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid721">(721)</a></li>
</ul>
<p><a name="nid9V5" id="nid9V5"></a>This rules associates the <tt>hasBrother</tt> property with all OWL individuals with one or more male siblings and assigning its value to those siblings. &nbsp;&nbsp; <a class="nid" title="9V5" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid9V5">(9V5)</a></p>
<h4><a name="nidBNX" id="nidBNX"></a>What is a Data Valued Property atom? &nbsp;&nbsp; <a class="nid" title="BNX" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBNX">(BNX)</a></h4>
<p><a name="nidBOA" id="nidBOA"></a>A data valued property atom consists of an OWL data property and two arguments, the first representing an OWL individual, and the second a data value. Examples include: &nbsp;&nbsp; <a class="nid" title="BOA" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBOA">(BOA)</a></p>
<ul>
<li><a name="nidBOB" id="nidBOB"></a>hasAge(?x, ?age) &nbsp;&nbsp; <a class="nid" title="BOB" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBOB">(BOB)</a></li>
<li><a name="nidBOC" id="nidBOC"></a>hasHeight(Fred, ?h) &nbsp;&nbsp; <a class="nid" title="BOC" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBOC">(BOC)</a></li>
<li><a name="nidBOD" id="nidBOD"></a>hasAge(?x, 232) &nbsp;&nbsp; <a class="nid" title="BOD" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBOD">(BOD)</a></li>
<li><a name="nidCC9" id="nidCC9"></a>hasName(?x, "Fred") &nbsp;&nbsp; <a class="nid" title="CC9" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidCC9">(CC9)</a></li>
</ul>
<p><a name="nidBOM" id="nidBOM"></a>Here, <tt>hasHeight</tt>, <tt>hasAge</tt>, and <tt>hasName</tt> are OWL data properties, ?x is a variable representing an OWL individual, <tt>Fred</tt> is the name of an OWL individual, and ?h and ?age are variables representing data values. &nbsp;&nbsp; <a class="nid" title="BOM" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBOM">(BOM)</a></p>
<p><a name="nid72I" id="nid72I"></a>Using a boolean data valued property, a rule that asserts that all persons that own a car should be classified as drivers can then be written as: &nbsp;&nbsp; <a class="nid" title="72I" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid72I">(72I)</a></p>
<ul>
<li><a name="nid8IF" id="nid8IF"></a>Person(?p) ^ hasCar(?p, true) -&gt; Driver(?p) &nbsp;&nbsp; <a class="nid" title="8IF" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid8IF">(8IF)</a></li>
</ul>
<p><a name="nid72K" id="nid72K"></a>This rule classifies all car-owner individuals of type <tt>Person</tt> to also be members of the class <tt>Driver</tt>. &nbsp;&nbsp; <a class="nid" title="72K" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid72K">(72K)</a></p>
<p><a name="nid8IG" id="nid8IG"></a>Named individuals in an ontology can also be referred to directly. For example, one could rewrite the above rule to classify an individual named Fred as a driver as follows: &nbsp;&nbsp; <a class="nid" title="8IG" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid8IG">(8IG)</a></p>
<ul>
<li><a name="nid8IH" id="nid8IH"></a>Person(Fred) ^ hasCar(Fred, true) -&gt; Driver(Fred) &nbsp;&nbsp; <a class="nid" title="8IH" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid8IH">(8IH)</a></li>
</ul>
<p><a name="nid9TO" id="nid9TO"></a>It is important to note that this rule works with a known individual called <tt>Fred</tt> in an ontology. One can not create a new individual using rules of this form. &nbsp;&nbsp; <a class="nid" title="9TO" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid9TO">(9TO)</a></p>
<h4><a name="nidBNX" id="nidBNX"></a>What is a Different Individuals atom? &nbsp;&nbsp; <a class="nid" title="BNX" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBNX">(BNX)</a></h4>
<p><a name="nidBOE" id="nidBOE"></a>A different individuals atom consists of the <i>differentFrom</i> symbol and two arguments representing OWL individuals. Examples include: &nbsp;&nbsp; <a class="nid" title="BOE" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBOE">(BOE)</a></p>
<ul>
<li><a name="nidBOF" id="nidBOF"></a>differentFrom(?x, ?y) &nbsp;&nbsp; <a class="nid" title="BOF" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBOF">(BOF)</a></li>
<li><a name="nidBOG" id="nidBOG"></a>differentFrom(Fred, Joe) &nbsp;&nbsp; <a class="nid" title="BOG" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBOG">(BOG)</a></li>
</ul>
<p><a name="nidBOL" id="nidBOL"></a>Here, ?x and ?y are variables representing OWL individuals, and <tt>Fred</tt> and <tt>Joe</tt> are the names of OWL individuals. &nbsp;&nbsp; <a class="nid" title="BOL" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBOL">(BOL)</a></p>
<p><a name="nidBOU" id="nidBOU"></a>See <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid9KT" class="extlink">below</a> for an explanation of how this atom can be used in rules. &nbsp;&nbsp; <a class="nid" title="BOU" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBOU">(BOU)</a></p>
<h4><a name="nidBNX" id="nidBNX"></a>What is a Same Individual atom? &nbsp;&nbsp; <a class="nid" title="BNX" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBNX">(BNX)</a></h4>
<p><a name="nidBOH" id="nidBOH"></a>A same individual atom consists of the <i>sameAs</i> symbol and two arguments representing OWL individuals.  Examples include: &nbsp;&nbsp; <a class="nid" title="BOH" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBOH">(BOH)</a></p>
<ul>
<li><a name="nidBOI" id="nidBOI"></a>sameAs(?x, ?y) &nbsp;&nbsp; <a class="nid" title="BOI" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBOI">(BOI)</a></li>
<li><a name="nidBOJ" id="nidBOJ"></a>sameAs(Fred, Freddy) &nbsp;&nbsp; <a class="nid" title="BOJ" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBOJ">(BOJ)</a></li>
</ul>
<p><a name="nidBOL" id="nidBOL"></a>Here, ?x and ?y are variables representing OWL individuals, and <tt>Fred</tt> and <tt>Freddy</tt> are the names of OWL individuals. &nbsp;&nbsp; <a class="nid" title="BOL" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBOL">(BOL)</a></p>
<p><a name="nidBOV" id="nidBOV"></a>See <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid9KT" class="extlink">below</a> for an explanation of how this atom can be used in rules. &nbsp;&nbsp; <a class="nid" title="BOV" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBOV">(BOV)</a></p>
<h4><a name="nidBON" id="nidBON"></a>What is a Data Range atom? &nbsp;&nbsp; <a class="nid" title="BON" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBON">(BON)</a></h4>
<p><a name="nidBOO" id="nidBOO"></a>A data range atom consists of a datatype name or a set of literals and a single argument representing a data value. Examples include: &nbsp;&nbsp; <a class="nid" title="BOO" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBOO">(BOO)</a></p>
<ul>
<li><a name="nidBOP" id="nidBOP"></a>xsd:int(?x) &nbsp;&nbsp; <a class="nid" title="BOP" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBOP">(BOP)</a></li>
<li><a name="nidBOQ" id="nidBOQ"></a>[3, 4, 5](?x) &nbsp;&nbsp; <a class="nid" title="BOQ" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBOQ">(BOQ)</a></li>
</ul>
<p><a name="nidBOR" id="nidBOR"></a>Here, ?x is a variable representing a data value. &nbsp;&nbsp; <a class="nid" title="BOR" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBOR">(BOR)</a></p>
<h4><a name="nid8JQ" id="nid8JQ"></a>What is a Built-In Atom? &nbsp;&nbsp; <a class="nid" title="8JQ" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid8JQ">(8JQ)</a></h4>
<p><a name="nid8JZ" id="nid8JZ"></a>One of the most powerful features of SWRL is its ability to support user-defined built-ins. A built-in is  a predicate that takes one or more arguments and evaluates to true if the arguments satisfy the predicate. For example, an <tt>equal</tt> built-in can be defined to accept two arguments and return true if the arguments are the same. A number of <a href="http://protege.cim3.net/cgi-bin/wiki.pl?CoreSWRLBuiltIns" class="extlink">core built-ins</a> for common mathematical and string operations are contained in the <a href="http://www.daml.org/rules/proposal/builtins.html" class="extlink">SWRL Built-in Submission</a>. &nbsp;&nbsp; <a class="nid" title="8JZ" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid8JZ">(8JZ)</a></p>
<p><a name="nid8D4" id="nid8D4"></a>An example SWRL rule using a core SWRL built-in to indicate that a person with an age of greater than 17 is an adult is: &nbsp;&nbsp; <a class="nid" title="8D4" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid8D4">(8D4)</a></p>
<ul>
<li><a name="nid8D5" id="nid8D5"></a>Person(?p) ^ hasAge(?p, ?age) ^ swrlb:greaterThan(?age, 17) -&gt; Adult(?p) &nbsp;&nbsp; <a class="nid" title="8D5" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid8D5">(8D5)</a></li>
</ul>
<p><a name="nid8D6" id="nid8D6"></a>By convention, core SWRL built-ins are preceded by the namespace qualifier <tt>swrlb</tt>. When executed, this rule would classify individuals of class <tt>Person</tt> with an <tt>hasAge</tt> property value of greater than 17 as members of the class <tt>Adult</tt>. &nbsp;&nbsp; <a class="nid" title="8D6" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid8D6">(8D6)</a></p>
<p><a name="nid8K0" id="nid8K0"></a>A rule that uses a core SWRL string built-in to determine if a person's telephone number starts with the international access code "+" can be written as follows: &nbsp;&nbsp; <a class="nid" title="8K0" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid8K0">(8K0)</a></p>
<ul>
<li><a name="nid8K1" id="nid8K1"></a>Person(?p) ^ hasNumber(?p, ?number) ^ swrlb:startsWith(?number, "+") -&gt; hasInternationalNumber(?p, true) &nbsp;&nbsp; <a class="nid" title="8K1" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid8K1">(8K1)</a></li>
</ul>
<p><a name="nidALL" id="nidALL"></a>Built-ins can take any number or combination of OWL datatype property values. Datatypes can be <a href="http://www.w3.org/TR/xmlschema-2/" class="extlink">XML Schema Datatype</a> or arbitrary user-defined types. They can not take object, class or property values. However, the SWRLTab implementation of SWRL has <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabSyntax#nidALC" class="extlink">custom extensions</a> to allow arguments of these types. &nbsp;&nbsp; <a class="nid" title="ALL" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidALL">(ALL)</a></p>
<p><a name="nid8K4" id="nid8K4"></a>The <a href="http://www.w3.org/Submission/SWRL/" class="extlink">SWRL Submission</a> does not provide a mechanism for specifying the number or types of built-in arguments - argument checking is the responsibility of the built-in implementor. The submission does specify that a built-in that is passed an incorrect number or arguments, or arguments of an incorrect type, should evaluate to <tt>false</tt>. &nbsp;&nbsp; <a class="nid" title="8K4" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid8K4">(8K4)</a></p>
<p><a name="nidALM" id="nidALM"></a>SWRL allows new libraries of built-ins to be defined and used in rules. Users can define built-in libraries to perform a wide range of tasks. Such tasks could, for example, include currency conversion, temporal manipulations, and taxonomy searches. &nbsp;&nbsp; <a class="nid" title="ALM" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidALM">(ALM)</a></p>
<h4><a name="nid8JR" id="nid8JR"></a>Can Built-Ins Bind their Arguments? &nbsp;&nbsp; <a class="nid" title="8JR" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid8JR">(8JR)</a></h4>
<p><a name="nid8CY" id="nid8CY"></a>Yes - built-ins can also assign (or bind) values to arguments. For example, the SWRL atom <tt>swrlb:add(?x, 2, 3)</tt> uses the core SWRL built-in add method to add two integer literals. If <tt>x</tt> is unbound when this built-in is invoked, it will be assigned the the value 5 when the built-in returns. If <tt>x</tt> is already bound when the built-in is invoked, it will simply determine if its value is 5. &nbsp;&nbsp; <a class="nid" title="8CY" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid8CY">(8CY)</a></p>
<p><a name="nid8IJ" id="nid8IJ"></a>A built-in method that successfully assigns a value to an argument should return <tt>true</tt>. If more than one unbound argument is present, all arguments must be bound. If the built-in returns <tt>false</tt> no assignments are expected. &nbsp;&nbsp; <a class="nid" title="8IJ" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid8IJ">(8IJ)</a></p>
<p><a name="nid8CT" id="nid8CT"></a>An example rule that uses built-ins with assignment to calculate the area of a rectangle can be be written as follows: &nbsp;&nbsp; <a class="nid" title="8CT" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid8CT">(8CT)</a></p>
<ul>
<li><a name="nid8CW" id="nid8CW"></a> Rectangle(?r) ^ hasWidthInMeters(?r, ?w) ^ hasHeightInMeters(?r, ?h) ^
swrlb:multiply(?areaInSquareMeters, ?w, ?h) -&gt; hasAreaInSquareMeters(?r,
?areaInSquareMeters)  &nbsp;&nbsp; <a class="nid" title="8CW" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid8CW">(8CW)</a></li>
</ul>
<p><a name="nid8HQ" id="nid8HQ"></a>Since the <tt>areaInSquareMeters</tt> variable is unbound when the multiply built-in is called, the built-in will assign a value so that the built-in predicate evaluates to true. If the variable is bound when the built-in is called, its value will be used directly in predicate evaluation. The use of a variable in any non built-in atom automatically ensures it is bound (assuming the rule fires). &nbsp;&nbsp; <a class="nid" title="8HQ" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid8HQ">(8HQ)</a></p>
<p><a name="nid8CV" id="nid8CV"></a>We can use a similar rule to classify a rectangle with an area of over 100 square meters as a <tt>BigRectangle</tt>: &nbsp;&nbsp; <a class="nid" title="8CV" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid8CV">(8CV)</a></p>
<ul>
<li><a name="nid8CX" id="nid8CX"></a> Rectangle(?r) ^ hasWidthInMetres(?r, ?w) ^ hasHeightInMetres(?r, ?h) ^
swrlb:multiply(?areaInSquareMeters, ?w, ?h) ^ swrlb:greaterThan(?100,
?areaInSquareMeters) -&gt; hasAreaInSquareMetres(?r, ?areaInSquareMeters) ^
BigRectangle(?r)  &nbsp;&nbsp; <a class="nid" title="8CX" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid8CX">(8CX)</a></li>
</ul>
<p><a name="nid8HR" id="nid8HR"></a>This rule illustrates the binding of a variable by one built-in and its subsequent use by another built-in in the same rule. The variable <tt>areaInSquareMeters</tt> is unbound when it is passed to the multiply built-in so a value is assigned to it; when the greater than built-in is called, it is passed this bound value. &nbsp;&nbsp; <a class="nid" title="8HR" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid8HR">(8HR)</a></p>
<p><a name="nid8HS" id="nid8HS"></a>Binding precedence is from left to right. As mentioned above, the use of a variable in a non built-in atom automatically binds it - these atoms take precedence over all built-in atoms. &nbsp;&nbsp; <a class="nid" title="8HS" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid8HS">(8HS)</a></p>
<p><a name="nid8JC" id="nid8JC"></a>Unbound variables may potentially occur in any argument position. For example, consider the following two rules, both of which convert a person's salary from pounds to dollars: &nbsp;&nbsp; <a class="nid" title="8JC" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid8JC">(8JC)</a></p>
<ul>
<li><a name="nid8JD" id="nid8JD"></a>   Person(?p) ^ hasSalaryInPounds(?p, ?pounds) ^ swrlb:divide(?pounds, ?dollars, ?1.9) -&gt; hasSalaryInDollars(?p, ?dollars)  &nbsp;&nbsp; <a class="nid" title="8JD" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid8JD">(8JD)</a></li>
</ul>
<ul>
<li><a name="nid8JE" id="nid8JE"></a> Person(?p) ^ hasSalaryInPounds(?p, ?pounds) ^ swrlb:multiply(1.9, ?pounds, ?dollars) -&gt; hasSalaryInDollars(?p, ?dollars)  &nbsp;&nbsp; <a class="nid" title="8JE" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid8JE">(8JE)</a></li>
</ul>
<p><a name="nid8JF" id="nid8JF"></a>In these cases, the unbound <tt>dollars</tt> variable is in the second and third argument positions, respectively. &nbsp;&nbsp; <a class="nid" title="8JF" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid8JF">(8JF)</a></p>
<p><a name="nid8V3" id="nid8V3"></a>Unbound arguments may have more than one valid binding that satisfies the built-in. For example, the absolute value built-in invocation <tt>swrlb:abs(7, ?x)</tt> could be satisfied by both 7 and -7 as bindings for the variable x. &nbsp;&nbsp; <a class="nid" title="8V3" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid8V3">(8V3)</a></p>
<p><a name="nid8II" id="nid8II"></a>Of course, not all built-ins will perform argument binding. For example, supporting argument binding in the core SWRL <tt>greaterThan</tt> built-in would be counter intuitive. The designer of a built-in must decide which - if any - arguments are to be bound. &nbsp;&nbsp; <a class="nid" title="8II" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid8II">(8II)</a></p>
<p><a name="nid8HV" id="nid8HV"></a>A discussion of the implementation issues of defining SWRL built-ins that bind arguments can be found <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLBuiltInBridge#nid88T" class="extlink">here</a>. &nbsp;&nbsp; <a class="nid" title="8HV" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid8HV">(8HV)</a></p>
<h4><a name="nid8JP" id="nid8JP"></a>Can OWL Class Expressions be used in SWRL Rules? &nbsp;&nbsp; <a class="nid" title="8JP" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid8JP">(8JP)</a></h4>
<p><a name="nid8HZ" id="nid8HZ"></a>Yes - SWRL also supports the use of <a href="http://www.w3.org/TR/owl-ref/#ClassDescription" class="extlink">OWL class expressions</a> (also known as class descriptions) in rules. For example, a rule that classifies an individual as a parent if it is a member of a class with a <tt>hasChild</tt> property with a minimum cardinality of one can be written as follows: &nbsp;&nbsp; <a class="nid" title="8HZ" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid8HZ">(8HZ)</a></p>
<ul>
<li><a name="nid8I0" id="nid8I0"></a>(hasChild &gt;= 1)(?x) -&gt; Parent(?x) &nbsp;&nbsp; <a class="nid" title="8I0" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid8I0">(8I0)</a></li>
</ul>
<p><a name="nidAMK" id="nidAMK"></a>It is important to note that this rule does not state that all individuals with a child are parents. It says, instead, that all individuals that are members of an OWL class with the restriction that its <tt>hasChild</tt> property has a minimum cardinality of one. Individuals with no <b>known</b> children may be classified as parents with this rule. &nbsp;&nbsp; <a class="nid" title="AMK" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidAMK">(AMK)</a></p>
<p><a name="nid9KR" id="nid9KR"></a>Rules can also use class descriptions to assert conclusions about individuals: &nbsp;&nbsp; <a class="nid" title="9KR" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid9KR">(9KR)</a></p>
<ul>
<li><a name="nid9KS" id="nid9KS"></a>Parent(?x) -&gt;(hasChild &gt;= 1)(?x) &nbsp;&nbsp; <a class="nid" title="9KS" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid9KS">(9KS)</a></li>
</ul>
<p><a name="nid9TU" id="nid9TU"></a>In this case, the rule is asserting that all individuals of class <tt>Parent</tt> have a <tt>hasChild</tt> property with a cardinality of one or greater. Similarly, we can use class descriptions to assert that if a publication has cardinality restriction of exactly one on its <tt>hasAuthor</tt> property we can conclude that it is a single author publication: &nbsp;&nbsp; <a class="nid" title="9TU" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid9TU">(9TU)</a></p>
<ul>
<li><a name="nid9LP" id="nid9LP"></a>Publication(?p) ^ (hasAuthor = 1)(?p) -&gt; SingleAuthorPublication(?p) &nbsp;&nbsp; <a class="nid" title="9LP" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid9LP">(9LP)</a></li>
</ul>
<p><a name="nid9TZ" id="nid9TZ"></a>Of course, this type of conclusion can be stated in OWL alone and does not require SWRL. &nbsp;&nbsp; <a class="nid" title="9TZ" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid9TZ">(9TZ)</a></p>
<p><a name="nid9L0" id="nid9L0"></a>All OWL class descriptions used in SWRL rules have identical semantics to OWL class descriptions used elsewhere in an OWL ontology. That is, they are logical statements. The rule: &nbsp;&nbsp; <a class="nid" title="9L0" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid9L0">(9L0)</a></p>
<ul>
<li><a name="nid8I0" id="nid8I0"></a>(hasChild &gt;= 1)(?x) -&gt; Parent(?x) &nbsp;&nbsp; <a class="nid" title="8I0" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid8I0">(8I0)</a></li>
</ul>
<p><a name="nid8ID" id="nid8ID"></a>matches all individuals for which <i>it can be proven</i> (directly or indirectly) that they are members of a class that has the specified cardinality restriction on a <tt>hasChild</tt> property. It does <i>not</i> match all individuals in an OWL ontology that have one or more values for a <tt>hasChild</tt> property. Because of OWL's (and SWRL's) <a href="http://en.wikipedia.org/wiki/Open_World_Assumption" class="extlink">open world assumption</a>, this rule may actually match individuals that have no values for the <tt>hasChild</tt> property in the current ontology but for which the existence of such values can be deduced from OWL axioms. It is not possible to express this type of match in SWRL. &nbsp;&nbsp; <a class="nid" title="8ID" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid8ID">(8ID)</a></p>
<h4><a name="nid9KT" id="nid9KT"></a>Does SWRL adopt the Open World Assumption? &nbsp;&nbsp; <a class="nid" title="9KT" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid9KT">(9KT)</a></h4>
<p><a name="nid9KV" id="nid9KV"></a>Yes. The most significant point to note about SWRL is that it shares OWL's <a href="http://en.wikipedia.org/wiki/Open_World_Assumption" class="extlink">open world assumption</a>. For example, one might expect that a rule that infers that if two OWL individuals of type <tt>Author</tt> cooperate on the same publication that they are collaborators could be written as: &nbsp;&nbsp; <a class="nid" title="9KV" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid9KV">(9KV)</a></p>
<ul>
<li><a name="nid9TX" id="nid9TX"></a>Publication(?p) ^ hasAuthor(?p, ?y) ^ hasAuthor(?p, ?z) -&gt; collaboratesWith(?y, ?z) &nbsp;&nbsp; <a class="nid" title="9TX" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid9TX">(9TX)</a></li>
</ul>
<p><a name="nid9U7" id="nid9U7"></a>However, OWL's open world semantics do not allow one to assume that two individuals are automatically distinct if they have different names - that is, OWL does not have a unique name assumption. (Additionally, due to normal rule pattern matching, variables <tt>y</tt> and <tt>z</tt> can also match the same individual in this rule.) &nbsp;&nbsp; <a class="nid" title="9U7" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid9U7">(9U7)</a></p>
<p><a name="nidAXR" id="nidAXR"></a>As mentioned, SWRL supports <tt>sameAs</tt> and <tt>differentFrom</tt> atoms to determine if individuals refer to the same underlying individual or are distinct. &nbsp;&nbsp; <a class="nid" title="AXR" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidAXR">(AXR)</a></p>
<p><a name="nid9TW" id="nid9TW"></a>For example, a rule that indicates that individuals are cooperators if they are co-authors on a paper can use the <tt>differentFrom</tt> clause in association with an <tt>owl:allDifferents</tt> axiom declaration that states that all individuals of class <tt>Author</tt> are different from each other. It can be written as follows: &nbsp;&nbsp; <a class="nid" title="9TW" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid9TW">(9TW)</a></p>
<ul>
<li><a name="nid8I7" id="nid8I7"></a>Publication(?a) ^ hasAuthor(?x, ?y) ^ hasAuthor(?x, ?z) ^ differentFrom(?y, ?z) -&gt; cooperatedWith(?y, ?z) &nbsp;&nbsp; <a class="nid" title="8I7" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid8I7">(8I7)</a></li>
</ul>
<p><a name="nid8JT" id="nid8JT"></a>Similarly, SWRL will only deduce that two individuals are the same as each other if there is an explicit <tt>owl:sameAs</tt> OWL axiom defined for the individuals in an ontology or if their sameness is entailed by other axioms in an ontology. &nbsp;&nbsp; <a class="nid" title="8JT" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid8JT">(8JT)</a></p>
<p><a name="nid9LE" id="nid9LE"></a>Because of the open world assumption, rules that attempt to enumerate individuals or properties in an ontology are not always possible. One can not write a rule that make an inference based on, say, the number of individuals or property values in an ontology unless OWL statements explicitly state those numbers. So, the following rule to deduce that a publication is a single author publication based on the number of its authors is not expressible in SWRL: &nbsp;&nbsp; <a class="nid" title="9LE" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid9LE">(9LE)</a></p>
<ul>
<li><a name="nid9LF" id="nid9LF"></a>Publication(?p) ^ hasAuthor(?p,?a) ^ <i>has exactly one hasAuthor value in current ontology</i> -&gt; SingleAuthorPublication(?p) &nbsp;&nbsp; <a class="nid" title="9LF" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid9LF">(9LF)</a></li>
</ul>
<p><a name="nidA4M" id="nidA4M"></a>A publication may have only one known author but other authors may also exist - unless it has been explicitly stated <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid9LP" class="extlink">using OWL axioms</a> that they do not. &nbsp;&nbsp; <a class="nid" title="A4M" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidA4M">(A4M)</a></p>
<p><a name="nid9V8" id="nid9V8"></a>OWL's open world assumption assumption can also easily lead one to write rules that are less general than intended in some circumstances. Say, for example, we are asked to write a rule that defines an obsessed person as a person who owns a thing and is also obsessed by the thing. The most obvious formulation would be something like: &nbsp;&nbsp; <a class="nid" title="9V8" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid9V8">(9V8)</a></p>
<ul>
<li><a name="nid9V9" id="nid9V9"></a>Person(?x) ^ owns(?x, ?t) ^ isObsessedBy(?x, ?t) -&gt; ObsessedPerson(?x) &nbsp;&nbsp; <a class="nid" title="9V9" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid9V9">(9V9)</a></li>
</ul>
<p><a name="nid9VA" id="nid9VA"></a>However, this rule will miss equivalent individuals that represent the same thing owned by a person. A more general formulation would be: &nbsp;&nbsp; <a class="nid" title="9VA" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid9VA">(9VA)</a></p>
<ul>
<li><a name="nid9VB" id="nid9VB"></a>Person(?x) ^ owns(?x, ?t1) ^ isObsessedBy(?x, ?t2) ^ sameAs(?t1, ?t2) -&gt; ObsessedPerson(?x) &nbsp;&nbsp; <a class="nid" title="9VB" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid9VB">(9VB)</a></li>
</ul>
<h4><a name="nid9TR" id="nid9TR"></a>Does SWRL support Nonmonotonic Inference? &nbsp;&nbsp; <a class="nid" title="9TR" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid9TR">(9TR)</a></h4>
<p><a name="nidCC2" id="nidCC2"></a>No. Like OWL, SWRL supports monotonic inference only. Hence, SWRL rules cannot be used to modify existing information in an ontology. If SWRL rules allowed such modifications <a href="http://www.aaai.org/AITopics/html/nonmon.html" class="extlink">nonmonotonicity</a> would follow. For this reason, SWRL rules can not retract or remove information from an ontology. &nbsp;&nbsp; <a class="nid" title="CC2" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidCC2">(CC2)</a></p>
<p><a name="nid9L4" id="nid9L4"></a>For example, assume we have a rule that indicates that a driver older than 25 is insurable by assigning a boolean property to true: &nbsp;&nbsp; <a class="nid" title="9L4" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid9L4">(9L4)</a></p>
<ul>
<li><a name="nid9L5" id="nid9L5"></a>Driver(?d) ^ hasAge(?d, ?age) ^ swrlb:greaterThan(?age, 25) -&gt; isInsurable(?d, true) &nbsp;&nbsp; <a class="nid" title="9L5" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid9L5">(9L5)</a></li>
</ul>
<p><a name="nid9L6" id="nid9L6"></a>This rule will add the value of <tt>true</tt> to the <tt>isInsurable</tt> property for all drivers that satisfy the antecedent. It does <i>not</i> change the existing value for that property. If, for example, a driver has a previous assignment of <tt>false</tt> for that property, a successful firing of this rule for that driver will result in the property having two values. If the <tt>isInsurable</tt> value if functional (which it most likely should be), an OWL reasoner will indicate an inconsistency when applied to the resulting ontology. &nbsp;&nbsp; <a class="nid" title="9L6" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid9L6">(9L6)</a></p>
<p><a name="nid9L7" id="nid9L7"></a>Similarly, one may be tempted to write the following rule to increment the age of a driver by one: &nbsp;&nbsp; <a class="nid" title="9L7" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid9L7">(9L7)</a></p>
<ul>
<li><a name="nid9L8" id="nid9L8"></a>Driver(?d) ^ hasAge(?d, ?age) ^ swrlb:add(?newage, ?age, 1) -&gt; hasAge(?d, ?newage) &nbsp;&nbsp; <a class="nid" title="9L8" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid9L8">(9L8)</a></li>
</ul>
<p><a name="nid9L9" id="nid9L9"></a>As with the previous rule, a successful invocation of this rule will result in a driver having two values for their <tt>hasAge</tt> property, which is probably not the intention. Worse still, the rule will be invoked for each new value and continue to assign incremented age values indefinitely. &nbsp;&nbsp; <a class="nid" title="9L9" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid9L9">(9L9)</a></p>
<h4><a name="nidA3Q" id="nidA3Q"></a>Does SWRL support Negation as Failure? &nbsp;&nbsp; <a class="nid" title="A3Q" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidA3Q">(A3Q)</a></h4>
<p><a name="nid9LA" id="nid9LA"></a>A further consequence of SWRL's monotonicity is that <a href="http://en.wikipedia.org/wiki/Negation_as_failure" class="extlink">negation as failure</a> is not supported. The following rule, for example, is not possible: &nbsp;&nbsp; <a class="nid" title="9LA" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid9LA">(9LA)</a></p>
<ul>
<li><a name="nid9LB" id="nid9LB"></a>Person(?p) ^ ¬ hasCar(?p, ?c) -&gt; CarlessPerson(?p) &nbsp;&nbsp; <a class="nid" title="9LB" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid9LB">(9LB)</a></li>
</ul>
<p><a name="nid9U0" id="nid9U0"></a>It is easy to see that the addition of a car to the ontology could invalidate this rule's conclusion. Only individuals with an explicit OWL axiom stating that they have no car can be safely be concluded to be without a car: &nbsp;&nbsp; <a class="nid" title="9U0" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid9U0">(9U0)</a></p>
<ul>
<li><a name="nid9U1" id="nid9U1"></a>Person(?p) ^ (hasCar = 0)(?p) -&gt; CarlessPerson(?p) &nbsp;&nbsp; <a class="nid" title="9U1" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid9U1">(9U1)</a></li>
</ul>
<h4><a name="nidA3R" id="nidA3R"></a>Does SWRL support Classical Negation? &nbsp;&nbsp; <a class="nid" title="A3R" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidA3R">(A3R)</a></h4>
<p><a name="nid9TL" id="nid9TL"></a>While SWRL does not support negated atoms or negation as failure, <a href="http://en.wikipedia.org/wiki/Negation" class="extlink">classical negation</a> is possible in SWRL with the use of <tt>owl:complementOf</tt> class descriptions in rules. For example, we can write the following rule that asserts that of an individual is not a member of class <tt>Person</tt> then it should be classified as a member of the class <tt>NonHuman</tt>. &nbsp;&nbsp; <a class="nid" title="9TL" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid9TL">(9TL)</a></p>
<ul>
<li><a name="nid9TM" id="nid9TM"></a>(not Person)(?x) -&gt; NonHuman(?x) &nbsp;&nbsp; <a class="nid" title="9TM" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid9TM">(9TM)</a></li>
</ul>
<p><a name="nid9TN" id="nid9TN"></a>Of course, with OWL's (and SWRL's) open world assumption this conclusion can only be reached for individuals for which it can definitely be concluded that they can not be members of the of the class <tt>Person</tt>. For example, if an OWL axiom states that members of the classses <tt>Person</tt> and <tt>Dog</tt> are disjoint then this rule can safely conclude that all dogs are not humans. &nbsp;&nbsp; <a class="nid" title="9TN" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid9TN">(9TN)</a></p>
<h4><a name="nidA3V" id="nidA3V"></a>Does SWRL support Disjunctions of Atoms? &nbsp;&nbsp; <a class="nid" title="A3V" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidA3V">(A3V)</a></h4>
<p><a name="nidA3Y" id="nidA3Y"></a>No - only positive conjunctions of atoms are supported. So, for example, the following rule is not possible: &nbsp;&nbsp; <a class="nid" title="A3Y" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidA3Y">(A3Y)</a></p>
<ul>
<li><a name="nidA3X" id="nidA3X"></a>A(?x) &#8744; B(?x) -&gt; C(?x) &nbsp;&nbsp; <a class="nid" title="A3X" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidA3X">(A3X)</a></li>
</ul>
<p><a name="nidA3Z" id="nidA3Z"></a>This restriction is easy to work around in most cases. In the case of this example, the following two rules will produce the intended effect: &nbsp;&nbsp; <a class="nid" title="A3Z" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidA3Z">(A3Z)</a></p>
<ul>
<li><a name="nidA40" id="nidA40"></a>A(?x) -&gt; C(?x) &nbsp;&nbsp; <a class="nid" title="A40" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidA40">(A40)</a></li>
<li><a name="nidA41" id="nidA41"></a>B(?x) -&gt; C(?x) &nbsp;&nbsp; <a class="nid" title="A41" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidA41">(A41)</a></li>
</ul>
<p><a name="nidA3W" id="nidA3W"></a>It is easy to see that the addition of disjunctions of atoms would complicate the language's semantics. Consider, for example, the rule: &nbsp;&nbsp; <a class="nid" title="A3W" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidA3W">(A3W)</a></p>
<p><a name="nidA42" id="nidA42"></a>A(?x) &#8744; B(?y) -&gt; C(?x) &nbsp;&nbsp; <a class="nid" title="A42" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidA42">(A42)</a></p>
<p><a name="nidCFH" id="nidCFH"></a>It is unclear what action should be taken in the consequent of this rule if the antecedent matches an individual of type <tt>B</tt> but does not match any individuals of class <tt>A</tt> - the variable <tt>x</tt> would have no sensible binding. &nbsp;&nbsp; <a class="nid" title="CFH" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidCFH">(CFH)</a></p>
<p><a name="nidA4A" id="nidA4A"></a>A rule with disjunctions of atoms in its head could cause similar confusion. For example, if the rule &nbsp;&nbsp; <a class="nid" title="A4A" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidA4A">(A4A)</a></p>
<ul>
<li><a name="nidA45" id="nidA45"></a>C(?x) -&gt; A(?x) &#8744; B(?x) &nbsp;&nbsp; <a class="nid" title="A45" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidA45">(A45)</a></li>
</ul>
<p><a name="nidA46" id="nidA46"></a>matches individuals of class <tt>C</tt>, should those inviduals be classified as members of class <tt>A</tt> or <tt>B</tt>, or both? &nbsp;&nbsp; <a class="nid" title="A46" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidA46">(A46)</a></p>
<p><a name="nidA47" id="nidA47"></a>However, a form of single rule logical disjunction is supported with the use of OWL class union descriptions in rules. The rule &nbsp;&nbsp; <a class="nid" title="A47" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidA47">(A47)</a></p>
<ul>
<li><a name="nidA48" id="nidA48"></a>(A &#8746; B)(?x) -&gt; C(?x) &nbsp;&nbsp; <a class="nid" title="A48" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidA48">(A48)</a></li>
</ul>
<p><a name="nidA49" id="nidA49"></a>will classify any individuals that are instances of classes <tt>A</tt> or <tt>B</tt> as instances of class <tt>C</tt>. &nbsp;&nbsp; <a class="nid" title="A49" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidA49">(A49)</a></p>
<h4><a name="nid9TS" id="nid9TS"></a>Does SWRL support OWL Full? &nbsp;&nbsp; <a class="nid" title="9TS" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid9TS">(9TS)</a></h4>
<p><a name="nidA5K" id="nidA5K"></a>Not directly. SWRL's semantics are based on OWL DL so it SWRL does not support direct reasoning about classes or properties. OWL Full constructs, such as classes as property values, are not supported by the language.  One cannot write a rule that, for example, deduced some new knowledge based on the fact that one class is a direct subclass of another. For the same reason, RDF or RDFS constructs, or OWL constructs such as <tt>owl:Class</tt> or <tt>owl:DatatypeProperty</tt>, can not be used in rules. &nbsp;&nbsp; <a class="nid" title="A5K" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidA5K">(A5K)</a></p>
<p><a name="nidALN" id="nidALN"></a>The SWRLTab's implementation of SWRL has two custom extensions that allow some limited support for interacting with with OWL Full ontologies. (1)  <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabSyntax#nidAKP" class="extlink">The SWRLTab's built-in implementation</a> supports the use OWL class names, property names, individual names, and XSD types as built-in arguments. With these extensions, built-ins can be defined that support OWL Full operations. For example, the SWRLTab provides a library  that contains <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTBoxBuiltIns" class="extlink">TBox built-ins</a>. (2) <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabSyntax#nidALC" class="extlink">The SWRLTab's implementation of SWRL individual property atoms</a> allows the use of class values as the range of a property, thus supporting OWL Full's classes as values. &nbsp;&nbsp; <a class="nid" title="ALN" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidALN">(ALN)</a></p>
<p><a name="nidALO" id="nidALO"></a>It should be noted that the formal guarantees provides by OWL and SWRL may be lost if these extensions are used to deduce new knowledge. Ideally, such built-ins should only be used for ontology querying. In the SWRLTab, for example, these built-ins libraries were designed to be used with the <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SQWRL" class="extlink">SQWRL</a> query language. &nbsp;&nbsp; <a class="nid" title="ALO" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidALO">(ALO)</a></p>
<h4><a name="nidA5M" id="nidA5M"></a>Does SWRL support RDF or RDFS? &nbsp;&nbsp; <a class="nid" title="A5M" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidA5M">(A5M)</a></h4>
<p><a name="nidA5N" id="nidA5N"></a>No. SWRL is based is based on OWL DL and does not support RDF or RDFS. For example, RDFS class instances or RDF property relationships can not be reasoned with by SWRL rules. Also, RDF terms, such as <tt>rdfs:Class</tt> or <tt>rdf:type</tt>, can not be used. &nbsp;&nbsp; <a class="nid" title="A5N" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidA5N">(A5N)</a></p>
<p><a name="nidA5O" id="nidA5O"></a>However, RDF operations are possible in SWRL built-in libraries. The SWRLTab, for example, provides an <a href="http://protege.cim3.net/cgi-bin/wiki.pl?RDFBuiltIns" class="extlink">RDF built-in library</a> that supports RDF and RDFS operations. However, the same caveat that applies to <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidA5L" class="extlink">the use of built-ins to support OWL Full</a> in rules should be noted: rules written using these built-ins do not have the formal guarantees provided by OWL and SWRL. &nbsp;&nbsp; <a class="nid" title="A5O" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidA5O">(A5O)</a></p>
<p><a name="nidA5Q" id="nidA5Q"></a>Also, some RDF/RDFS ontologies can be converted to OWL. For example, standard RDFS constructs, such as <tt>rdfs:Class</tt>, <tt>rdfs:subClassOf</tt> and the like, can be mapped correctly to corresponding OWL constructs. Protege-OWL, for example, has a straightforward <a href="http://protege.cim3.net/cgi-bin/wiki.pl?UsageTipsAndTricks#nidA5E" class="extlink">conversion mechanism</a>. &nbsp;&nbsp; <a class="nid" title="A5Q" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidA5Q">(A5Q)</a></p>
<h4><a name="nid9W2" id="nid9W2"></a>Where are SWRL's Formal Semantics Defined? &nbsp;&nbsp; <a class="nid" title="9W2" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid9W2">(9W2)</a></h4>
<p><a name="nid9U2" id="nid9U2"></a>SWRL's model-theoretic semantics are defined in the <a href="http://www.w3.org/Submission/2004/SUBM-SWRL-20040521/" class="extlink">SWRL Submission</a>. SWRL is built on OWL DL and provides more expressivity than OWL DL alone. However, it shares its formal semantics: conclusions reached by SWRL rules have the same formal guarantees as the conclusions reached using standard OWL constructs. SWRL's additional expressivity comes at the expense of <a href="http://en.wikipedia.org/wiki/Decidability_(logic" class="extlink">) decidability</a>. That is, while OWL reasoners are guaranteed to terminate when classifying an OWL ontology, inference with SWRL rules is not. &nbsp;&nbsp; <a class="nid" title="9U2" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid9U2">(9U2)</a></p>
<h4><a name="nid9U3" id="nid9U3"></a>When should I use SWRL? &nbsp;&nbsp; <a class="nid" title="9U3" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid9U3">(9U3)</a></h4>
<p><a name="nidA5R" id="nidA5R"></a>As mentioned above, SWRL is built on OWL DL and shares its formal semantics. It is more expressive than OWL DL alone but this additional expressivity comes at the expense of decidability. However, depending on the underlying inference engine and the nature of a particular ontology and associated SWRL rules, the decidability caveat may have more theoretical than practical implications. As a general point, however, one should aim to stay within OWL if possible and only use SWRL when its additional expressive power is required. &nbsp;&nbsp; <a class="nid" title="A5R" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidA5R">(A5R)</a></p>
<h4><a name="nid9VC" id="nid9VC"></a>What are DL-Safe SWRL Rules? &nbsp;&nbsp; <a class="nid" title="9VC" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid9VC">(9VC)</a></h4>
<p><a name="nid9VT" id="nid9VT"></a>DL-Safe SWRL rules are a restricted subset of SWRL rules. These rules have the desirable property of decidability. Decidability is ensured by restricting rules to operate only on known individuals in an OWL ontology. More precisely, all variables in a DL-Safe SWRL rule bind only to known individuals in an ontology. For complex reasons (see <a href="http://www.comlab.ox.ac.uk/people/boris.motik/pubs/mss04dl-safe.pdf" class="extlink">here</a>, for example), the ability to bind to individuals that are not known causes undecidability. Restricting rules to only bind known individuals has <a href="http://www.comlab.ox.ac.uk/people/boris.motik/pubs/mss04dl-safe.pdf" class="extlink">been proven</a> to ensure decidability. &nbsp;&nbsp; <a class="nid" title="9VT" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid9VT">(9VT)</a></p>
<p><a name="nid9VJ" id="nid9VJ"></a>It may not be immediately obvious why variables in a SWRL rule would ever bind to anything other than known individuals. However, SWRL rules are not 'standalone' - they are a sort of OWL axiom and interact with other OWL axioms in an ontology. &nbsp;&nbsp; <a class="nid" title="9VJ" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid9VJ">(9VJ)</a></p>
<p><a name="nid9VE" id="nid9VE"></a>Consider, for example, the following rule: &nbsp;&nbsp; <a class="nid" title="9VE" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid9VE">(9VE)</a></p>
<ul>
<li><a name="nid9VF" id="nid9VF"></a>Vehicle(?v) ^ Motor(?m) ^ hasMotor(?v, ?m) -&gt; MotorizedVehicle(?v) &nbsp;&nbsp; <a class="nid" title="9VF" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid9VF">(9VF)</a></li>
</ul>
<p><a name="nid9VN" id="nid9VN"></a>which classifies a vehicle as a motorized vehicle if it has a motor. Clearly, this rule will classify any individual of class <tt>Vehicle</tt> as a <tt>MotorizedVehicle</tt> if it has an associated <tt>hasMotor</tt> property with an individual of class <tt>Motor</tt> as a value. &nbsp;&nbsp; <a class="nid" title="9VN" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid9VN">(9VN)</a></p>
<p><a name="nid9W0" id="nid9W0"></a>Assume we now define a subclass of <tt>Vehicle</tt> called <tt>Car</tt> with the associated restriction <tt>(hasMotor some Motor)</tt> and define a single individual of this class in our ontology. Since we have stated that the car has a motor, we would expect that the car individual would be classified as a motorized vehicle. However, since there is no specific motor declared for the <tt>hasMotor</tt> property in the ontology (only the statement that it has some motor), a DL-safe implementation of a SWRL reasoner would <i>not</i> infer that the car is a <tt>MotorizedVehicle</tt>. Doing so would
mean that the variable <tt>m</tt> in the rule be bound to an individual that is not explicitly known. &nbsp;&nbsp; <a class="nid" title="9W0" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid9W0">(9W0)</a></p>
<p><a name="nid9W1" id="nid9W1"></a>There are many other situations in which variables in SWRL rules could bind to individuals that are not known. &nbsp;&nbsp; <a class="nid" title="9W1" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid9W1">(9W1)</a></p>
<p><a name="nidBOX" id="nidBOX"></a>Clearly, DL-safety restricts the expressive power of SWRL somewhat. DL-Safe rules may produce incomplete inferences - that is, they may not generate all the deduction that are entailed by a particular ontology. However, any deductions that are reached are formally sound. It is important to note DL-safety is achieved by restricting the inferences reached by a SWRL reasoner, not by restricting the authoring of the rules themselves - DL-safe rules look exactly like normal SWRL rules. &nbsp;&nbsp; <a class="nid" title="BOX" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBOX">(BOX)</a></p>
<p><a name="nidBOY" id="nidBOY"></a>Current OWL reasoners that support SWRL, such as, for example, <a href="http://pellet.owldl.com/" class="extlink">Pellet</a>, and <a href="http://kaon2.semanticweb.org/" class="extlink">KAON2</a>, implement DL-Safe SWRL rules only. The SWRLTab supports a form of de facto DL-Safety. The current Jess implementation <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab#nid6RH" class="extlink">ignores most OWL axioms</a> when performing inference and thus effectively binds variable to known individuals only. &nbsp;&nbsp; <a class="nid" title="BOY" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBOY">(BOY)</a></p>
<p><a name="nidA3S" id="nidA3S"></a>However, if built-ins are used that <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid8JR" class="extlink">bind their arguments</a> then rules may become undecidable. Consider, for example, the following rule: &nbsp;&nbsp; <a class="nid" title="A3S" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidA3S">(A3S)</a></p>
<p><a name="nidA3T" id="nidA3T"></a>Driver(?d) ^ hasAge(?d, ?age) ^ swrlb:add(?newage, ?age, 1) -&gt; hasAge(?d, ?newage) &nbsp;&nbsp; <a class="nid" title="A3T" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidA3T">(A3T)</a></p>
<p><a name="nidA3U" id="nidA3U"></a>At first sight, this rule appears to increment a driver's age by one. However, <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid9L7" class="extlink">as discussed above</a>, SWRL's inference is monotonic so instead than modifying a driver's age this rule generates an infinite number of ages for a driver, each age one greater than the previous age. Inference with this rule will never terminate. &nbsp;&nbsp; <a class="nid" title="A3U" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidA3U">(A3U)</a></p>
<h4><a name="nidALR" id="nidALR"></a>Does SWRL support the use of annotation values to refer to OWL entities? &nbsp;&nbsp; <a class="nid" title="ALR" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidALR">(ALR)</a></h4>
<p><a name="nidALS" id="nidALS"></a>By default, named OWL entities (i.e., classes, properties, and individuals) are referred to directly in rules using their underlying OWL name (as stored in the <tt>rdf:ID</tt> or <tt>rdf:About</tt> attributes in OWL's RDF serialization, for example). In many OWL ontologies, however, this name is not meaningful and instead the values of annotation properties (e.g., <tt>rdfs:label</tt>) contain a user-friendly name. These annotation values can be used in rules by enclosing them in single quotes. &nbsp;&nbsp; <a class="nid" title="ALS" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidALS">(ALS)</a></p>
<p><a name="nidALT" id="nidALT"></a>Assume, for example, the the class <tt>Driver</tt> has a selected annotation property value of 'a Driver'. The previous rule could then be written: &nbsp;&nbsp; <a class="nid" title="ALT" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidALT">(ALT)</a></p>
<p><a name="nidAMB" id="nidAMB"></a>'a Driver'(?d) ^ hasAge(?d, ?age) ... &nbsp;&nbsp; <a class="nid" title="AMB" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidAMB">(AMB)</a></p>
<p><a name="nidAM9" id="nidAM9"></a>The approach is the same when referring to both properties and individuals using annotation values. &nbsp;&nbsp; <a class="nid" title="AM9" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidAM9">(AM9)</a></p>
<p><a name="nidAMH" id="nidAMH"></a>One caveat is that, unlikely OWL entity names, annotation values are not necessarily unique. Annotation values that refer to more than one OWL entity can thus not be used in rules. Either the values should be made unique (which they probably should be in any case) or the underlying entity name should be used. &nbsp;&nbsp; <a class="nid" title="AMH" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidAMH">(AMH)</a></p>
<p><a name="nidAMF" id="nidAMF"></a>The appropriate user-visible annotation value is typically specified per entity at the tool level and the tool's SWRL editor component will be responsible for supporting the display and editing of the selected annotation. If the selected annotation for an entity is later changed to an alternate one (or if the annotation is unselected and the entity name reverts to the default underlying name) the editor should present the new value. The underlying representation remains the same irrespective of what annotation is used. A description of how the SWRLTab's implementation of SWRL deals with annotation values can be found <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTabSyntax#nidALV" class="extlink">here</a>. &nbsp;&nbsp; <a class="nid" title="AMF" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidAMF">(AMF)</a></p>
<h4><a name="nidBEA" id="nidBEA"></a>How do I debug SWRL Rules? &nbsp;&nbsp; <a class="nid" title="BEA" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBEA">(BEA)</a></h4>
<p><a name="nidBEB" id="nidBEB"></a>SWRL rule bases can be difficult to debug because exploring the potentially complex dependencies between rules can be cumbersome.
In the SWRLTab, <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SQWRL" class="extlink">SQWRL</a> can be used to facilitate this type of debugging.
Because SQWRL is based on SWRL and effectively uses a SWRL rule antecedent as a retrieval specification for a query, it can be used to examine the values of variables used in a rule. &nbsp;&nbsp; <a class="nid" title="BEB" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBEB">(BEB)</a></p>
<p><a name="nidBEC" id="nidBEC"></a>For example, the rule: &nbsp;&nbsp; <a class="nid" title="BEC" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBEC">(BEC)</a></p>
<ul>
<li><a name="nid8D5" id="nid8D5"></a>Person(?p) ^ hasAge(?p, ?age) ^ swrlb:greaterThan(?age, 17) -&gt; Adult(?p) &nbsp;&nbsp; <a class="nid" title="8D5" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nid8D5">(8D5)</a></li>
</ul>
<p><a name="nidBED" id="nidBED"></a>can be easily turned in to a SQWRL query by replacing its consequent: &nbsp;&nbsp; <a class="nid" title="BED" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBED">(BED)</a></p>
<ul>
<li><a name="nidBEE" id="nidBEE"></a>Person(?p) ^ hasAge(?p, ?age) ^ swrlb:greaterThan(?age, 17) -&gt; sqwrl:select(?p, ?age) &nbsp;&nbsp; <a class="nid" title="BEE" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBEE">(BEE)</a></li>
</ul>
<p><a name="nidBEF" id="nidBEF"></a>These queries can then be executed in the <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SQWRLQueryTab" class="wikiword">SQWRLQueryTab</a>.
The <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLEditorFAQ" class="extlink">SWRL Editor</a> has a rule clone function that can be used to generate copies of rules to be converted to queries. &nbsp;&nbsp; <a class="nid" title="BEF" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBEF">(BEF)</a></p>
<p><a name="nidBEG" id="nidBEG"></a>Another alternative is to simply add a <tt>sqwrl:select</tt> clause at the end of a rule: &nbsp;&nbsp; <a class="nid" title="BEG" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBEG">(BEG)</a></p>
<ul>
<li><a name="nidBEH" id="nidBEH"></a>Person(?p) ^ hasAge(?p, ?age) ^ swrlb:greaterThan(?age, 17) -&gt; Adult(?p) ^ sqwrl:select(?p, ?age) &nbsp;&nbsp; <a class="nid" title="BEH" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBEH">(BEH)</a></li>
</ul>
<p><a name="nidBEI" id="nidBEI"></a>This query can again be executed in the <a href="http://protege.cim3.net/cgi-bin/wiki.pl?SQWRLQueryTab" class="wikiword">SQWRLQueryTab</a>.
The addition of SQWRL operators to a rule consequent has no effect on the semantics of the rule. &nbsp;&nbsp; <a class="nid" title="BEI" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBEI">(BEI)</a></p>
<p><a name="nidBOW" id="nidBOW"></a>Protege-OWL also contains the <a href="http://protegewiki.stanford.edu/index.php/Axiom%C3%A9" class="extlink">Axiome Rule Management Plugin</a>, which can be used for SWRL rule base debugging. &nbsp;&nbsp; <a class="nid" title="BOW" href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ#nidBOW">(BOW)</a></p>
]]>
</description>
<dc:creator>49269</dc:creator>
</item>

</rdf:RDF>