Cogui User Guide (version 1.0)

Introduction
Requirements
Installation

1 User Interface: basics
1.1 Main commands
1.1.1 Main menu
1.1.2 Main toolbar
1.2 Views
1.2.1 Default view layout
1.2.2 Docking windows framework
1.2.3 Tabbed panels
1.2.4 Views description
1.2.4.1 Project view
Actions on the project tree
Search elements in the project tree
1.2.4.2 Type views
Actions
Lexicographic search in type trees
1.2.4.3 Property view
1.2.4.4 Error view
1.2.4.5 Result  view
1.2.4.6 Task view
1.2.4.7 Individual view
1.3 Editors
1.3.1 Graph-based edition
1.3.1.1 Vertex insertion
1.3.1.2 Editing graphs
Selection
Copy, Paste
Drag'n'drop
Automatic arrangements
1.3.1.3 Inline edition
1.3.1.4 Edges
1.3.1.5  Lexicographical search on graphs
1.3.1.6 Keyboard shortcuts
1.3.2 Module editor

2 Ontology edition
2.1 Overview
2.2 Open, create and save projects

2.3 How to browse through type hierarchies
2.4 Concept types edition

2.4.1 Insertion
2.4.2 Naming conventions
2.4.3 Graph arrangement
2.4.4 Concept type hierarchy control
2.4.5 Forbidden types
2.4.6 Concept types alteration
2.5 Relation types edition
2.5.1 Insertion
2.5.2 Naming conventions
2.5.3 Relation type signatures
2.5.4 Relation type hierarchy control
2.5.5 Relation types alteration
2.6 Nesting types edition and modules
2.6.1 Overview
2.6.2 Building nesting type hierarchy
2.6.3 Building modules
2.7 Multilingual vocabulary
2.8 How to work with a big vocabulary
2.9 Individuals
2.10 Individual graphs
2.11 Contextual knowledge

2.11.1 Prototypical graphs
2.11.2 Pattern graphs

3 Rule edition
3.1 Overview
3.2 Editing rules
3.3 Applying rules

4 Fact graph edition
4.1 Simple graphs (SGs)
4.1.1 Overview
4.1.2 Create and edit facts
4.1.3 Concept insertion
4.1.4 Relation insertion
4.1.5 Coreference
4.1.6 Use prototypical graphs
4.1.7 Partial edition
4.2 Graphs with nestings
4.2.1 Overview
4.2.2 Nesting a graph
4.2.3 Nested graph edition
4.2.4 Use pattern graphs
5 Querying

6 Tools
6.1 Image exportation
6.1.1 Exporting hierarchies
6.1.2 Exporting conceptual graphs

Appendix


Introduction

Developed by RCR team at LIRMM (http://www.lirmm.fr/RCR/) CoGui is a visual tool for building (conceptual graph) knowledge bases.

CoGui tool provides the following functionalities::

    * Concept type hierarchy editor
    * Relation type hierarchy editor
    * Nesting type hierarchy editor for nested graphs
    * Rule editor
    * Pattern and Prototypic graph definitions allowing to assist the annotation process
    * Individual Manager with optional attached graphs
    * Modules (subsets of vocabulary)
    * Multilingual capabilities
    * etc

 
Requirements
Being written in Java, this software can be used on any platform that has installed a Java Runtime Environment 1.5 (or higher). Please note that, currently, the query wizard requires the Windows operating system in distribution.
Starting from 0.6.5 each new version CoGui will be reported and described at: http://www.lirmm.fr/cogui/changelog.html

Installation
The software can be run directly at this address: http://www.lirmm.fr/cogui/cogui61.jnlp

1 User Interface Basics

1.1 Main commands


CoGui provides a classical frame GUI with a main menu and a toolbar.
1.1.1 Main menu
The File menu allows to open and save projects in COGXML format.
The Edit menu provides Undo/Redo mechanisms for graphs / rules editors. Please note that each editor has its own history of commands, and the undo and redo will only apply to the selected editor. The selection of objects, as well as the copy and paste commands also concern editing graphs and rules.
The View menu provides actions for both view management and visual effects inside the editors.
Commands inside the Graph menu only concern building and modifying the graph-based editors. All these commands can be activated directly inside editors with widgets, contextual popup menus and keyboard shortcuts (see chapter 1.3).
Tools menu allows to export graph images, last updates that have been validated, as well as access preferences.
This allows users access to documentation and informations about LIRMM-RCR team.

1.1.2 Main toolbar


the main toolbar

1.2 Views
The CoGui workbench is divided into a number of views. A view has the functionality of a window. Depending on the type of the view it can be closed (sometimes allowed), minimized (sometimes allowed), maximized (always allowed). Views are also dockable/undockable and the windows layout is user customizable. Unlike editors, each type of view has only one instance with a particular behaviour. In the following sections we will first give general information about view management, and then a description of particular behaviour for each kind of view.
1.2.1 Default view layout
figures below present the views in the default application layout

default view layout (1)


default view layout (2)
1.2.2 Docking windows framework


view title bar buttons
Users can customize the layout of the application according to their preferences. Users can minimize, maximize, close, dock, undock and move around the windows to create a personalized windows layout. The title bar of each view is provided with buttons on the right corner. Depending on the type of view some buttons can be hidden.

A double click on the view title bar directly maximizes the view. If it is already maximized, it will retrieve its original size.

The default windows layout keeps every view inside a main window (which contains the main menu and the tool bar). However, the user can place one or more views in a floating window somewhere on the screen, independently of main window. The user can also drag a view outside the main window, and in this case a floating window containing the view will be automatically created.
This animation shows how to place views in a floating window.

It is also possible to drag and drop views inside the main window in order to conveniently arrange views.
This animation shows how to arrange views inside the main window.

Once the users are satisfied with the layout they can easily save their settings which will be restored the next time the application is started. In the main menu the option "View/Save current layout" saves the new layout, size and position of each view to automatically restore it later. It is always possible to retrieve default windows layouts presented in paragraph 1.2.1 with the option "View/Restore default layout".

Note that views are not closeable in the main window but can be closed in a floating window. If a view is closed, it is possible to retrieve it with the option "View/Show view" in the main menu.

1.2.3 Tabbed Panels
Default view layout provides three tabbed panels.
1) Left panel contains the project,the types and the individuals views
2) Bottom panel contains the error, the result and the property views
3) Center panel contains the task view and the editors


contextual menu on tabs
Tabs can be placed on either side of the center panel. The titled tabs can be rotated 90°, 180° and 270° thus making it possible to have vertical texts and icons. You can even reorder tabs using the mouse. All these features are provided by the contextual menu (right click on tab). These preferences can be saved with the same mechanism as windows layout: options "View/Save current layout" and "View/Restore default layout" in main menu. 

Buttons and a drop down list of all the tabs could simplify the selection of a tab in the case where are too many tabs.


