Schema

User creates configuration by creating an XML configuration file, an instance of LexWiki Publisher schema (discussed later in this document), for Publisher to work correctly and transform content in a desired way. The schema is defined at:
*http://informatics.mayo.edu/lexwikipublisher/LexWikiPublisher_2_0.xsd*

Components

The schema (as of March 2011) defines following tags to make Publisher flexible and easily configurable for desired results:

Configuration Sets

The user can have multiple publishing scenarios called publishing "UserConfiguration", arranged under top element "ConfigurationSets":
diagram of configuration sets

Configuration

Each "UserConfiguration" can optionally have a name for example "publishingForNewTerms" and you can turn publishing defined by this configuration "on" and "off" by setting the "selected" attribute.

diagram of user configuration

Each configuration will have details about "LexEVS" location (by URI), and define which vocabulary this configuration is going to work with and the publishing targets (right now only text file generation is supported). Optionally users can create their own publishing plug-in methods for Publisher defined as "Steps". In this release we are providing a default "publishSteps" to generate LexWiki compliant Template text generation for each LexEVS entitiy in text files.

The "Vocabulary" tag describes information about coding scheme in LexEVS repository. (it is assumed that the described coding scheme has been loaded in LexEVS instance which has install location specified by the "LexEVSURI" tag).

Vocabulary

diagram of vocabulary

A Selected vocabulary will have set of entities - "entitySet", we want to get published. In absence of an entitySet, Publisher is designed to publish all the entities of a coding scheme or vocabulary. A Vocabulary is identified by its URI and version number (optional). You can define set of "filters" and "mappings" (explained ahead). You can set the flag to republish your selection even if it is already published by previous run (flag "republishIfExisits").

Exclusions

A Vocabulary filter is a set of vocabulary exclusions that is defined as set of flags and list of items to exclude depending on
different criteria.

diagram of exclusions

"skipInactive" will skip LexEVS entities which have entity status NOT set to "active".
"skipAnonymous" will skip LexEVS entities which have anonymous flag set to true.
"namespaceExclusion" is a list of namespaces which you want to skip while processing LexEVS entities.

Similarly "propertyExclusion" and "AssociationExclusion" will skip property or associations from their respective lists. All the exclusions are optional.

Mappings

diagram of mappings

Vocabulary mappings are set of mappings which are utilized when mapping various attributes of entities. At this time you can only define namespace mappings using "namespaceMap" which defines what target namespace to use when you encounter a source namespace during publishing process.

Once the transformation completes, you can define what you want to do with it by defining "publishing targets."

Publishing Targets

diagram of publishing targets

Right now you can define two types of publishing target - either a text file generation or directly publishing to a wiki (enabled with LexWiki 2.0 extension). In this release direct publishing to wiki is not yet implemented. You can only generate a set of text files which can later be manually loaded in batch by "publish.php" (a PHP script that comes with LexWiki 2.0 installer).

In the case of a text file you can define the directory where all text files will be generated and any optional prefix or suffix string you want to be attached while forming file names. A prefix and suffix will make it easier to organize files for multiple Publisher runs.

In the case of target wiki (not yet implemented in LexWiki Publisher 2.0) details - you have to define things like "host name", "port number", "wiki name",
"user name" and "password" and a batch size (how many pages should be posted to wiki in one direct publishing request).

Sample Configuration

A Sample configuration looks like the following (couple of samples files are provided with the download):

<nowiki>
<configuration name = "BGTFromLargeStorage" selected="true">
<lexEVSURI installDir="L:/services/lexbig/LexEVS6ForMe"/>
        <vocabulary uri="http://ncicb.nci.nih.gov/xml/owl/EVS/BiomedGT.owl"  version="09.06a" 
                    republishIfExists="true">
            <entitySet publishItself="true" 
     	               publishConnectedEntities="false" 
     	               republishIfExists="true" 
                       excluded="false">
                <entityIds>
                        <id>B3164</id>
                        <id>B7230</id>
                </entityIds>
                <selectedAssociationToNavigate id="subClassOf" />
            </entitySet>
            <entitySet publishItself="true" 
                       publishConnectedEntities="true" 
                       republishIfExists="true" 
                       excluded="false">
                <entityIds>
                    <id>B4973</id>
                </entityIds>
                <selectedAssociationToNavigate id="subClassOf" />
            </entitySet>
            <filters>
                <skipAnonymous>true</skipAnonymous>
                <namespaceExclusion >
                    <skip id="protege"/>
                    <skip  id="owl" />
                    <skip  id="rdf" />
                    <skip  id="rdfs" />
                    <skip  id="swrlb" />
                </namespaceExclusion>
                <propertyExclusion>
                    <skip id="PAL-DESCRIPTION"/>
                    <skip id="PAL-RANGE"/>
                    <skip id="PAL-STATEMENT"/>
                </propertyExclusion>
                <associationExclusion>
                    <skip id="PAL-STATEMENT"/>
                    <skip id="PAL-RANGE"/>
                    <skip id="PAL-DESCRIPTION"/>
                    <skip id="domain"/>
                    <skip id="range"/>
                    <skip id="disjointWith"/>
                    <skip id="equivalentClass"/>
                </associationExclusion>
            </filters>
            <mappings>
                <namespaceMap sourceNamespace="BiomedGT.owl" targetNamespace="BGTDEEP" />
            </mappings>
        </vocabulary>
        <targets>
            <TextFile directory="c:/Temp/myTest4" fileNamePrefix="BGT_" fileNameSuffix="_WC4" />
        </targets>
    </configuration>
</nowiki>