Difference between revisions of "Tutorial: Ontology Development"

From Developer Documents
Jump to navigation Jump to search
m
m
Line 80: Line 80:
 
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 
Require-Bundle: org.simantics.layer0;bundle-version="1.0.0"
 
Require-Bundle: org.simantics.layer0;bundle-version="1.0.0"
Export-Package: com.acme.movie.ontology
+
Export-Package: com.acme.ontology
 
</pre>
 
</pre>
  
 
=== Developing the ontology ===
 
=== Developing the ontology ===
 
Open Movie.pgraph and start editing.
 
Open Movie.pgraph and start editing.
 +
 +
As you are using Layer0 concepts, it is a good idea to capture its namespace:
 +
  L0 = <http://www.simantics.org/Layer0-1.0>
 +
 +
Your acme company has a namespace which is used . You are creating a ''new'' one so it must be stated.
 +
  <http://com.acme> : L0.Library
 +
      @L0.new
 +
 +
The ontology has a representing resource, an instance of L0.Ontology. Don't forget to add stub-compiler metadata L0.HasResourceClass.
 +
  Movie = <http://com.acme/Movie-1.0> : L0.Ontology
 +
      L0.HasResourceClass "com.acme.ontology.Movie"

Revision as of 15:25, 6 October 2010

Step 1: Ontology Plug-in

Ontologies are encapsulated in OSGi bundles. In eclipse we develop them as equinox plug-ins. It contains ontology sources (graph/*.pgraph), compiled graph file (graph.tg), and Java resource files (src and bin).

Open a New Plug-in Project wizard:

  • Select File >> New >> Plug-in Development >> Plug-in Project

Our organization is Acme Software ltd and from there is our plug-in name derived, com.acme.movie.ontology. Insert that as project name. In the following page you should know that this plugin does not contribute to UI, does not need activator or isn't a rich client application.

Setup Graph Building Nature

Next, add Graph builder into the project nature. You need to modify a file called workspace/com.acme.movie.ontology/.project, and to do this Eclipse must be closed for changes to apply.

The file look like this:

  <?xml version="1.0" encoding="UTF-8"?>
  <projectDescription>
	<name>com.acme.movie.ontology</name>
	<comment></comment>
	<projects>
	</projects>
	<buildSpec>
		<buildCommand>
			<name>org.eclipse.jdt.core.javabuilder</name>
			<arguments>
			</arguments>
		</buildCommand>
		<buildCommand>
			<name>org.eclipse.pde.ManifestBuilder</name>
			<arguments>
			</arguments>
		</buildCommand>
		<buildCommand>
			<name>org.eclipse.pde.SchemaBuilder</name>
			<arguments>
			</arguments>
		</buildCommand>
	</buildSpec>
	<natures>
		<nature>org.eclipse.pde.PluginNature</nature>
		<nature>org.eclipse.jdt.core.javanature</nature>
	</natures>
  </projectDescription>

Add the following insertions:

	<buildSpec>
		<buildCommand>
			<name>org.simantics.graph.builder</name>
			<arguments>
			</arguments>
		</buildCommand>
                ...

and

	<natures>
                <nature>org.simantics.graph.nature</nature>
                ...


Good, fire up the Eclipse again. If everything went well "Graph Builder" ought to be visibile in the properties of the project file. Like so:

Also create dictory called graphs, and there a file Movie.pgraph.

Configure MANIFEST.MF

Your ontology well depend on Layer0, so open META-INF/MANIFEST.MF in a editor and add org.simantics.layer0 to plug-in dependencies.

Also, you are going to

  • Export package com.acme.movie.ontology

Your MANIFEST.MF should look like this.

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Ontology
Bundle-SymbolicName: com.acme.movie.ontology
Bundle-Version: 1.0.0.qualifier
Bundle-Vendor: ACME
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Require-Bundle: org.simantics.layer0;bundle-version="1.0.0"
Export-Package: com.acme.ontology

Developing the ontology

Open Movie.pgraph and start editing.

As you are using Layer0 concepts, it is a good idea to capture its namespace:

 L0 = <http://www.simantics.org/Layer0-1.0>

Your acme company has a namespace which is used . You are creating a new one so it must be stated.

 <http://com.acme> : L0.Library
     @L0.new

The ontology has a representing resource, an instance of L0.Ontology. Don't forget to add stub-compiler metadata L0.HasResourceClass.

 Movie = <http://com.acme/Movie-1.0> : L0.Ontology
     L0.HasResourceClass "com.acme.ontology.Movie"