tab selection
1.2.4 Views descriptions
Each view has a unique instance and a particular behaviour in the application, in this chapter we will describe each type of view.
1.2.4.1 Project View
The project view gives access to the different objects of the project in a project tree.

project view
Actions on the project tree
Each element of the tree is associated with a context menu accessible by  right click. Please find below a table listing all the possible actions from these menus.
Item Action Description
Concept types Edit concept types: tree view Open the concept types tree panel (concept type view)
Edit concept types: graph editor Open an editor containing the graphical representation of  the concept type hierarchy
Relation types Edit relation types: tree view Open the relation types tree panel  (relation type view)
Edit relation types: graph editor Open an editor containing the graphical representation of the relation type hierarchy
Nesting types Edit nesting types: tree view Open the nesting types tree panel (nesting type view)
Edit nesting types: graph editor Open an editor containing the graphical representation of the nesting type hierarchy
Modules New module Create a new empty module
Module item Edit module Open the editor corresponding to the selected module
New module Create a new empty module
Rename Rename the selected module
Delete module Delete the selected module
Properties Open a dialog to access the properties of the selected module
Patterns New set of patterns Create a new folder for pattern graphs
Pattern set item New pattern Create a new pattern graph inside the currrent selected folder
New set of patterns Create a sibling set (folder) of patterns
Rename Rename the folder
Delete Delete the current selected folder and all pattern graphs contained in it
Pattern graph item Edit Open an editor containing the graphical representation of the corresponding pattern graph
Edit whole graph Open an editor containing the graphical representation of the corresponding pattern graph. Force all vertices to be displayed and forbid the edition of the reduced mode (the reduced mode allows a partial view of larger graphs)
New pattern Create a sibling new pattern graph
New set of patterns Create a new set (folder) of patterns. Please note that there is only one level in the folder structure. This means that the new folder is a child of the 'Patterns' item and not a sibling of the currently selected pattern graph.
Rename Rename pattern graph
Delete pattern Delete pattern graph
Properties Open a dialog box to access the properties of the selected pattern graph
Prototypics New set of prototypic graphs Create a new folder for prototypic graphs
Prototypic set item New prototypic for concept Create a new prototypic graph for the concept inside the currrent selected folder
New prototypic for relation Create a new prototypic graph for the relation inside the currrent selected folder
New set of prototypics Create a sibling set (folder) of prototypic graphs
Rename Rename the folder
Delete Delete the current selected folder and all prototypic graphs contained in it
Prototypic graph item Edit Open an editor containing the graphical representation of the corresponding prototypic graph
Edit whole graph Open an editor containing the graphical representation of the corresponding prototypic graph. Force all vertices to be displayed and forbid reduced edition usage (see above for a description of the reduced usage)
New prototypic for concept Create a sibling new prototypic graph for concepts
New prototypic for relation Create a sibling new prototypic graph for relations
New set of prototypics Create a new set (folder) of prototypic graph. Please note that there is only one level of folder. This means that the new folder will be a child of 'Prototypics' item and not a sibling of the currently selected prototypic graph.
Rename Rename prototypic graph
Delete pattern Delete prototypic graph
Properties Open a dialog to access the properties of selected prototypic graph
Rules New set of rules Create a new set (folder) of rules
Rule set item New rule Create a new rule inside inside the currently selected rule set
New set of rules Create a new sibling set (folder) of rules
Rename Rename the set of rules
Delete Delete current rules set and all the rules contained in it
Rule item Edit rule Open an editor containing the graphical representation
New rule Create a new sibling rule
New set of rules Create a new set (folder) of rules. Note that there is only one level of folder. So the new folder is a child of 'Rules' item and not a sibling of the currently selected rule.
Rename Rename the currently selected rule
Delete rule Delete the currently selected rule
Properties Open a dialog box to access the properties of selected rule
Facts New set of facts Create a new set (folder) of graph facts
Fact set item New fact Create a new fact inside the currently selected set
New set of facts Create a new set (folder) of facts. Note that there is only one level of folder. So the new folder is a child of 'Facts' item and not a sibling of the currently selected set of fact.
Rename Rename the set (folder) of facts
Delete Delete the currently selected set of facts and all facts contained in it
Fact graph item Edit Open an editor containing the graphical representation of the corresponding conceptual graph
Edit whole graph Open an editor containing the graphical representation of the corresponding conceptual graph. Force all vertices to be displayed and forbid reduced edition usage
New fact Create a sibling new fact graph 
New set of facts Create a new set (folder) of fact graphs. Note that there is only one level of folder. So the new folder is a child of 'Facts' item and not a sibling of the currently selected graph.
Rename Rename fact graph
Delete fact Delete fact graph
Properties Open a dialog to access the properties of selected fact graph


A double-click on the selected element triggers the following action by default: depending on the type of the element it either displays the view of the corresponding hierarchy or it opens the editor of the selected element.

Search for elements in the project tree
The tree project has a search tool. It is thus possible to find anything using its label as a search string. To do this, please make sure the project view is selected and then type the first letters on the keyboard: the first element of the tree beginning with those letters will be automatically selected. If the item is hidden, some elements of the tree will be expanded so that it becomes visible. In addition, if several elements correspond to the query, just use the arrow keys to scroll.

searching in project tree

The search tool supports generic characters such as '*' and '?'. For instance "*pro" will find all items containing the string "pro" such as 3approach".
1.2.4.2 Type views
Each type hierarchy is displayed in a specialized view (concept type view, relation type view and nesting type view).
These views provide a representation in the tree-like structure. But hierarchies of concept types and relation types are not necessarily trees, therefore dupplication might occur.

Actions

Each element of the tree is associated with a context menu accessible by right click. Below is a table listing the possible actions from these menus.
Action Description
Edit type Open an editor containing the graphical representation of the type hierarchy
Label and description CoGui can create multilingual ontologies. This action helps to describe the labels and descriptions of each type in several languages.
Properties Give access to properties of the currently selected type

The tree types can be dragged from the views to the editors. This feature is available to editors of graphs, hierarchies, rules and modules (for more information see the relevant chapter).

To use drag'n'drop, note that it is possible to select multiple types in the tree. For this, keep the Ctrl key down. 

Lexicographic search in types trees
 

search a type by label
The type view benefits from a search tool. It is thus possible to find a type by its label. To do this, make sure that the type view is selected then type the first letters on the keyboard: the first element of the tree beginning with those letters will be automatically selected. If the item is hidden, some elements of the tree will be expanded so that it becomes visible. In addition, if several elements correspond to the query, just use the arrow keys to browse through the different found types or the different paths for the same found type.

The search tool supports generic characters such as '*' and '?'. For instance "*animal" will find all types containing the string "animal".
Note that relation type view items display the signature of each relation type but this signature is not taken into account by the search.

