https://protegewiki.stanford.edu/api.php?action=feedcontributions&user=TaniaTudorache&feedformat=atomProtege Wiki - User contributions [en]2024-03-19T12:33:12ZUser contributionsMediaWiki 1.27.7https://protegewiki.stanford.edu/index.php?title=OWLViz&diff=13758OWLViz2019-03-29T22:46:37Z<p>TaniaTudorache: added installation info for Protege 5.5.0</p>
<hr />
<div>{{Plugin<br />
|Description=Enables class hierarchies in an OWL ontology to be viewed and incrementally navigated, allowing comparison of the asserted class hierarchy and the inferred class hierarchy.<br />
|PluginType=Tab Widget<br />
|ForApplication1=Protege-OWL<br />
|Screenshot=OwlViz.jpg<br />
|HomepageURL=http://www.co-ode.org/downloads/plugins-3.x.php<br />
|DeveloperID1=Matthew Horridge<br />
|LastUpdated=March 4, 2010<br />
|Topic1=Visualization<br />
|License=LGPL<br />
|Affiliation1=The University Of Manchester<br />
|Affiliation2=The CO-ODE Project<br />
}}<br />
<div style="float:left;"><br />
== More Details ==<br />
<br />
=== Description ===<br />
OWLViz is designed to be used with the [http://protege.stanford.edu/overview/protege-owl.html Protege-OWL editor]. It enables class hierarchies in an OWL Ontology to be viewed and incrementally navigated, allowing comparison of the asserted class hierarchy and the inferred class hierarchy. OWLViz integrates with the Protege-OWL editor, using the same color scheme so that primitive and defined classes can be distinguished, computed changes to the class hierarchy may be clearly seen, and inconsistent concepts are highlighted in red. OWLViz has the facility to save both the asserted and inferred views of the class hierarchy to various concrete graphics formats including PNG, JPEG, and SVG.<br />
<br />
=== Installation ===<br />
OWLViz is bundled with the [http://protege.stanford.edu/download/download.html "full" installation of Protege]. After you have installed Protege, there are two additional steps you need to perform for this plugin to work properly:<br />
<br />
* [https://www.graphviz.org/download/ Download and install] a recent version of Graphviz, which is a free, open source graph visualization software from AT&T Research.<br />
<br />
* Protege will make an educated guess about where to find graphviz depending on your operating system, but if it does not get it right you will need to configure this yourself:<br />
<br />
** '''Protege 5.5.0 (and onwards)''' these settings are in the Preferences menu -> OWLViz. On MacOSX, install graphviz using Homebrew or Macport as suggested on the [https://www.graphviz.org/download/ GraphViz donwload page]. Then, no additional configuration is necessary, as graphviz (i.e., the ''dot'' executable) is installed in the default location where OWLViz will be able to find it.<br />
<br />
** '''Protege4.x (build 105 onwards)''' these settings have moved into the OWLViz preferences panel. Again, specify the path to the dot executable in the appropriate place.<br />
<br />
** '''Protege3.x''' and '''Protege4.0 (pre build 105)''' on the OWLViz tab, click the Options button to bring up the Options dialog. On the Layout Options panel, specify the path to the location of the DOT executable (dot.exe). The Options dialog will look something like the following, after performing this step:<br />
<br />
<br />
<br />
<br />
<br />
<br />
[[Image:OwlViz-configure-path-to-dot.jpg|frame|none|OWLViz Options dialog]]<br />
<br />
=== Documentation ===<br />
All of the OWLViz documentation is located on the [http://www.co-ode.org/ CO-ODE Website]. The [http://www.co-ode.org/downloads/owlviz/OWLVizGuide.pdf OWLVizGuide] is somewhat outdated, but still very helpful. Also, you may refer to the home pages for the OWLViz plugin for additional information:<br />
<br />
Home page for build 17 (Protege3.x): http://www.co-ode.org/downloads/owlviz/.<br /><br />
Home page for build 18 (Protege4.x): http://code.google.com/p/co-ode-owl-plugins/wiki/OWLViz.<br />
<br />
=== Level of Support ===<br />
OWLViz build 17, which is distributed with [[Protege-OWL 3.3.1]] is no longer under active development. If you need help with this version of OWLViz, please try posting your questions on the [http://mailman.stanford.edu/mailman/listinfo/protege-owl protege-owl mailing list], and someone from the Protege user community may be able to help you.<br />
<br />
OWLViz build 18, which is bundled with [[Protege-OWL 4.0]] is under active development and all comments, suggestions, and/or feature requests are appreciated! Please post questions and requests on the [http://mailman.stanford.edu/mailman/listinfo/p4-feedback p4-feedback mailing list].<br />
<br />
=== Troubleshooting ===<br />
<br />
==== Resolving the "An error related to DOT..." message ====<br />
<br />
Many people report the following error the first time they try to use the OWLViz plugin:<br />
<br />
<br />
[[Image:OwlViz-dot-error.jpg]]<br />
<br />
<br />
This error message indicates that<br />
<br />
a) you need to install Graphviz and/or<br />
<br />
b) you need to tell OWLViz where you installed Graphviz. <br />
<br />
Instructions for doing both of these things is located above in the [[OWLViz#Installation|Installation]] section.<br />
<br /><br /><br />
</div></div>TaniaTudorachehttps://protegewiki.stanford.edu/index.php?title=OWLViz_5.0.3&diff=13757OWLViz 5.0.32019-03-29T22:38:48Z<p>TaniaTudorache: Created page with "{{VersionOfPlugin |VersionOf=OWLViz |Number=5.0.2 |LastUpdate=05/17/2016 |File=https://github.com/protegeproject/owlviz/releases |CompatibleWith1=Protege 5.0.0 |Changelog=see ..."</p>
<hr />
<div>{{VersionOfPlugin<br />
|VersionOf=OWLViz<br />
|Number=5.0.2<br />
|LastUpdate=05/17/2016<br />
|File=https://github.com/protegeproject/owlviz/releases<br />
|CompatibleWith1=Protege 5.0.0<br />
|Changelog=see page for more details<br />
}}<br />
<br />
|free text=}}</div>TaniaTudorachehttps://protegewiki.stanford.edu/index.php?title=Protege_Desktop_Old_Versions&diff=13735Protege Desktop Old Versions2018-09-19T22:15:26Z<p>TaniaTudorache: </p>
<hr />
<div>__NOTOC__<br />
== Protege Desktop Older Versions ==<br />
This page contains download links and a historical record of release notes for older versions of Protege Desktop.<br />
<br />
'''If you're interested in downloading Protege Desktop, please note that the most current version is [http://protege.stanford.edu/products.php#desktop-protege available for download] from the main Protege website.'''<br />
<br />
''See Also:'' [[WebProtegeReleaseNotes|WebProtege release notes]]<br />
<br />
<br />
__TOC__<br />
<br />
<br />
=== Protege 5 ===<br />
{|style="border-spacing: 0; border-width: 1px; border-style: solid; border-color: #bfbcb5;" width="65%" cellpadding="3" id="protege_release_notes"<br />
|-<br />
!Version<br />
!Release notes<br />
!Release date<br />
!Download<br />
|-<br />
|5.2.0 <br />
|[https://github.com/protegeproject/protege-distribution/releases/tag/v5.2.0 release notes]<br />
|2017-Mar-15<br />
|[https://github.com/protegeproject/protege-distribution/releases/tag/v5.2.0#downloads downloads]<br />
|-<br />
|5.1.0 <br />
|[https://github.com/protegeproject/protege-distribution/releases/tag/v5.1.0 release notes]<br />
|2016-Oct-11<br />
|[https://github.com/protegeproject/protege-distribution/releases/tag/v5.1.0#downloads downloads]<br />
|-<br />
|5.0.0 <br />
|[https://github.com/protegeproject/protege-distribution/releases/tag/protege-5.0.0 release notes]<br />
|2016-May-24<br />
|[https://github.com/protegeproject/protege-distribution/releases/tag/protege-5.0.0#downloads downloads]<br />
|-<br />
|5.0 RC2<br />
|[https://github.com/protegeproject/protege-distribution/releases/tag/protege-5.0.0-RC2 release notes]<br />
|2016-May-18<br />
|[https://github.com/protegeproject/protege-distribution/releases/tag/protege-5.0.0-RC2 downloads]<br />
|-<br />
|5.0 RC1<br />
|[https://github.com/protegeproject/protege-distribution/releases/tag/protege-5.0.0-RC1 release notes]<br />
|2016-May-4<br />
|[https://github.com/protegeproject/protege-distribution/releases/tag/protege-5.0.0-RC1 downloads]<br />
|-<br />
|5.0 beta 24<br />
|[https://github.com/protegeproject/protege-distribution/releases/tag/protege-5.0.0-beta-24 release notes]<br />
|2016-Mar-18<br />
|[https://github.com/protegeproject/protege-distribution/releases/tag/protege-5.0.0-beta-24 downloads]<br />
|-<br />
|5.0 beta 23<br />
|[https://github.com/protegeproject/protege-distribution/releases/tag/protege-5.0.0-beta-23 release notes]<br />
|2016-Feb-17<br />
|[https://github.com/protegeproject/protege-distribution/releases/tag/protege-5.0.0-beta-23 downloads]<br />
|-<br />
|5.0 beta 21<br />
|[https://github.com/protegeproject/protege-distribution/releases/tag/protege-5.0.0-beta-21 release notes]<br />
|2015-Dec-18<br />
|[https://github.com/protegeproject/protege-distribution/releases/tag/protege-5.0.0-beta-21 downloads]<br />
|-<br />
|5.0 beta 17<br />
|[https://github.com/protegeproject/protege/releases/tag/protege-parent-5.0.0-beta-17 release notes]<br />
|2015-Mar-17<br />
|[https://github.com/protegeproject/protege/releases/tag/protege-parent-5.0.0-beta-17 downloads]<br />
|-<br />
|5.0 beta 16<br />
|[https://github.com/protegeproject/protege/releases/tag/protege-parent-5.0.0-beta-16 release notes]<br />
|2015-Mar-10<br />
|[https://github.com/protegeproject/protege/releases/download/protege-parent-5.0.0-beta-16/Protege-5.0.0-beta-16.zip zip]<br />
|-<br />
|5.0 beta 15<br />
|[[Protege_5.0_Beta_Release_Notes|release notes]]<br />
|2014-Jun-9<br />
|[http://protege.stanford.edu/download/protege/5.0/binaries/protege-5.0.0-beta-15.zip zip], [http://protege.stanford.edu/download/protege/5.0/binaries/protege-5.0.0-beta-15.tar.gz tar.gz]<br />
|}<br />
<br />
=== Protege 4 ===<br />
{|style="border-spacing: 0; border-width: 1px; border-style: solid; border-color: #bfbcb5;" width="65%" cellpadding="3" id="protege_release_notes"<br />
|-<br />
!Version<br />
!Release notes<br />
!Release date<br />
!Download<br />
|-<br />
|4.3<br />
|[[P4_3_Release_Announcement|release notes]]<br />
|2013-Apr-15<br />
|[http://protege.stanford.edu/download/protege/4.3/ download]<br />
|-<br />
|4.2<br />
|[[P4_2_Release_Announcement|release notes]]<br />
|2013-Mar-18<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%204.x/4.2/ download]<br />
|-<br />
|4.2 rc1<br />
|[[Protege_4.2_RC1_Release_Notes|release notes]]<br />
|2013-Feb-21<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%204.x/4.2%20release%20candidates/4.2%20rc1/ download]<br />
|-<br />
|4.2 beta builds<br />
|[[Protege_4.2_Beta_Release_Notes|release notes]]<br />
|&nbsp;<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%204.x/4.2%20betas/ download]<br />
|-<br />
|4.2 alpha builds<br />
|[[Protege_4.2_Alpha_Release_Notes|release notes]]<br />
|&nbsp;<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%204.x/4.2%20alphas/ download]<br />
|-<br />
|4.1<br />
|[[P4_1_Release_Announcement|release notes]]<br />
|2011-July-26<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%204.x/4.1/ download]<br />
|-<br />
|4.1 rc5<br />
|[[Protege 4.1 RC5 Release Notes|release notes]]<br />
|2011-July-5<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%204.x/4.1%20release%20candidates/4.1%20rc5/Web_Installers/ download]<br />
|-<br />
|4.1 rc4<br />
|[[Protege 4.1 RC4 Release Notes|release notes]]<br />
|2011-May-23<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%204.x/4.1%20release%20candidates/4.1%20rc4/Web_Installers/ download]<br />
|-<br />
|4.1 rc3<br />
|[[Protege 4.1 RC3 Release Notes|release notes]]<br />
|2011-May-17<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%204.x/4.1%20release%20candidates/4.1%20rc3/Web_Installers/ download]<br />
|-<br />
|4.1 rc2<br />
|[[Protege 4.1 RC2 Release Notes|release notes]]<br />
|2011-May-10<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%204.x/4.1%20release%20candidates/4.1%20rc2/Web_Installers/ download]<br />
|-<br />
|4.1 rc1<br />
|[[Protege 4.1 RC1 Release Notes|release notes]]<br />
|2011-Apr-27<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%204.x/4.1%20release%20candidates/4.1%20rc1/Web_Installers/ download]<br />
|-<br />
|4.1 beta builds<br />
|[[Protege 4.1 Beta Release Notes|release notes]]<br />
|&nbsp;<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%204.x/4.1%20betas/ download]<br />
|-<br />
|4.1 alpha builds<br />
|[[Protege 4.1 Alpha Release Notes|release notes]]<br />
|&nbsp;<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%204.x/4.1%20alphas/ download]<br />
|-<br />
|4.0.2<br />
|[[Protege 4.0.2 Release Notes|release notes]]<br />
|2009-Dec-03<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%204.x/4.0.2/ download]<br />
|-<br />
|4.0.1<br />
|[[Protege 4.0.1 Release Notes|release notes]]<br />
|2009-Oct-28<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%204.x/4.0.1/ download]<br />
|-<br />
|4.0<br />
|[[P4 Release Announcement|release notes]]<br />
|2009-Jun-16<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%204.x/4.0/ download]<br />
|-<br />
|4.0 rc1<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%204.x/4.0%20rc1/_ReleaseNotes_4.0_RC1.html release notes]<br />
|2009-Jun-01<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%204.x/4.0%20release%20candidates/4.0%20rc1/ download]<br />
|-<br />
|4.0 beta builds<br />
|[[Protege 4 beta announcement|initial beta announcement]], [http://protege.stanford.edu/download/protege/old-releases/Protege%204.x/4.0%20betas/_ReleaseNotes_4.0_Betas.html release notes]<br />
|&nbsp;<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%204.x/4.0%20betas/ download]<br />
|-<br />
|4.0 alpha builds<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%204.x/4.0%20alphas/_ReleaseNotes_4.0_Alphas.html release notes]<br />
|&nbsp;<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%204.x/4.0%20alphas/ download]<br />
|}<br />
<br />
=== Protege 3 ===<br />
{|style="border-spacing: 0; border-width: 1px; border-style: solid; border-color: #bfbcb5;" width="65%" cellpadding="3" id="protege_release_notes"<br />
|-<br />
!Version<br />
!Release notes<br />
!Release date<br />
!Download<br />
|-<br />
|3.5<br />
|[[Protege_3.5_Release_Notes|release notes]]<br />
|2013-Apr-24<br />
|[http://protege.stanford.edu/download/protege/3.5/installanywhere/Web_Installers/ download], [http://protege.stanford.edu/download/protege/3.5/zip/Protege_3.5.zip zip]<br />
|-<br />
|3.5 beta builds<br />
|[[Protege_3.5_Beta_Release_Notes|release notes]]<br />
|<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%203.x/3.5%20betas/ download]<br />
|-<br />
|3.5 alpha builds<br />
|[[Protege_3.5_Beta_Release_Notes|release notes]]<br />
|<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%203.x/3.5%20alphas/ download]<br />
|-<br />
|3.4.8<br />
|[[Protege_3.4.8_Release_Notes|release notes]]<br />
|2012-Jan-12<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%203.x/3.4.8/ download]<br />
|-<br />
|3.4.7<br />
|[[Protege_3.4.7_Release_Notes|release notes]]<br />
|2011-Jul-15<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%203.x/3.4.7/ download]<br />
|-<br />
|3.4.6<br />
|[[Protege_3.4.6_Release_Notes|release notes]]<br />
|2011-Apr-25<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%203.x/3.4.6/ download]<br />
|-<br />
|3.4.5<br />
|[[Protege_3.4.5_Release_Notes|release notes]]<br />
|2011-Mar-11<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%203.x/3.4.5/ download]<br />
|-<br />
|3.4.4<br />
|[[Protege_3.4.4_Release_Notes|release notes]]<br />
|2010-Mar-08<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%203.x/3.4.4/ download]<br />
|-<br />
|3.4.3<br />
|[[Protege_3.4.3_Release_Notes|release notes]]<br />
|2010-Feb-03<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%203.x/3.4.3/ download]<br />
|-<br />
|3.4.2<br />
|[[Protege_3.4.2_Release_Notes|release notes]]<br />
|2009-Dec-16<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%203.x/3.4.2/ download]<br />
|-<br />
|3.4.1<br />
|[http://mailman.stanford.edu/pipermail/protege-users/2009/000031.html release notes]<br />
|2009-Jun-18<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%203.x/3.4.1/ download]<br />
|-<br />
|3.4<br />
|[http://protege.stanford.edu/protege/3.4/webnotes/ReleaseNotes.html release notes]<br />
|2009-Mar-16<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%203.x/3.4/ download]<br />
|-<br />
|3.3.1<br />
|[http://mailman.stanford.edu/pipermail/protege-users/2007/000015.html release notes]<br />
|2007-Aug-24<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%203.x/3.3.1/ download]<br />
|-<br />
|3.3<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%203.x/3.3/_ReleaseNotes_3.3.html release notes]<br />
|2007-Jul-06<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%203.x/3.3/ download]<br />
|-<br />
|3.2.1<br />
|[http://mailman.stanford.edu/pipermail/protege-owl/2006-December/000977.html release notes]<br />
|2006-Dec-20<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%203.x/3.2.1/ download]<br />
|-<br />
|3.2<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%203.x/3.2/_ReleaseNotes_3.2.html release notes]<br />
|2006-Nov-07<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%203.x/3.2/ download]<br />
|-<br />
|3.1.1<br />
|&nbsp;<br />
|2005-Aug-10<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%203.x/3.1.1/ download]<br />
|-<br />
|3.1<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%203.x/3.1/_ReleaseNotes_3.1.html release notes]<br />
|2005-Jul-08<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%203.x/3.1/ download]<br />
|-<br />
|3.0<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%203.x/3.0/_ReleaseNotes_3.0.html release notes]<br />
|2005-Feb-04<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%203.x/3.0/ download]<br />
|}<br />
<br />
=== Protege 2 ===<br />
{|style="border-spacing: 0; border-width: 1px; border-style: solid; border-color: #bfbcb5;" width="65%" cellpadding="3" id="protege_release_notes"<br />
|-<br />
!Version<br />
!Release notes<br />
!Release date<br />
!Download<br />
|-<br />
|2.1.2<br />
|[http://article.gmane.org/gmane.comp.misc.ontology.protege.owl/5615 release notes]<br />
|2004-Aug-04<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%202.x/2.1.2/ download]<br />
|-<br />
|2.1.1<br />
|[http://article.gmane.org/gmane.comp.misc.ontology.protege.owl/4483 release notes]<br />
|2004-Jun-22<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%202.x/2.1.1/ download]<br />
|-<br />
|2.1<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%202.x/2.1/_ReleaseNotes_2.1.html release notes]<br />
|2004-Jun-11<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%202.x/2.1/ download]<br />
|-<br />
|2.0.1<br />
|[http://article.gmane.org/gmane.comp.misc.ontology.protege.general/4792 release notes]<br />
|2004-Feb-13<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%202.x/2.0.1/ download]<br />
|-<br />
|2.0<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%202.x/2.0/_ReleaseNotes_2.0.html release notes]<br />
|2004-Feb-04<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%202.x/2.0/ download]<br />
|}<br />
<br />
=== Protege 1 and earlier ===<br />
{|style="border-spacing: 0; border-width: 1px; border-style: solid; border-color: #bfbcb5;" width="65%" cellpadding="3" id="protege_release_notes"<br />
|-<br />
!Version<br />
!Release notes<br />
!Release date<br />
!Download<br />
|-<br />
|1.9<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%201.x/1.9/_ReleaseNotes_1.9.html release notes]<br />
|2003-Aug-08<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%201.x/1.9/ download]<br />
|-<br />
|1.8<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%201.x/1.8/_ReleaseNotes_1.8.html release notes]<br />
|2003-Apr-09<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%201.x/1.8/ download]<br />
|-<br />
|1.7<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%201.x/1.7/_ReleaseNotes_1.7.html release notes]<br />
|2002-Apr-10<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%201.x/1.7/ download]<br />
|-<br />
|1.6.2<br />
|&nbsp;<br />
|2001-Dec-20<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%201.x/1.6.2/ download]<br />
|-<br />
|1.6.1<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%201.x/1.6.2/_ReleaseNotes_1.6.1.html release notes]<br />
|2001-Oct-17<br />
|&nbsp;<br />
|-<br />
|1.6<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%201.x/1.6.2/_ReleaseNotes_1.6.html release notes]<br />
|2001-Oct-16<br />
|&nbsp;<br />
|-<br />
|1.4<br />
|&nbsp;<br />
|2000-Jul-12<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%201.x/1.4/ download]<br />
|-<br />
|1.3.4<br />
|&nbsp;<br />
|2000-Feb-02<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%201.x/1.3.4/ download]<br />
|-<br />
|1.2<br />
|&nbsp;<br />
|1999-Dec-23<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%201.x/1.2/ download]<br />
|-<br />
|1.1<br />
|&nbsp;<br />
|1999-Nov-11<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%201.x/1.1/ download]<br />
|-<br />
|1.0<br />
|&nbsp;<br />
|&nbsp;<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%201.x/1.0/ download]<br />
|-<br />
|0.91<br />
|&nbsp;<br />
|&nbsp;<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%200.x/0.91/ download]<br />
|-<br />
|0.9<br />
|&nbsp;<br />
|&nbsp;<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%200.x/0.9/ download]<br />
|-<br />
|0.8<br />
|&nbsp;<br />
|&nbsp;<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%200.x/0.8/ download]<br />
|-<br />
|0.7<br />
|&nbsp;<br />
|&nbsp;<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%200.x/0.7/ download]<br />
|}</div>TaniaTudorachehttps://protegewiki.stanford.edu/index.php?title=HowToCiteProtege&diff=13734HowToCiteProtege2018-08-15T04:09:40Z<p>TaniaTudorache: </p>
<hr />
<div>== How to Cite Protege ==<br />
<br />
<br />
Prot&eacute;g&eacute; is developed at the [http://bmir.stanford.edu/ Stanford Center for Biomedical Informatics Research (BMIR)] at the [http://med.stanford.edu/ Stanford University School of Medicine].<br />
<br />
Authors wishing to cite the Prot&eacute;g&eacute; project in scientific papers and communications should reference our Web site: [http://protege.stanford.edu http://protege.stanford.edu] and use the following reference citation for Protégé:<br />
<br />
<br />
Musen, M.A. [http://www.ncbi.nlm.nih.gov/pmc/articles/PMC4883684/ The Protégé project: A look back and a look forward]. AI Matters. Association of Computing Machinery Specific Interest Group in Artificial Intelligence, 1(4), June 2015. DOI: 10.1145/2557001.25757003.<br />
<br />
([https://dblp.uni-trier.de/rec/bibtex/journals/aimatters/Musen15 BibTex])<br />
<br />
<br />
<br />
We would be grateful if scientific publications resulting from projects that make use of Prot&eacute;g&eacute; would include the following sentence in the acknowledgments section: "This work was conducted using the Prot&eacute;g&eacute; resource, which is supported by grant GM10331601 from the National Institute of General Medical Sciences of the United States National Institutes of Health."</div>TaniaTudorachehttps://protegewiki.stanford.edu/index.php?title=HowToCiteProtege&diff=13733HowToCiteProtege2018-08-15T04:07:11Z<p>TaniaTudorache: </p>
<hr />
<div>== How to Cite Protege ==<br />
<br />
<br />
Prot&eacute;g&eacute; is developed at the [http://bmir.stanford.edu/ Stanford Center for Biomedical Informatics Research (BMIR)] at the [http://med.stanford.edu/ Stanford University School of Medicine].<br />
<br />
Authors wishing to cite the Prot&eacute;g&eacute; project in scientific papers and communications should reference our Web site: [http://protege.stanford.edu http://protege.stanford.edu]. <br />
<br />
<br />
Please use the following reference citation for Protégé:<br />
<br />
<br />
Musen, M.A. [http://www.ncbi.nlm.nih.gov/pmc/articles/PMC4883684/ The Protégé project: A look back and a look forward]. AI Matters. Association of Computing Machinery Specific Interest Group in Artificial Intelligence, 1(4), June 2015. DOI: 10.1145/2557001.25757003.<br />
<br />
([https://dblp.uni-trier.de/rec/bibtex/journals/aimatters/Musen15 BibTex])<br />
<br />
<br />
<br />
We would be grateful if scientific publications resulting from projects that make use of Prot&eacute;g&eacute; would include the following sentence in the acknowledgments section: "This work was conducted using the Prot&eacute;g&eacute; resource, which is supported by grant GM10331601 from the National Institute of General Medical Sciences of the United States National Institutes of Health."</div>TaniaTudorachehttps://protegewiki.stanford.edu/index.php?title=Protege_5_Development_Environment&diff=13604Protege 5 Development Environment2017-04-25T21:30:26Z<p>TaniaTudorache: </p>
<hr />
<div>= Introduction =<br />
<br />
The Protege 5 client server allows multiple Protege 5 clients (such as the desktop application) to browse and edit concurrently an ontology stored on a Protege 5 server.<br />
<br />
The Protege 5 client server works in a way similar to SVN (update, commit, resolve conflicts). The conflict resolution mechanism is pluggable. You can read more about the client-server implementation (as a generic OWL-API server) in [http://bmir.stanford.edu/publications/view.php/managing_change_an_ontology_version_control_system this paper]. Here is the first of several videos that I am going to make to demonstrate server features:<br />
<ul><br />
<li>[http://www.youtube.com/watch?v=x9L2CUQiRBo Protege OWL Client-Server Basics]</li><br />
</ul><br />
I have also created a new page [[Protege Server design]] to explain how the Protege Server works for the Protege developers.<br />
<br />
= Status =<br />
<br />
We are working on an alpha release. Most of the things that would block an alpha release are relatively easy to do. Here are some things that need doing:<br />
<ul><br />
<li> Figure out how to setup the Protege server as windows service. The startup scripts are now working on linux and on os x.</li><br />
<li> Develop a security policy for server access. We have a policy mechanism but it is not quite ready yet.</li><br />
<li> Don't expose passwords as plaintext. We can live with this for a bit and eventually use the fix in Protege 3.</li><br />
<li> Branching. This shouldn't be too difficult and we plan to permit branches to go across server boundaries (e.g. git-like).</li><br />
<li> Update backwards to a previous revision. The underlying server implementation now supports this but it has not yet been exposed. </li><br />
</ul><br />
Many things already work including<br />
<ul><br />
<li> Basic Client-Server interaction</li><br />
<li> Conflict management</li><br />
<li> Authentication (password is sent as plaintext)</li><br />
<li> Firewall compatibility</li><br />
<li> Extended sessions where a user logs out with uncommitted changes and commits them in a later session</li><br />
</ul><br />
<br />
= Setting Up the Protege 5 Server Development Environment =<br />
<br />
== Prerequisites ==<br />
<br />
* Java 6 or above. We test this with Oracles java more but openjdk should work.<br />
* Maven 2.<br />
* ant is nice as is some useful development environment such as Eclipse or IntelliJ.<br />
<br />
== Install and Run From Svn ==<br />
<br />
First checkout the development tree<br />
<pre><br />
svn checkout https://smi-protege.stanford.edu/repos/protege/protege4/libraries/org.protege.owl.server/trunk org.protege.owl.server<br />
cd org.protege.owl.server<br />
</pre><br />
To build the server and run the unit and integration tests type:<br />
<pre><br />
mvn verify<br />
</pre><br />
If you want to do this without running the tests type:<br />
<pre><br />
mvn verify -DskipTests<br />
</pre><br />
Note ''mvn package'' will build the main artifact ''target/org.protege.owl.server-*.jar''. In addition, ''mvn verify'' will build a working server in the <br />
''target/server/server-distribution'' directory. This working server is needed for the integration tests but is made even if the tests are not run.<br />
<br />
In addition to the maven lifecycle, this project has an ant build file to add some scripts that are not naturally part of the maven build lifecycle. The ant targets are<br />
* ''usage'' which will give a complete listing of the ant targets with some additional documentation.<br />
* ''run'' which will run the server, assuming that ''mvn verify'' has already been run. This server will listen for client requests on port 5100.<br />
* ''debug'' which will run the server as above but will allow debugging by waiting for a debugger to connect on port 8100. I believe that most reasonable ide's will have a facility for debugging in this manner and the eclipse capability can be configured with the menu ''Debug&rarr;Debug Configurations&rarr;Remote Java Application''. <br />
* ''install'' which will install the Protege server library into the copy of a Protege distribution pointed to by the PROTEGE_HOME environment variable. This target assumes that maven has been previously run with a lifecycle goal of ''package'' or better (e.g., ''verify'' works). In order for this to be useful, you will also need to install the protege client. The client installation is described below. Information about the PROTEGE_HOME environment variable and the Protege build scripts can be found [[ConfiguringAntBuildFiles|here]].<br />
The server that is started in this way is preconfigured with the following usernames and passwords:<br />
{| class="wikitable"<br />
| fergerson || ncbo<br />
|- <br />
| redmond || bicycle<br />
|-<br />
| vendetti || protege<br />
|- <br />
| guest || guest<br />
|}<br />
<br />
<br />
After installing a copy of the server library into PROTEGE_HOME, you may want to install the Protege client so that you can use Protege to connect to the server. To do this first checkout the client code:<br />
<pre><br />
svn checkout https://smi-protege.stanford.edu/repos/protege/protege4/plugins/org.protege.editor.owl.client/trunk org.protege.editor.owl.client<br />
</pre><br />
Then you can compile and install it as follows:<br />
<pre><br />
cd org.protege.editor.owl.client<br />
ant install<br />
</pre><br />
<br />
== Setting up Eclipse ==<br />
<br />
To configure the org.protege.owl.server project follow the following steps:<br />
# first check the project out from svn (e.g., ''svn checkout https://smi-protege.stanford.edu/repos/protege/protege4/libraries/org.protege.owl.server/trunk org.protege.owl.server''). This can be done using the eclipse tools but don't worry about how the project gets configured. Then, after making sure that the META-INF/MANIFEST.MF file has not been modified when eclipse checked out the org.protege.owl.server.<br />
# make the maven call ''mvn eclipse:clean eclipse:eclipse''.<br />
# in eclipse either refresh the org.protege.owl.server project, if it is already visible there, or import the project using the ''File&rarr;Import&rarr;Existing Projects Into Workspace'' menu.<br />
<br />
<br />
'''''This has changed and will be updated shortly.'''''<br />
<br />
<br />
To set up eclipse, <br />
<ol><br />
<li> run "ant install". This step ensures that the built sources will be included in the<br />
org.protege.owl.server project.</li><br />
<li> unzip the ide-eclipse.zip file.</li><br />
<li> start eclipse using protege.server as the workspace.</li><br />
<li>import the projects (File -> Import -> General -> Existing Projects Into Workspace).</li><br />
</ol><br />
<b>The next part doesn't work yet but should be coming soon.</b><br />
This eclipse workspace will come with a couple of runnables:<br />
<ul><br />
<li><b>Client</b> starts the Protege OWL Client.</li><br />
<li><b>Server</b> starts the Protege OWL Sever</li><br />
<li><b>ConnectToAntServer</b> connects to the "ant debug.server" script for debugging.</li><br />
</ul><br />
<br />
== Programatic access to the server ==<br />
<br />
Some of the key classes used to access the OWL server are:<br />
* the [https://smi-protege.stanford.edu/repos/protege/protege4/libraries/org.protege.owl.server/trunk/src/main/java/org/protege/owl/server/api/Client.java Client] which provides a low level api for server access. A Client object can also be used by classes such as the [https://smi-protege.stanford.edu/repos/protege/protege4/libraries/org.protege.owl.server/trunk/src/main/java/org/protege/owl/server/util/ClientUtilities.java ClientUtilities] to provide easy higher level operations such as uploading, downloading and updating ontologies.<br />
* the [https://smi-protege.stanford.edu/repos/protege/protege4/libraries/org.protege.owl.server/trunk/src/main/java/org/protege/owl/server/api/VersionedOntologyDocument.java VersionedOntologyDocument] is an object representing an open ontology corresponding to a server document at a particular document revision. An instantiation of the Client and VersionedOntologyDocument are sufficient to do many operations on a checked out ontology including update, commit and save.<br />
<br />
=== Connecting to the server programatically ===<br />
<br />
Connecting to the Protege server involves two steps, authentication and connection. Both the authentication protocol and the connection protocol are fully pluggable on the server, so the exact method of connecting to the server depends on how the server is configured. However currently we only support one authentication mechanism, a very simple username/password mechanism, and two connection protocols, the rmi protocol for accessing the server remotely and the local protocol for accessing a server running on the same jvm.<br />
<br />
==== Accessing the server through rmi ====<br />
<br />
Accessing the server with standard authentication and rmi can be done with the following steps:<br />
<pre><br />
String host = "171.65.32.14";<br />
int rmiPort = 4875;<br />
AuthToken tim = RMILoginUtility.login(host, rmiPort, "redmond", "troglodyte");<br />
RMIClient client = new RMIClient(tim, host, rmiPort);<br />
</pre><br />
The first step authenticates the user "redmond" on to a server running on the same machine but in a different process. This authentication step results in a AuthToken object (tim) that can then be used to connect to the server. The result of the above steps is an object that implements the [https://smi-protege.stanford.edu/repos/protege/protege4/libraries/org.protege.owl.server/trunk/src/main/java/org/protege/owl/server/api/Client.java Client] interface.<br />
<br />
==== Accessing the server from the same jvm ====<br />
<br />
The best way to access the server when running on the same jvm is to use a local transport. This transport bypasses all network protocols such as rmi and makes a direct connection to the server through java function calls. The manner in which the local transport object is obtained depends on how the server is started. The normal case will be the standard Protege server installation where the code accessing the server is run from a plugin. In this case the LocalTransport object can be obtained from [http://wiki.osgi.org/wiki/Declarative_Services OSGi declarative services]. An example of this approach can be found [https://smi-protege.stanford.edu/repos/protege/protege4/misc/examples/org.protege.owl.server.example/trunk here]. This example can be run by<br />
* checking out the project from the svn [https://smi-protege.stanford.edu/repos/protege/protege4/misc/examples/org.protege.owl.server.example/trunk location].<br />
* copying the local.properties.template to local.properties and changing the server.home to the appropriate location of the Protege server.<br />
* running ant install to install the plugin to the Protege server plugin directory.<br />
* (re)starting the Protege server so that it will pick up the new plugin.<br />
<br />
To obtain the LocalTransport object through declarative services, create a server component declaration like this [https://smi-protege.stanford.edu/repos/protege/protege4/misc/examples/org.protege.owl.server.example/trunk/OSGI-INF/example-component.xml one]:<br />
<pre><br />
<?xml version="1.0"?><br />
<scr:component name="org.protege.owl.server.example.component" <br />
immediate="true"<br />
xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0"><br />
<implementation class="org.protege.owl.server.example.EntryImpl"/><br />
<service><br />
<provide interface="org.protege.owl.server.example.Entry"/><br />
</service><br />
<reference name="LOCALTRANSPORT"<br />
interface="org.protege.owl.server.connect.local.LocalTransport"<br />
bind="initialise"<br />
cardinality="1..1"/><br />
</scr:component><br />
</pre><br />
This declaration tells OSGi declarative services that if it sees a new LocalTransport service then it should instantiate an EntryImpl class and send the new LocalTransport to the EntryImpl's initialise method.<br />
<br />
Once the LocalTransport object has been obtained, the client can easily be obtained after authenticating as follows:<br />
<pre><br />
AuthToken token = Authenticator.localLogin(transport, "redmond", "troglodyte");<br />
Client client = transport.getClient(token);<br />
</pre><br />
This client can be used just as any ordinary client. In the example plugin it is used to list the contents of the root directory of the server:<br />
<pre><br />
RemoteServerDirectory serverRoot = (RemoteServerDirectory) client.getServerDocument(localRoot);<br />
boolean isEmpty = true;<br />
for (RemoteServerDocument doc : client.list(serverRoot)) {<br />
logger.info("Found doc : " + doc);<br />
isEmpty = false;<br />
}<br />
if (isEmpty) {<br />
logger.info("Server root is empty");<br />
}<br />
</pre><br />
In a more realistic plugin, [https://smi-protege.stanford.edu/repos/protege/protege4/libraries/org.protege.owl.server.bioportal/trunk the bioportal import plugin] for instance, it is used to copy and update ontologies from the [http://bioportal.bioontology.org/ NCBO BioPortal] into a directory on the Protege server.<br />
<br />
<br />
Alternatively, if you start the server without OSGi (see [[#Starting the server manually|manual setup]]) then you can arrange to register the LocalTransport somehow so that classes that need it can find it.<br />
<br />
=== Navigating the server file system ===<br />
<br />
Documents on the Protege server are identified by an IRI. Thus for example, the root directory for the server at 171.65.32.14:4875 would look like this:<br />
<pre><br />
rmi-owl2-server://localhost:5100<br />
</pre><br />
This IRI can be construced programatically as follows:<br />
<pre><br />
String host = "171.65.32.14";<br />
int rmiPort = 4875;<br />
IRI serverIRI = IRI.create(RMIClient.SCHEME + "://" + host + ":" + rmiPort);<br />
</pre><br />
If you know the name for a server document (the root directory, for example, should always exist) then you can retrieve it directly:<br />
<pre><br />
client.getServerDocument(serverIRI);<br />
</pre><br />
This server document ([https://smi-protege.stanford.edu/repos/protege/protege4/libraries/org.protege.owl.server/trunk/src/main/java/org/protege/owl/server/api/RemoteOntologyDocument.java RemoteOntologyDocument]) can either be a directory ([https://smi-protege.stanford.edu/repos/protege/protege4/libraries/org.protege.owl.server/trunk/src/main/java/org/protege/owl/server/api/RemoteServerDirectory.java RemoteServerDirectory]) or an ontology document<br />
[https://smi-protege.stanford.edu/repos/protege/protege4/libraries/org.protege.owl.server/trunk/src/main/java/org/protege/owl/server/api/RemoteOntologyDocument.java RemoteOntologyDocument]). <br />
<br />
In particular, in the case of the server root directory, the server document is guaranteed to be a directory so it can be directly cast to that type. So if serverIRI represents the server root as described above then we can use the following code:<br />
<pre><br />
RemoteServerDirectory dir = (RemoteServerDirectory) client.getServerDocument(serverIRI);<br />
</pre><br />
The contents of a directory can then be listed:<br />
<pre><br />
for (RemoteServerDocument doc : client.list(dir)) {<br />
System.out.println("found: " + doc.getServerLocation());<br />
}<br />
</pre><br />
<br />
=== Uploading an ontology document to the server ===<br />
<br />
The pre-requisites for uploading an ontology to a Protege server are a valid client to the server and an open (e.g. instantiation of the OWL api OWLOntology interface) ontology. The [https://smi-protege.stanford.edu/repos/protege/protege4/libraries/org.protege.owl.server/trunk/src/main/java/org/protege/owl/server/util/ClientUtilities.java ClientUtilities] class provides a convenience method for uploading an ontology to the server and a typical invocation looks something like this:<br />
<pre><br />
VersionedOntologyDocument versionedOntology = ClientUtilities.createServerOntology(client, pizzaLocation, new ChangeMetaData("A tasty pizza"), ontology);<br />
</pre><br />
where <br />
* client is the [https://smi-protege.stanford.edu/repos/protege/protege4/libraries/org.protege.owl.server/trunk/src/main/java/org/protege/owl/server/api/Client.java Client]<br />
* pizzaLocation is an IRI for the ontology document on the server,<br />
* ChangeMetaData is a class containing a commit timestamp and a commit comment.<br />
* ontology is the ontology that you wish to save.<br />
<br />
=== Downloading an ontology document from the server ===<br />
<br />
Again the [https://smi-protege.stanford.edu/repos/protege/protege4/libraries/org.protege.owl.server/trunk/src/main/java/org/protege/owl/server/util/ClientUtilities.java ClientUtilities] class is the key. The ClientUtilities class has a loadOntology method that takes three arguments: a Client, an ontology manager and a RemoteOntologyDocument to be downloaded. The following code demonstrates how this works:<br />
<pre><br />
RemoteOntologyDocument doc = (RemoteOntologyDocument) client.getServerDocument(IRI.create(RMIClient.SCHEME + "://" + host + ":" + rmiPort <br />
+ "/Pizza.history"));<br />
VersionedOntologyDocument vont = ClientUtilities.loadOntology(client, OWLManager.createOWLOntologyManager(), doc);<br />
OWLOntology ontology = vont.getOntology();<br />
System.out.println("Axiom count = " + ontology.getAxiomCount());<br />
</pre><br />
The caller knows that there is a server-side ontology document representing the pizza ontology and requests a RemoteOntologyDocument pointing to that location.<br />
<br />
=== Saving a server ontology locally along with server metadata ===<br />
<br />
=== Loading a server ontology and server meta data from a local file ===<br />
<br />
=== Uploading an ontology onto the server ===<br />
<br />
== Extending the server with a plugin ==<br />
<br />
Here I will talk about the metaproject and server components.<br />
<br />
== Starting the server manually ==<br />
<br />
In its standard installation, the Protege server is automatically configured based on a configuration file using a [http://en.wikipedia.org/wiki/Dependency_injection dependency injection strategy]. However it is possible to start the server programmatically and this approach to starting and running the server is demonstrated in a [https://smi-protege.stanford.edu/repos/protege/protege4/libraries/org.protege.owl.server/trunk/src/test/java/org/protege/owl/server/DirectServerSetupTest.java unit test]. The key code in this test is the code that starts the server:<br />
<pre><br />
Server core = new ServerImpl(TestUtilities.ROOT_DIRECTORY, TestUtilities.CONFIGURATION_DIRECTORY);<br />
server = new Authenticator(new ConflictManager(core));<br />
<br />
List<ServerTransport> transports = new ArrayList<ServerTransport>();<br />
ServerTransport rmiTransport = new RMITransport(rmiPort, rmiPort);<br />
rmiTransport.start(server);<br />
transports.add(rmiTransport);<br />
localTransport = new LocalTransportImpl();<br />
localTransport.start(server);<br />
transports.add(localTransport);<br />
<br />
server.setTransports(transports);<br />
</pre><br />
The first two lines:<br />
<pre><br />
Server core = new ServerImpl(TestUtilities.ROOT_DIRECTORY, TestUtilities.CONFIGURATION_DIRECTORY);<br />
server = new Authenticator(new ConflictManager(core));<br />
</pre><br />
initialize a new server and configure two filters for the server which provide a simple authentication mechanism and basic conflict management.</div>TaniaTudorachehttps://protegewiki.stanford.edu/index.php?title=Install_Protege5_Mac&diff=13603Install Protege5 Mac2017-03-15T05:01:57Z<p>TaniaTudorache: </p>
<hr />
<div>= [[File:Mac-logo.jpg|50px]] Protege 5 Installation instructions for MacOSX =<br />
<br />
__TOC__<br />
<br />
<br />
'''[[Install_Protege5|Go to the main Protege 5 installation page]]'''<br />
<br />
<br />
Protege Desktop 5.x.y is distributed in the form of a ZIP file from the [http://protege.stanford.edu/products.php#desktop-protege main Protege website], and includes the 64-bit Java Runtime Environment (JRE). So, it is not necessary to have Java pre-installed on your computer to run Protege.<br />
<br />
== Download the ZIP file ==<br />
* Go to the [http://protege.stanford.edu/products.php#desktop-protege Products page] on the Protege website.<br />
* Click the "Download for Mac OSX" button to download the ZIP file to your machine.<br />
<br />
== Move Protege to Applications ==<br />
* Once the download completes, navigate to the folder where the ZIP file was downloaded. On a Mac, this will typically be your "Downloads" folder. Unpack it and you should see a Protege-5.x.y folder that contains the <code>Protégé.app</code>.<br />
<br />
* Drag the Protege_5.x.y folder to the Applications directory.<br />
<br />
Alternatively, you may also copy it to another folder (e.g., your own home folder).<br />
<br />
== Launch Protege ==<br />
To launch Protege Desktop, double-click the <code>Protégé.app</code> file in the root directory of the installation (<code>Applications/Protege_5.x.y</code>).<br />
<br />
== Allow Protege to run on macOS 10.12 (Sierra) and newer versions ==<br />
The first time you will try to run the <code>Protégé.app</code>, you will get a warning:<br />
<br />
[[File:MacOSXAppDamaged.png]]<br />
<br />
To fix this issue, start Spotlight (press Command + Space), type "terminal", and select the <code>Terminal</code> application:<br />
<br />
[[File:MacOSXStartTerminal.png|600px]]<br />
<br />
In the Terminal, type:<br />
<br />
<pre><br />
sudo xattr -cr /Applications/Protege-5.x.y/Protégé.app<br />
</pre><br />
<br />
(replace x.y with the Protege version number)<br />
<br />
The prompt will ask for your password:<br />
<br />
[[File:MacOSXxattr.png]]<br />
<br />
The next time you will start the Protege.app, you will not get the warning anymore.<br />
<br />
You can find [https://www.youtube.com/watch?v=6FF1c_7lnGo here] a short screencast that shows these steps for a generic application.<br />
<br />
== Allow Protege to run on OS X 10.11 (El Capitan) and earlier versions ==<br />
The first time you will try to run the <code>Protégé.app</code>, you may get a warning:<br />
<br />
[[File:MacOXWarningProtegeApp.png]]<br />
<br />
If you get this warning, it means that your Mac's security setting doesn't allow unidentified software to run. There are several ways to allow an exception to the rule.The simplest way is to press the Control key and click on the Protégé.app icon, then choose and click on "Open" from the shortcut menu:<br />
<br />
[[File:MacOSXOpenProtegeApp.png]]<br />
<br />
You will get another warning:<br />
<br />
[[File:MacOSXRunProtegeApp.png]]<br />
<br />
Click on "Open" and Protégé.app will start. The application is saved as an exception to your security settings, and you can open it in the future by double-clicking it just as you can any registered app.<br />
<br />
For other ways of granting exception or of configuring your Mac's security setting, see Apple's support page [https://support.apple.com/kb/PH21769?locale=en_US].<br />
<br />
<br />
'''[[Install_Protege5|Go to the main Protege 5 installation page]]'''</div>TaniaTudorachehttps://protegewiki.stanford.edu/index.php?title=Install_Protege5_Mac&diff=13602Install Protege5 Mac2017-03-15T04:57:54Z<p>TaniaTudorache: </p>
<hr />
<div>= [[File:Mac-logo.jpg|50px]] Protege 5 Installation instructions for MacOSX =<br />
<br />
__TOC__<br />
<br />
<br />
'''[[Install_Protege5|Go to the main Protege 5 installation page]]'''<br />
<br />
<br />
Protege Desktop 5.x.y is distributed in the form of a ZIP file from the [http://protege.stanford.edu/products.php#desktop-protege main Protege website], and includes the 64-bit Java Runtime Environment (JRE). So, it is not necessary to have Java pre-installed on your computer to run Protege.<br />
<br />
== Download the ZIP file ==<br />
* Go to the [http://protege.stanford.edu/products.php#desktop-protege Products page] on the Protege website.<br />
* Click the "Download for Mac OSX" button to download the ZIP file to your machine.<br />
<br />
== Move Protege to Applications ==<br />
* Once the download completes, navigate to the folder where the ZIP file was downloaded. On a Mac, this will typically be your "Downloads" folder. Unpack it and you should see a Protege-5.x.y folder that contains the <code>Protégé.app</code>.<br />
<br />
* Drag the Protege_5.x.y folder to the Applications directory.<br />
<br />
Alternatively, you may also copy it to another folder (e.g., your own home folder).<br />
<br />
== Launch Protege ==<br />
To launch Protege Desktop, double-click the <code>Protégé.app</code> file in the root directory of the installation (<code>Applications/Protege_5.x.y</code>).<br />
<br />
== Allow Protege to run on macOS 10.12 (Sierra) and newer versions ==<br />
The first time you will try to run the <code>Protégé.app</code>, you will get a warning:<br />
<br />
[[File:MacOSXAppDamaged.png]]<br />
<br />
To fix this issue, start Spotlight (press Command + Space), type "terminal", and select the <code>Terminal</code> application:<br />
<br />
[[File:MacOSXStartTerminal.png|600px]]<br />
<br />
In the Terminal, type:<br />
<br />
<pre><br />
sudo xattr -cr /Applications/Protege-5.x.y/Protégé.app<br />
</pre><br />
<br />
(replace x.y with the Protege version number)<br />
<br />
The prompt will ask for your password:<br />
<br />
[[File:MacOSXxattr.png]]<br />
<br />
The next time you will start the Protege.app, you will not get the warning anymore.<br />
<br />
== Allow Protege to run on OS X 10.11 (El Capitan) and earlier versions ==<br />
The first time you will try to run the <code>Protégé.app</code>, you may get a warning:<br />
<br />
[[File:MacOXWarningProtegeApp.png]]<br />
<br />
If you get this warning, it means that your Mac's security setting doesn't allow unidentified software to run. There are several ways to allow an exception to the rule.The simplest way is to press the Control key and click on the Protégé.app icon, then choose and click on "Open" from the shortcut menu:<br />
<br />
[[File:MacOSXOpenProtegeApp.png]]<br />
<br />
You will get another warning:<br />
<br />
[[File:MacOSXRunProtegeApp.png]]<br />
<br />
Click on "Open" and Protégé.app will start. The application is saved as an exception to your security settings, and you can open it in the future by double-clicking it just as you can any registered app.<br />
<br />
For other ways of granting exception or of configuring your Mac's security setting, see Apple's support page [https://support.apple.com/kb/PH21769?locale=en_US].<br />
<br />
<br />
'''[[Install_Protege5|Go to the main Protege 5 installation page]]'''</div>TaniaTudorachehttps://protegewiki.stanford.edu/index.php?title=Install_Protege5_Mac&diff=13601Install Protege5 Mac2017-03-15T04:56:26Z<p>TaniaTudorache: </p>
<hr />
<div>= [[File:Mac-logo.jpg|50px]] Protege 5 Installation instructions for MacOSX =<br />
<br />
__TOC__<br />
<br />
<br />
'''[[Install_Protege5|Go to the main Protege 5 installation page]]'''<br />
<br />
<br />
Protege Desktop 5.x.y is distributed in the form of a ZIP file from the [http://protege.stanford.edu/products.php#desktop-protege main Protege website], and includes the 64-bit Java Runtime Environment (JRE). So, it is not necessary to have Java pre-installed on your computer to run Protege.<br />
<br />
== Download the ZIP file ==<br />
* Go to the [http://protege.stanford.edu/products.php#desktop-protege Products page] on the Protege website.<br />
* Click the "Download for Mac OSX" button to download the ZIP file to your machine.<br />
<br />
== Move Protege to Applications ==<br />
* Once the download completes, navigate to the folder where the ZIP file was downloaded. On a Mac, this will typically be your "Downloads" folder. Unpack it and you should see a Protege-5.x.y folder that contains the <code>Protégé.app</code>.<br />
<br />
* Drag the Protege_5.x.y folder to the Applications directory.<br />
<br />
Alternatively, you may also copy it to another folder (e.g., your own home folder).<br />
<br />
== Launch Protege ==<br />
To launch Protege Desktop, double-click the <code>Protégé.app</code> file in the root directory of the installation (<code>Applications/Protege_5.x.y</code>).<br />
<br />
== Allow Protege to run on macOS 10.12 (Sierra) and newer versions ==<br />
The first time you will try to run the <code>Protégé.app</code>, you will get a warning:<br />
<br />
[[File:MacOSXAppDamaged.png]]<br />
<br />
To fix this issue, start Spotlight (press Command + Space) and type "terminal":<br />
<br />
[[File:MacOSXStartTerminal.png|600px]]<br />
<br />
In the Terminal, type:<br />
<br />
<pre><br />
sudo xattr -cr /Applications/Protege-5.x.y/Protégé.app<br />
</pre><br />
<br />
(replace x.y with the Protege version number)<br />
<br />
and fill in your password:<br />
<br />
[[File:MacOSXxattr.png]]<br />
<br />
The next time you will start the Protege.app, you will not get the warning anymore.<br />
<br />
== Allow Protege to run on OS X 10.11 (El Capitan) and earlier versions ==<br />
The first time you will try to run the <code>Protégé.app</code>, you may get a warning:<br />
<br />
[[File:MacOXWarningProtegeApp.png]]<br />
<br />
If you get this warning, it means that your Mac's security setting doesn't allow unidentified software to run. There are several ways to allow an exception to the rule.The simplest way is to press the Control key and click on the Protégé.app icon, then choose and click on "Open" from the shortcut menu:<br />
<br />
[[File:MacOSXOpenProtegeApp.png]]<br />
<br />
You will get another warning:<br />
<br />
[[File:MacOSXRunProtegeApp.png]]<br />
<br />
Click on "Open" and Protégé.app will start. The application is saved as an exception to your security settings, and you can open it in the future by double-clicking it just as you can any registered app.<br />
<br />
For other ways of granting exception or of configuring your Mac's security setting, see Apple's support page [https://support.apple.com/kb/PH21769?locale=en_US].<br />
<br />
<br />
'''[[Install_Protege5|Go to the main Protege 5 installation page]]'''</div>TaniaTudorachehttps://protegewiki.stanford.edu/index.php?title=Install_Protege5_Mac&diff=13600Install Protege5 Mac2017-03-15T04:53:53Z<p>TaniaTudorache: </p>
<hr />
<div>= [[File:Mac-logo.jpg|50px]] Protege 5 Installation instructions for MacOSX =<br />
<br />
__TOC__<br />
<br />
<br />
'''[[Install_Protege5|Go to the main Protege 5 installation page]]'''<br />
<br />
<br />
Protege Desktop 5.x.y is distributed in the form of a ZIP file from the [http://protege.stanford.edu/products.php#desktop-protege main Protege website], and includes the 64-bit Java Runtime Environment (JRE). So, it is not necessary to have Java pre-installed on your computer to run Protege.<br />
<br />
== Download the ZIP file ==<br />
* Go to the [http://protege.stanford.edu/products.php#desktop-protege Products page] on the Protege website.<br />
* Click the "Download for Mac OSX" button to download the ZIP file to your machine.<br />
<br />
== Move Protege to Applications ==<br />
* Once the download completes, navigate to the folder where the ZIP file was downloaded. On a Mac, this will typically be your "Downloads" folder. Unpack it and you should see a Protege-5.x.y folder that contains the <code>Protégé.app</code>.<br />
<br />
* Drag the Protege_5.x.y folder to the Applications directory.<br />
<br />
Alternatively, you may also copy it to another folder (e.g., your own home folder).<br />
<br />
== Launch Protege ==<br />
To launch Protege Desktop, double-click the <code>Protégé.app</code> file in the root directory of the installation (<code>Applications/Protege_5.x.y</code>).<br />
<br />
== Allow Protege to run on macOS 10.12 (Sierra) and newer versions ==<br />
The first time you will try to run the <code>Protégé.app</code>, you will get a warning:<br />
<br />
[[File:MacOSXAppDamaged.png]]<br />
<br />
To fix this issue, start Spotlight (press Command + Space) and type "terminal":<br />
<br />
[[File:MacOSXStartTerminal.png|600px]]<br />
<br />
In the Terminal, type:<br />
<br />
<pre><br />
sudo xattr -cr /Applications/Protege-5.x.y/Protégé.app<br />
</pre><br />
<br />
(replace x.y with the Protege version number)<br />
<br />
and fill in your password:<br />
<br />
[[File:MacOSXxattr.png]]<br />
<br />
The next time you will start the Protege.app, you will not get the warning anymore.<br />
<br />
== Allow Protege to run on OS X 10.11 (El Capitan) and earlier versions ==<br />
The first time you will try to run the <code>Protégé.app</code>, you may get a warning:<br />
<br />
[[File:MacOXWarningProtegeApp.png]]<br />
<br />
If you get this warning, it means that your Mac's security setting doesn't allow unidentified software to run. There are several ways to allow an exception to the rule.The simplest way is to press the Control key and click on the Protégé.app icon, then choose and click on "Open" from the shortcut menu:<br />
<br />
[[File:MacOSXOpenProtegeApp.png]]<br />
<br />
You will get another warning:<br />
<br />
[[File:MacOSXRunProtegeApp.png]]<br />
<br />
Click on "Open" and Protégé.app will start. The application is saved as an exception to your security settings, and you can open it in the future by double-clicking it just as you can any registered app.<br />
<br />
For other ways of granting exception or of configuring your Mac's security setting, see Apple's support page [https://support.apple.com/kb/PH21769?locale=en_US].<br />
<br />
<!--<br />
= Troubleshooting =<br />
<br />
''Q'': ''When I double-click on the run script, nothing happens, or I see a window that comes up, and goes away!''<br />
<br />
''A'': Try running Protege from a console and report any errors displayed in the console window on the [http://protege.stanford.edu/support.php#mailingListSupport Protege User Support mailing list]. <br />
<br />
* How to run Protege from the console on OS X:<br />
** Open Finder<br />
** Select Applications -> Utilities, then double-click on the Terminal application<br />
** In the resulting Terminal window, change to the directory where you unzipped Protege (e.g., <code>cd /Applications/Protege_5.0_beta</code>)<br />
** Type <code>sh run.command</code><br />
<br />
Then report the results back on the [http://protege.stanford.edu/support.php protege-user] mailing list.<br />
<br />
--><br />
<br />
'''[[Install_Protege5|Go to the main Protege 5 installation page]]'''</div>TaniaTudorachehttps://protegewiki.stanford.edu/index.php?title=Install_Protege5_Mac&diff=13599Install Protege5 Mac2017-03-15T04:52:56Z<p>TaniaTudorache: </p>
<hr />
<div>= [[File:Mac-logo.jpg|50px]] Protege 5 Installation instructions for MacOSX =<br />
<br />
__TOC__<br />
<br />
<br />
'''[[Install_Protege5|Go to the main Protege 5 installation page]]'''<br />
<br />
<br />
Protege Desktop 5.x.y is distributed in the form of a ZIP file from the [http://protege.stanford.edu/products.php#desktop-protege main Protege website], and includes the 64-bit Java Runtime Environment (JRE). So, it is not necessary to have Java pre-installed on your computer to run Protege.<br />
<br />
== Download the ZIP file ==<br />
* Go to the [http://protege.stanford.edu/products.php#desktop-protege Products page] on the Protege website.<br />
* Click the "Download for Mac OSX" button to download the ZIP file to your machine.<br />
<br />
== Move Protege to Applications ==<br />
* Once the download completes, navigate to the folder where the ZIP file was downloaded. On a Mac, this will typically be your "Downloads" folder. Unpack it and you should see a Protege-5.x.y folder that contains the <code>Protégé.app</code>.<br />
<br />
Drag the Protege_5.x.y folder to the Applications directory.<br />
<br />
Alternatively, you may also copy it to another folder (e.g., your own home folder).<br />
<br />
== Launch Protege ==<br />
To launch Protege Desktop, double-click the <code>Protégé.app</code> file in the root directory of the installation (<code>Applications/Protege_5.x.y</code>).<br />
<br />
== Allow Protege to run on macOS 10.12 (Sierra) and newer versions ==<br />
The first time you will try to run the <code>Protégé.app</code>, you will get a warning:<br />
<br />
[[File:MacOSXAppDamaged.png]]<br />
<br />
To fix this issue, start Spotlight (press Command + Space) and type "terminal":<br />
<br />
[[File:MacOSXStartTerminal.png|600px]]<br />
<br />
In the Terminal, type:<br />
<br />
<pre><br />
sudo xattr -cr /Applications/Protege-5.x.y/Protégé.app<br />
</pre><br />
<br />
(replace x.y with the Protege version number)<br />
<br />
and fill in your password:<br />
<br />
[[File:MacOSXxattr.png]]<br />
<br />
The next time you will start the Protege.app, you will not get the warning anymore.<br />
<br />
== Allow Protege to run on OS X 10.11 (El Capitan) and earlier versions ==<br />
The first time you will try to run the <code>Protégé.app</code>, you may get a warning:<br />
<br />
[[File:MacOXWarningProtegeApp.png]]<br />
<br />
If you get this warning, it means that your Mac's security setting doesn't allow unidentified software to run. There are several ways to allow an exception to the rule.The simplest way is to press the Control key and click on the Protégé.app icon, then choose and click on "Open" from the shortcut menu:<br />
<br />
[[File:MacOSXOpenProtegeApp.png]]<br />
<br />
You will get another warning:<br />
<br />
[[File:MacOSXRunProtegeApp.png]]<br />
<br />
Click on "Open" and Protégé.app will start. The application is saved as an exception to your security settings, and you can open it in the future by double-clicking it just as you can any registered app.<br />
<br />
For other ways of granting exception or of configuring your Mac's security setting, see Apple's support page [https://support.apple.com/kb/PH21769?locale=en_US].<br />
<br />
<!--<br />
= Troubleshooting =<br />
<br />
''Q'': ''When I double-click on the run script, nothing happens, or I see a window that comes up, and goes away!''<br />
<br />
''A'': Try running Protege from a console and report any errors displayed in the console window on the [http://protege.stanford.edu/support.php#mailingListSupport Protege User Support mailing list]. <br />
<br />
* How to run Protege from the console on OS X:<br />
** Open Finder<br />
** Select Applications -> Utilities, then double-click on the Terminal application<br />
** In the resulting Terminal window, change to the directory where you unzipped Protege (e.g., <code>cd /Applications/Protege_5.0_beta</code>)<br />
** Type <code>sh run.command</code><br />
<br />
Then report the results back on the [http://protege.stanford.edu/support.php protege-user] mailing list.<br />
<br />
--><br />
<br />
'''[[Install_Protege5|Go to the main Protege 5 installation page]]'''</div>TaniaTudorachehttps://protegewiki.stanford.edu/index.php?title=Install_Protege5_Mac&diff=13598Install Protege5 Mac2017-03-15T04:49:26Z<p>TaniaTudorache: </p>
<hr />
<div>= [[File:Mac-logo.jpg|50px]] Protege 5 Installation instructions for MacOSX =<br />
<br />
__TOC__<br />
<br />
<br />
'''[[Install_Protege5|Go to the main Protege 5 installation page]]'''<br />
<br />
<br />
Protege Desktop 5.x is distributed in the form of a ZIP file from the [http://protege.stanford.edu/products.php#desktop-protege main Protege website], and includes the 64-bit Java Runtime Environment (JRE). So, it is not necessary to have Java pre-installed on your computer to run Protege.<br />
<br />
== Download the ZIP file ==<br />
* Go to the [http://protege.stanford.edu/products.php#desktop-protege Products page] on the Protege website.<br />
* Click the "Download for Mac OSX" button to download the ZIP file to your machine.<br />
<br />
<br />
== Move Protege to Applications ==<br />
* Once the download completes, navigate to the folder where the ZIP file was downloaded. On a Mac, this will typically be your "Downloads" folder. Unpack it and you should see a Protege-5.x.y folder that contains the <code>Protégé.app</code>.<br />
<br />
Drag the Protege_5.x.y folder to the Applications directory.<br />
<br />
Alternatively, you may also copy it to another folder (e.g., your own home folder).<br />
<br />
== Launch Protege ==<br />
To launch Protege Desktop, double-click the <code>Protégé.app</code> file in the root directory of the installation (<code>Applications/Protege_5.x.y</code>).<br />
<br />
== Allow Protege to run on macOS 10.12 (Sierra) and newer versions ==<br />
The first time you will try to run the <code>Protégé.app</code>, you will get a warning:<br />
<br />
[[File:MacOSXAppDamaged.png]]<br />
<br />
To fix this issue, start Spotlight (press Command + Space) and type "terminal":<br />
<br />
[[File:MacOSXStartTerminal.png]]<br />
<br />
In the Terminal, type:<br />
<br />
<pre><br />
sudo xattr -cr /Applications/Protege-5.x.y/Protégé.app<br />
</pre><br />
<br />
(replace x.y with the Protege version number)<br />
<br />
and fill in your password:<br />
<br />
[[File:MacOSXxattr.png]]<br />
<br />
The next time you will start the Protege.app, you will not get the warning anymore.<br />
<br />
<br />
== Allow Protege to run on OS X 10.11 (El Capitan) and earlier versions ==<br />
The first time you will try to run the <code>Protégé.app</code>, you may get a warning:<br />
<br />
[[File:MacOXWarningProtegeApp.png]]<br />
<br />
If you get this warning, it means that your Mac's security setting doesn't allow unidentified software to run. There are several ways to allow an exception to the rule.The simplest way is to press the Control key and click on the Protégé.app icon, then choose and click on "Open" from the shortcut menu:<br />
<br />
[[File:MacOSXOpenProtegeApp.png]]<br />
<br />
You will get another warning:<br />
<br />
[[File:MacOSXRunProtegeApp.png]]<br />
<br />
Click on "Open" and Protégé.app will start. The application is saved as an exception to your security settings, and you can open it in the future by double-clicking it just as you can any registered app.<br />
<br />
For other ways of granting exception or of configuring your Mac's security setting, see Apple's support page [https://support.apple.com/kb/PH21769?locale=en_US].<br />
<br />
<!--<br />
= Troubleshooting =<br />
<br />
''Q'': ''When I double-click on the run script, nothing happens, or I see a window that comes up, and goes away!''<br />
<br />
''A'': Try running Protege from a console and report any errors displayed in the console window on the [http://protege.stanford.edu/support.php#mailingListSupport Protege User Support mailing list]. <br />
<br />
* How to run Protege from the console on OS X:<br />
** Open Finder<br />
** Select Applications -> Utilities, then double-click on the Terminal application<br />
** In the resulting Terminal window, change to the directory where you unzipped Protege (e.g., <code>cd /Applications/Protege_5.0_beta</code>)<br />
** Type <code>sh run.command</code><br />
<br />
Then report the results back on the [http://protege.stanford.edu/support.php protege-user] mailing list.<br />
<br />
--><br />
<br />
'''[[Install_Protege5|Go to the main Protege 5 installation page]]'''</div>TaniaTudorachehttps://protegewiki.stanford.edu/index.php?title=File:MacOSXStartTerminal.png&diff=13597File:MacOSXStartTerminal.png2017-03-15T04:44:39Z<p>TaniaTudorache: TaniaTudorache uploaded a new version of &quot;File:MacOSXStartTerminal.png&quot;</p>
<hr />
<div></div>TaniaTudorachehttps://protegewiki.stanford.edu/index.php?title=File:MacOSXxattr.png&diff=13596File:MacOSXxattr.png2017-03-15T04:37:41Z<p>TaniaTudorache: </p>
<hr />
<div></div>TaniaTudorachehttps://protegewiki.stanford.edu/index.php?title=File:MacOSXStartTerminal.png&diff=13595File:MacOSXStartTerminal.png2017-03-15T04:36:42Z<p>TaniaTudorache: </p>
<hr />
<div></div>TaniaTudorachehttps://protegewiki.stanford.edu/index.php?title=File:MacOSXAppDamaged.png&diff=13594File:MacOSXAppDamaged.png2017-03-15T04:36:23Z<p>TaniaTudorache: </p>
<hr />
<div></div>TaniaTudorachehttps://protegewiki.stanford.edu/index.php?title=ProtegeDesktopUserDocs&diff=13542ProtegeDesktopUserDocs2016-11-02T16:05:03Z<p>TaniaTudorache: /* Build status & release notes */</p>
<hr />
<div>= Protege Desktop User Documentation =<br />
<br />
This page is the official documentation home for the '''Protege Desktop application versions 4, 5 and higher'''. <br />
<br />
<br />
__TOC__<br />
<br />
<br />
== Build status & release notes ==<br />
<br />
The latest version of Protege Desktop is '''5.0''':<br />
<br />
* [https://github.com/protegeproject/protege-distribution/releases Release notes] <br />
* [[Install_Protege5|Installation instructions]]<br />
* [http://protege.stanford.edu/products.php#desktop-protege Download latest version of Protege]<br />
<br />
You may also download [[Protege_Desktop_Old_Versions|previous versions of Protege]] and read the complete list of release notes. Older Protege 5.0 beta release notes are available [[Protege_5.0_Beta_Release_Notes|here]].<br />
<br />
== Bugs & feature requests ==<br />
<br />
Before you report a bug or feature request, check the [http://protege-project.136.n4.nabble.com/ Protege mailing lists archives] to ensure it hasn't already been reported. If the item is not currently open or you have further information or a question about an existing item, please post a message on the [http://mailman.stanford.edu/mailman/listinfo/protege-user protege-user mailing list]. Give as much detail as possible (including examples or ontologies if possible) as this will help us track things down more quickly.<br />
<br />
Current GitHub issue tracker: https://github.com/protegeproject/protege/issues?state=open<br />
<br />
<br />
== Frequently asked questions ==<br />
<br />
We've put together a wiki page to answer the [[Protege-OWL_4_FAQ | most commonly asked questions]] about Protege Desktop.<br />
<br />
<br />
== Getting started / tutorials ==<br />
<br />
The Getting started and tutorials have been moved to the [[Main_Page|main page]] of the wiki.<br />
<br />
<br />
== Editor features ==<br />
<br />
* [[Protege4Features | Overview of features]] - a quick summary of the editor<br />
* [[Protege4Views | Protege views guide]] - a list of all of the default views that are distributed with Protege<br />
* [[Protege4Shortcuts | Protege menu guide]] - all of the default menus explained in detail (with keyboard shortcuts)<br />
* [[Protege4Preferences | Protege preferences guide]] - customizing Protege to your needs<br />
* [[Protege4NamingAndRendering|Naming and rendering of entities]] - a note on naming things in OWL and configuring Protege to support your naming conventions<br />
* [[Protege4ExpressionEditor | Protege expression editor]] - adding and editing OWL expressions in Protege<br />
* [[Manchester_OWL_Syntax|Manchester OWL Syntax]] - an overview of the default syntax used by Protege<br />
* [[DLQueryTab | DL Query tab]] - how to query using arbitrary class expressions in OWL<br />
* [[Importing_Ontologies_in_P41|OWL Imports]] - modular ontology support in OWL and Protege<br />
* [[Protege4AxiomAnnotations|Axiom annotations]] - how to annotate at axiom level in Protege <br />
* [[Protege4OWLDiff|Protege OWL Diff]] - compare two versions of an ontology<br />
<br />
== Advanced features ==<br />
<br />
* [[BeanShell | The Bean Shell]] - Making complex queries against an ontology.<br />
* [[Protege4ClientServer | The Protege 4 Server]]<br />
<br />
<br />
== Further setup / configuration ==<br />
<br />
* [[ChangingTheHeapSize|Adding more memory]]<br />
* [[EnablingDoubleClick|Double-clicking on OWL files]]<br />
* [[ClearingP4Preferences|Dealing with Protege preferences problems]]<br />
* [[Working with firewalls and proxies]]<br />
<br />
<br />
== Plugins ==<br />
<br />
=== Finding plug-ins ===<br />
<br />
* Protege will find plugins and updates for you. See our [[EnablePluginAutoUpdate|Auto Update]] page.<br />
<br />
* [[Protege-OWL_4.0 | Plugins for Protege]] - the list of all plugins compatible with different versions is available [[Protege_Plugin_Library|here]].<br />
<br />
* [https://github.com/co-ode-owl-plugins CO-ODE Protege Plugins] - the CO-ODE group at the University of Manchester is the biggest contributor of plug-ins to the Protege editor. The CO-ODE plugins that are compatible with your installation of Protege will show up when going in the File menu -> Check for plugins<br />
<br />
=== Advertising plug-ins ===<br />
<br />
If you have developed a plug-in for Protege and you would like to contribute it to the community,<br />
please see [[Protege4Contributing#Plugins|contributing plugins]].<br />
<br />
<br />
== Contributing ==<br />
<br />
Please see this page for details on how you can [[Protege4Contributing|contribute]].</div>TaniaTudorachehttps://protegewiki.stanford.edu/index.php?title=Engineering_ontologies&diff=13532Engineering ontologies2016-06-03T16:32:39Z<p>TaniaTudorache: </p>
<hr />
<div>= Engineering ontologies = <br />
<br />
The engineering ontologies are a set of small and reusable ontologies for representing engineering artifacts.<br />
<br />
* '''The Components ontology''' – defines the part-whole relationship and is used to represent the decomposition structure of systems<br />
<br />
* '''The Connections ontology''' – defines the topology of a system and describes how components of a system are connected to each other<br />
<br />
* '''The Requirements ontology''' – used for representing requirements and their various relationships, as well as the relationships between requirements and systems<br />
<br />
* '''The Constraints ontology''' – used for defining constraints on different model elements, for instance, constraints on model parameters expressed as mathematical relationships<br />
<br />
<br />
The ontologies are described in [https://depositonce.tu-berlin.de/bitstream/11303/1774/1/Dokument_34.pdf this PhD thesis] in Chapter 4. Use cases for the ontologies are described in Chapter 6.<br />
<br />
The engineering ontologies have been developed using the Protege frames formalism. <br />
<br />
To convert the ontologies into OWL, please use the latest version of [http://protege.stanford.edu/download/protege/3.5/installanywhere/Web_Installers/ Protege 3.x]. Open the frames ontologies one by one (starting with the most included one), and go to <code>File menu -> Export -> OWL</code> (or <code>File menu -> Convert project to format -> OWL/RDF files </code> to preserve also the forms). In this process, you may be required to resolve some of the imports, and that is why it is important to start with the most included one.<br />
<br />
<br />
'''Download''': [http://protegewiki.stanford.edu/images/9/9f/EngineeringOntologies.zip EngineeringOntologies.zip] - The archive contains a small example project (EngineTransmission_3.pprj) that uses the engineering ontologies.<br />
<br />
<br />
Author: Tania Tudorache <tudorache _at_ stanford.edu><br />
<br />
Last updated: 2015.07.10</div>TaniaTudorachehttps://protegewiki.stanford.edu/index.php?title=Install_Protege5_PlatformIndep&diff=13509Install Protege5 PlatformIndep2016-05-24T22:48:11Z<p>TaniaTudorache: </p>
<hr />
<div>= [[File:PlatfIndep-logo.png|50px]] Protege 5 Installation instructions (Platform-Independent) =<br />
<br />
__TOC__<br />
<br />
<br />
'''[[Install_Protege5|Go to the main Protege 5 installation page]]'''<br />
<br />
<br />
The platform-independent archive contains the Protege software, including the run scripts to launch Protege on any platform. '''It does not include the Java Runtime Environment (JRE), so you must have a working Java installation on your machine''' prior to using this archive. Also, the platform-independent archive will work with older 32-bit machines.<br />
<br />
The required Java version is 8 or newer.<br />
<br />
<br />
== If you have Java 8 or newer on your system ==<br />
<br />
Then, it's very easy:<br />
<br />
* Download the platform-independent archive from the [http://protege.stanford.edu/products.php#desktop-protege main Protege website]. The link is under the platform-specific download button, and it is called: ''Download platform independent version''.<br />
* Run the appropriate run script for your platform (e.g., run.bat on Windows, run.sh on Linux and run.command on Mac OSX).<br />
<br />
<br />
'''Note''': You may need to adjust the java path in the run script.<br />
<br />
If this does not work, read more in the section below corresponding to your operating system.<br />
<br />
Also, read more on the installation instructions for your platform from [[Install_Protege5|here]].<br />
<br />
<br />
== Windows ==<br />
<br />
=== Check for Java 8 (optional) ===<br />
<br />
This step is optional. Perform this step if you aren't sure if Java 8 or later is installed on your computer.<br />
<br />
To follow are two possible ways to check your Java version:<br />
<br />
''' From the Start menu '''<br />
* Click the Start menu.<br />
* Type "Java" in the search field.<br />
* Select "About Java" from the results list to display a dialog with your Java version information:<br />
<br />
<br />
''' From the Command Prompt '''<br />
* Click the Start menu.<br />
* Type "cmd" in the search box.<br />
* Select "cmd.exe" from the results list to launch the Command Prompt application.<br />
* Type "java -version" at the prompt to view your Java version information:<br />
<br />
=== Launching Protege ===<br />
<br />
Read the instructions [[Instal_Protege5_Win|here]].<br />
<br />
=== Troubleshooting ===<br />
<br />
''Q'': ''When I run <code>run.bat</code> in Windows, I get the error message:<br />
'java' is not recognized as an internal or external command, operable program or batch file.<br />
<br />
''A'': Windows cannot find Java on your system. This can happen either if: (1) you do not have Java installed on your computer, or (2) you have Java installed, but it is not found on the <code>PATH</code> environment variable of your system. <br />
<br />
<br />
== Mac OSX ==<br />
<br />
=== Check for Java 8 (optional) ===<br />
This step is optional. Perform this step if you aren't sure if Java 8 or later is installed on your computer, and used by the Terminal application.<br />
<br />
* Open Finder.<br />
* Go to Applications -> Utilities.<br />
* Double-click the Terminal application.<br />
* At the prompt, type "java -version" to see your Java version number:<br />
<br />
=== Launching Protege ===<br />
<br />
Read the instructions [[Install_Protege5_Mac|here]].<br />
<br />
<br />
== Linux ==<br />
<br />
=== Check for Java 8 (optional) ===<br />
This step is optional. Perform this step, if you are not sure if you have Java 8 or later installed on your computer.<br />
<br />
To check that you have Java installed, open a terminal window, and type: <code>java -version</code>. You should see something like this:<br />
<br />
<pre><br />
myuser@mycomputer:/$ java -version<br />
java version "1.8.0_91"<br />
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)<br />
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)<br />
</pre><br />
<br />
(The version should be 1.8 or later)<br />
<br />
<br />
=== Launching Protege ===<br />
<br />
Read the instructions [[Install_Protege5_Linux|here]].<br />
<br />
<br />
== If you do not have Java 8 installed on your computer ==<br />
<br />
In case the check for Java 8 did not work, please install go to the [http://protege.stanford.edu/products.php#desktop-protege Protege website], and download a version that comes with a bundled JRE.<br />
<br />
<br />
'''[[Install_Protege5#Troubleshooting|See more troubleshooting help on the main Protege 5 installation page]]'''</div>TaniaTudorachehttps://protegewiki.stanford.edu/index.php?title=Install_Protege5_PlatformIndep&diff=13508Install Protege5 PlatformIndep2016-05-24T22:47:20Z<p>TaniaTudorache: </p>
<hr />
<div>= [[File:PlatfIndep-logo.png|50px]] Protege 5 Installation instructions (Platform-Independent) =<br />
<br />
__TOC__<br />
<br />
<br />
'''[[Install_Protege5|Go to the main Protege 5 installation page]]'''<br />
<br />
<br />
The platform-independent archive contains the Protege software, including the run scripts to launch Protege on any platform. '''It does not include the Java Runtime Environment (JRE), so you must have a working Java installation on your machine''' prior to using this archive. Also, the platform-independent archive will work with older 32-bit machines.<br />
<br />
The required Java version is 8 or newer.<br />
<br />
<br />
== If you have Java 8 or newer on your system ==<br />
<br />
Then, it's very easy:<br />
<br />
* Download the platform-independent archive from the [http://protege.stanford.edu/products.php#desktop-protege main Protege website]. The link is under the platform-specific download button, and it is called: ''Download platform independent version''.<br />
* Run the appropriate run script for your platform (e.g., run.bat on Windows, run.sh on Linux and run.command on Mac OSX).<br />
<br />
<br />
'''Note''': You may need to adjust the java path in the run script.<br />
<br />
If this does not work, read more in the section below corresponding to your operating system.<br />
<br />
Also, read more on the installation instructions for your platform from [[Install_Protege5|here]].<br />
<br />
<br />
== Windows ==<br />
<br />
=== Check for Java 8 (optional) ===<br />
<br />
This step is optional. Perform this step if you aren't sure if Java 8 or later is installed on your computer.<br />
<br />
To follow are two possible ways to check your Java version:<br />
<br />
''' From the Start menu '''<br />
* Click the Start menu.<br />
* Type "Java" in the search field.<br />
* Select "About Java" from the results list to display a dialog with your Java version information:<br />
<br />
<br />
''' From the Command Prompt '''<br />
* Click the Start menu.<br />
* Type "cmd" in the search box.<br />
* Select "cmd.exe" from the results list to launch the Command Prompt application.<br />
* Type "java -version" at the prompt to view your Java version information:<br />
<br />
=== Launching Protege ===<br />
<br />
Read the instructions [[Instal_Protege5_Win|here]].<br />
<br />
=== Troubleshooting ===<br />
<br />
''Q'': ''When I run <code>run.bat</code> in Windows, I get the error message:<br />
'java' is not recognized as an internal or external command, operable program or batch file.<br />
<br />
''A'': Windows cannot find Java on your system. This can happen either if: (1) you do not have Java installed on your computer, or (2) you have Java installed, but it is not found on the <code>PATH</code> environment variable of your system. <br />
<br />
<br />
== Mac OSX ==<br />
<br />
=== Check for Java 8 (optional) ===<br />
This step is optional. Perform this step if you aren't sure if Java 8 or later is installed on your computer, and used by the Terminal application.<br />
<br />
* Open Finder.<br />
* Go to Applications -> Utilities.<br />
* Double-click the Terminal application.<br />
* At the prompt, type "java -version" to see your Java version number:<br />
<br />
=== Launching Protege ===<br />
<br />
Read the instructions [[Install_Protege5_Mac|here]].<br />
<br />
<br />
== Linux ==<br />
<br />
=== Check for Java 8 (optional) ===<br />
This step is optional. Perform this step, if you are not sure if you have Java 8 or later installed on your computer.<br />
<br />
To check that you have Java installed, open a terminal window, and type: <code>java -version</code>. You should see something like this:<br />
<br />
<pre><br />
myuser@mycomputer:/$ java -version<br />
java version "1.8.0_91"<br />
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)<br />
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)<br />
</pre><br />
<br />
(The version should be 1.8 or later)<br />
<br />
<br />
=== Launching Protege ===<br />
<br />
Read the instructions [[Install_Protege5_Linux|here]].<br />
<br />
<br />
'''[[Install_Protege5#Troubleshooting|See more troubleshooting help on the main Protege 5 installation page]]'''<br />
<br />
== If you do not have Java 8 installed on your computer ==<br />
<br />
In case the check for Java 8 did not work, please install go to the [http://protege.stanford.edu/products.php#desktop-protege Protege website], and download a version that comes with a bundled JRE.</div>TaniaTudorachehttps://protegewiki.stanford.edu/index.php?title=Install_Protege5_PlatformIndep&diff=13507Install Protege5 PlatformIndep2016-05-24T22:46:08Z<p>TaniaTudorache: </p>
<hr />
<div>= [[File:PlatfIndep-logo.png|50px]] Protege 5 Installation instructions (Platform-Independent) =<br />
<br />
__TOC__<br />
<br />
<br />
'''[[Install_Protege5|Go to the main Protege 5 installation page]]'''<br />
<br />
<br />
The platform-independent archive contains the Protege software, including the run scripts to launch Protege on any platform. '''It does not include the Java Runtime Environment (JRE), so you must have a working Java installation on your machine''' prior to using this archive. Also, the platform-independent archive will work with older 32-bit machines.<br />
<br />
The required Java version is 8 or newer.<br />
<br />
<br />
== If you have Java 8 or newer on your system ==<br />
<br />
Then, it's very easy:<br />
<br />
* Download the platform-independent archive from the [http://protege.stanford.edu/products.php#desktop-protege main Protege website]. The link is under the platform-specific download button, and it is called: ''Download platform independent version''.<br />
* Run the appropriate run script for your platform (e.g., run.bat on Windows, run.sh on Linux and run.command on Mac OSX).<br />
<br />
<br />
'''Note''': You may need to adjust the java path in the run script.<br />
<br />
If this does not work, read more in the section below corresponding to your operating system.<br />
<br />
Also, read more on the installation instructions for your platform from [[Install_Protege5|here]].<br />
<br />
<br />
== Windows ==<br />
<br />
=== Check for Java 8 (optional) ===<br />
<br />
This step is optional. Perform this step if you aren't sure if Java 8 or later is installed on your computer.<br />
<br />
To follow are two possible ways to check your Java version:<br />
<br />
''' From the Start menu '''<br />
* Click the Start menu.<br />
* Type "Java" in the search field.<br />
* Select "About Java" from the results list to display a dialog with your Java version information:<br />
<br />
<br />
[[Image:InstallP5_OracleJavaVersionDialog.png]]<br />
<br />
<br />
''' From the Command Prompt '''<br />
* Click the Start menu.<br />
* Type "cmd" in the search box.<br />
* Select "cmd.exe" from the results list to launch the Command Prompt application.<br />
* Type "java -version" at the prompt to view your Java version information:<br />
<br />
=== Launching Protege ===<br />
<br />
Read the instructions [[Instal_Protege5_Win|here]].<br />
<br />
=== Troubleshooting ===<br />
<br />
''Q'': ''When I run <code>run.bat</code> in Windows, I get the error message:<br />
'java' is not recognized as an internal or external command, operable program or batch file.<br />
<br />
''A'': Windows cannot find Java on your system. This can happen either if: (1) you do not have Java installed on your computer, or (2) you have Java installed, but it is not found on the <code>PATH</code> environment variable of your system. <br />
<br />
<br />
== Mac OSX ==<br />
<br />
=== Check for Java 8 (optional) ===<br />
This step is optional. Perform this step if you aren't sure if Java 8 or later is installed on your computer, and used by the Terminal application.<br />
<br />
* Open Finder.<br />
* Go to Applications -> Utilities.<br />
* Double-click the Terminal application.<br />
* At the prompt, type "java -version" to see your Java version number:<br />
<br />
[[Image:InstallP5_Terminal.png]]<br />
<br />
=== Launching Protege ===<br />
<br />
Read the instructions [[Install_Protege5_Mac|here]].<br />
<br />
<br />
== Linux ==<br />
<br />
=== Check for Java 8 (optional) ===<br />
This step is optional. Perform this step, if you are not sure if you have Java 8 or later installed on your computer.<br />
<br />
To check that you have Java installed, open a terminal window, and type: <code>java -version</code>. You should see something like this:<br />
<br />
<pre><br />
myuser@mycomputer:/$ java -version<br />
java version "1.8.0_91"<br />
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)<br />
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)<br />
</pre><br />
<br />
(The version should be 1.8 or later)<br />
<br />
<br />
=== Launching Protege ===<br />
<br />
Read the instructions [[Install_Protege5_Linux|here]].<br />
<br />
<br />
'''[[Install_Protege5#Troubleshooting|See more troubleshooting help on the main Protege 5 installation page]]'''<br />
<br />
== If you do not have Java installed on your computer ==<br />
<br />
In case the check for Java 8 from did not work, please install go to the [http://protege.stanford.edu/products.php#desktop-protege Protege website], and download a version that comes with a bundled JRE.</div>TaniaTudorachehttps://protegewiki.stanford.edu/index.php?title=Install_Protege5&diff=13506Install Protege52016-05-24T22:38:44Z<p>TaniaTudorache: </p>
<hr />
<div><br /><span style="font-weight:bold; font-size:20px;">Protege Desktop 5.0 Installation Instructions</span><br /><br /><br />
<br />
<br />
__TOC__<br />
<br />
<br />
== Platform specific instructions ==<br />
<br />
Click on the links below for the platform specific instructions. The platforms-specific archives include the Java JRE, so it is not required to have Java installed on your machine. Use the platform-independent archive if you would like to use a specific version of Java, or if your system is 32-bit (the case with older computers).<br />
<br />
=== [[File:Win-logo.jpg|50px]] [[Instal_Protege5_Win|Windows]] === <br />
''Includes the JRE, and works for 64-bit Windows platforms''<br />
<br />
=== [[File:Mac-logo.jpg|50px]] [[Install_Protege5_Mac|Mac OSX]] ===<br />
''Includes the JRE, and works for 64-bit OSX platforms''<br />
<br />
=== [[File:Tux-logo.png|50px]] [[Install_Protege5_Linux|Linux]] ===<br />
''Includes the JRE, and works for 64-bit Linux platforms''<br />
<br />
=== [[File:PlatfIndep-logo.png|50px]] [[Install_Protege5_PlatformIndep|Platform Independent]] ===<br />
''Does not include the JRE, requires a Java version 8 or newer installed, works on any platform''<br />
<br />
<br />
== Troubleshooting ==<br />
<br />
''Q'': ''When I try to run Protege from the platform-independent archive with the run script, I get an <code>UnsupportedClassVersionError</code>, e.g., <code>"Exception in thread "main" java.lang.UnsupportedClassVersionError: Bad version number in .class file"</code>''<br />
<br />
''A'': Most likely you have an older Java version installed. Protege requires Java 8 or later. Please see the documentation above on how to check which version of Java is installed on your system.<br />
<br />
<br />
== How to get help ==<br />
<br />
If you have problems installing or running Protege Desktop, please refer to the [[Install_Protege5#Troubleshooting|troubleshooting]] section first. We also recommend searching the [http://protege-project.136.n4.nabble.com/ mailing list archives], as the problem and a solution might have already been posted. <br />
<br />
If you can't find the answers from these resources, send an email to the [http://protege.stanford.edu/support.php#mailingListSupport '''Protege User Support''' mailing list] (you need to be subscribed to post). Please be as specific as possible and try to include the following items:<br />
<br />
<br />
* What is your operating system (e.g., OS X 10.9, Windows 7, etc.)?<br />
* What is your Java version?<br />
* What are the specific steps to reproduce the problem?<br />
* Are there any error messages in the console window or the log file?<br />
* What is the observed behavior?<br />
<br />
<br />
The more detail you provide up front, the more helpful we can be in terms of a prompt response.</div>TaniaTudorachehttps://protegewiki.stanford.edu/index.php?title=Install_Protege5_Linux&diff=13505Install Protege5 Linux2016-05-24T22:38:04Z<p>TaniaTudorache: </p>
<hr />
<div>= [[File:Tux-logo.png|50px]] Protege 5 Installation instructions for Linux =<br />
<br />
__TOC__<br />
<br />
<br />
'''[[Install_Protege5|Go to the main Protege 5 installation page]]'''<br />
<br />
<br />
Protege 5.0 is distributed in the form of a <code>tar.gz</code> file from the [http://protege.stanford.edu/products.php#desktop-protege main Protege website], and includes the 64-bit Java Runtime Environment (JRE). So, it is not necessary to have Java pre-installed on your computer to run Protege.<br />
<br />
== Download the tar.gz file ==<br />
* Go to the [http://protege.stanford.edu/products.php#desktop-protege Products page] on the Protege website.<br />
* Click the "Download for Linux" button to download the tar.gz file to your machine.<br />
<br />
To unpack the archive, either use your file explorer and double-click on the archive, and extract it to the desired location, or type in a terminal window:<br />
<br />
tar zxvf protege-5.0.0-linux.tar.gz<br />
<br />
(the archive name might differ, please use the right file name that you downloaded.)<br />
<br />
<br />
== Launch Protege ==<br />
<br />
To launch Protege Desktop, double-click on the <code>run.sh</code> in the ''Protege folder'' in the file explorer, or type <code>run.sh</code> in a terminal window, once you have changed the directory to the Protege folder (<code>cd Your_Protege_folder</code>).<br />
<br />
<br />
'''[[Install_Protege5|Find more troubleshooting hep on the main Protege 5 installation page]]'''</div>TaniaTudorachehttps://protegewiki.stanford.edu/index.php?title=Instal_Protege5_Win&diff=13504Instal Protege5 Win2016-05-24T22:36:05Z<p>TaniaTudorache: </p>
<hr />
<div>= [[File:Win-logo.jpg|50px]] Protege 5 Installation instructions for Windows =<br />
<br />
__TOC__<br />
<br />
<br />
'''[[Install_Protege5|Go to the main Protege 5 installation page]]'''<br />
<br />
<br />
Protege Desktop 5.0 is distributed in the form of a ZIP file from the [http://protege.stanford.edu/products.php#desktop-protege main Protege website], and includes the 64-bit Java Runtime Environment (JRE). So, it is not necessary to have Java pre-installed on your computer to run Protege.<br />
<br />
== Download the ZIP file ==<br />
<br />
* Go to the [http://protege.stanford.edu/products.php#desktop-protege Products page] on the Protege website.<br />
* Click the "Download for Windows" button to download the ZIP file to your machine.<br />
<br />
<br />
== Unzip Protege ==<br />
Once the download completes, navigate to the folder where the ZIP file was downloaded. On a Windows machine, this will typically be your "Downloads" folder, e.g., "C:/Users/<your-username>/Downloads".<br />
<br />
Right-click on the ZIP file and choose "Extract All..." from the context menu to launch the Extract Compressed Folders dialog. Click the Browse... button to select a destination for your Protege Desktop installation, e.g., the "C:/Program Files" folder:<br />
<br />
<br />
[[Image:InstallP5_ExtractFilesDialog.png]]<br />
<br />
<br />
Protege Desktop will be extracted to your selected destination into a folder called "Protege_5.0.0":<br />
<br />
<br />
[[Image:InstallP5_ProtegeUnzipped.png]]<br />
<br />
<br />
== Launch Protege ==<br />
There are two ways to launch Protege:<br />
<br />
#Double-click on the Protege.exe, or<br />
#Double-click on run.bat - which will start Protege also showing the console.<br />
<br />
For quicker access to Protege Desktop going forward, right-click on the Protege.exe file and select "Send to" -> "Desktop (create shortcut)". This will create a shortcut to Protege Desktop's launcher on your Windows Desktop.<br />
<br />
<br />
= Troubleshooting =<br />
<br />
''Q'': ''When I double-click on the run script, nothing happens, or I see a window that comes up, and goes away!''<br />
<br />
''A'': Try running Protege using the run.bat from a console and report any errors displayed in the console window on the [http://protege.stanford.edu/support.php#mailingListSupport Protege User Support mailing list]. <br />
<br />
* How to run Protege from the console on Windows:<br />
** Click the '''Start menu'''<br />
** Type <code>cmd</code> in the search box and press the Enter key<br />
** In the resulting Command Prompt, change to the directory where you unzipped Protege (e.g., <code>cd "C:\Program Files\Protege_5.0_beta"</code>)<br />
** Type <code>run.bat</code>.<br />
<br />
Then report the results back on the [http://protege.stanford.edu/support.php protege-user] mailing list.<br />
<br />
<br />
'''[[Install_Protege5#Troubleshooting|See more troubleshooting help on the main Protege 5 installation page]]'''</div>TaniaTudorachehttps://protegewiki.stanford.edu/index.php?title=Instal_Protege5_Win&diff=13503Instal Protege5 Win2016-05-24T22:33:14Z<p>TaniaTudorache: </p>
<hr />
<div>= [[File:Win-logo.jpg|50px]] Protege 5 Installation instructions for Windows =<br />
<br />
__TOC__<br />
<br />
<br />
'''[[Install_Protege5|Go to the main Protege 5 installation page]]'''<br />
<br />
<br />
Protege Desktop 5.0 is distributed in the form of a ZIP file from the [http://protege.stanford.edu/products.php#desktop-protege main Protege website], and includes the 64-bit Java Runtime Environment (JRE). So, it is not necessary to have Java pre-installed on your computer to run Protege.<br />
<br />
== Download the ZIP file ==<br />
<br />
* Go to the [http://protege.stanford.edu/products.php#desktop-protege Products page] on the Protege website.<br />
* Click the "Download for Windows" button to download the ZIP file to your machine.<br />
<br />
<br />
== Unzip Protege ==<br />
Once the download completes, navigate to the folder where the ZIP file was downloaded. On a Windows machine, this will typically be your "Downloads" folder, e.g., "C:/Users/<your-username>/Downloads".<br />
<br />
Right-click on the ZIP file and choose "Extract All..." from the context menu to launch the Extract Compressed Folders dialog. Click the Browse... button to select a destination for your Protege Desktop installation, e.g., the "C:/Program Files" folder:<br />
<br />
<br />
[[Image:InstallP5_ExtractFilesDialog.png]]<br />
<br />
<br />
Protege Desktop will be extracted to your selected destination into a folder called "Protege_5.0.0":<br />
<br />
<br />
[[Image:InstallP5_ProtegeUnzipped.png]]<br />
<br />
<br />
== Launch Protege ==<br />
To launch Protege Desktop, double-click the '''run.bat''' file in the root directory of the installation.<br />
<br />
For quicker access to Protege Desktop going forward, right-click on the run.bat file and select "Send to" -> "Desktop (create shortcut)". This will create a shortcut to Protege Desktop's launcher on your Windows Desktop called "run.bat - Shortcut". Select the shortcut and press the F2 key to rename the shortcut to something more user friendly, e.g., "Protege 5.0 beta".<br />
<br />
<br />
= Troubleshooting =<br />
<br />
''Q'': ''When I double-click on the run script, nothing happens, or I see a window that comes up, and goes away!''<br />
<br />
''A'': Try running Protege from a console and report any errors displayed in the console window on the [http://protege.stanford.edu/support.php#mailingListSupport Protege User Support mailing list]. <br />
<br />
* How to run Protege from the console on Windows:<br />
** Click the '''Start menu'''<br />
** Type <code>cmd</code> in the search box and press the Enter key<br />
** In the resulting Command Prompt, change to the directory where you unzipped Protege (e.g., <code>cd "C:\Program Files\Protege_5.0_beta"</code>)<br />
** Type <code>run.bat</code>.<br />
<br />
Then report the results back on the [http://protege.stanford.edu/support.php protege-user] mailing list.<br />
<br />
<br />
'''[[Install_Protege5#Troubleshooting|See more troubleshooting help on the main Protege 5 installation page]]'''</div>TaniaTudorachehttps://protegewiki.stanford.edu/index.php?title=File:InstallP5_ProtegeUnzipped.png&diff=13502File:InstallP5 ProtegeUnzipped.png2016-05-24T22:26:52Z<p>TaniaTudorache: TaniaTudorache uploaded a new version of &quot;File:InstallP5 ProtegeUnzipped.png&quot;</p>
<hr />
<div></div>TaniaTudorachehttps://protegewiki.stanford.edu/index.php?title=Protege_Desktop_Old_Versions&diff=13501Protege Desktop Old Versions2016-05-24T22:17:53Z<p>TaniaTudorache: </p>
<hr />
<div>__NOTOC__<br />
== Protege Desktop Older Versions ==<br />
This page contains download links and a historical record of release notes for older versions of Protege Desktop.<br />
<br />
'''If you're interested in downloading Protege Desktop, please note that the most current version is [http://protege.stanford.edu/products.php#desktop-protege available for download] from the main Protege website.'''<br />
<br />
''See Also:'' [[WebProtegeReleaseNotes|WebProtege release notes]]<br />
<br />
<br />
__TOC__<br />
<br />
<br />
=== Protege 5 ===<br />
{|style="border-spacing: 0; border-width: 1px; border-style: solid; border-color: #bfbcb5;" width="65%" cellpadding="3" id="protege_release_notes"<br />
|-<br />
!Version<br />
!Release notes<br />
!Release date<br />
!Download<br />
|-<br />
|5.0.0 <br />
|[https://github.com/protegeproject/protege-distribution/releases/tag/protege-5.0.0 release notes]<br />
|2016-May-24<br />
|[https://github.com/protegeproject/protege-distribution/releases/tag/protege-5.0.0 downloads]<br />
|-<br />
|5.0 RC2<br />
|[https://github.com/protegeproject/protege-distribution/releases/tag/protege-5.0.0-RC2 release notes]<br />
|2016-May-18<br />
|[https://github.com/protegeproject/protege-distribution/releases/tag/protege-5.0.0-RC2 downloads]<br />
|-<br />
|5.0 RC1<br />
|[https://github.com/protegeproject/protege-distribution/releases/tag/protege-5.0.0-RC1 release notes]<br />
|2016-May-4<br />
|[https://github.com/protegeproject/protege-distribution/releases/tag/protege-5.0.0-RC1 downloads]<br />
|-<br />
|5.0 beta 24<br />
|[https://github.com/protegeproject/protege-distribution/releases/tag/protege-5.0.0-beta-24 release notes]<br />
|2016-Mar-18<br />
|[https://github.com/protegeproject/protege-distribution/releases/tag/protege-5.0.0-beta-24 downloads]<br />
|-<br />
|5.0 beta 23<br />
|[https://github.com/protegeproject/protege-distribution/releases/tag/protege-5.0.0-beta-23 release notes]<br />
|2016-Feb-17<br />
|[https://github.com/protegeproject/protege-distribution/releases/tag/protege-5.0.0-beta-23 downloads]<br />
|-<br />
|5.0 beta 21<br />
|[https://github.com/protegeproject/protege-distribution/releases/tag/protege-5.0.0-beta-21 release notes]<br />
|2015-Dec-18<br />
|[https://github.com/protegeproject/protege-distribution/releases/tag/protege-5.0.0-beta-21 downloads]<br />
|-<br />
|5.0 beta 17<br />
|[https://github.com/protegeproject/protege/releases/tag/protege-parent-5.0.0-beta-17 release notes]<br />
|2015-Mar-17<br />
|[https://github.com/protegeproject/protege/releases/tag/protege-parent-5.0.0-beta-17 downloads]<br />
|-<br />
|5.0 beta 16<br />
|[https://github.com/protegeproject/protege/releases/tag/protege-parent-5.0.0-beta-16 release notes]<br />
|2015-Mar-10<br />
|[https://github.com/protegeproject/protege/releases/download/protege-parent-5.0.0-beta-16/Protege-5.0.0-beta-16.zip zip]<br />
|-<br />
|5.0 beta 15<br />
|[[Protege_5.0_Beta_Release_Notes|release notes]]<br />
|2014-Jun-9<br />
|[http://protege.stanford.edu/download/protege/5.0/binaries/protege-5.0.0-beta-15.zip zip], [http://protege.stanford.edu/download/protege/5.0/binaries/protege-5.0.0-beta-15.tar.gz tar.gz]<br />
|}<br />
<br />
=== Protege 4 ===<br />
{|style="border-spacing: 0; border-width: 1px; border-style: solid; border-color: #bfbcb5;" width="65%" cellpadding="3" id="protege_release_notes"<br />
|-<br />
!Version<br />
!Release notes<br />
!Release date<br />
!Download<br />
|-<br />
|4.3<br />
|[[P4_3_Release_Announcement|release notes]]<br />
|2013-Apr-15<br />
|[http://protege.stanford.edu/download/protege/4.3/ download]<br />
|-<br />
|4.2<br />
|[[P4_2_Release_Announcement|release notes]]<br />
|2013-Mar-18<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%204.x/4.2/ download]<br />
|-<br />
|4.2 rc1<br />
|[[Protege_4.2_RC1_Release_Notes|release notes]]<br />
|2013-Feb-21<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%204.x/4.2%20release%20candidates/4.2%20rc1/ download]<br />
|-<br />
|4.2 beta builds<br />
|[[Protege_4.2_Beta_Release_Notes|release notes]]<br />
|&nbsp;<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%204.x/4.2%20betas/ download]<br />
|-<br />
|4.2 alpha builds<br />
|[[Protege_4.2_Alpha_Release_Notes|release notes]]<br />
|&nbsp;<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%204.x/4.2%20alphas/ download]<br />
|-<br />
|4.1<br />
|[[P4_1_Release_Announcement|release notes]]<br />
|2011-July-26<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%204.x/4.1/ download]<br />
|-<br />
|4.1 rc5<br />
|[[Protege 4.1 RC5 Release Notes|release notes]]<br />
|2011-July-5<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%204.x/4.1%20release%20candidates/4.1%20rc5/Web_Installers/ download]<br />
|-<br />
|4.1 rc4<br />
|[[Protege 4.1 RC4 Release Notes|release notes]]<br />
|2011-May-23<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%204.x/4.1%20release%20candidates/4.1%20rc4/Web_Installers/ download]<br />
|-<br />
|4.1 rc3<br />
|[[Protege 4.1 RC3 Release Notes|release notes]]<br />
|2011-May-17<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%204.x/4.1%20release%20candidates/4.1%20rc3/Web_Installers/ download]<br />
|-<br />
|4.1 rc2<br />
|[[Protege 4.1 RC2 Release Notes|release notes]]<br />
|2011-May-10<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%204.x/4.1%20release%20candidates/4.1%20rc2/Web_Installers/ download]<br />
|-<br />
|4.1 rc1<br />
|[[Protege 4.1 RC1 Release Notes|release notes]]<br />
|2011-Apr-27<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%204.x/4.1%20release%20candidates/4.1%20rc1/Web_Installers/ download]<br />
|-<br />
|4.1 beta builds<br />
|[[Protege 4.1 Beta Release Notes|release notes]]<br />
|&nbsp;<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%204.x/4.1%20betas/ download]<br />
|-<br />
|4.1 alpha builds<br />
|[[Protege 4.1 Alpha Release Notes|release notes]]<br />
|&nbsp;<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%204.x/4.1%20alphas/ download]<br />
|-<br />
|4.0.2<br />
|[[Protege 4.0.2 Release Notes|release notes]]<br />
|2009-Dec-03<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%204.x/4.0.2/ download]<br />
|-<br />
|4.0.1<br />
|[[Protege 4.0.1 Release Notes|release notes]]<br />
|2009-Oct-28<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%204.x/4.0.1/ download]<br />
|-<br />
|4.0<br />
|[[P4 Release Announcement|release notes]]<br />
|2009-Jun-16<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%204.x/4.0/ download]<br />
|-<br />
|4.0 rc1<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%204.x/4.0%20rc1/_ReleaseNotes_4.0_RC1.html release notes]<br />
|2009-Jun-01<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%204.x/4.0%20release%20candidates/4.0%20rc1/ download]<br />
|-<br />
|4.0 beta builds<br />
|[[Protege 4 beta announcement|initial beta announcement]], [http://protege.stanford.edu/download/protege/old-releases/Protege%204.x/4.0%20betas/_ReleaseNotes_4.0_Betas.html release notes]<br />
|&nbsp;<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%204.x/4.0%20betas/ download]<br />
|-<br />
|4.0 alpha builds<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%204.x/4.0%20alphas/_ReleaseNotes_4.0_Alphas.html release notes]<br />
|&nbsp;<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%204.x/4.0%20alphas/ download]<br />
|}<br />
<br />
=== Protege 3 ===<br />
{|style="border-spacing: 0; border-width: 1px; border-style: solid; border-color: #bfbcb5;" width="65%" cellpadding="3" id="protege_release_notes"<br />
|-<br />
!Version<br />
!Release notes<br />
!Release date<br />
!Download<br />
|-<br />
|3.5<br />
|[[Protege_3.5_Release_Notes|release notes]]<br />
|2013-Apr-24<br />
|[http://protege.stanford.edu/download/protege/3.5/installanywhere/Web_Installers/ download], [http://protege.stanford.edu/download/protege/3.5/zip/Protege_3.5.zip zip]<br />
|-<br />
|3.5 beta builds<br />
|[[Protege_3.5_Beta_Release_Notes|release notes]]<br />
|<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%203.x/3.5%20betas/ download]<br />
|-<br />
|3.5 alpha builds<br />
|[[Protege_3.5_Beta_Release_Notes|release notes]]<br />
|<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%203.x/3.5%20alphas/ download]<br />
|-<br />
|3.4.8<br />
|[[Protege_3.4.8_Release_Notes|release notes]]<br />
|2012-Jan-12<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%203.x/3.4.8/ download]<br />
|-<br />
|3.4.7<br />
|[[Protege_3.4.7_Release_Notes|release notes]]<br />
|2011-Jul-15<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%203.x/3.4.7/ download]<br />
|-<br />
|3.4.6<br />
|[[Protege_3.4.6_Release_Notes|release notes]]<br />
|2011-Apr-25<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%203.x/3.4.6/ download]<br />
|-<br />
|3.4.5<br />
|[[Protege_3.4.5_Release_Notes|release notes]]<br />
|2011-Mar-11<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%203.x/3.4.5/ download]<br />
|-<br />
|3.4.4<br />
|[[Protege_3.4.4_Release_Notes|release notes]]<br />
|2010-Mar-08<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%203.x/3.4.4/ download]<br />
|-<br />
|3.4.3<br />
|[[Protege_3.4.3_Release_Notes|release notes]]<br />
|2010-Feb-03<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%203.x/3.4.3/ download]<br />
|-<br />
|3.4.2<br />
|[[Protege_3.4.2_Release_Notes|release notes]]<br />
|2009-Dec-16<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%203.x/3.4.2/ download]<br />
|-<br />
|3.4.1<br />
|[http://mailman.stanford.edu/pipermail/protege-users/2009/000031.html release notes]<br />
|2009-Jun-18<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%203.x/3.4.1/ download]<br />
|-<br />
|3.4<br />
|[http://protege.stanford.edu/protege/3.4/webnotes/ReleaseNotes.html release notes]<br />
|2009-Mar-16<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%203.x/3.4/ download]<br />
|-<br />
|3.3.1<br />
|[http://mailman.stanford.edu/pipermail/protege-users/2007/000015.html release notes]<br />
|2007-Aug-24<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%203.x/3.3.1/ download]<br />
|-<br />
|3.3<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%203.x/3.3/_ReleaseNotes_3.3.html release notes]<br />
|2007-Jul-06<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%203.x/3.3/ download]<br />
|-<br />
|3.2.1<br />
|[http://mailman.stanford.edu/pipermail/protege-owl/2006-December/000977.html release notes]<br />
|2006-Dec-20<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%203.x/3.2.1/ download]<br />
|-<br />
|3.2<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%203.x/3.2/_ReleaseNotes_3.2.html release notes]<br />
|2006-Nov-07<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%203.x/3.2/ download]<br />
|-<br />
|3.1.1<br />
|&nbsp;<br />
|2005-Aug-10<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%203.x/3.1.1/ download]<br />
|-<br />
|3.1<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%203.x/3.1/_ReleaseNotes_3.1.html release notes]<br />
|2005-Jul-08<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%203.x/3.1/ download]<br />
|-<br />
|3.0<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%203.x/3.0/_ReleaseNotes_3.0.html release notes]<br />
|2005-Feb-04<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%203.x/3.0/ download]<br />
|}<br />
<br />
=== Protege 2 ===<br />
{|style="border-spacing: 0; border-width: 1px; border-style: solid; border-color: #bfbcb5;" width="65%" cellpadding="3" id="protege_release_notes"<br />
|-<br />
!Version<br />
!Release notes<br />
!Release date<br />
!Download<br />
|-<br />
|2.1.2<br />
|[http://article.gmane.org/gmane.comp.misc.ontology.protege.owl/5615 release notes]<br />
|2004-Aug-04<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%202.x/2.1.2/ download]<br />
|-<br />
|2.1.1<br />
|[http://article.gmane.org/gmane.comp.misc.ontology.protege.owl/4483 release notes]<br />
|2004-Jun-22<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%202.x/2.1.1/ download]<br />
|-<br />
|2.1<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%202.x/2.1/_ReleaseNotes_2.1.html release notes]<br />
|2004-Jun-11<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%202.x/2.1/ download]<br />
|-<br />
|2.0.1<br />
|[http://article.gmane.org/gmane.comp.misc.ontology.protege.general/4792 release notes]<br />
|2004-Feb-13<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%202.x/2.0.1/ download]<br />
|-<br />
|2.0<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%202.x/2.0/_ReleaseNotes_2.0.html release notes]<br />
|2004-Feb-04<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%202.x/2.0/ download]<br />
|}<br />
<br />
=== Protege 1 and earlier ===<br />
{|style="border-spacing: 0; border-width: 1px; border-style: solid; border-color: #bfbcb5;" width="65%" cellpadding="3" id="protege_release_notes"<br />
|-<br />
!Version<br />
!Release notes<br />
!Release date<br />
!Download<br />
|-<br />
|1.9<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%201.x/1.9/_ReleaseNotes_1.9.html release notes]<br />
|2003-Aug-08<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%201.x/1.9/ download]<br />
|-<br />
|1.8<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%201.x/1.8/_ReleaseNotes_1.8.html release notes]<br />
|2003-Apr-09<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%201.x/1.8/ download]<br />
|-<br />
|1.7<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%201.x/1.7/_ReleaseNotes_1.7.html release notes]<br />
|2002-Apr-10<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%201.x/1.7/ download]<br />
|-<br />
|1.6.2<br />
|&nbsp;<br />
|2001-Dec-20<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%201.x/1.6.2/ download]<br />
|-<br />
|1.6.1<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%201.x/1.6.2/_ReleaseNotes_1.6.1.html release notes]<br />
|2001-Oct-17<br />
|&nbsp;<br />
|-<br />
|1.6<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%201.x/1.6.2/_ReleaseNotes_1.6.html release notes]<br />
|2001-Oct-16<br />
|&nbsp;<br />
|-<br />
|1.4<br />
|&nbsp;<br />
|2000-Jul-12<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%201.x/1.4/ download]<br />
|-<br />
|1.3.4<br />
|&nbsp;<br />
|2000-Feb-02<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%201.x/1.3.4/ download]<br />
|-<br />
|1.2<br />
|&nbsp;<br />
|1999-Dec-23<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%201.x/1.2/ download]<br />
|-<br />
|1.1<br />
|&nbsp;<br />
|1999-Nov-11<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%201.x/1.1/ download]<br />
|-<br />
|1.0<br />
|&nbsp;<br />
|&nbsp;<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%201.x/1.0/ download]<br />
|-<br />
|0.91<br />
|&nbsp;<br />
|&nbsp;<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%200.x/0.91/ download]<br />
|-<br />
|0.9<br />
|&nbsp;<br />
|&nbsp;<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%200.x/0.9/ download]<br />
|-<br />
|0.8<br />
|&nbsp;<br />
|&nbsp;<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%200.x/0.8/ download]<br />
|-<br />
|0.7<br />
|&nbsp;<br />
|&nbsp;<br />
|[http://protege.stanford.edu/download/protege/old-releases/Protege%200.x/0.7/ download]<br />
|}</div>TaniaTudorachehttps://protegewiki.stanford.edu/index.php?title=Main_Page&diff=13496Main Page2016-05-24T06:23:35Z<p>TaniaTudorache: </p>
<hr />
<div>__NOTOC__<br />
= <span style="color:#2c3e50;"> Welcome to the Prot&eacute;g&eacute; wiki! </span> =<br />
<br />
[[File:WP-classes.png|right|300px|thumb|<span style="color:#2c3e50; font-weight:bold;">[[WebProtege|WebProt&eacute;g&eacute;]] - a powerful collaborative ontology development environment for the Web </span>]]<br />
<br />
[[File:Protege-OWL.jpg|right|300px|thumb|<span style="color:#2c3e50; font-weight:bold;">[[Protege4UserDocs|Prot&eacute;g&eacute; Desktop]] - a fully-fledged OWL 2 ontology editor for the desktops</span>]]<br />
<br />
[http://protege.stanford.edu Prot&eacute;g&eacute;] is a free, open-source platform that provides a growing user community with a suite of tools to construct domain models and knowledge-based applications with ontologies. <br />
<br />
''' Quick links: [http://webprotege.stanford.edu WebProt&eacute;g&eacute; server], Prot&eacute;g&eacute; Desktop [http://protege.stanford.edu/products.php#desktop-protege download] and [https://github.com/protegeproject/protege-distribution/releases release notes], [https://github.com/protegeproject/ Source code on GitHub], [http://protege.stanford.edu Prot&eacute;g&eacute; website] '''<br />
<br />
<br />
= <span style="color:#2c3e50;"> User Documentation </span>=<br />
<br />
=== <span style="color:#2c3e50;"> WebProt&eacute;g&eacute; </span> ===<br />
* [[WebProtege|Overview]]<br />
* [[WebProtegeUsersGuide|User's Guide]]<br />
* [[WebProtegeAdminGuide|Administrator's Guide]] - download and installation instructions<br />
* Use WebProt&eacute;g&eacute; now on our Stanford-hosted server: http://webprotege.stanford.edu<br />
<br />
<br />
=== <span style="color:#2c3e50;"> Prot&eacute;g&eacute; Desktop </span> ===<br />
* [[Protege4UserDocs|Prot&eacute;g&eacute; Desktop documentation]] ([https://github.com/protegeproject/protege-distribution/releases release notes], [[Install_Protege5|installation instructions]], [http://protege.stanford.edu/products.php#desktop-protege Protege Desktop download], [[Protege_Desktop_Old_Versions|older Protege releases download]])<br />
* [[Protege3UserDocs|Older Prot&eacute;g&eacute; releases documentation (version 3.x)]]<br />
* [[Protege-OWL_4_FAQ|Frequently Asked Questions (FAQ)]]<br />
<br />
<br />
=== <span style="color:#2c3e50;"> Tutorials and Getting Started</span> ===<br />
* [http://protege.stanford.edu/publications/ontology_development/ontology101.html Ontology Development 101: A Guide to creating your first ontology]<br />
* [http://www.cs.man.ac.uk/~stevensr/menupages/background.php Brief introduction to ontologies], by Robert Stevens<br />
* [http://owl.cs.manchester.ac.uk/publications/talks-and-tutorials/protg-owl-tutorial/ Prot&eacute;g&eacute; OWL Tutorial: A step-by-step guide to modeling in OWL using the Prot&eacute;g&eacute; OWL tools]<br />
* Semantic Web Best Practices and Deployment Working Group's [http://www.w3.org/2001/sw/BestPractices/Tutorials Semantic Web Tutorials] page<br />
* [[Protege4GettingStarted | Getting started with the Protege Desktop editor]] - a short guide to the interface<br />
* [[Pr4_UG | Protege Desktop User's Guide]] - a guide on how to use Protege to create, edit, and inspect ontologies<br />
* [[Protege4Pizzas10Minutes | Pizzas in 10 minutes: A demo of modeling shortcuts]] - a quickstart guide to creating your first OWL ontology<br />
* Cody Burleson's [http://www.semanticfocus.com/blog/entry/title/introduction-to-semantic-web-vision-and-technologies-part-5-building-owl-ontologies-using-protege-4-screencast/ screencast] version of the Protege OWL Pizza tutorial (listed above).<br />
* [http://arxiv.org/abs/1201.4089 A Description Logic Primer]<br />
<br />
<br />
<br />
= <span style="color:#2c3e50;"> Developer Documentation </span> =<br />
<br />
=== <span style="color:#2c3e50;"> WebProt&eacute;g&eacute; </span> ===<br />
* [[WebProtegeDevelopersGuide|Developer's Guide]]<br />
<br />
<br />
=== <span style="color:#2c3e50;"> Prot&eacute;g&eacute; Desktop </span> ===<br />
* [[Protege5DevDocs|Prot&eacute;g&eacute; Desktop 5.x]]<br />
* [[Protege4DevDocs|Prot&eacute;g&eacute; Desktop 4.x]]<br />
* [[Protege3DevDocs|Prot&eacute;g&eacute; Desktop 3.x]]<br />
<br />
* [[ProtegeQAGuide|Guide to Quality Assurance]]<br />
<br />
<br />
= <span style="color:#2c3e50;"> Download and Support </span> =<br />
<br />
To download Prot&eacute;g&eacute; or WebProt&eacute;g&eacute; please visit our [http://protege.stanford.edu homepage]. To use the WebProt&eacute;g&eacute; server hosted at Stanford, please go to: http://webprotege.stanford.edu. <br />
<br />
To find out about the different support options, for example, how to subscribe to our mailing lists, please visit the [http://protege.stanford.edu/support.php Support page].<br />
<br />
Follow our [http://www.youtube.com/user/TheProtegeProject YouTube channel] featuring screencasts showing different features of Prot&eacute;g&eacute; and WebProt&eacute;g&eacute;.<br />
<br />
<br />
= <span style="color:#2c3e50;"> Wiki Help </span> =<br />
If you are new to using a Wiki, please see the [[Help:Contents|Help page]] page for links to User's Guides, etc. <br />
<br />
The [[Help:Contents|Help page]] also has suggestions for where to find help with using the Prot&eacute;g&eacute; application.</div>TaniaTudorachehttps://protegewiki.stanford.edu/index.php?title=Protege5DevDocs&diff=13495Protege5DevDocs2016-05-24T06:19:32Z<p>TaniaTudorache: </p>
<hr />
<div><div class="orangeBox"><br />
<span class="orangeBoxTitle">Protege 5 Developer Documentation</span><br /><br /><br />
This page is a top-level entry point for all '''developer documentation''' related to the Protege Desktop application, versions 5.0 and above.<br />
</div><br /><br /><br />
<br />
__TOC__<br />
<br />
<br />
== Building ==<br />
<br />
=== Accessing the source code ===<br />
Protege Desktop is open source and the code is freely [http://github.com/protegeproject/protege available] on GitHub. Use the following Git command to get a local copy:<br />
<br />
<pre><br />
git clone https://github.com/protegeproject/protege.git protege<br />
</pre><br />
<br />
The source code for many Protege Desktop plug-ins has also been made available on GitHub under the [https://github.com/protegeproject Protege Project organization].<br />
<br />
=== Building from source ===<br />
The instructions for building from source are available on [https://github.com/protegeproject/protege/wiki/Building-from-Source GitHub].<br />
<br />
=== Building with Eclipse and other IDEs ===<br />
We would welcome contributions from the community for setting up development environments other than Eclipse.<br />
<br />
* [https://github.com/protegeproject/protege/wiki/Setup-in-Eclipse Building with Eclipse]<br />
<br />
<br />
== Protege APIs ==<br />
<br />
The [[P4APIOverview|Protege API]] gives access to the ontology model and offers various utilities. <br />
<br />
The Protege core and the OWL editor kit both provide a large number of [[P4UiComponentSummary|reuseable UI components]] and utilities for generating user interfaces for ontologies.<br />
<br />
<br />
== Developing a plugin ==<br />
<br />
Protege has been written specifically to be modular. It uses the [http://www.osgi.org/About/Technology OSGi framework] as a plugin infrastructure.<br />
<br />
When developing a plugin:<br />
<br />
First, you should consider which type of plugin you want to build. The [[PluginTypes|plugin types page]] provides a list of plugin types that can be implemented in Protege.<br />
<br />
Second, take a look and reuse the [https://github.com/protegeproject/protege-plugin-examples/ plugin examples] available on GitHub. The GitHub page also has documentation (see the readme file). Clone the project, and then adapt the plugin example that you would like to implement.<br />
<br />
You may also look at the [[PluginAnatomy|Anatomy of a Plugin page]], which gives a quick start to writing a plugin for Protege. Although it was created for Protege 4 plugins, most things still apply to Protege 5 plugins. The page starts with a guide to writing the empty (trivial) plugin in five minutes. Then it describes how some additional content can be added to the plugin. <br />
<br />
Once you have written a plugin you want people to use it. Some very simple steps allow you to advertise your plugin and [[EnablePluginAutoUpdate|enable auto-update]].<br />
<br />
<br />
==Embedded OSGi==<br />
<br />
For people embedding Protege services inside a non-OSGi based applications, [[Embedding OSGi|here]] is a short example showing how this can work.<br />
<br />
== Client-server ==<br />
* [[Protege_5_Development_Environment|Setting up a development environment for the OWL Ontology Server]]<br />
* [[Protege_Server_design|OWL Ontology Server design]]<br />
<br />
== Troubleshooting ==<br />
* [[SolvingClassLoaderProblems|Troubleshooting class loader issues]]<br />
<br />
== Contributing ==<br />
<br />
'''Please share.'''<br />
It is surprising how many people have written plugins for Protege that we just don't hear about.<br /><br />
If you wish to publish to the community, please see our notes on [[Protege4Contributing|code contributions]].<br />
<br />
== Getting help==<br />
<br />
If you need additional support, please contact us via the [http://protege.stanford.edu/support.php protege-dev] mailing list. You need to be [https://mailman.stanford.edu/mailman/listinfo/protege-dev subscribed] in order to post to the list. In your post, please provide a detailed description of the problem, the steps to reproduce it, and any exception traces or logs that are relevant.</div>TaniaTudorachehttps://protegewiki.stanford.edu/index.php?title=Protege5DevDocs&diff=13494Protege5DevDocs2016-05-24T06:16:38Z<p>TaniaTudorache: </p>
<hr />
<div><div class="orangeBox"><br />
<span class="orangeBoxTitle">Protege 5 Developer Documentation</span><br /><br /><br />
This page is a top-level entry point for all '''developer documentation''' related to the Protege Desktop application, versions 5.0 and above.<br />
</div><br /><br /><br />
<br />
__TOC__<br />
<br />
<br />
== Building ==<br />
<br />
=== Accessing the source code ===<br />
Protege Desktop is open source and the code is freely [http://github.com/protegeproject/protege available] on GitHub. Use the following Git command to get a local copy:<br />
<br />
<pre><br />
git clone https://github.com/protegeproject/protege.git protege<br />
</pre><br />
<br />
The source code for many Protege Desktop plug-ins has also been made available on GitHub under the [https://github.com/protegeproject Protege Project organization].<br />
<br />
=== Building from source ===<br />
The instructions for building from source are available on [https://github.com/protegeproject/protege/wiki/Building-from-Source GitHub].<br />
<br />
=== Building with Eclipse and other IDEs ===<br />
We would welcome contributions from the community for setting up development environments other than Eclipse.<br />
<br />
* [https://github.com/protegeproject/protege/wiki/Setup-in-Eclipse Building with Eclipse]<br />
<br />
<br />
== Protege APIs ==<br />
<br />
The [[P4APIOverview|Protege API]] gives access to the ontology model and offers various utilities. <br />
<br />
The Protege core and the OWL editor kit both provide a large number of [[P4UiComponentSummary|reuseable UI components]] and utilities for generating user interfaces for ontologies.<br />
<br />
<br />
== Developing a plugin ==<br />
<br />
Protege has been written specifically to be modular. It uses the [http://www.osgi.org/About/Technology OSGi framework] as a plugin infrastructure.<br />
<br />
When developing a plugin:<br />
<br />
First, you should consider which type of plugin you want to build. The [[PluginTypes|plugin types page]] provides a list of plugin types that can be implemented in Protege.<br />
<br />
Second, take a look and reuse the [https://github.com/protegeproject/protege-plugin-examples/ plugin examples] available on GitHub. The GitHub page also has documentation (see the readme file). Clone the project, and then adapt the plugin example that you would like to implement.<br />
<br />
You may also look at the [[PluginAnatomy|Anatomy of a Plugin page]], which gives a quick start to writing a plugin for Protege. Although it was created for Protege 4 plugins, most things still apply to Protege 5 plugins. The page starts with a guide to writing the empty (trivial) plugin in five minutes. Then it describes how some additional content can be added to the plugin. <br />
<br />
Once you have written a plugin you want people to use it. Some very simple steps allow you to advertise your plugin and [[EnablePluginAutoUpdate|enable auto-update]].<br />
<br />
<br />
==Embedded OSGi==<br />
<br />
For people embedding Protege services inside a non-OSGi based applications, [[Embedding OSGi|here]] is a short example showing how this can work.<br />
<br />
== Client-server ==<br />
* [[Protege_5_Development_Environment|Setting up a development environment for the OWL Ontology Server]]<br />
* [[Protege_Server_design|OWL Ontology Server design]]<br />
<br />
== Troubleshooting ==<br />
* [[SolvingClassLoaderProblems|Troubleshooting class loader issues]]<br />
<br />
== Contributing ==<br />
<br />
'''Please share.'''<br />
It is surprising how many people have written plugins for Protege that we just don't hear about.<br /><br />
If you wish to publish to the community, please see our notes on [[Protege4Contributing|code contributions]].</div>TaniaTudorachehttps://protegewiki.stanford.edu/index.php?title=P4APIOverview&diff=13493P4APIOverview2016-05-24T06:14:00Z<p>TaniaTudorache: </p>
<hr />
<div><div class="orangeBox"><br />
<span class="orangeBoxTitle">Protege APIs</span><br /><br /><br />
Pointers for developers of plugins and understanding the core APIs of Protege 4, 5 and newer.<br />
</div><br /><br /><br />
<br />
'''Back to [[Main_Page#Developer_Documentation|Protege Developer Documentation]]'''<br />
<br />
<br />
__TOC__<br />
<br />
<br />
<span style="color: #ff0000;">Work in progress</span><br />
<br />
<br />
== Overview ==<br />
<br />
Protege OWL support is built on top of the [[P4APIOverview#OWL_API_basics|OWL API]], which provides all of the model manipulation and querying functionality.<br />
<br />
On top of this, Protege supports further functionality for developer's convenience - hierarchies, renderer management, search etc.<br />
<br />
Most of the behavior of the application can be accessed through the main points below, whether accessing the model or the UI.<br />
<br />
However, there are also many utility classes provided by Protege or the OWL API.<br />
<br />
For reusable UI elements we have a separate [[P4UiComponentSummary|page]] with examples.<br />
<br />
<br />
== Access points ==<br />
<br />
The most important three Protege classes you will have access to from most plugins are:<br />
<br />
=== OWLModelManager ===<br />
<br />
Access to the ontologies, reasoners, search renderings, change management etc. Useful services that it provides are described below.<br />
The most important thing to understand about the OWLModelManager is how [[P4APIOverview#Active_ontologies|active ontologies]] are managed.<br />
<br />
==== Active ontologies ====<br />
<br />
A single editor kit in Protege can have several ontologies loaded (whether these are imports or otherwise). There needs to be some way to determine which ontology edits are performed on by default. It is reasonable that the user might want to look at, edit or reason with only a subset of those loaded ontologies.<br />
<br />
* '''Active ontology''' is the ontology currently visible in the navigation bar at the top of the workspace. By convention all new additions to the model are made in the active ontology.<br />
* '''Active ontologies''' is a set of ontologies including the active ontology. These are the ontologies whose contents are visible in the interface. The ontologies in this set is determined by which strategy is currently selected in the [[Protege4Shortcuts#Ontologies|Ontologies menu]]. The active ontologies are all sent to the reasoner when classification is requested. Edits that affect multiple ontologies should act on the active ontologies.<br />
* '''Loaded ontologies''' is the set of all ontologies loaded into this OWLModelManager. Any ontologies that are loaded but not active should not show up in the interface.<br />
<br />
The '''OWLModelManager''' simply uses the OWL API's '''OWLOntologyManager''' to manage these ontologies, however the OWL API manager only has a notion of ''loaded ontologies''. If you write code that is designed to be portable (by using the OWL API OWLOntologyManager directly) you should respect the active ontologies and operate on this set only by passing them around (or having a central manager). In other words, don't just operate on all the loaded ontologies by default.<br />
<br />
<br />
=== OWLWorkspace ===<br />
<br />
This is the environment presented to the user. This class provides access to the core UI elements (menus, cell renderers, handy entity selectors), global selection management etc.<br />
<br />
For building UIs out of reusable elements we have a separate [[P4UiComponentSummary|page]] with examples.<br />
<br />
<br />
=== OWLEditorKit ===<br />
<br />
The central access point for all of the model and UI elements of the OWL editor - you can get to both of the above from the editor kit<br />
<br />
<br />
== Useful subsidiary classes ==<br />
<br />
=== OWLEntityRenderer ===<br />
<br />
The current renderer can be retrieved from the OWLModelManager and is used to get the short name for any entity based on the renderer preferences.<br />
<br />
<br />
=== EntityFinder===<br />
<br />
The finder can be used to find classes, properties and individuals by partial name or regular expression match. This is different from the utility methods on OWLModelManager which perform an exact match.<br />
<br />
<br />
=== OWLEntityFactory ===<br />
<br />
The current factory attached to the OWLModelManager should be used to create classes, properties and individuals using the naming conventions in the '''New entities''' preferences. The factory returns a creation set which contains the changes required to create the entity. This must be applied explicitly by your code.<br />
<br />
<br />
=== OWLReasoner (OWLAPI) ===<br />
<br />
The current reasoner as selected in the reasoner menu can be retrieved from the OWLModelManager. To check if it currently contains a classified model with '''isClassified()'''.<br />
<br />
<br />
=== OWLHierarchyManager ===<br />
<br />
A central place to get to shared '''OWLObjectHierarchyProvider'''s. These providers are convenient tree models that can be directly handed to a OWLModelManagerTree or used to traverse the various asserted or inferred hierarchies of classes and properties. Get this from the OWLModelManager.<br />
<br />
<br />
== Events ==<br />
<br />
Protege has several event models that can be subscribed to in order to keep your plugins aware of changes to the model or the system.<br />
<br />
=== OWLModelManager events ===<br />
<br />
You can add an '''OWLModelManagerListener''' using '''addListener''' to be notified about large granularity changes to the set of ontologies loaded.<br />
Get the type of the event to determine the change that has occured<br />
ACTIVE_ONTOLOGY_CHANGED, ONTOLOGY_VISIBILITY_CHANGED, ENTITY_RENDERER_CHANGED, ENTITY_RENDERING_CHANGED, REASONER_CHANGED, ABOUT_TO_CLASSIFY, ONTOLOGY_CLASSIFIED, ONTOLOGY_CREATED, ONTOLOGY_LOADED, ONTOLOGY_RELOADED, ONTOLOGY_SAVED<br />
<br />
Adding an '''OWLOntologyChangeListener''' will allow you to keep track of changes to any of the loaded ontologies to allow you to keep a view in sync with the model for example. You will receive a list of the changes to determine if they are pertinent to your plugin.<br />
<br />
An '''IOListener''' can be useful to get notification before or after an ontology is loaded or saved. This could be used to provide standard transforms or quality control warnings on ontology loading/serialisation.<br />
<br />
<br />
== OWL API basics ==<br />
<br />
Ontologies, classes, properties, individuals, datatypes class expressions, axioms, changes, reasoners and other fundamental parts of the OWL model are managed by the OWL API.<br />
<br />
Full docs for the OWL API are available on the [http://owlapi.sourceforge.net/ OWL API website], but here some some pointers:<br />
<br />
=== OWL what Manager? ===<br />
Don't be confused by some classes that have a name similar to the '''OWLModelManager''' class:<br />
* '''OWLOntologyManager''' is a class in the OWL API that is not specific to Protege. The OWLOntologyManager plays a central role in the development of OWLAPI code. It provides access to the ontologies, change management, etc. An '''OWLModelManager''' has a getter method that will recover the OWLOntologyManager.<br />
* '''OWLManager''' is utility class in the OWL API that you can use to create an OWLOntologyManager class. In general you probably won't need this when writing Protege code but it is the starting point for most OWL API code.<br />
<br />
<br />
=== Creating OWL objects ===<br />
<br />
All OWL objects (classes, properties, expressions, axioms) are created by an '''OWLDataFactory''' that can be retrieved from the OWLModelManager or directly from the OWLOntologyManager (it is the same factory).<br />
<br />
The factory provides a getter method for every object<br />
<br />
eg ''getOWLObjectProperty(uri)'' or ''getOWLSubClassOfAxiom(expr, expr)''<br />
<br />
The objects returned are immutable and implement structural equality, therefore two OWL objects of the same type that were created at different times but with the same parameters are considered the same object. All OWL objects can exist independent of an ontology.<br />
<br />
<br />
=== Making changes to the ontology ===<br />
<br />
An OWL ontology is simply a set of '''OWLAxiom'''s plus a few annotations and a name. In order to change the ontology you can add or remove axioms from the ontology. First, create the axiom using the OWLDataFactory or search for an appropriate axiom in the ontology. Then, create an '''AddAxiom''' or '''RemoveAxiom''' OWLOntologyChange object - there is no factory for these, just create them as needed - by supplying the axiom plus the ontology the change will affect.<br />
<br />
If you have a compound change (multiple axioms added or removed) then add all of these to a list.<br />
<br />
Use the OWLOntologyManager (or, for convenience the OWLModelManager) '''applyChanges(changes)''' method to cause the changes to take effect. Anything that has an OWLOntologyChangeListener attached to this manager will get notified.<br />
<br />
<br />
=== Visitors ===<br />
<br />
Because the OWL vocabulary is fixed(!), there are a set number of OWLObject types that an algorithm may want to act on.<br />
<br />
In many cases an algorithm may want to implement behaviour for a broad range range of OWLObject - say we want to be able to render any class expression.<br />
<br />
Instead of having a large if statement with lots of<br />
<br />
if (expr instanceof OWLObjectSomeRestriction){<br />
OWLObjectSomeRestriction restr = (OWLObjectSomeRestriction)expr;<br />
// do something<br />
}<br />
else if (expr instanceof OWLObjectAllRestriction){<br />
OWLObjectAllRestriction restr = (OWLObjectAllRestriction)expr;<br />
// do something else<br />
}<br />
else...<br />
<br />
<br />
OWLObjects are implemented so they can use the [http://en.wikipedia.org/wiki/Visitor_pattern visitor pattern]:<br />
<br />
MyRenderer myRenderer = new MyRenderer();<br />
expr.accept(myRenderer);<br />
<br />
<br />
class MyRenderer extends OWLDescriptionVisitorAdapter{ // or implement OWLDescriptionVisitor if you want behaviour for all expressions<br />
<br />
public void visit(OWLObjectSomeRestriction r){<br />
// do something with r<br />
}<br />
public void visit(OWLObjectAllRestriction r){<br />
// do something else with r<br />
}<br />
}<br />
<br />
<br />
'''Back to [[Main_Page#Developer_Documentation|Protege Developer Documentation]]'''</div>TaniaTudorachehttps://protegewiki.stanford.edu/index.php?title=P4APIOverview&diff=13492P4APIOverview2016-05-24T06:11:57Z<p>TaniaTudorache: </p>
<hr />
<div><div class="orangeBox"><br />
<span class="orangeBoxTitle">Protege 4 APIs</span><br /><br /><br />
Pointers for developers of plugins and understanding the core APIs of Protege 4.<br />
</div><br /><br /><br />
<br />
'''Back to [[Main_Page#Developer_Documentation|Protege Developer Documentation]]'''<br />
<br />
<br />
__TOC__<br />
<br />
<br />
<span style="color: #ff0000;">Work in progress</span><br />
<br />
<br />
== Overview ==<br />
<br />
Protege 4.0 OWL support is built on top of the [[P4APIOverview#OWL_API_basics|OWL API]], which provides all of the model manipulation and querying functionality.<br />
<br />
On top of this, Protege supports further functionality for developer's convenience - hierarchies, renderer management, search etc.<br />
<br />
Most of the behaviour of the application can be accessed through the main points below, whether accessing the model or the UI.<br />
<br />
However, there are also many utility classes provided by Protege or the OWL API.<br />
<br />
For reusable UI elements we have a separate [[P4UiComponentSummary|page]] with examples.<br />
<br />
<br />
== Access points ==<br />
<br />
The most important three Protege 4 classes you will have access to from most plugins are:<br />
<br />
=== OWLModelManager ===<br />
<br />
Access to the ontologies, reasoners, search renderings, change management etc. Useful services that it provides are described below.<br />
The most important thing to understand about the OWLModelManager is how [[P4APIOverview#Active_ontologies|active ontologies]] are managed.<br />
<br />
==== Active ontologies ====<br />
<br />
A single editor kit in P4 can have several ontologies loaded (whether these are imports or otherwise). There needs to be some way to determine which ontology edits are performed on by default. It is reasonable that the user might want to look at, edit or reason with only a subset of those loaded ontologies.<br />
<br />
* '''Active ontology''' is the ontology currently visible in the navigation bar at the top of the workspace. By convention all new additions to the model are made in the active ontology.<br />
* '''Active ontologies''' is a set of ontologies including the active ontology. These are the ontologies whose contents are visible in the interface. The ontologies in this set is determined by which strategy is currently selected in the [[Protege4Shortcuts#Ontologies|Ontologies menu]]. The active ontologies are all sent to the reasoner when classification is requested. Edits that affect multiple ontologies should act on the active ontologies.<br />
* '''Loaded ontologies''' is the set of all ontologies loaded into this OWLModelManager. Any ontologies that are loaded but not active should not show up in the interface.<br />
<br />
The '''OWLModelManager''' simply uses the OWL API's '''OWLOntologyManager''' to manage these ontologies, however the OWL API manager only has a notion of ''loaded ontologies''. If you write code that is designed to be portable (by using the OWL API OWLOntologyManager directly) you should respect the active ontologies and operate on this set only by passing them around (or having a central manager). In other words, don't just operate on all the loaded ontologies by default.<br />
<br />
<br />
=== OWLWorkspace ===<br />
<br />
This is the environment presented to the user. This class provides access to the core UI elements (menus, cell renderers, handy entity selectors), global selection management etc.<br />
<br />
For building UIs out of reusable elements we have a separate [[P4UiComponentSummary|page]] with examples.<br />
<br />
<br />
=== OWLEditorKit ===<br />
<br />
The central access point for all of the model and UI elements of the OWL editor - you can get to both of the above from the editor kit<br />
<br />
<br />
== Useful subsidiary classes ==<br />
<br />
=== OWLEntityRenderer ===<br />
<br />
The current renderer can be retrieved from the OWLModelManager and is used to get the short name for any entity based on the renderer preferences.<br />
<br />
<br />
=== EntityFinder===<br />
<br />
The finder can be used to find classes, properties and individuals by partial name or regular expression match. This is different from the utility methods on OWLModelManager which perform an exact match.<br />
<br />
<br />
=== OWLEntityFactory ===<br />
<br />
The current factory attached to the OWLModelManager should be used to create classes, properties and individuals using the naming conventions in the '''New entities''' preferences. The factory returns a creation set which contains the changes required to create the entity. This must be applied explicitly by your code.<br />
<br />
<br />
=== OWLReasoner (OWLAPI) ===<br />
<br />
The current reasoner as selected in the reasoner menu can be retrieved from the OWLModelManager. To check if it currently contains a classified model with '''isClassified()'''.<br />
<br />
<br />
=== OWLHierarchyManager ===<br />
<br />
A central place to get to shared '''OWLObjectHierarchyProvider'''s. These providers are convenient tree models that can be directly handed to a OWLModelManagerTree or used to traverse the various asserted or inferred hierarchies of classes and properties. Get this from the OWLModelManager.<br />
<br />
<br />
== Events ==<br />
<br />
Protege has several event models that can be subscribed to in order to keep your plugins aware of changes to the model or the system.<br />
<br />
=== OWLModelManager events ===<br />
<br />
You can add an '''OWLModelManagerListener''' using '''addListener''' to be notified about large granularity changes to the set of ontologies loaded.<br />
Get the type of the event to determine the change that has occured<br />
ACTIVE_ONTOLOGY_CHANGED, ONTOLOGY_VISIBILITY_CHANGED, ENTITY_RENDERER_CHANGED, ENTITY_RENDERING_CHANGED, REASONER_CHANGED, ABOUT_TO_CLASSIFY, ONTOLOGY_CLASSIFIED, ONTOLOGY_CREATED, ONTOLOGY_LOADED, ONTOLOGY_RELOADED, ONTOLOGY_SAVED<br />
<br />
Adding an '''OWLOntologyChangeListener''' will allow you to keep track of changes to any of the loaded ontologies to allow you to keep a view in sync with the model for example. You will receive a list of the changes to determine if they are pertinent to your plugin.<br />
<br />
An '''IOListener''' can be useful to get notification before or after an ontology is loaded or saved. This could be used to provide standard transforms or quality control warnings on ontology loading/serialisation.<br />
<br />
<br />
== OWL API basics ==<br />
<br />
Ontologies, classes, properties, individuals, datatypes class expressions, axioms, changes, reasoners and other fundamental parts of the OWL model are managed by the OWL API.<br />
<br />
Full docs for the OWL API are available on the [http://owlapi.sourceforge.net/ OWL API website], but here some some pointers:<br />
<br />
=== OWL what Manager? ===<br />
Don't be confused by some classes that have a name similar to the '''OWLModelManager''' class:<br />
* '''OWLOntologyManager''' is a class in the OWL API that is not specific to Protege 4. The OWLOntologyManager plays a central role in the development of OWLAPI code. It provides access to the ontologies, change management, etc. An '''OWLModelManager''' has a getter method that will recover the OWLOntologyManager.<br />
* '''OWLManager''' is utility class in the OWL API that you can use to create an OWLOntologyManager class. In general you probably won't need this when writing Protege 4 code but it is the starting point for most OWL API code.<br />
<br />
<br />
=== Creating OWL objects ===<br />
<br />
All OWL objects (classes, properties, expressions, axioms) are created by an '''OWLDataFactory''' that can be retrieved from the OWLModelManager or directly from the OWLOntologyManager (it is the same factory).<br />
<br />
The factory provides a getter method for every object<br />
<br />
eg ''getOWLObjectProperty(uri)'' or ''getOWLSubClassOfAxiom(expr, expr)''<br />
<br />
The objects returned are immutable and implement structural equality, therefore two OWL objects of the same type that were created at different times but with the same parameters are considered the same object. All OWL objects can exist independent of an ontology.<br />
<br />
<br />
=== Making changes to the ontology ===<br />
<br />
An OWL ontology is simply a set of '''OWLAxiom'''s plus a few annotations and a name. In order to change the ontology you can add or remove axioms from the ontology. First, create the axiom using the OWLDataFactory or search for an appropriate axiom in the ontology. Then, create an '''AddAxiom''' or '''RemoveAxiom''' OWLOntologyChange object - there is no factory for these, just create them as needed - by supplying the axiom plus the ontology the change will affect.<br />
<br />
If you have a compound change (multiple axioms added or removed) then add all of these to a list.<br />
<br />
Use the OWLOntologyManager (or, for convenience the OWLModelManager) '''applyChanges(changes)''' method to cause the changes to take effect. Anything that has an OWLOntologyChangeListener attached to this manager will get notified.<br />
<br />
<br />
=== Visitors ===<br />
<br />
Because the OWL vocabulary is fixed(!), there are a set number of OWLObject types that an algorithm may want to act on.<br />
<br />
In many cases an algorithm may want to implement behaviour for a broad range range of OWLObject - say we want to be able to render any class expression.<br />
<br />
Instead of having a large if statement with lots of<br />
<br />
if (expr instanceof OWLObjectSomeRestriction){<br />
OWLObjectSomeRestriction restr = (OWLObjectSomeRestriction)expr;<br />
// do something<br />
}<br />
else if (expr instanceof OWLObjectAllRestriction){<br />
OWLObjectAllRestriction restr = (OWLObjectAllRestriction)expr;<br />
// do something else<br />
}<br />
else...<br />
<br />
<br />
OWLObjects are implemented so they can use the [http://en.wikipedia.org/wiki/Visitor_pattern visitor pattern]:<br />
<br />
MyRenderer myRenderer = new MyRenderer();<br />
expr.accept(myRenderer);<br />
<br />
<br />
class MyRenderer extends OWLDescriptionVisitorAdapter{ // or implement OWLDescriptionVisitor if you want behaviour for all expressions<br />
<br />
public void visit(OWLObjectSomeRestriction r){<br />
// do something with r<br />
}<br />
public void visit(OWLObjectAllRestriction r){<br />
// do something else with r<br />
}<br />
}<br />
<br />
<br />
'''Back to [[Main_Page#Developer_Documentation|Protege Developer Documentation]]'''</div>TaniaTudorachehttps://protegewiki.stanford.edu/index.php?title=PluginAnatomy&diff=13491PluginAnatomy2016-05-24T06:11:25Z<p>TaniaTudorache: </p>
<hr />
<div><div class="orangeBox"><br />
<span class="orangeBoxTitle">The Anatomy of a Plugin</span><br /><br /><br />
The purpose of this web page is to describe some of the key ingredients of a Protege plugin. Even though the page is written for plugins of Protege 4, most things apply also for developing plugins for Protege 5 and newer versions.<br />
</div><br /><br />
<br />
'''Back to [[Main_Page#Developer_Documentation|Protege Developer Documentation]]''' <br /><br />
<br />
== Introduction ==<br />
<br />
The purpose of this web page is to describe some of the key ingredients of a plugin. The page will be directed by <br />
the quick development of a plugin and can indeed be used as a quick start guide. In order to focus attention on the core plugin<br />
concepts we will use the lowest common denominator of Java development tools and this tutorial will not use a Java IDE.<br />
We will assume that the <br />
reader has an understanding of Java development and knows how to follow along in his favorite IDE. For more information about<br />
how to work with Protege in an IDE, I will direct the reader to [[Protege4DevDocs#Using_an_Integrated_Development_Environment|this page]]. It is possible for an experienced developer to skip the ant scripts simply follow along in an IDE but we would still recommend a build file for the final version.<br />
<br />
The sources for the first plugin (the example tab) can be found [http://smi-protege.stanford.edu/repos/protege/protege4/misc/examples/plugin/trunk/org.protege.editor.owl.examples.tab here]. You can either check these out from svn and use this as a guide for reading the text or build this project in a series of step by step stages as described below. If you start from the checked out version then you can build the project by following the directions [[#Compile and Run|here]].<br />
<br />
==The vacuous plugin in five minutes==<br />
<br />
I created a (vacuous) plugin from scratch, installed it and ran it in just under [[Protege4 Plugin In Four Minutes|four minutes]]. There is also a new experimental [[Quick start for Protege Plugin with maven|quick-start guide]] for starting a new Protege 5 plugin with maven which will probably evolve into the new recommended strategy.<br />
<br />
The simplest (trivial) plugin can be built from sources in the following layout:<pre><br />
build.xml<br />
META-INF<br />
MANIFEST.MF<br />
lib<br />
resources<br />
src<br />
</pre> As we will see - even without any java sources - this is a sufficient basis for building a plugin that is recognized by Protege. There are only two files in this source tree - the build.xml file and the MANIFEST.MF. These files can be quickly put together from templates.<br />
<br />
===Build.xml===<br />
<br />
The template for the build.xml file can be downloaded from [http://smi-protege.stanford.edu/repos/protege/protege4/protege-base/trunk/etc/template-plugin-build.xml here]. Only two things need to be changed in this build file. They can be found by searching for the string "CHANGE ME" in the file. The first thing to change is the name of the project. I will call the project the plugin tutoiral project:<pre><br />
<project name = "plugin tutorial" default = "install" basedir = "."><br />
</pre><br />
The next setting that must almost always be changed is the name of the plugin. In this case, the build.xml already has the right name for the plugin but this is the only plugin for which this will be true:<pre><br />
<property name = "plugin" value = "org.protege.editor.owl.examples.tab"/><br />
</pre><br />
With these adjustments the build.xml file is ready.<br />
<br />
===MANIFEST.MF===<br />
<br />
The template for the MANIFEST.MF file can be downloaded from [http://smi-protege.stanford.edu/repos/protege/protege4/protege-base/trunk/etc/template-manifest.mf here]. Only five things need to be changed in this file to make it useable and two are optional. These can be found by searching for the string "CHANGE ME" in the file. The first change is to set the display name for the plugin:<pre><br />
Bundle-Name: Tutorial Plugin<br />
</pre> This is the name that is seen when Protege starts up and in several plugin configuration screens. <br />
The seccond thing to change is the symbolic name of the plugin. The usual default is to uses the same name as the plugin name in the build.xml file:<pre><br />
Bundle-SymbolicName: org.protege.editor.owl.examples.tab;singleton:=true<br />
</pre><br />
Note the "singleton:=true" line - this is important since most Protege plugins will only work if they are instantiated exactly once. The next things to change are the bundle description, the vendor and the documentation url:<pre><br />
Bundle-Description: A simple plugin for a plugin development tutorial<br />
Bundle-Vendor: The Protege Development Team<br />
Bundle-DocURL: www.perhaps.i.donthaveoneyet.com<br />
</pre><br />
Actually the vendor and the docurl are optional and can be deleted. The MANIFEST.MF file is now ready.<br />
<br />
===Compile and Run===<br />
<br />
Before we can start, we must set the PROTEGE_HOME environment variable to point to a Protege 4 distribution. [[ConfiguringAntBuildFiles|This page]] has directions on how to do this in different operating systems but for now I will assume that we are on a unix (or os x) system. In that case, the system variable can be set with a simple command <pre><br />
export PROTEGE_HOME=/Users/tredmond/Desktop/Protege_4.1_beta<br />
</pre><br />
<br />
This vacuous plugin is now ready to compile and run. Assuming that the PROTEGE_HOME environment variable is set correctly, this plugin can be compiled with the simple command <pre><br />
ant install<br />
</pre><br />
The full text of the build session is as follows:<pre><br />
[tredmond@Andromeda org.protege.editor.owl.examples.tab]$ ant install<br />
Buildfile: build.xml<br />
<br />
init:<br />
[mkdir] Created dir: /private/tmp/org.protege.editor.owl.examples.tab/build<br />
[mkdir] Created dir: /private/tmp/org.protege.editor.owl.examples.tab/build/classes<br />
[mkdir] Created dir: /private/tmp/org.protege.editor.owl.examples.tab/build/classes/lib<br />
[mkdir] Created dir: /private/tmp/org.protege.editor.owl.examples.tab/build/lib<br />
<br />
checkProtegeLibs:<br />
[echo] Using Protege Home = /Andromeda/Users/tredmond/dev/workspaces/protege4/owleditor/build/dist/equinox to find protege jars<br />
<br />
checkProtegeLibsAndReport:<br />
<br />
buildlibs:<br />
[unjar] Expanding: /Andromeda/Users/tredmond/dev/workspaces/protege4/owleditor/build/dist/equinox/bundles/org.protege.common.jar into /private/tmp/org.protege.editor.owl.examples.tab/build<br />
<br />
compile:<br />
<br />
build.manifest:<br />
[copy] Copying 1 file to /private/tmp/org.protege.editor.owl.examples.tab/build<br />
<br />
copy.resources:<br />
[mkdir] Created dir: /private/tmp/org.protege.editor.owl.examples.tab/build/classes/META-INF<br />
[copy] Copying 1 file to /private/tmp/org.protege.editor.owl.examples.tab/build/classes/META-INF<br />
<br />
jar:<br />
[jar] Building jar: /private/tmp/org.protege.editor.owl.examples.tab/build/org.protege.editor.owl.examples.tab.jar<br />
<br />
install:<br />
[delete] Deleting directory /Andromeda/Users/tredmond/dev/workspaces/protege4/owleditor/build/dist/equinox/configuration/org.eclipse.core.runtime<br />
[delete] Deleting directory /Andromeda/Users/tredmond/dev/workspaces/protege4/owleditor/build/dist/equinox/configuration/org.eclipse.osgi<br />
[copy] Copying 1 file to /Andromeda/Users/tredmond/dev/workspaces/protege4/owleditor/build/dist/equinox/plugins<br />
<br />
BUILD SUCCESSFUL<br />
Total time: 2 seconds<br />
[tredmond@Andromeda org.protege.editor.owl.examples.tab]$ <br />
</pre><br />
If the PROTEGE_HOME environment variable is not set correctly the user will instead see the following:<pre><br />
BUILD FAILED<br />
/private/tmp/org.protege.editor.owl.examples.tab/build.xml:74: missing protege libraries<br />
</pre><br />
<br />
We can now look at what the build has done by exploring the project directory tree.<br />
[[File:AnatomyBuildTreeAnnotated.png]]<br />
<br />
We see the following elements:<br />
* '''The Class Tree''' is (approximately) a flattened view of the plugin (the jar file). Generally this largely consists of the .class files that have been compiled from the java. But since we have not written any java yet this is not found. In addition, this will contain resources needed by the plugin and libraries that the plugin needs but which cannot be found in other Protege plugins.<br />
* '''The Generated Libraries''' which are extracted from Protege plugins. This is needed because of a difference between how Java and OSGi get resources out of Jar files. OSGi allows a [[PluginAnatomy#Some_Nomenclature|bundle]] (which is a implemented as a jar file) to contain other jar files. If the bundle classpath is configured correctly, OSGi will load classes from those jars in jars. But Java does not have this capability. So the build script extracts the jar files out of the OSGi bundles that will be needed to compile the bundle. Note that these jar files are not copied to the class tree because the Protege 4/OSGi environment will make the classes and resources of these jar files available.<br />
* '''The Protege 4 Plugin''' this is the final artifact of the build process. Because we have run "ant install" it has also been installed in the Protege distribution.<br />
<br />
If the developer is still with me then he is now ready to run the plugin. Go to the Protege distribution (the one pointed to by the PROTEGE_HOME environment variable) and run it. We are particularly interested in the console output because this is going to be the only indication that this plugin is recognized at all. The console output should look like this:<pre><br />
Starting Protege 4 OWL Editor (Version 4.1.111)<br />
Platform:<br />
Java: JVM 1.5.0_16-b06-284 Memory: 207M<br />
Language: en, Country: US<br />
Framework: Eclipse (1.4.0)<br />
OS: MacOSX (10.5.6)<br />
Processor: ppc<br />
Installed plugin Pellet Reasoner<br />
Installed plugin DL Query Tab<br />
Installed plugin Owlviz Plug-in<br />
Installed plugin owleditor<br />
Installed plugin Tutorial Plugin<br />
Installed plugin The OWL API<br />
Installed plugin Factplusplus Plug-in<br />
Tutorial Plugin Plugin has no plugin.xml resource<br />
</pre><br />
In this output we see that the Tutorial Plugin has been recognized and installed. In addition there is a informational message that the plugin.xml file has not been found. This is almost always indicates a problem because most Protege 4 plugins depend on a plugin.xml resource. We will describe how the plugin.xml file is generated in the next sections.<br />
<br />
== Writing View and Tab Plugins ==<br />
<br />
The previous plugin added no functionality to Protege. We are now going to describe how to remedy this situation. So far we have not missed the Java IDE but it is now when we start writing a bit of Java code that the Java IDE would really shine. But to illustrate the main concepts, we will continue to show how to build the plugin without any development environment other than that provided by the core Java tools.<br />
<br />
===Adding a View Plugin to the Plugin.xml file===<br />
<br />
Recall that previously when we ran our plugin, Protege 4 complained that there was no plugin.xml file. The plugin.xml file contains a declaration of the ways in which the plugin will extend the Protege 4 capabilities and (more advanced) the ways in which the plugin capabilities can be extended by other plugins. We will start by adding a declaration that this plugin will implement a Protege View. <br />
<br />
So first we will give a definition of a Protege view. The purpose of a Protege view is to provide a view of some aspect of an ontology. In the Protege interface, a Protege view is easily recognized. It has a clearly defined border. At the top of a Protege view is a title bar and a collection of buttons allowing the user to<br />
* split the protege view into two copies of the same view one above the other,<br />
* split the protege view into two copies of the same view one beside the other,<br />
* float the view above the Protege client so that it is visible in any context,<br />
* close the view removing it from the tab that contains it.<br />
An example of a typical Protege view is shown below.<br />
[[File:AnatomyView.png]]<br />
<br />
In order to declare our intent that this plugin implement a Protege view, we add the following plugin.xml file to the root of the project tree:<br />
<pre><br />
<?xml version="1.0" encoding="UTF-8" standalone="no"?><br />
<?eclipse version="3.0"?><br />
<br />
<plugin><br />
<extension id="ExampleViewComponent"<br />
point="org.protege.editor.core.application.ViewComponent"><br />
<label value="Example View Component"/><br />
<class value="org.protege.editor.owl.examples.tab.ExampleViewComponent"/><br />
<category value="@org.protege.ontologycategory"/><br />
</extension><br />
</plugin><br />
</pre><br />
<br />
This plugin.xml file states that this plugin is making a single extension to the Protege 4 capabilities. We will cover the meaning of the parts of this extension declaration line by line. The first line defines the id of the extension. This particular extension is called the ExampleViewComponent. The second decleration,<br />
<pre><br />
point="org.protege.editor.core.application.ViewComponent",<br />
</pre><br />
states what the extension is trying to do. This extension is attempting to implement the functionality represented by the extension point with the name <br />
<pre><br />
org.protege.editor.core.application.ViewComponent.<br />
</pre><br />
The label declaration tells Protege what to put in the title bar of the view. The class declaration indicates which class implements the functionality needed by this view. We will go into the implementation of that class shortly. Finally the category declaration tells Protege which menu under the View menu should contain this view.<br />
<br />
A very simple view can be written by extending the class AbstractOWLViewComponent and implementing the methods initialiseOWLView and disposeOWLView. A very simple such implementation can be found <br />
[http://smi-protege.stanford.edu/repos/protege/protege4/misc/examples/plugin/trunk/org.protege.editor.owl.examples.tab/src/org/protege/editor/owl/examples/tab/ExampleViewComponent.java here].<br />
Now this plugin depends on a library that can be found <br />
[http://smi-protege.stanford.edu/repos/protege/protege4/misc/examples/plugin/trunk/org.protege.editor.owl.examples.tab/lib/examplelib.jar here]. This library should be deposited in the lib directory of the project. This library is trivial and its only purpose is to show how to use a library in a plugin. The directory tree of the project should now look like this:<br />
[[File:AnatomyTreeDoesView.png]]<br />
<br />
At this point the ant install operation will compile, build and install the new plugin with the "ant install" command.<br />
But the installed plugin won't run correctly and we will show how to fix this below.<br />
<br />
===Libraries and the Bundle Classpath===<br />
<br />
After we install the plugin, we can start Protege to try to use the "Example View Component". If you click on the View menu and then select "Ontology Views" you will see the "Example View Component" listed there. However on selecting this view and trying to place on the Protege screen, the following error will arise:<br />
<pre><br />
Error logged<br />
java.lang.NoClassDefFoundError: org/protege/owl/example/Metrics<br />
at java.lang.Class.getDeclaredConstructors0(Native Method)<br />
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2357)<br />
at java.lang.Class.getConstructor0(Class.java:2671)<br />
at java.lang.Class.newInstance0(Class.java:321)<br />
at java.lang.Class.newInstance(Class.java:303)<br />
...<br />
</pre><br />
If we look at the plugin contents with the "jar -tf " command then we will see that the build file correctly put the examplelib.jar into the plugin:<br />
<pre><br />
[tredmond@BlackHole org.protege.editor.owl.examples.tab]$ jar -tf build/org.protege.editor.owl.examples.tab.jar <br />
META-INF/<br />
META-INF/MANIFEST.MF<br />
lib/<br />
org/<br />
org/protege/<br />
org/protege/owl/<br />
org/protege/owl/examples/<br />
org/protege/owl/examples/tab/<br />
lib/examplelib.jar<br />
org/protege/owl/examples/tab/ExampleViewComponent.class<br />
plugin.xml<br />
[tredmond@BlackHole org.protege.editor.owl.examples.tab]$ <br />
</pre><br />
<br />
The problem at this point is in the MANIFEST.MF file. The Bundle-Classpath line is as follows:<br />
<pre><br />
Bundle-ClassPath: .<br />
</pre><br />
To include the examplelib.jar in the jar file, the Bundle-Classpath line must be modified to include this library:<br />
<pre><br />
Bundle-ClassPath: .,lib/examplelib.jar<br />
</pre><br />
Note that using a colon or a semi-colon instead of the comma does not work. Also entering ./lib/examplib.jar does not work either. This is the osgi mechanism for making this library available to this plugin. Note that since the MANIFEST.MF file does not have an Export-Package declaration, these classes will only be visible within the plugin and will not be exported to any other plugin in the Protege environmeht. This is part of the plugin isolation provided by OSGi that allows different plugins to use different libraries without conflicts.<br />
<br />
Now the plugin works correctly and I can install the view into the Active Ontology Tab:<br />
[[File:AnoyomyViewSuccessful.png]].<br />
<br />
===Tab Plugins and the Viewconfig.xml File===<br />
<br />
The other most common plugin type is the Protege tab. In order to make a Protege tab, the developer needs to generate and use a viewconfig.xml file for the project. In this section we will show how to do this. It turns out that a tab can usually be put together without writing any Java code. The steps for writing a tab plugin are<br />
# add a declaration of the tab plugin in the plugin.xml file.<br />
# start Protege and graphically configure the tab in question.<br />
# save the configuration and include it with the source files for the tab.<br />
# test by restarting Protege and running the tab with the default configuration.<br />
These steps are described in more detail below.<br />
<br />
==== Step 1: Declare the plugin ====<br />
<br />
The first thing that that needs to be done is to declare the tab in the plugin.xml file.<br />
<pre><br />
<?xml version="1.0" encoding="UTF-8" standalone="no"?><br />
<?eclipse version="3.0"?><br />
<br />
<plugin><br />
<extension id="ExampleViewComponent"<br />
point="org.protege.editor.core.application.ViewComponent"><br />
<label value="Example View Component"/><br />
<class value="org.protege.editor.owl.examples.tab.ExampleViewComponent"/><br />
<category value="@org.protege.ontologycategory"/><br />
</extension><br />
<extension id="ExampleWorkspaceTab"<br />
point="org.protege.editor.core.application.WorkspaceTab"><br />
<label value="Example Tab"/><br />
<class value="org.protege.editor.owl.ui.OWLWorkspaceViewsTab"/><br />
<index value="X"/><br />
<editorKitId value="OWLEditorKit"/><br />
<defaultViewConfigFileName value="viewconfig-exampleTab.xml"/><br />
</extension><br />
</plugin><br />
</pre><br />
<br />
An important line in the above declaration of the tab is the defaultViewConfigFileName. This names a resource that the protege plugin will look for to create the default layout of the tab.<br />
<br />
==== Step 2: Layout the views in the plugin ====<br />
<br />
We can now compile this plugin and install it as before. Now when we run Protege, we will see a new tab called the "Example Tab" in the tabs menu (Window->Tabs). Enable this tab. Since we have not yet created the viewconfig-exampleTab.xml file, you will see that the tab is empty.<br />
<br />
Now install and layout some views into this tab. In my case I made the views look like this:<br />
<br />
[[File:AnatomyViewLayout.png]]<br />
<br />
==== Step 3: Save a configuration file ====<br />
<br />
Now in the Window menu select "Export Current Tab" and save the file as <br />
<pre><br />
viewconfig-exampleTab.xml<br />
</pre><br />
in the project directory. In my case the viewconfig-exampleTab file looked like this:<br />
<pre><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<layout><br />
<VSNode splits="0.5 0.5"><br />
<CNode><br />
<Component label="Asserted class hierarchy"><br />
<Property id="pluginId" value="org.protege.editor.owl.OWLAssertedClassHierarchy"/><br />
</Component><br />
</CNode><br />
<CNode><br />
<Component label="Example View Component"><br />
<Property id="pluginId" value="org.protege.editor.owl.examples.tab.ExampleViewComponent"/><br />
</Component><br />
</CNode><br />
</VSNode><br />
</layout><br />
</pre><br />
<br />
Now before we complete this Protege session, go to the Window menu and click "Reset selected tab to default state". You will see that the tab is now empty again. Now exit Protege.<br />
<br />
The directory tree of the project should now look like this:<br />
<br />
[[File:AnatomyTreeDoesViewWithConfig.png]]<br />
<br />
==== Step 4: Test the results ====<br />
<br />
Install the plugin again. Note that the build script automatically found the viewconfig-exampleTab.xml file and put it into the plugin:<br />
<pre><br />
[tredmond@BlackHole org.protege.editor.owl.examples.tab]$ jar -tf build/org.protege.editor.owl.examples.tab.jar <br />
META-INF/<br />
META-INF/MANIFEST.MF<br />
lib/<br />
org/<br />
org/protege/<br />
org/protege/owl/<br />
org/protege/owl/examples/<br />
org/protege/owl/examples/tab/<br />
lib/examplelib.jar<br />
org/protege/owl/examples/tab/ExampleViewComponent.class<br />
plugin.xml<br />
viewconfig-exampleTab.xml<br />
[tredmond@BlackHole org.protege.editor.owl.examples.tab]$ <br />
</pre><br />
<br />
Run Protege and go to the Example Tab. It is empty? The reason for this is that the tab has been customized to have nothing in it from the last session. Click on the tabs menu and click on "Reset selected tab to default state". Now you will see the views that we configured in the tab before. This is now the default state for the tab and it will be what other users see when they use this plugin for the first time.<br />
<br />
== Adding Menu Plugins ==<br />
<br />
I have created a small menu project [http://smi-protege.stanford.edu/repos/protege/protege4/misc/examples/org.protege.example.menu/trunk here] that shows how to create several different menu types. Later we will use this project as the example that drives this wiki page.<br />
<br />
Adding a new menu to Protege is very easy. The two things that the developer needs to accomplish are to <br />
write the code for the menu action and to add an entry to the plugin.xml. I will take a real world example to illustrate the process. In this example, I am writing a plugin that causes Protege to display an ontology that is stored in a database format. I want to put this in the file menu of Protege just under other items such as "New", "Open", "Open Recent" and "Open from URL".<br />
<br />
To write the code for the menu plugin, the developer merely needs to extend ProtegeOWLAction. The three methods that the developer needs to write are initialise, dispose and actionPerformed. I think that the meaning of these three methods is pretty clear and this can be a very easy task.<br />
<br />
Now the developer needs to add an entry to the [http://smi-protege.stanford.edu/repos/protege/protege4/misc/examples/org.protege.example.menu/trunk/plugin.xml plugin.xml] file. In my case the entry looks like this:<br />
<pre><br />
<extension id="loadDatabase"<br />
point="org.protege.editor.core.application.EditorKitMenuAction"><br />
<name value="Load Database Ontology"/><br />
<class value="org.protege.owlapi.bridge.LoadDatabaseProjectMenu"/><br />
<toolTip value="Loads ontologies from a database into Protege"/><br />
<path value="org.protege.editor.core.application.menu.FileMenu/SlotAA-Z"/><br />
<editorKitId value="OWLEditorKit"/><br />
</extension><br />
</pre><br />
The "id" attribute of loadDatabase is simply a short identifier for the plugin that is not seen by the user. The "point" attribute indicates that the plugin being declared here is a menu plugin. The <br />
<pre><br />
<class value="org.protege.owlapi.bridge.LoadDatabaseProjectMenu"/><br />
</pre><br />
line indicates the class that implements the action that this menu performs and the <br />
<pre><br />
<editorKitId value="OWLEditorKit"/><br />
</pre><br />
line indicates that the menu is to be used in the context of the owl editor. The only other line in this [http://smi-protege/repos/protege/protege4/incubator/v3/org.protege.owlapi.bridge/trunk/plugin.xml plugin.xml] that is a bit mysterious is the line that says:<br />
<pre><br />
<path value="org.protege.editor.core.application.menu.FileMenu/SlotAA-Z"/><br />
</pre><br />
The purpose of this line is to indicate exactly where the menu should be placed. The first part of the value,<br />
<pre><br />
org.protege.editor.core.application.menu.FileMenu<br />
</pre><br />
indicates that the parent of my "Load Database Ontology" menu is the file menu. The string is making a reference to the file menu declaration<br />
<pre><br />
<extension<br />
id="menu.FileMenu"<br />
name="FileMenu"<br />
point="org.protege.editor.core.application.EditorKitMenuAction"><br />
<name value="File"/><br />
<toolTip value="File menu tool tip!"/><br />
<path value="/SlotA-A"/><br />
<editorKitId value="any"/><br />
</extension><br />
</pre><br />
from the [http://smi-protege/repos/protege/protege4/plugins/org.protege.editor.core.application/trunk/plugin.xml plugin.xml] file for the org.protege.editor.core.application plugin. The first part of the string<br />
<pre><br />
org.protege.editor.core.application.menu.FileMenu<br />
</pre><br />
is <br />
<pre><br />
org.protege.editor.core.application<br />
</pre><br />
which is the identifier of the plugin declaring the menu and "menu.FileMenu" is the id of the plugin from the plugin.xml file.<br />
<br />
But now I need to explain the meaning of the SlotAA-Z portion of the path in my original menu declaration:<br />
<pre><br />
<extension id="loadDatabase"<br />
point="org.protege.editor.core.application.EditorKitMenuAction"><br />
<name value="Load Database Ontology"/><br />
<class value="org.protege.owlapi.bridge.LoadDatabaseProjectMenu"/><br />
<toolTip value="Loads ontologies from a database into Protege"/><br />
<path value="org.protege.editor.core.application.menu.FileMenu/SlotAA-Z"/><br />
<editorKitId value="OWLEditorKit"/><br />
</extension><br />
</pre><br />
The SlotAA-Z string indicates exactly where the "Load Database Ontology" should appear in the File menu. This string (SlotAA-Z) is parsed as a group (Slot-AA) and an index (Z). First the group and the index are used to sort the children of the File menu. The children are sorted first by group but when two children have the same group they are then sorted by group index. In addition to this, children with the same group are grouped together in the menu.<br />
<br />
In particular, if I track down the declarations of the "New", "Open", "Open Recent" and "Open from URL" menus I find that they all have a group identifier of SlotAA. This is why they appear in the file menu together followed by a separator bar. By specifying that my menu should have a group of SlotAA, I am telling Protege that I want my menu to be grouped with these menus. By giving my menu an index of Z I am telling Protege that I want my menu to go at the end of the list.<br />
<br />
The algorithm used by Protege to determine the location of the plugin can be observed by turning on logging for the menu builder. This can easily be done by editing the log4j.xml in the Protege installation directory. First modify the section that says<br />
<pre><br />
<appender name="console" class="org.apache.log4j.ConsoleAppender"><br />
<param name="Threshold" value="INFO"/><br />
<layout class="org.apache.log4j.PatternLayout"><br />
<param name="ConversionPattern" value="%m%n"/><br />
</layout><br />
</appender><br />
</pre><br />
to say<br />
<pre><br />
<appender name="console" class="org.apache.log4j.ConsoleAppender"><br />
<param name="Threshold" value="INFO"/><br />
<layout class="org.apache.log4j.PatternLayout"><br />
<param name="ConversionPattern" value="%m%n"/><br />
</layout><br />
</appender><br />
</pre><br />
This allows the console to show debug messages. Then add the lines<br />
<pre><br />
<category name="org.protege.editor.core.ui.menu"><br />
<priority value="debug"/><br />
</category><br />
</pre><br />
This will cause Protege to generate somewhat verbose logs to the console (these logs also show up in a log file in ${home directory}/.Protege/logs/protege-###.log). The relevant lines for my menu plugin are as follows. First<br />
<pre><br />
Parsed: [Menu: Load Database Ontology -- <SlotAA, Z>] parentId = org.protege.editor.core.application.menu.FileMenu<br />
</pre><br />
indicates that Protege was able to parse the path for my menu plugin and determine that the id of the parent is<br />
<pre><br />
org.protege.editor.core.application.menu.FileMenu<br />
</pre><br />
the group is SlotAA and the group index is Z. Next we see the line<br />
<pre><br />
[Menu: File -- <SlotA, A>] parent of [Menu: Load Database Ontology -- <SlotAA, Z>]<br />
</pre><br />
which indicates that Protege was successfully able to find a declared menu with the right id to be the parent of my menu. This line also indicates that Protege successfully deciphered the group (SlotAA) and the index (Z). Finally there are the lines:<br />
<pre><br />
Adding [Menu: File -- <SlotA, A>] to menu bar<br />
Giving File the child[Menu: New... -- <SlotAA, E>]<br />
Giving File the child[Menu: Open... -- <SlotAA, F>]<br />
Giving File the child[Menu: Open recent -- <SlotAA, G>]<br />
Giving File the child[Menu: Open from URL... -- <SlotAA, G>]<br />
Giving File the child[Menu: Load Database Ontology -- <SlotAA, Z>]<br />
Giving File the child[Menu: Save -- <SlotAB, A>]<br />
Giving File the child[Menu: Save as... -- <SlotAB, B>]<br />
Giving File the child[Menu: Gather ontologies... -- <SlotAB, C>]<br />
Giving File the child[Menu: Export inferred axioms as ontology... -- <SlotAB, D>]<br />
Giving File the child[Menu: Ontology libraries... -- <SlotD, A>]<br />
Giving File the child[Menu: Loaded ontology sources... -- <SlotD, B>]<br />
Giving File the child[Menu: Check for plugins... -- <SlotP, A>]<br />
Giving File the child[Menu: Close -- <SlotY, M>]<br />
</pre><br />
that indicate that the File menu was successfully populated.<br />
<br />
== Using a Reasoner ==<br />
<br />
Usually when a plugin wants to use a reasoner, the plugin should use the reasoner that is initialized and used by Protege.<br />
This reasoner could be the FaCT++, HermiT, Pellet or other reasoners and is selected and initialized at the users request.<br />
To explain how this works we will explain how the following (not too useful) code from a menu plugin works.<br />
<pre><br />
public void actionPerformed(ActionEvent e) {<br />
OWLClass lastSelectedClass = getOWLWorkspace().getOWLSelectionModel().getLastSelectedClass();<br />
if (lastSelectedClass != null) {<br />
OWLReasonerManager reasonerManager = getOWLModelManager().getOWLReasonerManager();<br />
ReasonerUtilities.warnUserIfReasonerIsNotConfigured(getOWLWorkspace(), reasonerManager);<br />
if (reasonerManager.getReasonerStatus() == ReasonerStatus.INITIALIZED) {<br />
OWLReasoner reasoner = reasonerManager.getCurrentReasoner();<br />
Set<OWLClass> subClasses = reasoner.getSubClasses(lastSelectedClass, true).getFlattened();<br />
if (!subClasses.isEmpty()) {<br />
LOGGER.info("Inferred subclasses of " + getOWLModelManager().getRendering(lastSelectedClass) + " are:");<br />
for (OWLClass subClass : subClasses) {<br />
LOGGER.info("\t" + getOWLModelManager().getRendering(subClass));<br />
}<br />
}<br />
else {<br />
LOGGER.info(getOWLModelManager().getRendering(lastSelectedClass) + " has no inferred subclasses.");<br />
}<br />
}<br />
}<br />
}<br />
</pre><br />
This code creates an action that when invoked will print some messages about inferred subclasses to the log. The first thing to notice is that the OWLReasonerManager is the central class for accessing the Protege reasoner and it can be obtained from the OWLModelManager. This class can be used to determine the status of the reasoner, get the current Protege reasoner or get a reasoner factory for creating new instances of a Protege reasoner.<br />
<br />
Once the reasoner manager is obtained code above informs the user if the reasoner is not initialized or is in inconsistent state. This warning has been included as a standard Protege utility so that the user will get a consistent message when the reasoner is not ready for inference. This is the approach taken by the DLQuery plugin for instance because it does not make sense to use the DLQuery plugin if the reasoner is not initialized. However an alternative approach is to quietly check the status of the reasoner and only use the reasoner if it is in a good enough state. This is the strategy taken by the code that displays inferences such as the inferred super classes and the consistency of classes and properties as the user navigates through the Protege interface.<br />
<br />
The next thing that happens is that the code checks the status of the current reasoner with the call ''reasonerManager.getReasonerStatus()''. This call returns a ReasonerStatus enumeration which currently can take on the following values:<br />
* '''NO_REASONER_FACTORY_CHOSEN''': the user has not yet selected a type of reasoner.<br />
* '''REASONER_NOT_INITIALIZED''': the user has selected what type of reasoner he wants but has not initialized it yet.<br />
* '''INITIALIZATION_IN_PROGRESS''': the reasoner is in the process of being initialized. Plugins should not see this state.<br />
* '''INITIALIZED''': the reasoner is ready for use.<br />
* '''INCONSISTENT''': the reasoner was initialized but the ontology is inconsistent. In this state, reasoners are not usable.<br />
* '''OUT_OF_SYNC''': the reasoner is ready but it is not up to date with the latest changes in the ontology. The reasoner is usable in this state but it may produce misleading results. It can be brought up to date with a reasoner.flush() call.<br />
<br />
Finally the code above obtains the Protege reasoner (which implements the OWL api OWLReasoner interface) and uses OWL api calls to obtain information.<br />
<br />
In some cases the above strategy is not sufficient. For example, the explanation plugins need to create their own reasoners and so they need a reasoner factory. In this case the plugin can make the call:<br />
<pre><br />
reasonerManager.getCurrentReasonerFactory().getReasonerFactory()<br />
</pre><br />
to obtain the reasoner factory (an instance of the OWL api interface OWLReasonerFactory).<br />
<br />
== Advanced Topics ==<br />
=== Adding New Plugin Types ===<br />
<br />
'''Work in Progress'''<br />
<br />
One of the advantages of using the OSGi/Eclipse framework is that it naturally allows developers to<br />
define their own plugin types. For example, the SWRL tab, being written by <br />
Martin O'Connor, delegates the work of executing the SWRL rules to a rule engine plugin. It is anticipated that <br />
there will be two rule engine plugins that are are compatible with the SWRL tab. One of these plugins will <br />
be based on the Jess rule engine and the other plugin will be based on the DROOLS rule engine.<br />
<br />
We will illustrate how this is done with two Protege bundles. The sources for these bundles can be found <br />
<pre><br />
http://smi-protege.stanford.edu/repos/protege/protege4/misc/examples/custom.extension/trunk/consumer<br />
</pre><br />
and<br />
<pre><br />
http://smi-protege.stanford.edu/repos/protege/protege4/misc/examples/custom.extension/trunk/producer<br />
</pre><br />
Both bundles can be quickly installed through the included [[ConfiguringAntBuildFiles|ant scripts]].<br />
<br />
The consumer bundle behaves as follows. It adds a menu item to a running Protege environment. This menu is found at the bottom of the edit menu. When the user clicks on this menu item, the consumer bundle performs the following actions:<br />
# it looks for all custom_extension_point plugins in the running Protege environment,<br />
# it instantiates each plugin found and finally<br />
# it calls the doSomething() method on that plugin instance.<br />
<br />
This behavior is provided through the interaction of four components:<br />
* the '''consumer code''' that is responsible for looping through a set of plugins and invoking them.<br />
* the '''plugin loader''' that is responsible for calculating and returning a set of plugins that match a specifiction.<br />
* the '''plugin''' that is a java encoding of data encoded in plugin.xml files provided by the bundles.<br />
* the '''plugin instance''' that is an instantiation of a plugin that does the actual work of the plugin.<br />
<br />
==== The Plugin Consumer ====<br />
<br />
The Plugin consumer essentially uses the plugin loader (described below) to loop through a series of plugins and instantiate and invoke them.<br />
The code that does this work can be found in the [http://smi-protege.stanford.edu/repos/protege/protege4/misc/examples/custom.extension/trunk/consumer/src/org/protege/example/extension/point/MyPluginConsumer.java MyPluginConsumer] class and looks like the following:<br />
<pre><br />
public void actionPerformed(ActionEvent e) {<br />
MyPluginLoader loader = new MyPluginLoader(getOWLModelManager());<br />
for (MyPlugin plugin : loader.getPlugins()) {<br />
try {<br />
MyPluginInstance i = plugin.newInstance();<br />
i.doSomething();<br />
}<br />
catch (Exception ex) {<br />
ProtegeApplication.getErrorLog().logError(ex);<br />
}<br />
}<br />
}<br />
</pre><br />
This is a typical example of how a plugin consumer will work. It uses a plugin loader to find a set of plugins that are then instantiated (plugin.newInstance()) and then invoked (i.doSomething()). For the most part, the plugin consumer does not have to worry too much about the details of the Protege plugin infrastructure. The logic of the Plugin consumer is defined by the task at hand.<br />
<br />
==== The Plugin Loader ====<br />
<br />
The [http://smi-protege.stanford.edu/repos/protege/protege4/misc/examples/custom.extension/trunk/consumer/src/org/protege/example/extension/point/MyPluginLoader.java plugin loader] is responsible for searching for plugins of the custom_extension_point type. The plugin loader extends the AbstractPluginLoader class which handles most of the logic of creating and finding plugins. Minimally, all the developer needs to do to implement the plugin loader is to implement a constructor and a create instance method. The constructor looks like this:<br />
<pre><br />
public MyPluginLoader(OWLModelManager owlModelManager) {<br />
super(MyPlugin.CONSUMER_ID, MyPlugin.ID);<br />
this.owlModelManager = owlModelManager;<br />
}<br />
</pre><br />
and this is typical. The significance of the two arguments to the super constructor will be explained when I describe the Plugin implementation. Essentially they define which type of plugin is being searched for by this loader. In addition, the constructor for this plugin loader takes an owlModelManager argument so that he can pass this argument to the constructor for the plugins. The createInstance method then is responsible for constructing the plugin:<br />
<pre><br />
protected MyPlugin createInstance(IExtension extension) {<br />
return new MyPlugin(owlModelManager, extension);<br />
}<br />
</pre><br />
In addition there is a getExtensionMatcher method that can be used to restrict the set of plugins that are returned by this plugin loader. Generally it is not necessary to implement the getExtensionMatcher interface.<br />
<br />
==== The Plugin ====<br />
<br />
Essentially the [http://smi-protege.stanford.edu/repos/protege/protege4/misc/examples/custom.extension/trunk/consumer/src/org/protege/example/extension/point/MyPlugin.java plugin] is a POJO representing a declaration of a plugin in a plugin.xml file. To understand this we need to look at the two declarations in two separate plugin.xml files. The first declaration is found in the bundle for the consumer plugin. This declaration represents a request for a particular type of service. In our case the [http://smi-protege.stanford.edu/repos/protege/protege4/misc/examples/custom.extension/trunk/consumer/plugin.xml declaration] looks like this:<br />
<pre><br />
<extension-point id="custom_extension_point" <br />
name="Custom Extension Point"<br />
schema="schema/custom_extension_point.exsd"/><br />
</pre><br />
<br />
This declaration defines <br />
* the identifier of the plugin type, custom_extension_point, which is the name by which plugin developers refer to this plugin type, This string corresponds to the MyPlugin.ID that we passed to the AbstractPluginLoader constructor above. Note that it is possible for different bundles to declare an extension point <br />
* the user friendly name of the plugin type and <br />
* a pointer to the xml schema for the plugin type.<br />
I believe that the last item, [http://smi-protege.stanford.edu/repos/protege/protege4/misc/examples/custom.extension/trunk/consumer/schema/custom_extension_point.exsd the schema], is not mandatory but it is extremely useful for developers and it is created naturally when plugins are developed using the eclipse IDE.<br />
<br />
<br />
The plugin producer provided a [http://smi-protege.stanford.edu/repos/protege/protege4/misc/examples/custom.extension/trunk/producer/plugin.xml declaration] for his extension that matches the extension point declaration above. In our example the extension declaration looks like this:<br />
<pre><br />
<extension id="SimpleImplementation"<br />
point="org.protege.example.extension.point.custom_extension_point"><br />
<class value="org.protege.example.extension.PluginImplementation"/><br />
<type value="Logger Type"/><br />
</extension><br />
</pre><br />
<br />
<br />
The plugin class, [http://smi-protege.stanford.edu/repos/protege/protege4/misc/examples/custom.extension/trunk/consumer/src/org/protege/example/extension/point/MyPlugin.java MyPlugin], extends the AbstractProtegePlugin class. The AbstractProtegePlugin class provides many utilities that make it easy to write the plugin class. In particular, to get the "type" field the MyPlugin class provides an accessor:<br />
<pre><br />
/**<br />
* gets the declared type field for the plugin<br />
*/<br />
public String getType() {<br />
return getPluginProperty(TYPE_PARAM, "null type");<br />
}<br />
</pre><br />
<br />
In addition, the AbstractProtegePlugin class does the tricky aspects of instantiating the plugin leaving only the task of initializing the instantiated plugin to the MyPlugin class:<br />
<pre><br />
/**<br />
* Creates an instance of the plugin. It is expected that<br />
* this instance will be "setup", but the instance's<br />
* initialise method will not have been called in the instantiation<br />
* process.<br />
*/<br />
public MyPluginInstance newInstance() throws ClassNotFoundException, IllegalAccessException,<br />
InstantiationException {<br />
MyPluginInstance mpi = super.newInstance();<br />
mpi.setup(modelManager, getType());<br />
return mpi;<br />
}<br />
</pre><br />
<br />
==== The Plugin Instance ====<br />
<br />
The [http://smi-protege.stanford.edu/repos/protege/protege4/misc/examples/custom.extension/trunk/consumer/src/org/protege/example/extension/point/api/MyPluginInstance.java plugin instance class] is responsible for performing whatever task it is that the plugin is supposed to perform. In our case the plugin instance will implement the doSomething() method. This class must implement the ProtegePluginInstance interface though it is not clear that this is really needed anymore. The ProtegePluginInstance interface has only one method, initialise(), but many plugins, such as the one in this example, have their own initailization methods that are called by the Plugin Loader.<br />
<br />
=== Frames, Frame Sections, and Rows ===<br />
<br />
'''In Progress'''<br />
<br />
It is not clear that this needs to be here but this is an extremely central Protege concept. In general plugin developers will not need to build custom Frame lists and can simply use the top level OWL Frame List concepts.<br />
<br />
Most of the discussion will focus on a smaller and smaller section of the the following Protege 4.1 screen. This diagram shows the standard Protege 4.1 classes tab as it displays some information about the selected class which is the Country class in the pizza ontology.<br />
<br />
[[File:FrameInClassesTab.png||A Classes Tab showing a standard frame in the right bottom]]<br />
<br />
==== FrameLists and Frames ====<br />
<br />
The diagram below shows a FrameList showing a description of the Country class. The OWLFrameList is the swing object that is responsible for displaying some object called the root object for the OWLFrameList. In this case, the root object for this frame list is the Country OWL class. Frequently the root object of the for a frame list is an OWL entity but this is not required. The constructor for the OWLFrameList object takes an OWLFrame object which manages the content model of the OWLFrameList. The associated OWLFrame object also has a root object and in this case the root object is the Country class.<br />
<br />
While it may not be visually immediately apparent, the information being displayed is actually a rendition of a list of axioms. Thus for instance, the class expression represented in the section underneath ''Equivalent Classes'' represents the axiom<br />
<pre><br />
Country SubClassOf DomainConcept and {America, England, France, Germany, Italy}.<br />
</pre><br />
Similarly the first individual displayed under ''Members'' represents the axiom<br />
<pre><br />
America Type Country.<br />
</pre><br />
<br />
The fact that these are not displayed simply as the associated axioms is an key part of the purpose of the OWLFrameList. The task of the OWLFrameList below is to describe the Country class. For a user it makes sense that in the Members section of that OWLFrameList he would see a list of the individuals in that class. It would make less sense to the user if a set of axioms was displayed there.<br />
<br />
[[File:FrameList.png||Frame List]]<br />
<br />
==== Frame Sections ====<br />
<br />
OWLFrames are grouped into a series of sections each of which shows a particular type of axioms. In the diagram below we have a frame section that is rendering a list of class assertion axioms.<br />
<br />
[[File:FrameSection.png|Frame Section]]<br />
<br />
==== Frame Section Rows ====<br />
<br />
[[File:FrameSectionRow.png|Frame Section]]<br />
<br />
[[File:FrameSectionRowAlt.png|Frame Section]]<br />
<br />
== Glossary == <br />
<br />
There are some terms that come up naturally in the discussion of Protege plugin development that require a bit of explanation. The Protege plugin mechanism has three layers and the terms used to describe plugins is slightly different at each of these layers:<br />
* '''Extension Point''' is the eclipse term for what Protege folks often call a plugin.<br />
* '''[http://www.osgi.org/Main/HomePage OSGi]''' is the bottom layer of the Protege plugin architecture. It is a powerful industry standard framework which provides modularity and services beyond that provided by the Java specifications. In OSGi, the term OSGi bundle is used to represent a self-contained unit of code that can be introduced into the OSGi framework and which will import and export classes and resources in a controlled way. <br />
* '''An OSGi Bundle''' is collection of software grouped into a single jar file. When this software runs in the OSGi environment, it runs in a protected space where it can define exactly what java classes from the surrounding environment are needed and what java classes are incompatible with its operation. Bundles have names, version numbers, developer contact information and activation entry points <br />
* '''A Plugin''' is a declared service that implements some functionality of use to the Protege platform. The Protege Plugin mechanism is based on the Eclipse plugin mechanism where plugins are declared in a file called plugin.xml.<br />
* '''[http://wiki.eclipse.org/index.php/Rich_Client_Platform The Eclipse Rich Client Platform]''' is an environment built on top of OSGi which provides additional features to ease the building of a "Rich" client. Protege only uses some of the features of this rich client platform. In particular, Protege does not use SWT and many of the graphical related capabilities. But Protege does use the declarative plugin capabilities provided by eclipse. It is here that some of the power of the OSGi platform becomes manifest, because we have been able to use only those bundles from the eclipse Rich Client platform that we need. In this setting, OSGi bundles created according to certain conventions become Eclipse Plugins.<br />
* '''The Protege Plugin layer''' provides some additional convenience methods over the Eclipse Plugin framework. Certain eclipse plugins that extend Protege capabilities are called Protege plugins.<br />
<br />
<br />
'''Back to [[Main_Page#Developer_Documentation|Protege Developer Documentation]]'''</div>TaniaTudorachehttps://protegewiki.stanford.edu/index.php?title=P4UiComponentSummary&diff=13490P4UiComponentSummary2016-05-24T06:10:57Z<p>TaniaTudorache: </p>
<hr />
<div><div class="orangeBox"><br />
<span class="orangeBoxTitle">Protege Developer Docs: UI Components</span><br /><br /><br />
This page describes some of the more useful UI components available for developers working with Protege 4, 5 or newer versions.<br />
</div><br /><br />
<br />
'''Back to [[Main_Page#Developer_Documentation|Protege Developer Documentation]]'''<br />
<br />
<br />
__TOC__<br />
<br />
<br />
== Packages ==<br />
<br />
There are many standard UI components, as part of the core Protege framework and more specific components for managing OWL objects in the OWL editor kit.<br />
<br />
All UI classes can be found in the following packages:<br />
* [http://protege.stanford.edu/protege/4.0/docs/api/index.html?org/protege/editor/core/ui/package-summary.html org.protege.editor.core.ui] and its subpackages for core generic ui components<br />
* [http://protege.stanford.edu/protege/4.0/docs/api/index.html?org/protege/editor/owl/ui/package-summary.html org.protege.editor.owl.ui] and its subpackages for owl specific ui components<br />
<br />
== Components ==<br />
<br />
=== Core components ===<br />
<br />
==== Actions ====<br />
<br />
Create menu items using a plugin mechanism (see [[PluginTypes#EditorKitMenuAction]] for details).<br />
<br />
<br />
==== Errors ====<br />
<br />
Display a dialog to the user when an exception needs to be reported.<br />
<br />
use: '''org.protege.editor.core.ui.error.ErrorLogPanel'''<br />
<br />
ErrorLogPanel.showErrorDialog(Exception e)<br />
<br />
<br />
==== Lists ====<br />
<br />
Protege-style JLists that have support for sections, and items with buttons on the right hand side for deleting, editing etc<br />
<br />
implement: '''org.protege.editor.core.ui.list.MList'''<br />
<br />
example: '''org.protege.editor.core.ui.list.RemovableObjectList'''<br />
<br />
<br />
==== Preferences ====<br />
<br />
Create preferences panels for your plugins (see [[PluginTypes#preferencespanel]] for details).<br />
<br />
<br />
==== Wizards ====<br />
<br />
A dialog with a series of pages to guide the user through a set of tasks with a certain set of steps.<br />
<br />
implement: '''org.protege.editor.core.ui.wizard.Wizard'''<br />
<br />
example: '''org.protege.editor.owl.ui.ontology.wizard.create.CreateOntologyWizard'''<br />
<br />
<br />
==== Icons ====<br />
<br />
Get a selection of icons that are found in the '''icons/''' folder in the core plugin.<br />
<br />
Icons.getIcon("error.png")<br />
<br />
<br />
==== Dialogs ====<br />
<br />
Provides some handy static dialog/validating dialog (VerifyingOptionPane) creation methods.<br />
<br />
use: '''org.protege.editor.core.ui.util.JOptionPaneEx'''<br />
<br />
<br />
==== NativeBrowserLauncher ====<br />
<br />
Show a url in the default native browser for the users OS.<br />
<br />
NativeBrowserLauncher.openURL(String url);<br />
<br />
<br />
==== ComponentFactory ====<br />
<br />
Provides a series of static methods to create some standard Swing components with Protege default look and feel.<br />
<br />
<br />
==== CheckTable ====<br />
<br />
A table that supports selection checkboxes in the first column with a "check all" option<br />
<br />
<br />
==== CheckList ====<br />
<br />
<br />
==== File dialogs ====<br />
<br />
Provides a number of native file selectors for loading or saving files.<br />
<br />
use: '''org.protege.editor.core.ui.util.UIUtil'''<br />
<br />
<br />
==== FilePathPanel/FileURIPanel ====<br />
<br />
An editor with a built in file selection dialog (as used by Open ontology dialogs etc)<br />
<br />
<br />
==== LinkLabel ====<br />
<br />
A label that acts like a hyperlink<br />
<br />
<br />
<br />
=== OWL Specific components ===<br />
<br />
Many of the OWL components are very specific, but a number can be reused in your own application.<br />
<br />
<br />
==== Expression Editor ====<br />
<br />
A text editor that allows OWL objects to be created.<br />
It provides content parsing, autocompletion, validation and rendering of existing OWL objects using the<br />
The type of object that is supported depends on the '''OWLExpressionChecker''' that is provided in the constructor (eg '''OWLDescriptionChecker''').<br />
<br />
use: '''org.protege.editor.owl.ui.clsdescriptioneditor.ExpressionEditor'''<br />
<br />
example of use: '''org.protege.editor.owl.ui.editor.OWLDescriptionExpressionEditor'''<br />
<br />
<br />
==== OWLClassDescriptionEditor ====<br />
<br />
A tabbed component that can take any number of '''OWLDescriptionEditor'''s as tabs and can be used to create OWL expressions<br />
<br />
<br />
==== OWLEntityFindPanel ====<br />
<br />
A component that, given another component that implements '''Findable''' will allow a search based on entity name.<br />
<br />
<br />
==== OWL Frame lists ====<br />
<br />
See [[Protege4Views#Frame_views|Frame views]] to see what the component looks like.<br />
<br />
An extension of MList (see [[#Lists]] above) that contains axioms and provides additional functionality (such as right click items).<br />
This list is used in all of the default entity description views and others.<br />
A frame list is initialised with an '''OWLFrame''' that contains sections ('''OWLFrameSection'''s), each of which contains rows ('''OWLFrameSectionRow'''s).<br />
An example of an '''OWLFrame''' is '''org.protege.editor.owl.ui.frame.OWLClassDescriptionFrame'''<br />
<br />
All the work in using a frame list is likely to be in creating/specifying the '''AbstractOWLFrameSection'''s that its frame contains.<br />
<br />
use: '''org.protege.editor.owl.ui.framelist.OWLFrameList2'''<br />
<br />
many examples of OWLFrameSections are available in '''org.protege.editor.owl.ui.frame'''<br />
<br />
==== Views ====<br />
<br />
Views are implemented as plugins (see [[PluginTypes#ViewComponent]] for more details).<br />
<br />
<br />
==== Rename entities UI ====<br />
<br />
use: '''org.protege.editor.owl.ui.rename.RenameEntityPanel'''<br />
<br />
<br />
==== Renderering / renderers ====<br />
<br />
Various string renderers and cell renderers are available in the '''org.protege.editor.owl.ui.renderer''' package.<br />
You can get renderings for OWLObjects and OWLEntities directly from the OWLModelManager as this will use the cache and also ensures the rendering is consistent with the defaults selected for the rest of P4.<br />
<br />
Most components described here already use the OWL cell renderers<br />
<br />
<br />
==== OWL Entity selectors ====<br />
<br />
Selectors for each type of entity are available in the '''org.protege.editor.owl.ui.selector''' package.<br />
You can get pull up a selector dialog more easily by using [[#UIHelper]].pickOWLClass() etc.<br />
<br />
example: org.protege.editor.owl.ui.selector.OWLClassSelectorPanel<br />
<br />
<br />
==== OWL Icons ====<br />
<br />
Same as [[#Icons]] but gets its icon images from the '''icons/''' folder in the owl plugin.<br />
<br />
<br />
==== OWL object trees ====<br />
<br />
Take a hierarchy provider and render a JTree with the correct cell renderer and default protege behaviour.<br />
<br />
use: '''org.protege.editor.owl.ui.tree.OWLModelManagerTree'''<br />
<br />
<br />
==== OWLComponentFactory ====<br />
<br />
Get selectors and editors for OWL Objects.<br />
<br />
This can be retrieved from the '''OWLWorkspace.getOWLComponentFactory()'''.<br />
<br />
<br />
==== UIHelper ====<br />
<br />
Provides many useful static methods.<br />
<br />
use: '''org.protege.editor.owl.ui.UIHelper'''<br />
<br />
<br />
== Behaviours ==<br />
<br />
Many of these behaviours can be added to views/components.<br />
<br />
To be documented - for now, search for the interfaces usage.<br />
<br />
=== Draggable ===<br />
<br />
=== Deleteable/Copyable ===<br />
<br />
=== Findable ===<br />
<br />
=== CreateNewChild/SiblingTarget ===<br />
<br />
'''Back to [[Main_Page#Developer_Documentation|Protege Developer Documentation]]'''</div>TaniaTudorachehttps://protegewiki.stanford.edu/index.php?title=Protege4Contributing&diff=13489Protege4Contributing2016-05-24T06:10:14Z<p>TaniaTudorache: </p>
<hr />
<div><div class="orangeBox"><br />
<span class="orangeBoxTitle">Contributing to Protege</span><br /><br /><br />
Protege is an open source project, with a large community, many of whose members help to add to its success through varied means.<br />
<br />
This page explains the routes through which you can contribute to Protege and its community.<br />
<br />
If you are interested in other ways of helping, please contact us through the [https://mailman.stanford.edu/mailman/listinfo/protege-user protege-user mailing list].<br />
</div><br /><br />
<br />
'''Back to [[Protege4UserDocs|Protege User Documentation]]'''<br />
<br />
'''Back to [[Main_Page#Developer_Documentation|Protege Developer Documentation]]'''<br />
<br />
__TOC__<br />
<br />
<br />
== Community ==<br />
<br />
=== Mailing lists ===<br />
<br />
Plenty of people ask questions on the various mailing lists available for Protege support, and it would be impossible to deal with this big an inbox,<br />
if it were not for the fellow community members that frequently offer answers, advice and pointers. We welcome contributions from everyone.<br />
<br />
=== Documentation ===<br />
<br />
Tools such as Protege are continually growing and it is hard to spend huge amounts of time changing screenshots, wording and formatting<br />
in the documentation (such that it is).<br />
<br />
One of the main reasons for these documents to be published on a wiki is that it allows everyone to expand, correct and contribute.<br />
Please help us by adding to these docs if you have anything you have found useful that we currently do not cover.<br />
<br />
<br />
== Plugins ==<br />
<br />
The most obvious way to contribute to the tools is to produce a plugin. Protege is built on top of an OSGi compliant plugin mechanism, so it<br />
is easy to implement new menu items, views and other plugins and it is even possible to extend the types of plugin that can be created.<br />
<br />
=== Creating a plugin ===<br />
<br />
A [https://github.com/protegeproject/protege-plugin-examples step-by-step guide] is available,<br />
using a simple view plugin as the example.<br />
<br />
See also: [[Protege4DevDocs#Working_with_the_Protege_source_code|Documentation for Protege developers]]<br />
<br />
=== Allow Protege to download your plugin directly ===<br />
<br />
Users are able to check for plugins that are registered with us and download/install them directly into Protege.<br />
<br />
Enabling this for your plugin is very simple and should massively increase your number of users.<br />
<br />
Please see our page about [[EnablePluginAutoUpdate| auto-update]] for details of how to do this.<br />
<br />
=== Advertising your plugin on this wiki ===<br />
<br />
If you have developed a plug-in for Protege, and you would like to contribute it to the community, follow the following steps:<br />
* Click the [[Special:FormStart/Plugin|New Plugin Link]]. You may want to right click and choose a new window.<br />
* Choose a name for the page that discusses the new plugin (e.g. "Sub Ontology Tab").<br />
* Click "Add or Edit"<br />
* Be sure to add "Protege-OWL" (exactly like so without the quotes) in the Works with field. Also give the plugin a type (commonly "Tab Widget").<br />
* Fill in the other fields and save.<br />
* Click the create new version and use the naming convention described. Without this step the plugin will not show up in the plugin list below.<br />
* Make the plugin compatible with "Protege-OWL 4.0" or the version it is compatible with.<br />
* When you are done save the page and make sure that your plugin shows up on the [[Protege-OWL_4.2 |4.x version of the Protege-OWL editor]] page. It seems for some reason this page often does not update for a while so you may need to come back later.<br />
Some useful links when adding a plugin page to the wiki are the following:<br />
* [http://protegewiki.stanford.edu/index.php/Category:Organization Organization Category] shows all the types of organizations that are currently known. There are some duplicates already.<br />
* [http://protegewiki.stanford.edu/index.php/Category:Plugin Plugin Category] is useful because it lists both the different plugin types (e.g. view, import, export, etc) and also has a list of all the plugins currently known.<br />
* [http://protegewiki.stanford.edu/index.php/Category:Person Person Category] lists the people who are known to this ontology.<br />
<br />
== Core Protege ==<br />
<br />
Many code contributions can be factored into plugins and this is our preferred route as it keeps the core light and minimizes risk. However, sometimes changes have to be made to the core.<br />
<br />
=== Code submissions ===<br />
<br />
If you would like to submit a contribution to the protege core codebase, please fork the code on [https://github.com/protegeproject/protege github], and submit a pull request.<br />
<br />
You can find the codebase for the core of Protege, and many of the plugins that we maintain on github:<br />
https://github.com/protegeproject/protege<br />
<br />
Also see: [[Protege4DevDocs#Working_with_the_Protege_source_code|Documentation for Protege developers]]<br />
<br />
=== Bug reports ===<br />
<br />
As much as we hate hearing that something is wrong and causing people trouble, we would rather know about it than not.<br />
Please follow our [[Protege4UserDocs#Bugs_and_feature_requests|guidelines]] if you have found a bug.<br />
The better a bug is described, the more likely it is to be fixed quickly.<br />
<br />
<br />
'''Back to [[Protege4UserDocs|Protege User Documentation]]'''<br />
<br />
'''Back to [[Main_Page#Developer_Documentation|Protege Developer Documentation]]'''</div>TaniaTudorachehttps://protegewiki.stanford.edu/index.php?title=PluginTypes&diff=13488PluginTypes2016-05-24T06:09:51Z<p>TaniaTudorache: </p>
<hr />
<div><div class="orangeBox"><br />
<span class="orangeBoxTitle">Protege Plugin types</span><br /><br /><br />
This page summarises the default types of plugin that can be implemented for Protege 4, 5 and newer.<br />
</div><br /><br /><br />
<br />
'''Back to [[Main_Page#Developer_Documentation|Protege Developer Documentation]]'''<br />
<br />
__TOC__<br />
<br />
== Existing Plugin Types ==<br />
<br />
This is a snapshot of the existing types of plugins that can be added to Protege.<br />
The current set of plugin types can always be found in the code by looking at the plugin.xml file for the core.application and the owl bundles.<br />
Just look for the extension-points in these files – these point to the schemas that are used for describing each type of plugin.<br />
Plenty of examples can be found in the plugin.xml files themselves.<br />
<br />
=== Core Plugins ===<br />
<br />
==== ViewComponent ====<br />
<br />
<br />
<hr><br />
<br />
The most common plugin type – implements views (the building blocks of workspace tabs).<br />
<br />
Implementation of this plugin is demonstrated in the [https://github.com/co-ode-owl-plugins/co-ode-owl-plugins/blob/master/taxonomy/src/main/java/org/coode/taxonomy/TabbedHierarchyView.java '''TabbedHierarchyView''' example].<br />
<br />
There are many abstract implementations of this plugin to use as a base, for example each entity type (Class, Property and Individual) has an abstract base.<br />
<br />
* Implement: '''org.protege.editor.core.ui.view.ViewComponent'''<br />
* Example: '''org.protege.editor.owl.ui.clshierarchy.ToldOWLClassHierarchyViewComponent'''<br />
<br />
<br />
<br />
<hr><br />
<br />
==== EditorKitMenuAction ====<br />
<br />
Create an entry in a [[#menu.window|menu]] (and supply a mnemonic) and its associated action.<br />
<br />
* Implement: '''org.protege.editor.core.ui.action.ProtegeAction'''<br />
* Example: '''org.protege.editor.owl.ui.action.RemoveAllDisjointAxiomsAction'''<br />
<br />
<extension id="menu.RemoveAllDisjointAxioms"<br />
point="org.protege.editor.core.application.EditorKitMenuAction"><br />
<name value="Remove all disjoint axioms..."/> <br />
<toolTip value="Removes all of the disjoint axioms."/><br />
<class value="org.protege.editor.owl.ui.action.RemoveAllDisjointAxiomsAction"/><br />
<path value="org.protege.editor.core.application.menu.EditMenu/SlotM-H"/><br />
<editorKitId value="OWLEditorKit"/><br />
</extension><br />
<br />
''id'' = an ID for this plugin<br />
<br />
''point'' = the type of plugin<br />
<br />
''name'' = the name as it appears in the menu<br />
<br />
''toolTip'' = a description of the action shown in a tooltip<br />
<br />
''class'' = the implementing class (full package name)<br />
<br />
''path'' = the relative position in the menu (section pos, subsection pos)<br />
<br />
''editorKitId'' = the type of editor kit this plugin works with<br />
<br />
===== Open URL in browser action =====<br />
<br />
An addition has been made to the EditorKitMenuAction that allows a menu item that opens a specified page in a web browser.<br />
This has been used to implement help items, but could be useful for lots of different reasons.<br />
<br />
The best thing is '''this requires no coding whatsoever'''.<br />
* ''url'' should be specified in the action descriptor instead of ''class''.<br />
* The value should be the full URL of the webpage you wish to open.<br />
<br />
Specifying a ''class'' element will cause the ''url'' to be ignored.<br />
<br />
<extension id="menu.PluginsMenuItem" point="org.protege.editor.core.application.EditorKitMenuAction"><br />
<name value="Protege-OWL plugins"/><br />
<toolTip value="Protege plugins"/><br />
<url value="http://protegewiki.stanford.edu/index.php/Protege-OWL_4.0"/><br />
<path value="org.protege.editor.core.application.menu.HelpMenu/SlotF-B"/><br />
<editorKitId value="any"/><br />
</extension><br />
<br />
<hr><br />
<br />
==== preferencespanel ====<br />
<br />
Create a panel that will be loaded into the preferences dialog.<br />
<br />
This should be for controlling a particular aspect of Protege in general or can be used as part of a bundle to control the behaviour of other plugins.<br />
<br />
Preferences should be used to persist over sessions.<br />
<br />
The '''applyChanges()''' method should be used to update the appropriate values in Protege's '''PreferencesManager'''.<br />
<br />
* Implement: '''org.protege.editor.owl.ui.preferences.OWLPreferencesPanel'''<br />
* Example: '''org.protege.editor.owl.ui.tree.OWLTreePreferencesPanel'''<br />
<br />
<br />
<br />
<hr><br />
<br />
==== WorkspaceTab ====<br />
<br />
Unless your tab requires some special handling for events or non-standard layout you will probably not need to implement a class for this plugin.<br />
You can just point the plugin.xml configuration to WorkspaceViewsTab (or OWLWorkspaceViewsTab) implementation and the rest of the plugin description<br />
should be enough to customise the tab – i.e., give it a name and point to a default layout (see below).<br />
<br />
* Implement: '''org.protege.editor.core.ui.workspace.WorkspaceTab'''<br />
* Example: '''org.protege.editor.owl.ui.OWLClassesTab'''<br />
<br />
===== Creating a tabbed view layout =====<br />
* First, create or decide on which views you wish to have on your tab - make sure these are all implemented<br />
* Open Protege <br />
* Create a new tab ('''Window | Create new tab...''')<br />
* Select your new tab and start customising it by adding views (see [[Protege4GettingStarted#Reconfigure_the_User_Interface|Reconfigure the user interface]])<br />
* Select '''Window | Save current layout''' or quit Protege<br />
* Find the new layout in the Protege installation directory ''Data/ViewConfigurations/viewconfig-custom-YOUR_TAB_NAME.xml''<br />
* Rename this without the ''custom'' and copy to somewhere in your plugin source like a ''resources/'' folder<br />
* Make sure this folder is on your classpath and that it gets added to you compiler output path<br />
* Add the layout ('''defaultViewConfigFileName''') to the plugin description in plugin.xml<br />
<br />
<extension id="OWLOntologyTab"<br />
point="org.protege.editor.core.application.WorkspaceTab"><br />
<label value="Active Ontology"/><br />
<class value="org.protege.editor.core.ui.workspace.WorkspaceViewsTab"/><br />
<defaultViewConfigFileName value="viewconfig-ontologytab.xml"/><br />
<index value="A"/><br />
<editorKitId value="OWLEditorKit"/><br />
</extension><br />
<br />
<br />
<br />
<hr><br />
<br />
==== EditorKitFactory ====<br />
<br />
An EditorKit is the access point for a particular type of model (or ontology) and a GUI to handle that model.<br />
<br />
Currently, there is just one implementation - the OWLEditorKit<br />
<br />
Implement this type of plugin if you require a new type of model to be supported (eg a Frames-based model).<br />
<br />
There is obviously considerable work needed to implement a new editor kit (along with its model manager and workspace).<br />
<br />
* Implement: '''org.protege.editor.core.editorkit.EditorKitFactory'''<br />
* Example: '''org.protege.editor.owl.OWLEditorKitFactory'''<br />
<br />
<br />
<br />
<hr><br />
<br />
==== menu.window ====<br />
<br />
Create a new menu into which [[#EditorKitMenuAction|EditorKitMenuActions]] can be added.<br />
No need for any implementation. The plugin description gives enough detail for full customisation.<br />
<br />
<extension id="menu.EditMenu"<br />
point="org.protege.editor.core.application.EditorKitMenuAction"><br />
<name value="Edit"/><br />
<toolTip value=""/><br />
<path value="/SlotB-A"/><br />
<editorKitId value="any"/><br />
</extension><br />
<br />
<br />
<br />
<hr><br />
<br />
==== OntologyRepositoryFactory ====<br />
<br />
Create a source from which ontologies can be loaded. This plugin will create an entry on the welcome screen that allows the user to get ontologies from any number of places (a repository, a web service etc).<br />
<br />
* Implement '''org.protege.editor.core.OntologyRepositoryFactory'''<br />
* Example '''org.protege.editor.owl.model.repository.TONESRepositoryFactory'''<br />
<br />
<extension id="TONESRepository" point="org.protege.editor.core.application.OntologyRepositoryFactory"><br />
<class value="org.protege.editor.owl.model.repository.TONESRepositoryFactory"/><br />
</extension><br />
<br />
<br />
<hr><br />
<br />
<br />
==== EditorKitHook ====<br />
<br />
Perform some actions when an editing session is started.<br />
The initialise() method gets called when the EditorKit has been initialised.<br />
This can be used to perform some special configuration or replace default behaviour.<br />
<br />
* Implement '''org.protege.editor.core.editorkit.plugin.EditorKitHook''' (or org.protege.editor.owl.model.OWLEditorKitHook)<br />
* Extension point '''org.protege.editor.core.application.EditorKitHook'''<br />
<br />
<hr><br />
<br />
<br />
==== ToolBarAction ====<br />
<br />
Not currently used - will be implemented to allow view actions to be customised<br />
<br />
<br />
<br />
<hr><br />
<br />
==== ViewAction ====<br />
<br />
Not currently used - will be implemented to allow view actions to be customised<br />
<br />
<br />
<br />
=== OWL Plugins ===<br />
<br />
==== inference.reasonerfactory ====<br />
<br />
<br />
<br />
<hr><br />
<br />
==== ui.renderer.entitycolorprovider ====<br />
<br />
<br />
<br />
<hr><br />
<br />
==== model.libraryfactory ====<br />
<br />
<br />
<hr><br />
<br />
==== moveaxiomskit ====<br />
<br />
Methods of selecting axioms for copying, moving or deleting (see [[P4MoveAxioms|Refactor | Copy/move/delete axioms]]) are pluggable.<br />
<br />
You can choose to implement pages to add to the wizard to control how your kit works.<br />
<br />
* Implement: '''org.protege.editor.owl.ui.ontology.wizard.move.MoveAxiomsKit'''<br />
* Example: '''org.protege.editor.owl.ui.ontology.wizard.move.byreference.MoveAxiomsByReferenceKit'''<br />
<br />
<extension id="MoveAxiomsByReference"<br />
point="org.protege.editor.owl.moveaxiomskit"><br />
<name value="Axioms by reference (select entities from the ontology)" /><br />
<class value="org.protege.editor.owl.ui.ontology.wizard.move.byreference.MoveAxiomsByReferenceKit" /><br />
</extension><br />
<br />
<hr><br />
<br />
<br />
==== ui.editor.description (from build 109) ====<br />
<br />
[[Image:Class-expression-editor.png|400px|right]]<br />
<br />
When adding/editing superclasses, equivalent classes, property domains, individual types etc a class description editor is brought up.<br />
<br />
Each tab on the editor is a plugin capable of creating/editing (possibly a subset) OWL class descriptions<br />
<br />
* Implement: '''org.protege.editor.owl.ui.editor.AbstractOWLDescriptionEditor'''<br />
* Example: '''org.protege.editor.owl.ui.editor.OWLClassSelectorWrapper'''<br />
<br />
<extension id="OWLClassSelectorWrapper"<br />
point="org.protege.editor.owl.ui.editor.description"><br />
<label value="Asserted class hierarchy"/><br />
<class value="org.protege.editor.owl.ui.editor.OWLClassSelectorWrapper"/><br />
<index value="B"/><!-- from build 110 --><br />
</extension><br />
<br />
<br />
'''Back to [[Main_Page#Developer_Documentation|Protege Developer Documentation]]'''</div>TaniaTudorachehttps://protegewiki.stanford.edu/index.php?title=Protege4DevDocs&diff=13487Protege4DevDocs2016-05-24T06:08:52Z<p>TaniaTudorache: </p>
<hr />
<div><div class="orangeBox"><br />
<span class="orangeBoxTitle">Protege 4 Developer Documentation</span><br /><br /><br />
Pointers for developers of plugins and understanding the core APIs of Protege 4. '''If you are interested in the Protege 5 Developer Documentation, please go to [[Protege5DevDocs|this page]].'''<br />
</div><br /><br /><br />
<br />
__TOC__<br />
<br />
<br />
== Guidelines ==<br />
<br />
Protege 4.1 and higher will be compatible with both Java 5 and Java 6. Unfortunately we need to continue supporting Java 5 because of problems with Java on the older Apple platforms (the PowerPC and 32 bit Macs). If you are writing a plugin and you want to be available on all OS X platforms, then you must use Java 5. Otherwise Java 6 works as long as you understand that you are excluding a subset of the Apple platforms.<br />
<br />
'''Please consider writing any P4 code as a plugin'''.<br /><br />
If you cannot do this for various reasons, please let us<br />
know as we may be able to improve the core design in order to support you.<br /><br />
Protege 4.0 has been written specifically to be modular. It uses the [http://www.osgi.org/About/Technology '''OSGi framework'''] as a plugin infrastructure.<br />
<br />
<br />
'''Please share.'''<br /><br />
It is surprising how many people have written plugins for P4 that we just don't hear about.<br /><br />
If you wish to publish to the community, please see our notes on [[Protege4Contributing#Code_submissions|code contributions]].<br />
<br />
== Using an Integrated Development Environment ==<br />
<br />
<br />
<br />
<br />
=== Protege 4 OWL editor in Eclipse or IntelliJ ===<br />
<br />
* [[CompileProtege4InEclipseFromSvn|Setting up eclipse with Protege 4.1 and higher]] '''(Recommended for Protege 4.1+)'''<br/>This page gives directions for compiling and running Protege 4.1 and higher using Eclipse's plugin development framework. It includes the OS X workaround as well.<br />
* [https://github.com/protegeproject/protege/wiki/Setup-in-Eclipse Setting up eclipse with Protege 4.1-5 using maven] ''' <br/>This page shows how to use maven for compiling and running Protege 4.1-5 using Eclipse's plugin development framework. <br/><br />
* [[CompileProtege4InIntelliJFromSvn|Setting up IntelliJ IDEA with Protege 4.1 and higher]] '''(Recommended for Protege 4.1+)'''<br/>This page gives directions for compiling and running Protege 4.1 and higher using IDEA's Osmorc plug-in.<br />
<br />
=== Protege 4 OWL editor in a Other IDEs ===<br />
<br />
There is no longer a page that describes how to set up an IDE other than eclipse or IntelliJ. We welcome contributions from the community for directions on how to set up other developement environments. In particular NetBeans seems to have a following and it would be useful to have a page describing how to set up for that IDE.<br />
For an experienced Java developer, the [[#Building_Protege4.1_from_scratch_using_ant|ant build steps]] will probably provide enough hints to put together an arbitrary IDE environment for Protege 4.1 and higher.<br />
<br />
== Writing A Plugin ==<br />
<br />
The following links are focussed on the problems of writing a plugin and are not focused on how your build environment should be configured. For information about configuring your build environment go to [[Protege4DevDocs#Using_an_Integrated_Development_Environment|Using an IDE]].<br />
<br />
[[PluginAnatomy|This page]] gives a quick start to writing a plugin for Protege 4. It starts with a guide to writing the empty (trivial) plugin in five minutes. Then it describes how some additional content can be added to the plugin. <br />
<br />
=== Additional Information ===<br />
<br />
In addition to this there are some other useful sources on plugin development:<br />
* [[PluginTypes|plugin types]] provides a list of plugin types that you can implement in Protege 4.<br />
* Once you have written a plugin you want people to use it. Some very simple steps allow you to advertise your plugin and [[EnablePluginAutoUpdate|enable auto-update]].<br />
* A short guide to [http://www.co-ode.org/downloads/protege-x/plugin-code-example.php writing a plug-in] to show the class hierarchy. This page is not supported by the Protege team and may indeed not be actively updated any more. It has some very useful information but will quite likely slowly go out of date.<br />
<br />
== Misc == <br />
<br />
=== Protege APIs ===<br />
<br />
Here is a summary of the main parts of the [[P4APIOverview|Protege 4 API]] for gaining access to the model and various utilities. <br />
<br />
Also see the [http://protege.stanford.edu/protege/4.1/docs/api/ javadoc for Protege 4.1 code].<br />
<br />
=== UI components ===<br />
<br />
The Protege core and the OWL editor kit both provide a large number of [[P4UiComponentSummary|reuseable components]] and utilities for generating user interfaces for ontologies.<br />
<br />
=== Updating to Protege 4.1 ===<br />
<br />
A short [[P4_1PortingGuide|guide]] to migrating plugins from Protege 4.0 to Protege 4.1 (in progress).<br />
<br />
=== Building Protege 4.1 and higher from scratch using Ant ===<br />
<br />
The Protege 4.1 and higher build process has been refactored since Protege 4.0. This means that the locations of the various Protege 4.1 and higher plug-ins are different than the corresponding locations in Protege 4.0. There are several advantages of the new scheme:<br />
* the build files are independent so that changes to one plugin can be propagated to the distribution by compiling just the plugin rather than the redoing an entire Protege build.<br />
* the build files autodetect the format of the protege distribution. This means that a single build file for the os x application bundle (Protege.app) and a felix based distribution.<br />
* the new build process is much simpler allowing us to more easily update the various components.<br />
Although many readers of this section will not be planning on doing an Ant build, these directions clarify the location of the various Protege 4.1 and higher plug-ins in svn.<br />
<br />
A very quick build (40 seconds) can be done with the following steps:<br />
# ''svn checkout http://smi-protege.stanford.edu/repos/protege/protege4/misc/composite/protege4/trunk protege4''<br />
# cd protege4<br />
# ant install<br />
# cd build/Protege<br />
# run protege (e.g. sh run.sh)<br />
<br />
The manual steps are as follows.<br />
First you must set the PROTEGE_HOME environment variable which is described [[ConfiguringAntBuildFiles|here]]. Then you can build Protege 4.1 and higher by following the following steps.<br />
# ''svn checkout http://smi-protege.stanford.edu/repos/protege/protege4/protege-base/trunk protege-base''<br />
# ''cd protege-base'' and ''ant install'' and ''cd ..''. '''Warning:''' this step deletes the existing contents of ${PROTEGE_HOME}.<br />
# ''svn checkout http://smi-protege.stanford.edu/repos/protege/protege4/plugins/org.protege.common/trunk org.protege.common''<br />
# ''cd org.protege.common'' and ''ant install' and ''cd ..'''<br />
# ''svn checkout http://smi-protege.stanford.edu/repos/protege/protege4/plugins/org.protege.jaxb/trunk org.protege.jaxb''<br />
# ''cd org.protege.jaxb'' and ''ant install'' and ''cd ..''<br />
# ''svn checkout http://smi-protege.stanford.edu/repos/protege/protege4/plugins/org.protege.editor.core.application/trunk org.protege.editor.core.application''<br />
# ''cd org.protege.editor.core.application'' and ''ant install'' and ''cd ..''<br />
# ''svn checkout http://smi-protege.stanford.edu/repos/protege/protege4/plugins/org.semanticweb.owl.owlapi/trunk org.semanticweb.owl.owlapi''<br />
# ''cd org.semanticweb.owl.owlapi'' and ''ant install'' and ''cd ..''<br />
# ''svn checkout http://smi-protege.stanford.edu/repos/protege/protege4/plugins/org.protege.editor.owl/trunk org.protege.editor.owl''<br />
# ''cd org.protege.editor.owl'' and ''ant install'' and ''cd ..''<br />
This will give a minimal installation and other plugins can be added as desired. In addition, protege-base comes with a run target that can be used to run Protege and a debug target that can be used to debug Protege using java's remote debugging support. Source plugins can be created by adding ''ant add.source'' before the ''ant install'' step. A full run on an extremely slow machine is shown [[Protege41FullBuild|here]].<br />
<br />
===Embedded OSGi===<br />
<br />
For people embedding Protege 4 services inside a non-OSGi based applications [[Embedding OSGi|here]] is a short example showing how this can work.<br />
<br />
===Database Backends===<br />
<br />
There are now three database backends for the OWL API. Very soon we expect to have a Protege plugin that enables all three backend mechanisms. We have put together a [[Loading A DatabaseProject|document]] describing how two of the database backends can be used with the owl api.<br />
<br />
== Troubleshooting ==<br />
* [[SolvingClassLoaderProblems|Troubleshooting class loader issues]]<br />
* [[DealingWithJava5CompilerIssues|Troubleshooting and fixing problems with the Java 5 compiler]]</div>TaniaTudorachehttps://protegewiki.stanford.edu/index.php?title=Protege3DevDocs&diff=13486Protege3DevDocs2016-05-24T06:07:39Z<p>TaniaTudorache: </p>
<hr />
<div><div class="orangeBox"><br />
<span class="orangeBoxTitle">Protege 3 Developer Documentation</span><br /><br /><br />
'''Please note that this documentation refers *only* to the Protege 3.x series. For Protege 4, 5 and higher, please visit the links available [[Main_Page#Developer_Documentation|here]].'''<br />
</div><br /><br />
<br />
__TOC__<br />
<br />
== Programming Tips & Tricks ==<br />
<br />
=== General (common to Protege-Frames & Protege-OWL) ===<br />
<br />
* [http://protegewiki.stanford.edu/images/4/4f/Protege3_doc.zip Accessing the Protege source code from SVN] - check the dev.html<br />
* [http://protegewiki.stanford.edu/images/4/4f/Protege3_doc.zip Protege Programming Development Kit (PDK)] - check the dev.html<br />
* [[SetUpEclipseForPlugin|'''<u>Setting up Eclipse for plug-in development</u>''']] - '''This is what you usually want'''<br />
* [[ConfiguringAntBuildFiles|Using and configuring Prot&eacute;g&eacute;'s Ant build scripts]]<br />
<br />
* ''' Advanced '''<br />
** [http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeSourcesInIDE Compiling and Running Protege-Frames and OWL in a Java Development Environment (e.g., Eclipse)] - ''Advanced: look here only if you want to compile yourself the Protege source code. Most developers do not need this.''<br />
<br />
* '''Working with forms'''<br />
** [[AddingRemovingTabs|Adding and removing tabs programmatically]]<br />
** [[UseTabInApplication|Using a Protege tab plug-in in your own application]]<br />
** [[UseProtegeFormsInApplications|Using Protege forms in other applications]]<br />
** [[Changing forms programtically]]<br />
** [[ReadOnlyForms|Making slot-widgets read-only programmatically]]<br />
** [[Working with the graph widget]]<br />
* '''Client-Server (Multi-user mode)'''<br />
** [[Considerations on porting Tab Plugins to Client-Server mode|Considerations when porting tab widget plug-ins to client-server mode]]<br />
** [[Creating users|Adding and removing users programmatically in client-server mode]]<br />
** [[Protege_Client_Server_Tutorial_Advanced#Accessing_the_Server_Programatically| Accessing a remote protege server programatically]] <br />
* '''Collaboration features'''<br />
** [[ChAO API|Accessing the collaboration features programmatically (Changes and Annotation API)]]<br />
* [[ProgramaticLuceneQueryAccess|Accessing the Lucene Query plug-in programatically]]<br />
* [[MultiThreadingConsiderationsInProtege3|Tips for handling multiple threads writing to a Protege knowledge-base]]<br />
* [[CompressionAndRMI| How to implement compression over rmi]]<br />
* [[Protege3JDBCSchema| Design and rationale for the Protege 3 database schema]]<br />
<br />
=== Protege-OWL Specific ===<br />
<br />
* '''Working with the Protege-OWL API'''<br />
** [[ProtegeOWL_API_Programmers_Guide|Protege-OWL API Programmer's Guide]]<br />
** [http://protege.stanford.edu/protege/3.4/docs/api/owl/ Protege-OWL API Javadoc]<br />
** [[ImportUsingProtegeOWLAPI|How to import an ontology using the Protege-OWL API]]<br />
** [[JavaCodeGenerationUsingAPI|How to invoke the Protege-OWL Java Code Generator using the API]]<br />
** [[ProtegeOWLJenaIntegration|Protege-OWL & Jena integration]]<br />
* '''The Reasoning API'''<br />
** [[ProtegeReasonerAPI|Protege-OWL reasoner API]]<br />
** [[ProtegeReasonerPlugin|Protege-OWL reasoner plug-in]]<br />
* '''OWL Database'''<br />
** [[ConvertToDBScript|Converting an OWL file to the database backend using a script]]<br />
** [[ConvertingToDatabaseProject | Converting an OWL Model to a database project (code snippet)]]<br />
** [[LoadOWLOntologyFromDB|How to load a Protege-OWL ontology from a Protege database using the API]]<br />
** [https://gist.github.com/1212562 How to convert an ontology stored in the databased to an OWL file using the API]<br />
* '''Configuring the User Interface using the API'''<br />
** [[UseOWLClassesPanel|How to use the OWL Classes panel in your own application]]<br />
** [[SetBrowserSlotPattern|How to set the browser slot pattern to rdfs:label (or other property) using the API]]<br />
<br />
=== Protege-Frames Specific ===<br />
<br />
* [[LoadFramesOntologyFromDB|How to load a Protege-Frames ontology from a Protege database using the API]]<br /><br /><br />
<br />
== Plug-in Development ==<br />
<br />
* [[Database_Inclusion_Plugin_Devlopers_Notes|'''Notes for developers on migrating plug-ins to Protege 3.4 build 500 (and higher)''']]<br />
* [[PluginManifestsAndJars|Learn how to create a manifest and JAR file for your plug-in]]<br />
* [[PluginDistribution|Tips for packaging your plug-in for distribution]]<br />
* [[PluginDependencies|Instructions for declaring dependencies between Protege plug-ins]]<br />
* [[ProvidePluginDocs|How to make your plug-in's documentation available to users from within Protege]]</div>TaniaTudorachehttps://protegewiki.stanford.edu/index.php?title=Protege-OWL&diff=13485Protege-OWL2016-05-24T06:05:42Z<p>TaniaTudorache: /* Additional Details */</p>
<hr />
<div>{{Application|<br />
ApplicationID=Protege-OWL|<br />
Screenshot=Protege-OWL.jpg|<br />
DevelopedBy1=Stanford Center for Biomedical Informatics Research|<br />
DevelopedBy2=The CO-ODE Project|<br />
LastUpdate=March 14, 2012|<br />
CurrentVersion=Protege-OWL 4.2|<br />
HomepageURL=http://protege.stanford.edu/overview/protege-owl.html|<br />
Affiliation1=Stanford Center for Biomedical Informatics Research|<br />
Affiliation2=Stanford University|<br />
Affiliation3=The CO-ODE Project|<br />
Affiliation4=The University Of Manchester|<br />
Description=The Protege-OWL editor is an extension of [[Protege]] that supports the Web Ontology Language (OWL).<br />
}}<br />
<br />
<div><br />
== Additional Details ==<br />
A brief overview of the Protege editor is available on the main [http://protege.stanford.edu Protege website].<br />
<br />
<br />
Protege-OWL <strong>user documentation</strong> is available in a number of locations:<br />
<br />
* The [[Protege4UserDocs|Protege 4 and 5 User Documentation]] page on this wiki.<br />
* The [[Protege3UserDocs|Protege 3 User Documentation]] page on this wiki.<br />
<br />
<br />
Protege-OWL <strong>developer documentation</strong> is available in a number of locations:<br />
<br />
* The [[Protege5DevDocs|Protege 5 Developer Documentation]] page on this wiki.<br />
* The [[Protege4DevDocs|Protege 4 Developer Documentation]] page on this wiki.<br />
* The [[Protege3DevDocs|Protege 3 Developer Documentation]] page on this wiki.<br />
<br />
<br /><br />
</div></div>TaniaTudorachehttps://protegewiki.stanford.edu/index.php?title=Protege5DevDocs&diff=13484Protege5DevDocs2016-05-24T06:02:07Z<p>TaniaTudorache: </p>
<hr />
<div><div class="orangeBox"><br />
<span class="orangeBoxTitle">Protege 5 Developer Documentation</span><br /><br /><br />
This page is a top-level entry point for all '''developer documentation''' related to the Protege Desktop application, versions 5.0 and above.<br />
</div><br /><br /><br />
<br />
__TOC__<br />
<br />
<br />
== Building ==<br />
<br />
=== Accessing the source code ===<br />
Protege Desktop is open source and the code is freely [http://github.com/protegeproject/protege available] on GitHub. Use the following Git command to get a local copy:<br />
<br />
<pre><br />
git clone https://github.com/protegeproject/protege.git protege<br />
</pre><br />
<br />
The source code for many Protege Desktop plug-ins has also been made available on GitHub under the [https://github.com/protegeproject Protege Project organization].<br />
<br />
=== Building from source ===<br />
The instructions for building from source are available on [https://github.com/protegeproject/protege/wiki/Building-from-Source GitHub].<br />
<br />
=== Building with Eclipse and other IDEs ===<br />
We would welcome contributions from the community for setting up development environments other than Eclipse.<br />
<br />
* [https://github.com/protegeproject/protege/wiki/Setup-in-Eclipse Building with Eclipse]<br />
<br />
<br />
== Protege APIs ==<br />
<br />
The [[P4APIOverview|Protege API]] gives access to the ontology model and offers various utilities. <br />
<br />
The Protege core and the OWL editor kit both provide a large number of [[P4UiComponentSummary|reuseable UI components]] and utilities for generating user interfaces for ontologies.<br />
<br />
<br />
== Developing a plugin ==<br />
<br />
Protege has been written specifically to be modular. It uses the [http://www.osgi.org/About/Technology OSGi framework] as a plugin infrastructure.<br />
<br />
When developing a plugin:<br />
<br />
First, you should consider which type of plugin you want to build. The [[PluginTypes|plugin types page]] provides a list of plugin types that can be implemented in Protege.<br />
<br />
Second, take a look and reuse the [https://github.com/protegeproject/protege-plugin-examples/ plugin examples] available on GitHub. The GitHub page also has documentation (see the readme file). Clone the project, and then adapt the plugin example that you would like to implement.<br />
<br />
You may also look at the [[PluginAnatomy|Anatomy of a Plugin page]], which gives a quick start to writing a plugin for Protege. Although it was created for Protege 4 plugins, most things still apply to Protege 5 plugins. The page starts with a guide to writing the empty (trivial) plugin in five minutes. Then it describes how some additional content can be added to the plugin. <br />
<br />
Once you have written a plugin you want people to use it. Some very simple steps allow you to advertise your plugin and [[EnablePluginAutoUpdate|enable auto-update]].<br />
<br />
<br />
==Embedded OSGi==<br />
<br />
For people embedding Protege services inside a non-OSGi based applications, [[Embedding OSGi|here]] is a short example showing how this can work.<br />
<br />
== Client-server ==<br />
* [[Protege_5_Development_Environment|Setting up a development environment for the OWL Ontology Server]]<br />
* [[Protege_Server_design|OWL Ontology Server design]]<br />
<br />
== Troubleshooting ==<br />
* [[SolvingClassLoaderProblems|Troubleshooting class loader issues]]<br />
<br />
== Contributing ==<br />
<br />
'''Please share.'''<br />
It is surprising how many people have written plugins for Protege that we just don't hear about.<br /><br />
If you wish to publish to the community, please see our notes on [[Protege4Contributing#Code_submissions|code contributions]].</div>TaniaTudorachehttps://protegewiki.stanford.edu/index.php?title=Protege5DevDocs&diff=13483Protege5DevDocs2016-05-24T05:58:14Z<p>TaniaTudorache: </p>
<hr />
<div>= Protege Desktop 5.x Developer Documentation =<br />
<br />
This page is a top-level entry point for all '''developer documentation''' related to the Protege Desktop application, versions 5.0 and above.<br />
<br />
__TOC__<br /><br />
<br />
=== Building ===<br />
<br />
==== Accessing the source code ====<br />
Protege Desktop is open source and the code is freely [http://github.com/protegeproject/protege available] on GitHub. Use the following Git command to get a local copy:<br />
<br />
<pre><br />
git clone https://github.com/protegeproject/protege.git protege<br />
</pre><br />
<br />
The source code for many Protege Desktop plug-ins has also been made available on GitHub under the [https://github.com/protegeproject Protege Project organization].<br />
<br />
==== Building from source ====<br />
The instructions for building from source are available on [https://github.com/protegeproject/protege/wiki/Building-from-Source GitHub].<br />
<br />
==== Building with Eclipse and other IDEs ====<br />
We would welcome contributions from the community for setting up development environments other than Eclipse.<br />
<br />
* [https://github.com/protegeproject/protege/wiki/Setup-in-Eclipse Building with Eclipse]<br />
<br />
<br />
=== Protege APIs ===<br />
<br />
The [[P4APIOverview|Protege API]] gives access to the ontology model and offers various utilities. <br />
<br />
The Protege core and the OWL editor kit both provide a large number of [[P4UiComponentSummary|reuseable UI components]] and utilities for generating user interfaces for ontologies.<br />
<br />
<br />
=== Developing a plugin ===<br />
<br />
Protege has been written specifically to be modular. It uses the [http://www.osgi.org/About/Technology OSGi framework] as a plugin infrastructure.<br />
<br />
When developing a plugin:<br />
<br />
First, you should consider which type of plugin you want to build. The [[PluginTypes|plugin types page]] provides a list of plugin types that can be implemented in Protege.<br />
<br />
Second, take a look and reuse the [https://github.com/protegeproject/protege-plugin-examples/ plugin examples] available on GitHub. The GitHub page also has documentation (see the readme file). Clone the project, and then adapt the plugin example that you would like to implement.<br />
<br />
You may also look at the [[PluginAnatomy|Anatomy of a Plugin page]], which gives a quick start to writing a plugin for Protege. Although it was created for Protege 4 plugins, most things still apply to Protege 5 plugins. The page starts with a guide to writing the empty (trivial) plugin in five minutes. Then it describes how some additional content can be added to the plugin. <br />
<br />
Once you have written a plugin you want people to use it. Some very simple steps allow you to advertise your plugin and [[EnablePluginAutoUpdate|enable auto-update]].<br />
<br />
<br />
===Embedded OSGi===<br />
<br />
For people embedding Protege services inside a non-OSGi based applications, [[Embedding OSGi|here]] is a short example showing how this can work.<br />
<br />
=== Client-server ===<br />
* [[Protege_5_Development_Environment|Setting up a development environment for the OWL Ontology Server]]<br />
* [[Protege_Server_design|OWL Ontology Server design]]<br />
<br />
=== Troubleshooting ===<br />
* [[SolvingClassLoaderProblems|Troubleshooting class loader issues]]<br />
<br />
=== Contributing ===<br />
<br />
'''Please share.'''<br />
It is surprising how many people have written plugins for Protege that we just don't hear about.<br /><br />
If you wish to publish to the community, please see our notes on [[Protege4Contributing#Code_submissions|code contributions]].</div>TaniaTudorachehttps://protegewiki.stanford.edu/index.php?title=Protege5DevDocs&diff=13482Protege5DevDocs2016-05-24T05:56:29Z<p>TaniaTudorache: </p>
<hr />
<div>= Protege Desktop 5.x Developer Documentation =<br />
<br />
This page is a top-level entry point for all '''developer documentation''' related to the Protege Desktop application, versions 5.0 and above.<br />
<br />
__TOC__<br /><br />
<br />
=== Building ===<br />
<br />
==== Accessing the source code ====<br />
Protege Desktop is open source and the code is freely [http://github.com/protegeproject/protege available] on GitHub. Use the following Git command to get a local copy:<br />
<br />
<pre><br />
git clone https://github.com/protegeproject/protege.git protege<br />
</pre><br />
<br />
The source code for many Protege Desktop plug-ins has also been made available on GitHub under the [https://github.com/protegeproject Protege Project organization].<br />
<br />
==== Building from source ====<br />
The instructions for building from source are available on [https://github.com/protegeproject/protege/wiki/Building-from-Source GitHub].<br />
<br />
==== Building with Eclipse and other IDEs ====<br />
We would welcome contributions from the community for setting up development environments other than Eclipse.<br />
<br />
* [https://github.com/protegeproject/protege/wiki/Setup-in-Eclipse Building with Eclipse]<br />
<br />
<br />
=== Protege APIs ===<br />
<br />
The [[P4APIOverview|Protege API]] gives access to the ontology model and offers various utilities. <br />
<br />
The Protege core and the OWL editor kit both provide a large number of [[P4UiComponentSummary|reuseable UI components]] and utilities for generating user interfaces for ontologies.<br />
<br />
<br />
=== Developing a plugin ===<br />
<br />
First, you should consider which type of plugin you want to build. The [[PluginTypes|plugin types page]] provides a list of plugin types that can be implemented in Protege.<br />
<br />
Second, take a look and reuse the [https://github.com/protegeproject/protege-plugin-examples/ plugin examples] available on GitHub. The GitHub page also has documentation (see the readme file). Clone the project, and then adapt the plugin example that you would like to implement.<br />
<br />
You may also look at the [[PluginAnatomy|Anatomy of a Plugin page]], which gives a quick start to writing a plugin for Protege. Although it was created for Protege 4 plugins, most things still apply to Protege 5 plugins. The page starts with a guide to writing the empty (trivial) plugin in five minutes. Then it describes how some additional content can be added to the plugin. <br />
<br />
Once you have written a plugin you want people to use it. Some very simple steps allow you to advertise your plugin and [[EnablePluginAutoUpdate|enable auto-update]].<br />
<br />
<br />
===Embedded OSGi===<br />
<br />
For people embedding Protege services inside a non-OSGi based applications, [[Embedding OSGi|here]] is a short example showing how this can work.<br />
<br />
=== Client-server ===<br />
* [[Protege_5_Development_Environment|Setting up a development environment for the OWL Ontology Server]]<br />
* [[Protege_Server_design|OWL Ontology Server design]]<br />
<br />
=== Troubleshooting ===<br />
* [[SolvingClassLoaderProblems|Troubleshooting class loader issues]]<br />
<br />
<br />
=== Contributing ===<br />
<br />
'''Please share.'''<br />
It is surprising how many people have written plugins for Protege that we just don't hear about.<br /><br />
If you wish to publish to the community, please see our notes on [[Protege4Contributing#Code_submissions|code contributions]].</div>TaniaTudorachehttps://protegewiki.stanford.edu/index.php?title=Protege5DevDocs&diff=13481Protege5DevDocs2016-05-24T05:53:20Z<p>TaniaTudorache: </p>
<hr />
<div>= Protege Desktop 5.x Developer Documentation =<br />
<br />
This page is a top-level entry point for all '''developer documentation''' related to the Protege Desktop application, versions 5.0 and above.<br />
<br />
__TOC__<br /><br />
<br />
=== Building ===<br />
<br />
==== Accessing the source code ====<br />
Protege Desktop is open source and the code is freely [http://github.com/protegeproject/protege available] on GitHub. Use the following Git command to get a local copy:<br />
<br />
<pre><br />
git clone https://github.com/protegeproject/protege.git protege<br />
</pre><br />
<br />
The source code for many Protege Desktop plug-ins has also been made available on GitHub under the [https://github.com/protegeproject Protege Project organization].<br />
<br />
==== Building from source ====<br />
The instructions for building from source are available on [https://github.com/protegeproject/protege/wiki/Building-from-Source GitHub].<br />
<br />
==== Building with Eclipse and other IDEs ====<br />
We would welcome contributions from the community for setting up development environments other than Eclipse.<br />
<br />
* [https://github.com/protegeproject/protege/wiki/Setup-in-Eclipse Building with Eclipse]<br />
<br />
<br />
=== Protege APIs ===<br />
<br />
The [[P4APIOverview|Protege API]] gives access to the ontology model and offers various utilities. <br />
<br />
The Protege core and the OWL editor kit both provide a large number of [[P4UiComponentSummary|reuseable UI components]] and utilities for generating user interfaces for ontologies.<br />
<br />
<br />
=== Developing a plugin ===<br />
<br />
First, you should consider which type of plugin you want to build. The [[PluginTypes|plugin types page]] provides a list of plugin types that can be implemented in Protege.<br />
<br />
Second, take a look and reuse the [https://github.com/protegeproject/protege-plugin-examples/ plugin examples] available on GitHub. The GitHub page also has documentation (see the readme file). Clone the project, and then adapt the plugin example that you would like to implement.<br />
<br />
You may also look at the [[PluginAnatomy|Anatomy of a Plugin page]], which gives a quick start to writing a plugin for Protege. Although it was created for Protege 4 plugins, most things still apply to Protege 5 plugins. The page starts with a guide to writing the empty (trivial) plugin in five minutes. Then it describes how some additional content can be added to the plugin. <br />
<br />
Once you have written a plugin you want people to use it. Some very simple steps allow you to advertise your plugin and [[EnablePluginAutoUpdate|enable auto-update]].<br />
<br />
<br />
===Embedded OSGi===<br />
<br />
For people embedding Protege services inside a non-OSGi based applications, [[Embedding OSGi|here]] is a short example showing how this can work.<br />
<br />
=== Client-server ===<br />
* [[Protege_5_Development_Environment|Setting up a development environment for the OWL Ontology Server]]<br />
* [[Protege_Server_design|OWL Ontology Server design]]</div>TaniaTudorachehttps://protegewiki.stanford.edu/index.php?title=Protege5DevDocs&diff=13480Protege5DevDocs2016-05-24T05:51:34Z<p>TaniaTudorache: </p>
<hr />
<div>= Protege Desktop 5.x Developer Documentation =<br />
<br />
This page is a top-level entry point for all '''developer documentation''' related to the Protege Desktop application, versions 5.0 and above.<br />
<br />
__TOC__<br /><br />
<br />
=== Building ===<br />
<br />
==== Accessing the source code ====<br />
Protege Desktop is open source and the code is freely [http://github.com/protegeproject/protege available] on GitHub. Use the following Git command to get a local copy:<br />
<br />
<pre><br />
git clone https://github.com/protegeproject/protege.git protege<br />
</pre><br />
<br />
The source code for many Protege Desktop plug-ins has also been made available on GitHub under the [https://github.com/protegeproject Protege Project organization].<br />
<br />
==== Building from source ====<br />
The instructions for building from source are available on [https://github.com/protegeproject/protege/wiki/Building-from-Source GitHub].<br />
<br />
==== Building with Eclipse and other IDEs ====<br />
We would welcome contributions from the community for setting up development environments other than Eclipse.<br />
<br />
* [https://github.com/protegeproject/protege/wiki/Setup-in-Eclipse Building with Eclipse]<br />
<br />
<br />
=== Protege APIs ===<br />
<br />
==== Protege Core APIs ====<br />
<br />
The [[P4APIOverview|Protege API]] gives access to the ontology model and offers various utilities. <br />
<br />
==== UI components ====<br />
<br />
The Protege core and the OWL editor kit both provide a large number of [[P4UiComponentSummary|reuseable UI components]] and utilities for generating user interfaces for ontologies.<br />
<br />
<br />
=== Developing a plugin ===<br />
<br />
First, you should consider which type of plugin you want to build. The [[PluginTypes|plugin types page]] provides a list of plugin types that can be implemented in Protege.<br />
<br />
Second, take a look and reuse the [https://github.com/protegeproject/protege-plugin-examples/ plugin examples] available on GitHub. The GitHub page also has documentation (see the readme file). Clone the project, and then adapt the plugin example that you would like to implement.<br />
<br />
You may also look at the [[PluginAnatomy|Anatomy of a Plugin page]], which gives a quick start to writing a plugin for Protege. Although it was created for Protege 4 plugins, most things still apply to Protege 5 plugins. The page starts with a guide to writing the empty (trivial) plugin in five minutes. Then it describes how some additional content can be added to the plugin. <br />
<br />
Once you have written a plugin you want people to use it. Some very simple steps allow you to advertise your plugin and [[EnablePluginAutoUpdate|enable auto-update]].<br />
<br />
<br />
===Embedded OSGi===<br />
<br />
For people embedding Protege services inside a non-OSGi based applications, [[Embedding OSGi|here]] is a short example showing how this can work.<br />
<br />
=== Client-server ===<br />
* [[Protege_5_Development_Environment|Setting up a development environment for the OWL Ontology Server]]<br />
* [[Protege_Server_design|OWL Ontology Server design]]</div>TaniaTudorachehttps://protegewiki.stanford.edu/index.php?title=Protege5DevDocs&diff=13479Protege5DevDocs2016-05-24T05:40:44Z<p>TaniaTudorache: </p>
<hr />
<div>= Protege Desktop 5.x Developer Documentation =<br />
<br />
This page is a top-level entry point for all '''developer documentation''' related to the Protege Desktop application, versions 5.0 and above.<br />
<br />
__TOC__<br /><br />
<br />
=== Building ===<br />
<br />
==== Accessing the source code ====<br />
Protege Desktop is open source and the code is freely [http://github.com/protegeproject/protege available] on GitHub. Use the following Git command to get a local copy:<br />
<br />
<pre><br />
git clone https://github.com/protegeproject/protege.git protege<br />
</pre><br />
<br />
The source code for many Protege Desktop plug-ins has also been made available on GitHub under the [https://github.com/protegeproject Protege Project organization].<br />
<br />
==== Building from source ====<br />
The instructions for building from source are available on [https://github.com/protegeproject/protege/wiki/Building-from-Source GitHub].<br />
<br />
==== Building with Eclipse and other IDEs ====<br />
We would welcome contributions from the community for setting up development environments other than Eclipse.<br />
<br />
* [https://github.com/protegeproject/protege/wiki/Setup-in-Eclipse Building with Eclipse]<br />
<br />
<br />
=== Protege APIs ===<br />
<br />
==== Protege Core APIs ====<br />
<br />
The [[P4APIOverview|Protege API]] gives access to the ontology model and offers various utilities. <br />
<br />
==== UI components ====<br />
<br />
The Protege core and the OWL editor kit both provide a large number of [[P4UiComponentSummary|reuseable UI components]] and utilities for generating user interfaces for ontologies.<br />
<br />
<br />
=== Developing a plugin ===<br />
<br />
<br />
===Embedded OSGi===<br />
<br />
For people embedding Protege services inside a non-OSGi based applications, [[Embedding OSGi|here]] is a short example showing how this can work.<br />
<br />
=== Client-server ===<br />
* [[Protege_5_Development_Environment|Setting up a development environment for the OWL Ontology Server]]<br />
* [[Protege_Server_design|OWL Ontology Server design]]</div>TaniaTudorachehttps://protegewiki.stanford.edu/index.php?title=Protege5DevDocs&diff=13478Protege5DevDocs2016-05-24T05:39:20Z<p>TaniaTudorache: </p>
<hr />
<div>= Protege Desktop 5.x Developer Documentation =<br />
<br />
This page is a top-level entry point for all '''developer documentation''' related to the Protege Desktop application, versions 5.0 and above.<br />
<br />
__TOC__<br /><br />
<br />
=== Building ===<br />
<br />
==== Accessing the source code ====<br />
Protege Desktop is open source and the code is freely [http://github.com/protegeproject/protege available] on GitHub. Use the following Git command to get a local copy:<br />
<br />
<pre><br />
git clone https://github.com/protegeproject/protege.git protege<br />
</pre><br />
<br />
The source code for many Protege Desktop plug-ins has also been made available on GitHub under the [https://github.com/protegeproject Protege Project organization].<br />
<br />
==== Building from source ====<br />
The instructions for building from source are available on [https://github.com/protegeproject/protege/wiki/Building-from-Source GitHub].<br />
<br />
==== Building with Eclipse and other IDEs ====<br />
We would welcome contributions from the community for setting up development environments other than Eclipse.<br />
<br />
* [https://github.com/protegeproject/protege/wiki/Setup-in-Eclipse Building with Eclipse]<br />
<br />
<br />
=== Protege APIs ===<br />
<br />
==== Protege Core APIs ====<br />
<br />
The [[P4APIOverview|Protege API]] gives access to the ontology model and offers various utilities. <br />
<br />
==== UI components ====<br />
<br />
The Protege core and the OWL editor kit both provide a large number of [[P4UiComponentSummary|reuseable UI components]] and utilities for generating user interfaces for ontologies.<br />
<br />
<br />
=== Developing a plugin ===<br />
<br />
<br />
=== Client-server ===<br />
* [[Protege_5_Development_Environment|Setting up a development environment for the OWL Ontology Server]]<br />
* [[Protege_Server_design|OWL Ontology Server design]]</div>TaniaTudorachehttps://protegewiki.stanford.edu/index.php?title=Protege5DevDocs&diff=13477Protege5DevDocs2016-05-24T05:36:27Z<p>TaniaTudorache: </p>
<hr />
<div>= Protege Desktop 5.x Developer Documentation =<br />
<br />
This page is a top-level entry point for all '''developer documentation''' related to the Protege Desktop application, versions 5.0 and above.<br />
<br />
__TOC__<br /><br />
<br />
=== Building ===<br />
<br />
==== Accessing the source code ====<br />
Protege Desktop is open source and the code is freely [http://github.com/protegeproject/protege available] on GitHub. Use the following Git command to get a local copy:<br />
<br />
<pre><br />
git clone https://github.com/protegeproject/protege.git protege<br />
</pre><br />
<br />
The source code for many Protege Desktop plug-ins has also been made available on GitHub under the [https://github.com/protegeproject Protege Project organization].<br />
<br />
==== Building from source ====<br />
The instructions for building from source are available on [https://github.com/protegeproject/protege/wiki/Building-from-Source GitHub].<br />
<br />
==== Building with Eclipse and other IDEs ====<br />
We would welcome contributions from the community for setting up development environments other than Eclipse.<br />
<br />
* [https://github.com/protegeproject/protege/wiki/Setup-in-Eclipse Building with Eclipse]<br />
<br />
<br />
=== Protege APIs ===<br />
<br />
==== Protege Core APIs ====<br />
<br />
Here is a summary of the main parts of the [[P4APIOverview|Protege 4 API]] for gaining access to the model and various utilities. <br />
<br />
The code for Protege core is available in [https://github.com/protegeproject/protege GitHub].<br />
<br />
==== UI components ====<br />
<br />
The Protege core and the OWL editor kit both provide a large number of [[P4UiComponentSummary|reuseable components]] and utilities for generating user interfaces for ontologies.<br />
<br />
<br />
=== Developing a plugin ===<br />
<br />
<br />
=== Client-server ===<br />
* [[Protege_5_Development_Environment|Setting up a development environment for the OWL Ontology Server]]<br />
* [[Protege_Server_design|OWL Ontology Server design]]</div>TaniaTudorachehttps://protegewiki.stanford.edu/index.php?title=Protege5DevDocs&diff=13476Protege5DevDocs2016-05-24T05:33:29Z<p>TaniaTudorache: </p>
<hr />
<div>= Protege Desktop 5.x Developer Documentation =<br />
<br />
This page is a top-level entry point for all '''developer documentation''' related to the Protege Desktop application, versions 5.0 and above.<br />
<br />
__TOC__<br /><br />
<br />
=== Accessing the source code ===<br />
Protege Desktop is open source and the code is freely [http://github.com/protegeproject/protege available] on GitHub. Use the following Git command to get a local copy:<br />
<br />
<pre><br />
git clone https://github.com/protegeproject/protege.git protege<br />
</pre><br />
<br />
The source code for many Protege Desktop plug-ins has also been made available on GitHub under the [https://github.com/protegeproject Protege Project organization].<br />
<br />
<br />
==== Building from source ====<br />
Details the steps necessary to downloareleasesd the Protege Desktop source code, and build a distribution from those sources.<br />
<br />
To follow this step-by-step guide, you must have [http://maven.apache.org/ Maven] and [http://git-scm.com/ Git] installed.<br />
<br />
* Get a copy of the Protege Desktop source code, i.e., "git clone https://github.com/protegeproject/protege.git protege".<br />
* Change into the protege directory.<br />
* Type mvn clean install.<br />
<br />
Once the build completes, a usable Protege Desktop installation will have been created in:<br />
<br />
protege/protege-distribution/target/protege-distribution-${version}-bin/Protege<br />
<br />
Use the run.bat or run.sh scripts to launch Protege Desktop.<br />
<br />
<br />
==== Building with Eclipse and other IDEs ====<br />
We would welcome contributions from the community for setting up development environments other than Eclipse.<br />
<br />
* [https://github.com/protegeproject/protege/wiki/Setup-in-Eclipse Building with Eclipse]<br />
<br />
<br />
=== Protege APIs ===<br />
<br />
==== Protege Core APIs ====<br />
<br />
Here is a summary of the main parts of the [[P4APIOverview|Protege 4 API]] for gaining access to the model and various utilities. <br />
<br />
The code for Protege core is available in [https://github.com/protegeproject/protege GitHub].<br />
<br />
==== UI components ====<br />
<br />
The Protege core and the OWL editor kit both provide a large number of [[P4UiComponentSummary|reuseable components]] and utilities for generating user interfaces for ontologies.<br />
<br />
<br />
=== Developing a plugin ===<br />
<br />
<br />
=== Client-server ===<br />
* [[Protege_5_Development_Environment|Setting up a development environment for the OWL Ontology Server]]<br />
* [[Protege_Server_design|OWL Ontology Server design]]</div>TaniaTudorachehttps://protegewiki.stanford.edu/index.php?title=Protege5DevDocs&diff=13475Protege5DevDocs2016-05-24T05:32:59Z<p>TaniaTudorache: </p>
<hr />
<div>= Protege Desktop 5.x Developer Documentation =<br />
<br />
This page is a top-level entry point for all '''developer documentation''' related to the Protege Desktop application, versions 5.0 and above.<br />
<br />
__TOC__<br /><br />
<br />
=== Accessing source code ===<br />
Protege Desktop is open source and the code is freely [http://github.com/protegeproject/protege available] on GitHub. Use the following Git command to get a local copy:<br />
<br />
<pre><br />
git clone https://github.com/protegeproject/protege.git protege<br />
</pre><br />
<br />
The source code for many Protege Desktop plug-ins has also been made available on GitHub under the [https://github.com/protegeproject Protege Project organization].<br />
<br />
<br />
==== Building from source ====<br />
Details the steps necessary to downloareleasesd the Protege Desktop source code, and build a distribution from those sources.<br />
<br />
To follow this step-by-step guide, you must have [http://maven.apache.org/ Maven] and [http://git-scm.com/ Git] installed.<br />
<br />
* Get a copy of the Protege Desktop source code, i.e., "git clone https://github.com/protegeproject/protege.git protege".<br />
* Change into the protege directory.<br />
* Type mvn clean install.<br />
<br />
Once the build completes, a usable Protege Desktop installation will have been created in:<br />
<br />
protege/protege-distribution/target/protege-distribution-${version}-bin/Protege<br />
<br />
Use the run.bat or run.sh scripts to launch Protege Desktop.<br />
<br />
<br />
==== Building with Eclipse and other IDEs ====<br />
We would welcome contributions from the community for setting up development environments other than Eclipse.<br />
<br />
* [https://github.com/protegeproject/protege/wiki/Setup-in-Eclipse Building with Eclipse]<br />
<br />
<br />
=== Protege APIs ===<br />
<br />
==== Protege Core APIs ====<br />
<br />
Here is a summary of the main parts of the [[P4APIOverview|Protege 4 API]] for gaining access to the model and various utilities. <br />
<br />
The code for Protege core is available in [https://github.com/protegeproject/protege GitHub].<br />
<br />
==== UI components ====<br />
<br />
The Protege core and the OWL editor kit both provide a large number of [[P4UiComponentSummary|reuseable components]] and utilities for generating user interfaces for ontologies.<br />
<br />
<br />
=== Developing a plugin ===<br />
<br />
<br />
=== Client-server ===<br />
* [[Protege_5_Development_Environment|Setting up a development environment for the OWL Ontology Server]]<br />
* [[Protege_Server_design|OWL Ontology Server design]]</div>TaniaTudorachehttps://protegewiki.stanford.edu/index.php?title=Main_Page&diff=13474Main Page2016-05-24T05:27:19Z<p>TaniaTudorache: </p>
<hr />
<div>__NOTOC__<br />
= <span style="color:#2c3e50;"> Welcome to the Prot&eacute;g&eacute; wiki! </span> =<br />
<br />
[[File:WP-classes.png|right|300px|thumb|<span style="color:#2c3e50; font-weight:bold;">[[WebProtege|WebProt&eacute;g&eacute;]] - a powerful collaborative ontology development environment for the Web </span>]]<br />
<br />
[[File:Protege-OWL.jpg|right|300px|thumb|<span style="color:#2c3e50; font-weight:bold;">[[Protege4UserDocs|Prot&eacute;g&eacute; Desktop]] - a fully-fledged OWL 2 ontology editor for the desktops</span>]]<br />
<br />
[http://protege.stanford.edu Prot&eacute;g&eacute;] is a free, open-source platform that provides a growing user community with a suite of tools to construct domain models and knowledge-based applications with ontologies. <br />
<br />
''' Quick links: [http://webprotege.stanford.edu WebProt&eacute;g&eacute; server], Prot&eacute;g&eacute; Desktop [http://protege.stanford.edu/products.php#desktop-protege download] and [https://github.com/protegeproject/protege-distribution/releases release notes], [https://github.com/protegeproject/ Source code on GitHub], [http://protege.stanford.edu Prot&eacute;g&eacute; website] '''<br />
<br />
<br />
= <span style="color:#2c3e50;"> User Documentation </span>=<br />
<br />
=== <span style="color:#2c3e50;"> WebProt&eacute;g&eacute; </span> ===<br />
* [[WebProtege|Overview]]<br />
* [[WebProtegeUsersGuide|User's Guide]]<br />
* [[WebProtegeAdminGuide|Administrator's Guide]] - download and installation instructions<br />
* Use WebProt&eacute;g&eacute; now on our Stanford-hosted server: http://webprotege.stanford.edu<br />
<br />
<br />
=== <span style="color:#2c3e50;"> Prot&eacute;g&eacute; Desktop </span> ===<br />
* [[Protege4UserDocs|Prot&eacute;g&eacute; Desktop documentation]] ([https://github.com/protegeproject/protege-distribution/releases release notes], [[Install_Protege5|installation instructions]], [http://protege.stanford.edu/products.php#desktop-protege Protege Desktop download], [[Protege_Desktop_Old_Versions|older Protege releases download]])<br />
* [[Protege3UserDocs|Older Prot&eacute;g&eacute; releases documentation (version 3.x)]]<br />
* [[Protege-OWL_4_FAQ|Frequently Asked Questions (FAQ)]]<br />
<br />
<br />
=== <span style="color:#2c3e50;"> Tutorials and Getting Started</span> ===<br />
* [http://protege.stanford.edu/publications/ontology_development/ontology101.html Ontology Development 101: A Guide to creating your first ontology]<br />
* [http://www.cs.man.ac.uk/~stevensr/menupages/background.php Brief introduction to ontologies], by Robert Stevens<br />
* [http://owl.cs.manchester.ac.uk/publications/talks-and-tutorials/protg-owl-tutorial/ Prot&eacute;g&eacute; OWL Tutorial: A step-by-step guide to modeling in OWL using the Prot&eacute;g&eacute; OWL tools]<br />
* Semantic Web Best Practices and Deployment Working Group's [http://www.w3.org/2001/sw/BestPractices/Tutorials Semantic Web Tutorials] page<br />
* [[Protege4GettingStarted | Getting started with the Protege Desktop editor]] - a short guide to the interface<br />
* [[Pr4_UG | Protege Desktop User's Guide]] - a guide on how to use Protege to create, edit, and inspect ontologies<br />
* [[Protege4Pizzas10Minutes | Pizzas in 10 minutes: A demo of modeling shortcuts]] - a quickstart guide to creating your first OWL ontology<br />
* Cody Burleson's [http://www.semanticfocus.com/blog/entry/title/introduction-to-semantic-web-vision-and-technologies-part-5-building-owl-ontologies-using-protege-4-screencast/ screencast] version of the tutorial listed directly above (it would be great if he got some encouragement for part 6).<br />
* [http://arxiv.org/abs/1201.4089 A Description Logic Primer]<br />
<br />
<br />
<br />
= <span style="color:#2c3e50;"> Developer Documentation </span> =<br />
<br />
=== <span style="color:#2c3e50;"> WebProt&eacute;g&eacute; </span> ===<br />
* [[WebProtegeDevelopersGuide|Developer's Guide]]<br />
<br />
<br />
=== <span style="color:#2c3e50;"> Prot&eacute;g&eacute; Desktop </span> ===<br />
* [[Protege5DevDocs|Prot&eacute;g&eacute; Desktop 5.x]]<br />
* [[Protege4DevDocs|Prot&eacute;g&eacute; Desktop 4.x]]<br />
* [[Protege3DevDocs|Prot&eacute;g&eacute; Desktop 3.x]]<br />
<br />
* [[ProtegeQAGuide|Guide to Quality Assurance]]<br />
<br />
<br />
= <span style="color:#2c3e50;"> Download and Support </span> =<br />
<br />
To download Prot&eacute;g&eacute; or WebProt&eacute;g&eacute; please visit our [http://protege.stanford.edu homepage]. To use the WebProt&eacute;g&eacute; server hosted at Stanford, please go to: http://webprotege.stanford.edu. <br />
<br />
To find out about the different support options, for example, how to subscribe to our mailing lists, please visit the [http://protege.stanford.edu/support.php Support page].<br />
<br />
Follow our [http://www.youtube.com/user/TheProtegeProject YouTube channel] featuring screencasts showing different features of Prot&eacute;g&eacute; and WebProt&eacute;g&eacute;.<br />
<br />
<br />
= <span style="color:#2c3e50;"> Wiki Help </span> =<br />
If you are new to using a Wiki, please see the [[Help:Contents|Help page]] page for links to User's Guides, etc. <br />
<br />
The [[Help:Contents|Help page]] also has suggestions for where to find help with using the Prot&eacute;g&eacute; application.</div>TaniaTudorache