1.2.4.3 Property view
The Property view is synchronized with the selected editor and displays the properties of the selected object. The properties are shown on a table. Those who appear in bold are editable.

the property view

1.2.4.4 Error view
The Error view displays a list of messages. These messages are generated by the control of the project. This control is triggered either (1) manually by the "control" button or (2)automatically, at the opening of the project or (3)before carrying out certain tasks (querying for example).

the error view
There are three kinds of messages.
information message
warning message
error message
The table is sortable: click on the column header to choose the sorting criteria. A contextual menu is associated with each message. The option "Show it on graph" opens the editor associated with the concerned objects, and the objects are highlighted in red on the editor. Sometimes it is possible to automatically correct the error (or warning). When it can be done, the correction action is added to the contextual menu.

A double click on an error message opens the editor and hightlights the concerned objects, an easy way to correct errors on graphs.
 

1.2.4.5 Result view
This view works with the query wizard. When projections (potential answers for the query) are found, they are listed in the table.

the result view

A double click on a query anwer opens the corresponding editor and hightlights the projected vertices.
1.2.4.6 Task view
Unlike other views, the task view is not dockable, it cannot be moved to a floating window or placed elsewhere. It is always placed in a central position and all opened editors are associated with this view in a tabbed panel. Its contents depends on the state of the application, actions and wizards are placed contextually in the task view.

1.2.4.7 Individual view
The Individual view lists all the individuals in a sortable table.Click on the header column to sort. Individuals could be dragged from the list to the editors.


use contextual menu to access to the corresponding individual graph

1.3 Editors
Contrary to the views, editors are closeable, they can not be moved, they are always placed in the central panel. Editors provide a graphical way of modifying the objects of the model. With the exception of the module editor (a table), they use the graph representation.

1.3.1 Graph-based edition
Most objects in the model are graphs and are edited in a graph-based editor. Of course, each edition has its own features, but most of the editing functions are common, and in this chapter we will describe them.

1.3.1.1 Vertex insertion
Each kind of graph editor has its own vertices factory:
* Concept type hierarchy allows insertion of concept types and banned vertices
* Relation type hierarchy allows insertion of relation types
* Nesting type hierarchy allows insertion of nesting types
* Other editors (fact graphs, rules, pattern graphs, prototypic graphs, individual graphs) allow insertion of concept and relation vertices

Vertices can be added to the graph by using either the menu "Graph/Insert vertex" option or local toolbar buttons. But the easiest way to place vertices at mouse position is to right-click and choose insert menu options in the contextual menu. It is also possible to drag a type (or several types) from type view trees to the editor.

1.3.1.2 Editing graphs
Selection
Just click on a vertex to select it. Selected vertices can easily be recognized by the handles decorating them. Hold down the left mouse button to select an area: all objects (vertices and edges) entirely contained in this area will be selected. It is useful to do multiple selection to move a large part of the graph with only one operation. Another reason to select several vertices is that they remain fixed during the Spring Layout arrangement. In the case of multiple selection the property view remains empty.

This animation shows how to select and move several objects

To add or remove an object from the selection set, keep Ctrl key pressed.

Copy, Paste
Selected vertices can be copied, cut and pasted in a graph editor or from an editor to another. Edition commands are accessible from main menu, toolbar, contextual menu and via keyboard shortcuts.

Pending edges are not allowed in selection set. Thus an edge can only be copied if its source and target vertices are also selected.

Drag'n'drop
Vertices can be dragged and dropped inside the editor. Types can also be dragged from type tree to graph based editors. If the edited object is a conceptual graph or a rule, the copied object is created with the dragged type (i.e. dragging a concept type creates a concept of this type etc.)

Automatic arrangements
Three layouts are preavailable. The algorithms provided to arrange type hierarchies cannot support circuits. The Spring Layouter use a force-based layout and can be used everywhere.
Arrange hierarchy horizontally
Arrange hierarchy vertically
Start Spring Layouter
Stop Spring Layouter

Because the two algorithms for arrangement of hierarchies do not work with circuits, so they generally can not be used with the graphs and rules.



1.3.1.3 Inline edition
Double click on a vertex edits its content (more precisely parameters that are most often used). You can also click on the upper left corner. The popup dialog is more (concept) or less (concept type) sophisticated, it depends on the nature of the vertex.This is the easiest way to edit vertices.

edition of a concept type

edition of a relation type

edition of a concept

edition of a relation

Depending on the characters already entered, the fields of concepts and relations provide a list of compatible types and individuals. For conjunctive concept types please enter a new line for each type.

1.3.1.4 Edges
The nature of edges depends on the type of edited graph. However, this time, the nature of vertices is enough to guess the nature of the edges that will connect them, ensuring no ambiguity.
The different types of edges are:
edge between a concept and a relation (numbered)
coreference link between concepts representing the same object
oriented edge to express "kind of" relation between types.
correspondance link between a concept placed in the hypothesis of a rule and a concept placed in the conclusion of this rule.

To create a new edge, just place the mouse pointer on port placed at the center of the source vertex: the shape of the mouse pointer is automatically modified and replaced by a hand . Then press on the left button of the mouse and release it when you have reached the target vertex. Note that the order is only important for the "kind of" link between types, for the other edges, it makes no difference. It is always possible to change the source or target vertex after creation by using one of the two handle of a selected edge.

By default ports placed at the center of each vertex are visible, ports can be hidden and connection mode turned off with the button port off icon on the graph editor toolbar.


1.3.1.5 Lexicographical search on graph
The graph editor has its own lexicographical search tool. Press Ctrl-F to popup a search toolbar at the bottom of the editor.



1.3.1.6 Keyboard shortcuts
Ctrl-C or Ctrl-Ins Copy selected objects
Ctrl-V or Shift-Ins Paste
Ctrl-X Cut
Ctrl-F Popup the search toolbar
Del Delete selected objects (when a vertex is deleted all edges connected to it are also deleted)
F5 Refresh
F8 Control

1.3.2 Module editor


a module editor
The module editor is just a simple sortable list. Drag types from the type trees to the table. Select the item and right click to access menu options in order to delete items or automatically get all the related types (all descendants of a type or the concept types involved in a relation type signature).

2 Ontology Edition

2.1 Overview

CoGui  is able to create multilingual ontologies designed for Conceptual Graphs (CGs).A CG Ontology is composed by exact knowledge and contextual knowledge. The vocabulary is one important part of the exact knowledge and consists of three hierarchies:
1) a hierarchy of concept types (also named concept or class or object type)
2) a hierarchy of relation types (also named relation) with arity greater or equal to 1.
3) a hierarchy if nesting types (to type subgraphs nested in concepts)
The above hierarchies are respectively organized in partially ordered sets (not necessarily a tree or a lattice).
The exact knowledge of the ontology, apart from the vocabulary, consists of:
* a collection of individuals and eventually associated individual graphs
* rules
Contextual knowledge aims at assisting the annotation task. Unlike the exact knowledge, contextual knowledge is not used for doing reasonings, but only used to suggest to the user some usual context of a concept type, a relation type or a nesting type:
* prototypical graphs
* pattern graphs

Editors allow end users to navigate through the ontology and edit graphically its structure and content. The ontology is controlled and, if necessary, tools are provided to correct it.

Graphically, types are displayed as vertices. An arc connecting vertex A to vertex B means that the type A is a kind of type B (or A is a specialization of B or B is a generalization of A):

concept types relation types nesting types

In most cases the ordered set looks like this:

simple ordered set of concept types

In this case, the hierarchical structure is a tree. But the model accepts extra connections. Two examples below illustrate non arborescent hierarchies:

The edit operation is not heavily constrained by the model, in practice, the only critical error occurs when a circuit is detected. More details can be found in following chapters.

2.2 Open, create and save project

CoGui stores data in XML format file named COGXML. COGXML documents can contain a vocabulary definition or a set of conceptual graphs or both sections. The menu file and the main toolbar contain the following commands:

New Creates a new document. The initial vocabulary consists of concept type hierarchy restricted to one concept type (Top), a relation type hierarchy restricted to one relation (Link(Top,Top)), a nesting type hierarchy restricted to one nesting type (Nesting) and a graph set containing one empty fact graph (_g1).
Open... Opens existing COGXML document. If the vocabulary and the graphs are stored in separate files, the command must be used for each files. The vocabulary must be opened before graphs file.
Open recent project Opens an existing project stored in the history of recently opened documents.
Save Saves the current document.
Save As... Saves a new file and saves the vocabulary and the graphs.

2.3 How to browse through type hierarchies

When a document is opened (or created) a vocabulary panel appears on the left part of the main window. Concept types, relation types and nesting types are displayed in three separated tabbed panels. An arborescent representation containing every path between maximal type and others. Types are alphabetically sorted, relation types are also sorted by arity.

concept types
relation types
nesting types

The tree representation is useful to create vertices in conceptual graphs by dragging types into the graph editor (see Graph Edition chapter). Please remember that the type's order is not necessarily a tree. That's why the same type may be retrieved several times in the tree representation. For same reasons an empty panel is displayed if hierarchy contains at least one circuit. Fortunately CoGui provides another graphical representation for each hierarchy.

click right button and choose 'Edit concept types: graph editor option'
directly run command from project view

A double click inside the vocabulary tree has the same effect: open the hierarchy in right panel, select the highlighted type and scroll if necessary to make the vertex visible:

two displaying modes for concept type hierarchy

Another way to retrieve a type inside the graph representation is to use the search tool included in each graph editor. Press Ctrl-F and enter the searched string:

Unless you decide to improve speed with a big vocabulary (see below: How to work with a big vocabulary), trees and graphs are being kept in synchronization and you can navigate between both representations:

* a simple double click on a vertex in left panel select and show the (unique) corresponding vertex in the hierarchy view

* a right click on vertex displays a popup menu: the 'Show type in tree' action selects (and scrolls if necessary) the corresponding node(s) int the left panel.

select 'Show element in tree'
corresponding nodes are selected in tree

Two other options show parents or children inside the graph (the scrolling process is automatically performed).

Shows corresponding vertex in the left panel
Shows parent vertex in the graph representation and select them
Shows children vertex in the graph representation and selected them

Another search tool is provided to retrieve a type by name. 'Search type' action in Edit menu displays a dialog box. Press OK button and the retrieved type is shown in both representations.

a search tool for each type hierarchy
all relation types begining by the letter 'H' are displayed (not case sensitive)

the type is shown on both representations

2.4 Concept type edition

2.4.1 Insertion

A newly created concept type hierarchy contains only one type named 'Top' . A new concept type can be inserted with 'Graph/Insert vertex/Insert concept type' in main menu. The button placed in the local toolbar has the same effect. 'Insert concept type' int the popup menu inserts the desired type at the mouse location. 

A concept type can also be created into the tree representation. 'New concept type' option in the type view popup menu creates a new concept type as a type of selected item:


A concept type can be created directly into the tree


Newly created type is kind of previously selected item

Into the graph editor, the following vertex is displayed: . Click twice on the vertex to edit type name. Concept types can be renamed directly on the concept type tree using the 'Rename' action.

rename on graph
rename on tree

2.4.2 Naming conventions

Homonymous types are not allowed in the same type hierarchy. The case is respected but comparisons are case unsensitive. For instance user can decide to write 'Dog' or 'dog' but cannot define both words in the concept type hierarchy. Blank spaces are allowed.

unique name control

2.4.3 Graph arrangement

A vertex is moved by dragging its box with the mouse. Several vertices can be selected and moved at the same time. Another way to place vertices is to run an automatic arrangement with the Sugiyama layout algorithm. 'View/Arrange horiz.' and'View/Arrange vertic.' in the main menu are also placed in the local toolbar. Please feel free to try automatic arrangements, the undo command can be used to move vertices back to their original positions.

vertical layout
horizontal layout

2.4.4 Concept type hierarchy control

The control command in the toolbar controls in particular the concept types hierarchy. 

Only one critical error can occur with the graph structure: the detection of a circuit. Assume that 2 types A and B on a circuit, i.e. a path exist from A to B and another exist from B to A. It means A is a kind of B and B is a kind of A.

CoGui control detects circuits: all the animals are not dogs

Another model constraint is that the concept types hierarchy must have a maximal concept type. By default CoGui names it 'Top', feel free to change its name or to choose another vertex as the maximal. A warning message occurs if the hierarchy contains more than one maximal element. The tool does not automatically add a maximal abstract type to the hierarchy but it is recommended to respect this constraint.

a single maximal type is required

Another warning can occur when the user draws redundant arcs. If A is a kind of B and B a kind of C, by transitivity CoGui 'knows' that A is a kind of C, hence an arc beetween A and C is correct but redundant. These extra arcs can obstruct the graph view but extra entries on the tree representation could be used as sort of shortcuts for often used types.That is the reason why CoGui accepts and stores redundant arcs. They can be removed one by one with the warning popup menu. Another command named 'Transitive reduction' removes all redundant arcs.

redundant arcs can be removed one by one or together with transitive reduction

 2.4.5 Forbidden types

In a graph, the concept vertices may have a conjunctive type concepts accept conjonctive types, meaning it has several types. As a result, the model provides a mechanism to prohibit some incongruous associations. For instance, suppose you have defined both "animal" and "vegetal" concept types, you might want to prohibit associations between these types as well as between subtypes of them. It is possible to express this restriction in your concept type hierarchy. To this end, you are going to introduce a special vertex  in the graph to express this incompatibility. See below an example of such restriction expressed in the concept type hierarchy triggers and here it triggers an error in a conceptual graph.


2.4.6 Concept type alteration

As for relations, adding concept types does not affect the existing ones. The deletion of a concept type can affect not only the type hierarchies and fact graphs, but also the signatures of relations. All references to this type must first be removed from the base.

Removing a link between two concept types does not create inconsistencies in the knowledge base but can decrease the number of answers to a query, adding a link can increase the number of answers, the banned types may change and some constraints may become unsatisfied.

All consequences of these alterations are detected by the Cogui controler and error messages help the user to correct inconsistencies.

2.5 Relation type edition

2.5.1 Insertion 

Use 'New relation type' in relation type view popup menu.A new relation type can also be inserted with 'Graph/Insert vertex/Insert relation type' in main menu. A button placed in local toolbar has the same effect. You can also use 'Insert relation type' on popup menu insert type at mouse location. The dialog box below appears to define the label and the signature of the new relation type.


insertion of a new relation type

   The following vertex is displayed: . Click twice on the vertex to edit the type name. Relation types can be renamed directly on the vocabulary tree using the 'Rename' action.

rename on graph
rename on tree

2.5.2 Naming conventions

Homonymous types are not allowed in the same type hierarchy. The case is respected but comparisons are case unsensitive. For instance the user can decide to write 'Binary_rel' or 'binary_rel' but cannot define both words in therelation type hierarchy. Blank spaces are allowed.

homonymous relation types are not allowed

 See the previous chapter about vertices arrangement (same features are provided for each hierarchy).

2.5.3 Relation types signature

A signature must be associated with each relation type. A signature is an ordered list of concept types (numbered from 1 to arity) where arity denotes the arity of the relation type, i.e. its number of arguments.

Signature can be edited with the 'Edit signature' command in the popup menu. The signature dialog box allows to change the arity and to specialize involved concept types.

select a relation type and choose 'edit signature' on popup menu
signature dialog box

Press the assistant button and choose arity or directly edit arity number and press the 'Apply' button to confirm. Lines are added or removed from the table. Each concept type can be changed directly or with the assistance button.

choose arity
Apply button adds or removes lines in signature table

A fastest way to obtain a signature is to drag from the left vocabulary panel an existing relation type and to drop it into editor. Copy and paste do the same action. A new relation type is created with the same signature.

2.5.4 Relation type hierarchy control

Similar to concept type hierarchy, circuits are forbidden. The only difference with concept type hierarchy is due to signatures. The constraints are:

1) relation types are grouped by arity. Each 'arity family' must have a maximal element. It means that the relation type hierarchy is decomposed w.r.t. the arity and a unique maximal element is required for each of these sub-hierarchies.

2) Let A and B be two relation types in the same sub-hierarchy (i.e. A and B have the same arity). If A is a kind of B, it means that every concept type in A signature is respectively a kind of concept type in B signature. For example if graze(herbivore,plant) is kind of eat(animal,food) their signatures respect compatibility if herbivore is a kind of animal and if plant is a kind of food.

 

 
CoGui verify signature's compatibility and gives concept type number when error is detected
 

Another way to quickly define or pre-define signatures is to use 'Propose signature...' command on popup menu. Use the command after a link is established between a new relation type and an immediate greater relation type: the parent signature is automatically proposed.

But this command is designed for more a complex purpose.In a complex ontology it becomes difficult to define a new relation type signature. The command 'Propose signature...' can help signature definition in this situation.

The wizard proposes a list of compatible concept types for each element of the signature. This list depends on the direct parents signatures and can be restricted by existing children signatures:

proposition is defined by parent
specialization is limited by children

2.5.5 Relation type alteration
Relation type labels can be changed. With respect to the signature covariance new relations can also be added without consequences for existing knowledge.
For obvious reasons of referential integrity, the removal of a relation assumes that all occurrences have disappeared from all graphs, both in annotations and within ontology.
The consequences of the change of a signature depends on its nature: if the arity of the signature is changed, all occurrences of the relation will require user’s intervention; if only the concept types of the signature are changed, then it will be a different signature.
If a concept type is replaced by a more general type, the content of the knowledge base will not be affected, and no error will occur. However, if a term is specialized, it can have an effect on the content of the knowledge base, and can also trigger errors in the annotations. Removing a link between two relation types does not create inconsistencies in the database but can decrease the number of answers; adding a link can increase the number of answers (new rules may be applicable) and some constraints may become unsatisfied.

2.6 Nesting type edition and modules

2.6.1 Overview

Nesting types and modules are used to facilitate the construction of (well-structured) nested graphs. The set of nesting types is hierarchically structured by "kind of" relation in the same way as the set of concept types. For instance, if metadata is a nesting type it may have indexation and annotation for subtypes, and annotation may have comment and judgment for subtypes. The module notion allows restricting the vocabulary to a subset dedicated to represent a specific kind of annotation. A module is a subset of the global vocabulary associated with a nesting type. To design the modules, the user chooses a selection of concept types, of relation types and of nesting types in the global vocabulary which can be constructed before this selection or at the same time. 

2.6.2 Building nesting type hierarchy

Newly created nesting type hierarchy holds an unique nesting type named 'Nesting'.

Naming conventions and structure restrictions are exactly same as concept types hierarchy, consult 'Concept type edition' paragraph. Of course homonymous types are allowed through different hierarchies but not recommended (suppose future function transforming nested graphs).

2.6.3 Building modules

Modules are created and accessed from the project tree (Vocabulary/Modules item). The module editor is a simple sortable table. Just drag 'n' drop the required types from types tree to the module editor. 

The selection of relation types can create some problems related to the signature constraints. The user has three choices in such a situation:
(1) remove the relation from the module;
(2) add all concept type parameters of the relation signature in the module: an option is provided in contextual menu to do this automatically.
(3) add (in the module and in the general vocabulary) a new relation defined as a specialization of the first and choose, the concept types of the signature being chosen in such a way that they belong to the module.

2.7 Multilingual vocabulary

Cogui can be used to build multiligual ontologies, all types can be translated in several languages. 

A label and a description is attached to each type (concept types, relations types and nesting types). A current language is always selected in the toolbar, so when the user edit the type name (see previous chapter), the update only concerns the label of the type in the current language. 

User can switch the current language, vocabulary and displayed graphs are automatically translated. 

A red bar will appear across the vertices for which there is no translation into the current language.

If the user wants to translate the vocabulary itself, it will select a type and use the menu option "Label & description". A dialog box is opened to edit label and description of the selected type in several languages

The tooltip display the description and all translations of the type name

2.8 How to work with a big vocabulary

Future release of CoGui will provide a reduced mode edition such like conceptual graph editor. At this time whole hierarchy is edited.

If out of memory error occurs, change java command line options. For example -Xmx128m set maximal java heap size to 128 Mo (default is 64).

If edit actions on graph take a long time, speed can be improved by stopping synchronization between the both representation. Hierarchy tree will not be updated until each action. To retrieve some lost browsing facilities, a control will synchronize again on demand. Select Tools/Preferences menu option. In general/voc.editor section uncheck 'update vocabulary during edition'.

synchronization between tree and graph can be stopped

2.9 Individuals
An individual is an identifier which is a surrogate for a precise entity of the discourse universe. For instance, if Town is a concept type then Budapest is an individual of type Town. A concept type may have subtypes, e.g. SmallTown could be a subtype of Town, an individual cannot have ‘subindividuals’. The ontological individuals are the individuals about which all the users agree, i.e. for all users an ontological individual must represent the same entity in the discourse universe. An ontological individual is entered into a COGUI-ontology with a primitive concept type called its privileged type. For instance, if the COGUI-ontology concerns  Modern Art, and if Picasso is an ontological individual of privileged type Artist representing the famous artist Pablo Picasso, then it is impossible to use the identifier Picasso for representing a Citroën car (unless the conjunctive type Car, Painter is not banned). COGUI checks that an ontological individual appearing in an annotation has a type which is compatible (i.e. not banned) with the privileged type of the individual. The ontological individuals can be usedl to define banned types.
All individuals appearing in a COGUI-ontology (e.g. in rules, constraints or prototypical knowledge) must be ontological individuals.  Thus, the set of ontological individuals can be completed only whenever all knowledge representing in a COGUI-ontology have been considered.

The individual view list all individuals in a sortable table. Needless to complete the list of individuals, it automatically updates when the user reference individuals in different graphs. Select individuals in the list to drop them to the graphs and right click to popup the contextual menu to rename, change the privileged type or edit the associated individual graph (see chapter below).

2.10 Individual graphs
An individual graph is a simple conceptual graph (SG) having a special concept node called its head. This special node is an individual node, and the individual graph represents exact knowledge about this individual. For instance, one could build an individual graph having [Painter : Picasso] for head and gathering exact information about Picasso (relatives, selected works, museums having some of his work). As soon as an annotation contains the individual Picasso then the information gathered into the individual graph associated with Picasso are considered by the system.Giving many rules and individual graphs will give to the system an “intelligent” behavior because these knowledge are used in the answering algorithm.

2.11 Contextual knowledge


2.11.1 Prototypical graphs
A prototypical graph is a Simple Concept graph (SG) which can be associated with a concept type or with a relation type. A prototypical graph defines usual contexts of a type.
A prototypical graph owns a special node, called the head of the prototypical graph, with the same type as the type from which it is the prototype. A node x of an annotation graph having a type with an associated prototypical graph allows an extension of the annotation by merging the node x with the head of the prototypical graph. A concept type or relation type can have several prototypes which represents different ways for describing an entity or a relation. The annotator has only access to prototypes whose all vertices are in the vocabulary of the current module during the annotation process.


creation of a prototypic

selection of the head

completion of the prototypic graph

use the prototypic in a fact graph


the result


This animation shows how to create and use a prototypic graph

2.11.2 Pattern graphs
A pattern graph is a Simple Conceptual Graph (SG) associated with a nesting type. In an annotation context a nesting type is an annotation type. Thus a pattern graph is a template for a kind of annotation. Several pattern graphs can be associated with the same nesting type. A pattern graph represents a starting point when describing a document with respect to the chosen annotation type, i.e. a nesting type n. It gathers general and frequent notions appearing when describing a document with respect to n. A pattern graph has to respect the vocabulary of the module associated with the nesting type. This constraint ensures that the use of a pattern does not break the consistency of the annotation.

This animation shows how to nest a graph and use a pattern

3 Rule Edition

3.1 Overview

Rules are used to represent implicit (common sense) knowledge. For instance, let us assume that the fact that Eve is the mother of Abel is represented in a fact graph. If the ontology contains a rule saying that if x is the mother of y then y is a child of x then the system can automatically add the information that Abel is a child of Eve. Such a rule is represented by two simple graphs. One represents the hypothesis (e.g. [woman]-1-(mother of)-2-[human]) the other represents the conclusion ([human]-1-(child of)-2-[woman]). Furthermore, there is a link between the first person in the hypothesis and the second person in the conclusion, and a link between the second person in the hypothesis and the first person in the conclusion. A rule “if A then B” is used as follows: if an annotation contains A then B can be added to the graph. See below the graphical representation of this rule:


a rule example

A bi-colored representation of this rule could be simplest with just a conclusion relation "child of" added to the hypothesis. The advantage of this representation is that it allow specialization of a concept type in the conclusion. For instance, from the hypothesis [human]-1-(mother of)-2-[human] it can be deduce that the first person is a woman. Thus, rule represented below is more powerful than previous example.


this rule could generate some specializations

But it is better to express each deduction in a separate rule and add a new rule to the first one:


a simple rule for each deduction

Do not worry about rule applying order, even if the first rule is not applied in a first step, it can be appliable after applying another one. All rules are tried until saturation (when no rule is appliable).
Due to saturation, rules must be builded carefully when at least one rule can create concept: The rules may loop and cause an infinite production of concepts. Example below is trivial but combinations of rules can generate loops very difficult to detect.


this rule will cause a loop

Fortunately it is possible to interrupt the running task if it did not end after a "reasonable" time.

Message below does appear when clicking on stop button. Note that there may be a delay before the message popup.


3.2 Editing rules
To create a new rule or edit an existing rule go on the tree project in the "Rules" item and use the popup menu. As other graphs, rules are organized in folders. It is particularly interesting to classify the rules on families, especially for testing purposes. Editing rules is very similar to editing simple fact graphs (see chapter below). But the editor is splitted in two parts: hypothesis and conclusion. By default hypothesis is placed on the left part and conclusions on right part of the editor.
3.3 Applying rules
Actual version of CoGui apply rules just before queryng. Please consult corresponding chapter

4 Fact graph edition


4.1 Simple graphs (SGs)
4.1.1 Overview

A SG is labeled bipartite graph. One class of nodes (the concept nodes) is used to represent entities of the discourse universe. A concept node is labeled by a concept type (e.g. Painter, or a conjunctive type such as Painter,Catalan) and, possibly, by an individual (e.g. Picasso). A concept node which is labeled by a concept type without an individual is called a generic concept node. Such a node represents an unidentified element of the type. For instance, contrarily to a node labeled [Painter : Picasso] representing the painter Picasso, a concept node labeled [Painter] represents “a” painter.The second class of nodes represents the relationships between the entities (represented by the concept nodes). For instance, if Guernica is an individual representing the well-known painting realized by Picasso then a relation node labeled (hasPainted) could relate the concept node [Painter : Picasso] to the concept node [Painting : Guernica]. The edge between (hasPainted) and [Painter : Picasso] is labeled by 1, and the edge between (hasPainted) and [Painting : Guernica] is labeled by 2. This edge labeling is used to represent different roles (e.g. to distinguish the subject from the complement). It is also possible to say that two different concept nodes represent the same entity by linking them by a coreference link.

Picture below is described by a simple graph:


conceptual graph description of the picture

4.1.2 Create and edit facts
New facts and sets of facts can be created by the popup menus of "Facts" item and sub-items from project tree. After creating and naming a new graph, edit by selecting "Edit" menu, or by clicking twice on tree item. An empty graph editor is opened. Use same "Edit option" to re-open existing facts.

When the fact graph contains too many vertices, it couldn't be possible to display the entire graph. In this case the "Edit" menu item open the fact graph "partially" (See 4.1.6 about partial edition). Choose "Edit whole graph" to force the edition of all graph.


4.1.3 Concept insertion
New concepts are inserted by using "Graph/insert vertex/Insert concept" from the main menu or the contextual popup menu or the local toolbar option . Concept types dragged from the concept types tree cause the creation of a  new generic concept of these type. Concepts associated with individuals can be dragged from individual view. The newly created concepts have the privileged type of the individual.


Double left click triggers a popup dialog to define type and individual associated with selected concept. when user begin to enter text, a list of compatible terms are listed for both concept types and individuals..

Examples:
produce ->

produce -> 
produce ->

When an individual is not already defined, it is automatically created in knowledge base. For type definition, two modes are available: strict mode doesn't accept undefined concept type, free mode accept references to type which is not already defined in vocabulary. Check "free edition mode" in preferences/General if needed. Modes also acts on relation types.

Free edition can be useful during the building of the ontology, it avoid to go back to vocabulary editor. But, of course, it must be done, error message can help:

4.1.4 Relation insertion
New relations are inserted by using "Graph/insert vertex/Insert relation" from main menu or contextual popup menu or local toolbar option . Relation types dragged from the relation types tree causes the creation of a  new relation.
Double left click triggers a popup dialog to define type  associated with selected relation. when user begin to enter text, a list of relation types is listed.


 The insertion of the relationship is not sufficient, we must also link the relation to adjacent concepts. Chapter 1.3.1.4 explain how to create an edge between two vertices.

Because the relation signature is ordered, edges between concepts and relation are associated with a number from 1 to relation arity. Edge order can be defined with popup menu on the selected edge.


You can also use double-click on selected edge, edge label successively take all compatible values  between the relation signature and the type of concept.
Of course, copy/paste mechanism can also be used to duplicate pieces of graphs inside the graph or from one to another. Pending edges cannot be copied. Otherwise this error message appears when you try to copy:


See chapter 1.3.1.2 about objects selection

4.1.5 Coreference
It is also possible to say that two different concept nodes represent the same entity by linking them by a coreference link.
 

coref links means that painter and inventor are the same person

resulting normalized graph in knowledge base


Painter and Inventor are implicitly coreferent

resulting normalized graph

Current version of COGXML don't store coref links explicitly but it stores the coreferent sets of concepts. A closure of all possible coreferent links is builded when reading a COGXML representation of the graph. Example below shows a new coreference link has been added after restoring operation.

restored graph

4.1.6 Use prototypical graphs

When prototypical graphs are associated to the selected concept (or relation) , the vertex can automatically be completed according to the content of the prototypical graph (see chapter 2.10.1) .

4.1.7 Partial edition
 If a graph is too big it could be very tedious (or impossible) to edit it entirely. In this case, CoGui provide a partial edition mode. Just a part of the graph is displayed. Visible relations are always completed, but displayed concept can have hidden neighbors. Example below shows concepts with hidden neighbors, the number of hidden neighbors is displayed on the upper right corner of the concept.


how to show the neighbors of [Winery:Marietta]

In the fact graph paragraph of general section of preferences, the user can defined limits to choose partial edition rather than whole graph edition:

limits for partial edition in preferences dialog

If a big graph is directly edited from the project tree, some vertices are chosen by default. The user generally prefers to display and update a precise piece of graph. To correct errors inside the graph, choose the edit option on the message in the error view and the graph will be automatically opened with the vertices that generated the error. When another error is selected, the previous edition is replaced by the edition of the new concerned vertices.
To edit parts of the graph without any error, we must query the graph (See chapter 5) and browse through projections in the result view.

4.2 Graphs with nestings

4.2.1 Overview
Nested graphs can be inserted inside a concept, these subgraphs are typed (see chap.2.6 about nested types).

Why use nested graphs rather than a "flat" graph to represent informations ?
Consider, for instance, a cottage. It is possible to distinguish internal from external pieces of information about that cottage. The owner's name can be considered as an external piece of information concerning the cottage, whereas the number of rooms is internal information.
In information retrieval the ISBN number of a book can be considered as an external piece of information about that book, whereas the subject of the book is an internal piece of information. In these examples, the internal information can be also called (partial) description of the cottage or of the book).
Zooming is a related notion. Let us consider again the cottage example. Having the land registry position of the cottage, one may want to zoom into the cottage, e.g. one may want  to have the cottage blue print, which can be considered as an internal information about the cottage.  Or, at a deeper level, having the cottage blue print, one may want to know the furniture distribution in a specific room. In the book example, zooming can consist of obtaining the content of a chapter from a reference to this chapter (e.g. the number of this chapter).
Nested graphs can also be related to the notion of context. For instance, in the previous cottage example, the context of the furniture distribution (in a room) is precisely the room having this furniture distribution; the context of the content of a book chapter is precisely this chapter, and so on. The notion of context is close to the two previous notions of external versus internal piece of information, and to zooming. Indeed, zooming takes its full meaning when one knows from where the zooming is done, and an internal piece of information takes its full meaning when the piece of information whose it is an internal piece of information is known. In the forthcoming model only very simple contexts can be represented. Indeed, a context will be represented by a path of nested concept nodes. Thus, having in mind partial description as an intuitive meaning of what we aim to represent is more convenient than context. A partial description can be included into another partial description, thus a recursive model is proposed, and the entities are represented by a hierarchical structure. Similarly to the classical notion of ``boxes within boxes'' used in document processing, a nested graph consists of ``graphs within graphs''.

Example below say at first level that "Miss Michel has lost her cat, she shows a painting".
second level include a nested graph of the type "description" to describe the painting and finally, the coref link expresses the fact that the cat appearing on the painting is, indeed, the lost cat.

4.2.2 Nesting a graph

To insert a new nested graph inside a concept, select the concept and right click to obtain to contextual menu:


nested graph is added to the concept with default nesting type "nesting"

click on the left upper corner of the nested box to change the type directly

or use contextual menu to change type

4.2.3 Nested graph edition
Nested graphs can be edited directly at the level of graph containing the parent concept (called the root graph), or edited alone as a classical graph.
Use contextual menu to edit the nested graph alone in the editor and return to the root graph:

Choose "Edit nested graph" option to edit the nested graph alone.
After editing the nested graph, choose this menu option to retreive to root graph edition

Sometimes it may be useful to view the graph root and the nested graphs at the same level. The + sign on the left of the nested graph expands the box to make the nested graph visible. It is useful to see the graphs but it becomes more complex to edit the content of the nested graph. However, it is very convenient to insert a pattern graph or drag selected objects to the nested graph (see animation below).

4.2.4 Use pattern graphs
See chapter 2.10.2 about pattern graphs.
Depending on the type of the nested graph, some pattern graphs can be proposed in the contextual menu. This action automatically insert the pattern graph into the nested graph.

This animation shows how to nest a graph and use a pattern


5 Querying

The approach of the querying mechanism is to search homomorphisms between the query graph and the "knowledge base". The founded pieces of graphs (called projections) are specialization of the query graph. Above all, it is worth clarifying the concept of "knowledge base".  Fact graphs can be considered separately or grouped in a unique graph crossing all informations (via the operation of normalization). Then rules can be applied (or not) to the fact graphs (or to the unique graph). The query wizard helps you to build a "knowledge set" and call Cogitant to apply rules and query the facts. Cogitant is C++ API  that execute these operations, it is an open source project available here: http://cogitant.sourceforge.net
The wizard is very easy to use, just:
1) Select the query wizard in the task view
2) Write a query graph
3) Select Facts and appliable rules
4) Click on "Search" button

the query wizard


the query graph


select facts and choose to apply rules and sum facts (or not)


you can now browse through founded projections with the result view.

The current distribution (with java web start) is deployed only with Cogitant API compiled for Windows. That is the reason why, for now, querying and applying rules is only possible under Windows.

6 Tools
6.1 Image exportation

Graphs can be exported from CoGui viewers to different graphical format files.

'Tools/Export image' menu action exports currently displayed graphs (hierarchies, fact graphs or rules) and shows a file selector dialog:

choose a file type

JPEG and PNG are well-known image formats.

FIG (Facility for Interactive Generation of figures) graphics format is a vector drawing format. This format preserves initial attributes and produces very small files. It gives access to a lot of other formats with associated softwares. Software description can be found here for version 3.2: http://www.xfig.org/userman/fig-format.html. Information about associated software can be found at this site: http://homepage.usask.ca/~ijm451/fig/

DOT is a specialized format for graph visualization. GraphViz layout tools [...make diagrams in several useful formats such as images and SVG for web pages, Postscript for inclusion in PDF or other documents...]. As in FIG format, CoGui preserves initial attibutes such like colors and shapes. But with DOT format it is no use to give vertices coordinates, layouters will simply calculate new positions. Software is available: http://www.graphviz.org .

About Graphviz layouters: DOT draws directed graphs as hierarchies, it is the best choice to represent CG types hierarchies. NEATO draws undirected graphs, is a better choice for conceptual graphs. But tested version of NEATO seems to ignore DOT language clustering features. Choose DOT layouter (it works with undirected graphs too) if conceptual graph contains nested graphs.

6.1.1 Exporting hierarchies

direct JPEG output from CoGui
direct PNG output from CoGui
FIG output displayed in JFig
JPEG obtained with DOT layouter from CoGui DOT file
PNG obtained with DOT layouter from CoGui DOT file
SVG output displayed in Internet Explorer

 

6.1.2 Exporting Conceptual Graphs

JPEG output from CoGui
FIG output inside JFig
JPEG obtained with NEATO from CoGui DOT file

 

 

PNG obtained from CoGui

 

 

with FIG output inside JFig editor
JPEG obtained with DOT(rather than NEATO) layouter from CoGui DOT file

 

Appendix

COGXML DTD

Ontology part of DTD is reproduced below. Retrieves entire document for COGXML 1.0 format here: http://cogitant.sourceforge.net/cogxml.dtd

<!ENTITY % cogxmlExtensions "">

<!ENTITY % supportExtensions "">
<!ENTITY % conceptTypesExtensions "">
<!ENTITY % relationTypesExtensions "">
<!ENTITY % nestingTypesExtensions "">
<!ENTITY % conformityExtensions "">
<!ENTITY % supportObjectExtensions "">
<!ENTITY % ctypeExtensions "">
<!ENTITY % rtypeExtensions "">
<!ENTITY % ntypeExtensions "">
<!ENTITY % markerExtensions "">
<!ENTITY % orderExtensions "">

<!-- Document. -->

<!ELEMENT cogxml (support?, (graph | rule)*)>
<!ATTLIST cogxml
app CDATA #IMPLIED
%cogxmlExtensions;
>


<!-- Propriétés supplémentaires des chaque objet du modèle. -->

<!ELEMENT subprop EMPTY>
<!ATTLIST subprop
subid CDATA #REQUIRED
%subPropExtensions;
>


<!-- Support. -->

<!ELEMENT support (conceptTypes, relationTypes?, nestingTypes?, conformity?, subprop*)>
<!ATTLIST support
name CDATA #IMPLIED
%supportExtensions;
>

<!ELEMENT conceptTypes (ctype*, order*)>
<!ATTLIST conceptTypes
%conceptTypesExtensions;
>

<!ELEMENT ctype (subprop*)>
<!ATTLIST ctype
id ID #IMPLIED
label CDATA #REQUIRED
%supportObjectExtensions;
%ctypeExtensions;
>

<!ELEMENT order EMPTY>
<!ATTLIST order
id1 IDREF #IMPLIED
id2 IDREF #IMPLIED
label1 CDATA #IMPLIED
label2 CDATA #IMPLIED
>

<!ELEMENT relationTypes (rtype*, order*)>
<!ATTLIST relationTypes
%relationTypesExtensions;
>

<!ELEMENT rtype (subprop*)>
<!ATTLIST rtype
id ID #IMPLIED
label CDATA #REQUIRED
idSignature CDATA #IMPLIED
labelSignature CDATA #IMPLIED
%supportObjectExtensions;
%rtypeExtensions;
>

<!ELEMENT nestingTypes (ntype*, order*)>
<!ATTLIST nestingTypes
%nestingTypesExtensions;
>

<!ELEMENT ntype (subprop*)>
<!ATTLIST ntype
id ID #IMPLIED
label CDATA #REQUIRED
%supportObjectExtensions;
%ntypeExtensions;
>

<!ELEMENT conformity (marker*)>
<!ATTLIST conformity
%conformityExtensions;
>

<!ELEMENT marker (subprop*)>
<!ATTLIST marker
id ID #IMPLIED
label CDATA #REQUIRED
idType IDREF #IMPLIED
labelType CDATA #IMPLIED
%supportObjectExtensions;
%markerExtensions;
>