wsmo
logo

D3.2 WSMO Use Case "Virtual Travel Agency" v0.1

WSMO Working Draft 04 October 2004

This version:
http://www.wsmo.org/2004/d3/d3.2/b2c/20041004/
Latest version:
http://www.wsmo.org/2004/d3/d3.2/b2c/
Previous version:
http://www.wsmo.org/2004/d3/d3.2/v0.1/20040719/
 
Editors:
Michael Stollberg
Holger Lausen
Axel Polleres
Rubén Lara
 
Authors:
Michael Stollberg
Holger Lausen
Axel Polleres
Rubén Lara
Uwe Keller
Michal Zaremba
Armin Haller
Dieter Fensel
Michael Kifer
 
Reviewer:
Christoph Bussler

This document is also available in non-normative PDF version.
Copyright © 2004 DERI®, All Rights Reserved. DERI liability, trademark, document use, and software licensing rules apply.


Abstract

This document specifies a concrete Use Case for modeling Semantic Web Services with the Web Service Modeling Ontology WSMO. In accordance to the B2C application scenario described in the WSMO Use Case Overview document, section 2.1, this use case is defined in the domain of e-tourism: a Virtual Travel Agency sells tickets for international train tickets, and a customer defines a Goal for puchasing such a ticket. This use case has been the initial WSMO Use Case defined in previous versions of the WSMO D3.2 Deliverable - WSMO Use Case and Testing; the main focus in this use case is the concrete modeling of the top WSMO components, resulting in the specification of WSML, and to test and elaborate the approach and technologies for Web Service Discovery in WSMO.

For use case modeling, we stick to the final working draft of Web Service Modeling Ontology WSMO, Version 1.0, 20 September 2004 [Roman et al., 2004].

Related Documents

WSMO Standard: D2 v1.0 Web Service Modeling Ontology (WSMO), last version at: http://www.wsmo.org/2004/d2/

WSMO Primer: D3.1 v0.1 WSMO Primer

Web Service Modeling Language WSML: D16.0 v0.2 WSMO The WSML Family of Representation Languages

WSMO Discovery: D5.1 v0.1 WSMO Discovery


Table of Contents

1. Introduction
2. Use Case Overview
3. WSMO Use Case Modeling
3.1 Ontologies
3.2 Goals
3.3 Web Services
3.4 Mediators
   3.4.1 OO Mediators
    3.4.2 WG Mediators
    3.4.3 GG Mediators
    3.4.4 WW Mediators
4. Web Service Discovery within WSMO
5. Conclusions and Future Work
References
Acknowledgements
 
Appendix: Change Tracking
 
 

1. Introduction

In accordance to the B2C application scenario described in the WSMO Use Case Overview document, section 2.1, this use case is defined in the domain of e-tourism: a Virtual Travel Agency sells tickets for international train tickets, and a customer defines a Goal for puchasing such a ticket. We specify the WSMO top-level notions of Ontologies, Goals, Web Services and Mediators for this use case.

A Web Service of a Virtual Travel Agency, short: VTA, offers end-user services for searching and buying train tickets for itineraries in Austria and in Germany. This Web Service is composed out of other Web Services, namely one for searching existing train connections, and one for purchasing train tickets online. As a user request we assume that the user wants to purchase an international train ticket. The course of the use case shall be the following:
- the customer creates a goal for an international train connection from Innsbruck to Frankfurt on 17th May 2004, at 16.00 local time
- the VTA returns a set of possible connections
- the user selects one of these connections and poses a request for booking the ticket online
- the VTA combines the online train ticket booking services from ÖBB and DB, executes the booking and payment process, and sends an online ticket per email to the Customer.

This use case is the first, initial use case specified of testing, elaborating, and recursively specific WSMO components. The rationale for choosing this first use case is that it allows to showcase and test describing all WSMO components identified in WSMO Standard. The setting is kept simple on purpose; more complex cases to be added at a later stage of this deliverable can build upon this, providing models of more involved scenarios. The main focus of this use case is the test and recursive specfication of the WSMO components specifiaction in [Roman et al., 2004], elaboration of the Web Service Modeling Language WSML [de Bruijn, 2004]], and development and testing of WSMO Web Service Discovery [Keller et. al., 2004].

This document is structured as follows: Section 2 gives and overview of the use case, identifying the needed WSMO components; Section 3 provides the WSML models for the distinct WSMO components of the use case along with explanations of the design and modeling decissions; Section 4 explains the WSMO Discovery within this use case; finally, Section 5 concludes the use case. The Appendix provides a change tracking to previous version of the document.

 

2. Use Case Overview

The following properties have to be covered in our use case modeling. For each of the WSMO top-level components, a separate table describes informally which parts of the use case are concerned.

 

Table 1. Properties Domain Ontologies
O1

Ontological information are needed on international train itineraries, on notions of date and time, on the purchasing process, as well as on persons, locations, and addresses. This information should be kept in separate re-usable ontologies, following the modularity principle of ontology design.

O2 An itinerary is described by its start and end locations, date and time of departure and arrival, stations which the train passes (particularly, the station where the border is crossed) and is done by some passenger.
O3 An itinerary describes a valid international train connection.
O4 There has to be traveller / customer that does the itinerar/buys a train ticket
O5 There exists a concept that defines whether a location is located at the border between 2 countries
O6 A ticket is valid for exactly 1 itinerary and has a price
O7 A ticket is valid for exactly 1 customer
O9 The purchase ontology has to identify the buyer and seller roles, a product with a price, and valid payment methods
O10 We need to be able to express valid payment methods. The only valid payment method for online tickets is credit card payment
O11 Information on Date and Time should allow axiomatic expressions on dependencies of specific dates and times , i.e. expression that define relationships like 'after' or 'before '

 

Table 2. Properties Goals
G1 Booking an Online Train Ticket
G1.1 From Innsbruck to Frankfurt
G1.2 Start time: 17th July 2004, at 18.00 local time.

 

Table 3. Properties Web Services
W1 A National Train Operator, here the Austrian ÖBB, provides an end-user Web Service that offers a search facility for international train connections and a facility for buying international train tickets online.
W2 The search facility takes a start location, an end location, and a departure date as input and returns a set of itineraries.
W3 The facility for buying train tickets online takes a specfic itinerary with start location and end location in countries of its coverage, the information of the customer and the number of his (not expired) credit card number as input, and it returns a ticket for this itinerary as the result.
W4 The user interacts with the end-user Web Service which aggregates the search and purchasing Web Services from possibly different providers like ÖBB, DB, etc.

 

Table 4. Properties Mediators
M1 There need to be OO Mediators that integrate the distinct ontologies used as terminology definitions.
M2 If there are terminological mismatches between the ontologies used in the Goal or the Web Service description, OO Mediators have to be defined to resolve these.
M3 If there are differences between the Goal and the ÖBB-Web Service, a WG Mediator is needed to resolve these.
M4 if there are mismatches between the search facility Web Service and purchase Web Service (which are composed into the end-user Web Service), then a WW Mediator has to be defined which resolves the mismatches.

 

3. WSMO Use Case Modeling

The following exemplifies the specification of this use case within the Web Service Modeling Ontology WSMO. The provided listings use the conceptual model presented in WSMO, final version 1.0 [Roman et al., 2004]. In the listings. we provide the models of each WSMO component according to the syntax of WSML [de Bruijn, 2004], validated by the WSML Validator, version 1.29 dated from 21 September 2004.

3.1 Ontologies

With regard to modularized ontologies as a basic design principle of WSMO, we define four separate domain ontologies as the the terminology definitions for the use case:

  1. "International Train Ticket" describes the domain of train tickets
  2. "Date and Time" defines a general model for specifying time and dates and relationships of them
  3. "Purchase" describes generic elements of purchasing a product between a buyer and a seller.
  4. "Locations" describes locations (such as continents, countries and cities and their interrelation).

The ontologies specified in the following are intended to be "real ontologies" in the sense that they describe the specific domain as a shared conceptualization in a sufficient manner. This allows to reuse this ontologies in different settings and use cases - for example, notions or date and time or a general purchase ontology are needed in a lot of other possible scenarios. However, we do not claim the defined below to be such generic ontologies, but they will be enhanced and completed within cooperations with other use cases, projects, and initiatives.

The "International Train Ticket" Ontology defines a train trip and the surrounding concepts as defined the WSML definition of the ontology shown in Listing 1.

The definition of the ontology is based on the travel itinerary ontology from the DAML ontology library, which defines travel itineraries for trips by plane. Our ontology reuses the itinerary and flight concepts and adapt them to define train trips, also introducing new concepts such as train station. The international train ticket ontology also makes use of the person ontology defined at http://daml.umbc.edu/ontologies/ittalks/person, which defines a subset of vCard. The person concept is used to define the passenger information for an itinerary. We did not find any other available ontologies that model the domain of train tickets or itineraries. The first version of the harmonize ontology for the tourism domain focuses on the events and accomodations subdomains. We will take into account future versions of the harmonise ontology, as they are likely to include the travelling subdomain.

Listing 1. Domain Ontology “International Train Ticket”
namespace <<http://www.wsmo.org/ontologies/trainConnection#>>
      dc:<<http://purl.org/dc/elements/1.1#>>
      dt:<<http://www.wsmo.org/ontologies/dateTime#>>
      prs:<<http://www.wsmo.org/2004/d3/d3.2/v0.1/20041004/resources/owlPersonMediator.wsml>>
      loc:<<http://www.wsmo.org/ontologies/location#>>
      geo:<<http://www.wsmo.org/2004/d3/d3.2/v0.1/20041004/resources/owlGeoMediator.wsml#>>
      xsd:<<http://www.w3.org/2001/XMLSchema#>>

ontology <<http://www.wsmo.org/ontologies/trainConnection>>

      nonFunctionalProperties
            dc:title hasValue "International Train Connections Ontology"
            dc:creator hasValue <<http://www.deri.org/foaf#deri>>
            dc:subject hasValues {"Train", "Itinerary", "Train Connection", "Ticket"}
            dc:description hasValue "International Train Connections"
            dc:publisher hasValue <<http://www.deri.org/foaf#deri>>
            dc:contributor hasValues {<<http://www.deri.org/foaf#stollberg>>,
                  <<http://homepage.uibk.ac.at/~C703225/foaf.rdf>>,
                  <<http://homepage.uibk.ac.at/~c703240/foaf.rdf>>,
                  <<http://www.deri.org/foaf#polleres>>}
            dc:date hasValue "2004-10-04"
            dc:type hasValue <<http://www.wsmo.org/2004/d2#ontologies>>
            dc:format hasValue "text/html"
            dc:identifier hasValue <<http://www.wsmo.org/ontologies/trainConnection>>
            dc:source hasValue <<http://www.daml.org/2001/06/itinerary/itinerary-ont>>
            dc:language hasValue "en-US"
            dc:relation hasValues {<<http://www.daml.org/2001/06/itinerary/itinerary-ont>>,
                  <<http://daml.umbc.edu/ontologies/ittalks/person>>,
                  <<http:://www.wsmo.org/ontologies/dateTime>>,
                  <<http:://www.wsmo.org/ontologies/location>>,
                  <<http://www.daml.org/2001/02/geofile/geofile-ont>>,
                  <<http://www.daml.org/2001/02/geofile/geofile-ont>>}
            dc:coverage hasValue "ID:7029392 Name:World"
            dc:rights hasValue <<http://www.deri.org/privacy.html>>
            version hasValue "$Revision: 1.10 $"
      endNonFunctionalProperties

      importedOntologies {<<http://www.wsmo.org/ontologies/dateTime>>,
            <<http://www.wsmo.org/ontologies/location>>}

      usedMediators {<<http://www.wsmo.org/2004/d3/d3.2/v0.1/20041004/resources/owlPersonMediator.wsml>>,
            <<http://www.wsmo.org/2004/d3/d3.2/v0.1/20041004/resources/owlFactBookMediator.wsml>>}
            
 
      concept station subConceptOf geo:geographicLocation
            nonFunctionalProperties
                  dc:description hasValue "Train station"
            endNonFunctionalProperties
            code ofType xsd:string
                  nonFunctionalProperties
                        dc:description hasValue "Code of the station"
                  endNonFunctionalProperties
            borderToCountry ofType loc:border
                  nonFunctionalProperties
                        dc:description hasValue "For stations located at the border"
                  endNonFunctionalProperties
      
      concept itinerary
            nonFunctionalProperties
                  dc:description hasValue "An itinerary between two locations"
            endNonFunctionalProperties
            passenger ofType prs:person
                  nonFunctionalProperties
                        dc:description hasValue "prs:person is a subset of vCard (http://www.ietf.org/rfc/rfc2425.txt)"
                  endNonFunctionalProperties
            recordLocatorNumber ofType xsd:string
            trip ofType trip
            
      concept trip
            start ofType loc:location
            end ofType loc:location
            via ofType set loc:location
            departure ofType dt:dateAndTime
            arrival ofType dt:dateAndTime
            duration ofType dt:interval
            distance ofType loc:distance 
            
      concept trainTrip subConceptOf trip
            nonFunctionalProperties
                  dc:description hasValue "A train trip"       
            endNonFunctionalProperties
            start ofType station
            end ofType station
            via ofType set station
            seat ofType xsd:string
            train ofType xsd:string
            class ofType xsd:string

      axiom stationCountry
            nonFunctionalProperties
                  dc:description hasValue "Integrity constraint: if a station is located in a place
                        which is located in a given country, the country of the station is the
                        same"
            endNonFunctionalProperties
            definedBy
                  constraint
                        ?S[
                              locatedIn hasValue ?L,
                              country hasValue ?C
                        ]memberOf station
                        and not ?L[
                              country hasValue ?C
                        ]memberOf loc:location .

      axiom departureBeforeArrival
            nonFunctionalProperties
                  dc:description hasValue "Integrity Constraint: departure has to be before arrival"
            endNonFunctionalProperties
            definedBy
             constraint
                   ?T[
                         departure hasValue ?D,
                         arrival hasValue ?A
                   ]memberOf trip
                   and ?A <= ?D.

      axiom startNotEqualEnd
            nonFunctionalProperties
                  dc:description hasValue "Integrity Constraint: the start and end of a trip have to be different"
            endNonFunctionalProperties
            definedBy
             constraint
                   ?T[
                         start hasValue ?Start,
                         end hasValue ?End
                   ]memberOf trip 
                   and ?Start = ?End.

      instance innsbruckHbf memberOf station
            nonFunctionalProperties
                  dc:description hasValue "Innsbruck central station"
            endNonFunctionalProperties
            name hasValue "Innsbruck Hbf"^^xsd:string
            code hasValue "INN"^^xsd:string
            locatedIn hasValues {loc:innsbruck}
            
      instance frankfurtHbf memberOf station
            name hasValue "Frankfurt Hbf"^^xsd:string
            code hasValue "FKF"^^xsd:string
            locatedIn hasValues {loc:frankfurt}
            

Please notice that the link to large set of instances is missing in WSMO. Therefore, in this version of the ontology we only include some example instances, which holds for the other ontologies defined in this use case as well. The inclusion of links to large set of instances will be considered in future versions of WSMO.

The "Date and Time Ontology" in Listing 2 defines models for dates (i.e. certain days) and time (i.e. definition of certain points in time). Further, it defines axioms that represent conventional aspects of date and time, like ´before´ and ´after´, etc. In the use case, this is needed to determine validity of train connections, e.g for ensuring that a ticket is not for an itinerary that is in the past. It also can be used generally for expressing dates and time and relationships between them.

The main ontology taken into consideration for developing this conceptual model of Date and Time is an entry sub-ontology of time, available at http://www.isi.edu/~pan/damltime/time-entry.owl. This ontology uses abstract temporal concepts like instant, interval and event and uses the Gregorian calendar as representation (partly using own encoding and partly using XSD encoding). Axioms are defined in first order logic in the accompanying paper [Pan and Hobbs]; there also is a LISP version of these axioms available at http://www.cs.rochester.edu/~ferguson/daml/daml-time-20030728.lisp. Other ontologies like COBRA calenderclock ontology (http://daml.umbc.edu/ontologies/cobra/0.4/calendarclock) are only a straight forward representation of the Gregorian calendar, without any abstraction of concepts and description of axioms. Widely used concrete representations for date and time are defined in ISO 8601 (Numeric representation of Dates and Time) and in the XML Schema Definition (http://www.w3.org/TR/xmlschema-2/), which is based on ISO 8601.

Listing 2. Domain Ontology “Date and Time”
namespace
      dc: <<http://purl.org/dc/elements/1.1#>>
      targetNameSpace: <<http://www.wsmo.org/ontologies/dateTime#>>

ontology <<http://wsmo.org/ontologies/dateTime/20041004/dt.wsml>>

      nonFunctionalProperties
            dc:title hasValue "Date and Time Ontology"
            dc:creator hasValue "DERI International"
            dc:subject hasValues {"Date", "Time", "Date and Time Algebra"}
            dc:description hasValue "generic representation of data and time including basic algebra"
            dc:publisher hasValue "DERI International"
            dc:date hasValue "2004-10-04"
            dc:type hasValue <<http://www.wsmo.org/2004/d2/v1.0/#ontologies>>
            dc:format hasValue "text/html"
            dc:language hasValue "en-US"
            dc:relation hasValues {<<http://www.isi.edu/~pan/damltime/time-entry.owl>>,
                  <<http://www.w3.org/TR/xmlschema-2/>>}
            dc:coverage hasValue "World"
            dc:rights hasValue <<http://www.deri.org/privacy.html>>
            version hasValue "$Revision: 1.15 $"
      endNonFunctionalProperties

      comment: conceptDefinitions
            concept instant
                  nonFunctionalProperties
                        dc:description hasValue "An instant represents a particular point in time and is the super concept
                              of all concrete representations such as the Gregorian calendar"
                  endNonFunctionalProperties

            concept interval
                  nonFunctionalProperties
                        dc:description hasValue "An interval represents a duration between 2 points in time"
                  endNonFunctionalProperties
                  start ofType instant
                  end ofType instant

            concept date subConceptOf instant
                  nonFunctionalProperties
                        dc:description hasValue "concept date and its representation according to the Gregorian Calendar"
                  endNonFunctionalProperties
                  dayOfMonth ofType dayOfMonth
                  monthOfYear ofType monthOfYear
                  year ofType year

            concept dayOfMonth subConceptOf xsd:integer
                  nonFunctionalProperties
                        dc:description hasValue "day of a month is represented by an integer"
                  endNonFunctionalProperties

            concept year subConceptOf xsd:integer
                  nonFunctionalProperties
                        dc:description hasValue "year is represented by an integer"
                  endNonFunctionalProperties

            concept monthOfYear subConceptOf xsd:integer
                  nonFunctionalProperties
                        dc:description hasValue "monthOfYear is represented by an integer"
                  endNonFunctionalProperties

            concept time
                  hourOfDay ofType hourOfDay
                  minuteOfHour ofType minuteOfHour
                  secondOfMinute ofType secondOfMinute

            concept secondOfMinute subConceptOf xsd:integer
                  nonFunctionalProperties
                        dc:description hasValue "a secondOfMinute is represented by an integer"
                  endNonFunctionalProperties

            concept minuteOfHour subConceptOf xsd:integer
                  nonFunctionalProperties
                        dc:description hasValue "a minuteOfHour is represented by an integer"
                  endNonFunctionalProperties

            concept hourOfDay subConceptOf xsd:integer
                  nonFunctionalProperties
                        dc:description hasValue "a hourOfDay is represented by an integer"
                  endNonFunctionalProperties

            concept dateAndTime subConceptOf instant
                  nonFunctionalProperties
                        dc:description hasValue "concept date and time and representing together a specific point of time (instant)"
                  endNonFunctionalProperties
                  date ofType date
                  time ofType time

      comment: functionDefintions
            function julianDayNumber
                  nonFunctionalProperties
                        dc:description hasValue "The Julian Day Count is a uniform count of days from a remote epoch
                              in the past (about 4712 BC). At this instant, the Julian Day Number is 0. Once
                              you have the Julian Day Number of a particular date in history, it is easy to
                              calculate time elapsed between it and any other Julian Day Number"
                        dc:source hasValue <<http://quasar.as.utexas.edu/BillInfo/JulianDatesG.html>>
                              dc:description hasValue "For each instant there should exist a corresponding Julian Day
                                    Number, however it may not be always defined only by this binary predicate,
                                    e.g. if the instant is represented as Gregorian Date and it is a date between
                                    1582 and 1924 a country      must be given as third parameter (since e.g. Greece
                                    changed no earlier then 9th of March 1924 from the Julian to the Gregorian Calendar)"
                              comment: The following dc:source indicates which country changed in which year
                              comment: from the Julian to the Gregorian Calendar
                              dc:source hasValue <<http://members.brabant.chello.nl/~h.reints/cal/whenjul2greg.htm>>
                  endNonFunctionalProperties
                  instant ofType instant
                  range ofType xsd:integer

            function daysBetween
                  nonFunctionalProperties
                        dc:description hasValue "(Instant1, Instant2, Difference) is a triple of the ternary relation
                              corresponding to this function iff Instant1 and Instant2 are members of the concept
                              instant (particular point in time) and Instant2 is Difference days after Instant1."
                  endNonFunctionalProperties
                  instant1 ofType instant
                  instant2 ofType instant
                  range ofType xsd:integer

            function secondsBetween
                  nonFunctionalProperties
                        dc:description hasValue "(Instant1, Instant2, Difference) is a triple of the ternary relation
                              corresponding to this function      iff Instant1 and Instant2 are members of the concept
                              instant (particular point in time) and Instant2 is Differnce seconds after Instant1."
                  endNonFunctionalProperties
                  instant1 ofType instant
                  instant2 ofType instant
                  range ofType xsd:integer

            function secondsFromMidnight
                  nonFunctionalProperties
                        dc:description hasValue "(Time, SecondsFromMidnight) is a tuple of the binary relation
                              corresponding to this function iff SecondsFromMidnight are the seconds elapsed from
                              00:00:00 of the same day.
                              This simplifies the axiomatization of the difference between two given times"
                  endNonFunctionalProperties
                  time ofType time
                  range ofType xsd:integer

      comment: relationDefintions
            relation contains
                  nonFunctionalProperties
                        dc:description hasValue "(Interval, X) is a tuple of the binary relation
                              corresponding to this function iff Interval contains X and X is an instant or an
                              interval"
                  endNonFunctionalProperties
                  interval ofType interval
                  intervalOrInstant ofType instantOrInterVal

      concept instantOrInterVal
            definedBy
                  forAll ?x (?x memberOf instantOrInterVal <-> ?x memberOf instant or ?x memberOf interval).

      comment: axiomDefinitions
            axiom invalidMonthOfYear
                  nonFunctionalProperties
                        dc:description hasValue "integrity constraint for valid monthOfYear"
                  endNonFunctionalProperties
                  definedBy
                  constraint
                        ?X memberOf monthOfYear and
                        (?X < 1 or X > 12).

            axiom invalidDayOfMonth
                  nonFunctionalProperties
                        dc:description hasValue "integrity constraint for valid dayOfMonths"
                  endNonFunctionalProperties
                  definedBy
                  constraint
                              ?X memberOf dayOfMonth and
                              (X < 1 or X > 31).

            axiom validDate
                  nonFunctionalProperties
                        dc:description hasValue "Integrity Constraints for date.
                              The dayOfMonth is valid in dependency of the actual monthOfYear, in a leap
                              year the month 2 of the Year has 29 days otherwise 28. For leap years holds
                              the following:      Every year divisible by 4 is a leap year.      However, every
                              year divisible by 100 is not a leap year. However, every year divisible by
                              400 is a leap year after all.

                              Note: This axiomatization is still imprecise, since the country plays a role
                              when defining a valid day of the month: E.g. 1712 was a double leap year
                              in Sweden, i.e. February 1712 had 30 days in Sweden.

                              The mathematical function symbol modulo is assumed to be defined elsewhere
                              as that it returns the remainder after an integer division of its
                              first argument by its second"
                        dc:source hasValue <<http://www.tondering.dk/claus/cal/node3.html>>
                  endNonFunctionalProperties
                  definedBy
                  constraint
                              ?X memberOf date and (
                               (?X.dayOfMonth > 28 and ?X.monthOfYear = 2 and
                                     not ((modulo(?X.year ,4) = 0 and not modulo(?X.year ,100) = 0)
                                                      or modulo(?X.year ,400) = 0))
                                    or (?X.dayOfMonth > 29 and ?X.monthOfYear = 2)
                                    or (?X.dayOfMonth > 30 and ?X.monthOfYear = 4)
                                    or (?X.dayOfMonth > 30 and ?X.monthOfYear = 6)
                                    or (?X.dayOfMonth > 30 and ?X.monthOfYear = 9)
                                    or (?X.dayOfMonth > 30 and ?X.monthOfYear = 11)).


            axiom invalidHourOfDay
                  nonFunctionalProperties
                        dc:description hasValue "integrity constraint for valid hourOfDay:"
                  endNonFunctionalProperties
                  definedBy
                  constraint
                              ?X memberOf hourOfDay and
                              (?X < 0 or ?X >= 24).

            axiom invalidMinuteOfHour
                  nonFunctionalProperties
                        dc:description hasValue "integrity constraint for valid minuteOfHour:"
                  endNonFunctionalProperties
                  definedBy
                  constraint
                              ?X memberOf minuteOfHour and
                              (?X < 0 or ?X >= 60).

            axiom invalidSecondOfMinute
                  nonFunctionalProperties
                        dc:description hasValue "integrity constraint for valid secondOfMinute:"
                  endNonFunctionalProperties
                  definedBy
                  constraint
                              ?X memberOf secondOfMinute and
                              (?X < 0 or ?X >= 60).

            axiom invalidInterval
                  definedBy
                  constraint
                              ?X memberOf interval and ?X.start >= ?X.end.

            axiom equalityDate
                  nonFunctionalProperties
                        dc:description hasValue "computes equality of a date"
                  endNonFunctionalProperties
                  definedBy
                        X = ?Y <-
                              ?Y memberOf date and ?X memberOf date and
                              ?X.dayOfMonth = ?Y.dayOfMonth and
                              ?X.monthOfYear = ?Y.monthOfYear and
                              ?X.year = ?Y.year.

            axiom beforeDate
                  nonFunctionalProperties
                        dc:description hasValue "computes if a given date X is before another date ?Y"
                  endNonFunctionalProperties
                  definedBy
                        ?X < ?Y <-
                              ?Y memberOf date and ?X memberOf date and
                              ((?X.dayOfMonth = ?Y.dayOfMonth and ?X.monthOfYear = ?Y.monthOfYear and ?X.year = ?Y.year) or
                              (?X.monthOfYear < ?Y.monthOfYear and ?X.year = ?Y.year) or
                              (?X.year < ?Y.year)).

            axiom afterDate
                  nonFunctionalProperties
                        dc:description hasValue "defined as inverse of beforeDate"
                  endNonFunctionalProperties
                  definedBy
                        ?X > ?Y <- ?Y < ?X.

            axiom julianDayNumber
                  nonFunctionalProperties
                        dc:description hasValue "This Axiom describes how the correct Julian Day Number
                              can be computed for a given Gregorian Calendar Date. Note
                              that the Gregorian Calendar was introduced in 15.October 1582.
                              however until 1919 this axiomatization is not unambiguous since the country
                              should be taken into to account as 3rd parameter (e.g. Greece
                              changed at the 9 Mar 1924 from the Julian to the Gregorian calendar).

                              Details to the axiomatization
                              If the month is January or February we subtract 1 from the year to get a new Year
                              and add 12 to the month to get a new Month. (Thus, we are thinking of January and
                              February as being the 13th and 14th month of the previous year and March is the
                              start of the year, this simplifies the calculation considering the leap year)

                              Within the calculation the fractional part of all results has to be dropped,
                              here we use the function symbol floor() [it can be rewritten as predicate,
                              however it gets less readable]

                              A more lengthy description of this axiomatization can be found at
                              http://quasar.as.utexas.edu/BillInfo/JulianDatesG.html"

                        dc:source hasValues {<<http://quasar.as.utexas.edu/BillInfo/JulianDatesG.html>>,
                              <<http://members.brabant.chello.nl/~h.reints/cal/whenjul2greg.htm>>}
                  endNonFunctionalProperties
                        definedBy
                              julianDayNumber[instant hasValue ?X, result hasValue ?JDN]
                              <-
                              ?X memberOf date and
                              ((
                                          ?X.monthOfYear < 3 and
                                          ?Y = ?X.year -1 and
                                          ?M = ?X.monthOfYear + 12
                                    )
                                    or
                                    (
                                          ?X.monthOfYear > 2 and
                                          ?Y = ?X.year and
                                          M = ?X.monthOfYear
                              ))
                              and
                              ?D = ?X.dayOfMonth and
                              ?A = floor(?Y / 100) and
                              ?B = floor(?A / 4) and
                              ?C = 2 - ?A + ?B and
                              ?E = floor(365.25 * (?Y + 4716)) and
                              ?F = floor(30.6001 * (?M + 1)) and
                              ?JDN = ?C + ?D + ?E + ?F - 1524.


            axiom daysBetweenDates
                  nonFunctionalProperties
                        dc:description hasValue "the difference in days between 2 dates"
                  endNonFunctionalProperties
                  definedBy
                        daysBetween[instant1 hasValue ?D1, instant2 hasValue ?D2, result hasValue ?X] <-
                              ?D1 memberOf date and ?D2 memberOf date and
                              ?X = julianDayNumber(?D1) - julianDayNumber(?D2).

            axiom equalityTime
                  nonFunctionalProperties
                        dc:description hasValue "computes if two given times are the same"
                  endNonFunctionalProperties
                  definedBy
                        ?X = ?Y <-
                              ?X memberOf time and ?Y memberOf time and
                              ?X.secondOfMinute = ?Y.secondOfMinute and
                              ?X.minuteOfHour = ?Y.minuteOfHour and
                              ?X.hourOfDay = ?Y.hourOfDay.

            axiom beforeTime
                  nonFunctionalProperties
                        dc:description hasValue "computes if a given time ?X is before another time ?Y"
                  endNonFunctionalProperties
                  definedBy
                   ?X < ?Y <-
                              ?X memberOf time and ?Y memberOf time and
                              ((?X.secondOfMinute < ?Y.secondOfMinute and ?X.minuteOfHour = ?Y.minuteOfHour and ?X.hourOfDay = ?Y.hourOfDay) or
                              (?X.minuteOfHour < ?Y.minuteOfHour and ?X.hourOfDay = ?Y.hourOfDay) or
                              (?X.hourOfDay < ?Y.hourOfDay)).

            axiom afterTime
                  nonFunctionalProperties
                        dc:description hasValue "defined as inverse of beforeTime"
                  endNonFunctionalProperties
                  definedBy
                        ?X > ?Y <- ?Y < ?X.

            axiom secondsFromMidnight
                  nonFunctionalProperties
                        dc:description hasValue "computes the amount of seconds from midnight"
                  endNonFunctionalProperties
                  definedBy
                        secondsFromMidnight[time hasValue ?T, result hasValue ?X] <-
                              ?T memberOf time and
                              ?X = ?T.secondOfMinute + (?T.minuteOfHour*60) + (?T.hourOfDay*60*60).

            axiom secondsBetweenTimes
                  nonFunctionalProperties
                        dc:description hasValue "the difference in seconds between 2 times"
                  endNonFunctionalProperties
                  definedBy
                        secondsBetween[instant1 hasValue ?T1, instant2 hasValue T2, result hasValue ?X] <-
                              ?T1 memberOf time and ?T2 memberOf time and
                              ?X = secondsFromMidnight(?T1) - secondsFromMidnight(?T2).

            axiom equalityDateAndTime
                  nonFunctionalProperties
                        dc:description hasValue "computes if Date and Time are equal"
                  endNonFunctionalProperties
                  definedBy
                        ?X = ?Y <-
                              ?X memberOf dateAndTime and ?Y memberOf dateAndTime and
                              ?X.date = ?Y.date and
                              ?X.time = ?Y.time.

            axiom beforeDateAndTime
                  nonFunctionalProperties
                        dc:description hasValue "computes if a given date and time ?X is before another date and time ?Y"
                  endNonFunctionalProperties
                  definedBy
                        ?X < ?Y <-
                              ?X memberOf dateAndTime and ?Y memberOf dateAndTime and
                              ((?X.date = ?Y.date and ?X.time < ?Y.time) or
                              ?X.date < ?Y.date).

            axiom afterDateAndTime
                  nonFunctionalProperties
                  dc:description hasValue "defined as inverse of beforeDateAndTime"
                  endNonFunctionalProperties
                  definedBy
                        ?X > ?Y <- ?X
                              memberOf dateAndTime and ?Y memberOf dateAndTime and
                              ?Y < ?X.

            axiom secondsBetweenDateAndTime
                  nonFunctionalProperties
                        dc:description hasValue "computes the difference in seconds between two different DateAndTime"
                  endNonFunctionalProperties
                  definedBy
                        secondsBetween[instant1 hasValue ?D1, instant2 hasValue ?D2, result hasValue ?X] <-
                              ?D1 memberOf dateAndTime and ?D2 memberOf dateAndTime and
                              ?X = secondsFromMidnight(?D1.time) + julianDayNumber(?D1.date) * 24 * 60 * 60 -
                                          (secondsFromMidnight(?D2.time) + julianDayNumber(?D2.date) * 24 * 60 * 60).

            axiom daysBetweenDateAndTime
                  nonFunctionalProperties
                        dc:description hasValue "the difference in days between two different DateAndTime"
                  endNonFunctionalProperties
                  definedBy
                        daysBetween[instant1 hasValue ?T1, instant2 hasValue T2, result hasValue ?X] <-
                              D1 memberOf dateAndTime and D2 memberOf dateAndTime and
                              ?X = daysBetween(D1.date, D2.date).

            axiom intervalContainment
                  nonFunctionalProperties
                        dc:description hasValue "computes if a interval ?X contains a second interval ?Y"
                  endNonFunctionalProperties
                  definedBy
                        contains(?X, ?Y) <-
                              ?X memberOf interval and ?Y memberOf interval and
                              (?X.start < ?Y.start or ?X.start = ?Y.start) and
                              (?X.end > ?Y.end or ?X.end = ?Y.end).

            axiom instantContainment
                  nonFunctionalProperties
                  dc:description hasValue "computes if a interval ?X contains a instant ?Y"
                  endNonFunctionalProperties
                  definedBy
                        contains(?X, ?Y) <-
                              ?X memberOf interval and ?Y memberOf instant and
                              (?X.start < ?Y or ?X.start = ?Y) and
                              (?X.end > ?Y or ?X.end = ?Y).

The "Purchase" ontology defines general concepts to make a purchase order request. The ontology is an WSML representation of the RosettaNet's PIP3A4 "PurchaseOrderRequest" [RosettaNet]. RosettaNet is a consortium of major Information Technology, Electronic Components, Semiconductor Manufacturing, Telecommunications and Logistics companies working to create and implement industry-wide, open e-business process standards. These standards form a common e-business language, aligning processes between supply chain partners on a global basis.

Every standard business transaction within the RosettaNet trading network is defined in a so called PIP (Partner Interface Process) which defines the XML code, activities, decisions and Partner Role interactions between two partners in the supply chain. Each partner participating in the "Partner Interface Process" must fulfill the obligations specified in a PIP. These PIPs are organized into seven clusters, or groups of core business processes, that represent the backbone of the trading network. Each cluster is broken down into segments which are cross-enterprise processes involving more than one type of trading partner. Within each segment are individual PIPs, whereas the above mentioned PIP3A4 is part of Segment 3A "Quote and Order Entry". This segment allows partners to exchange price and availability information, quotes, purchase orders and order status, and enables partners to send requested orders, or shopping carts, to other partners.

At the current state this domain ontology is preliminary and will be further enhanced in future versions. As far as RosettaNet's PIPs are only intended for the use in the above mentioned industry sectors we also consider and partly work on the ontologizing of other conceptualizations, inter alia ebXML [ebXML] and EDIFACT [EDIFACT].

Listing 3. Domain Ontology “Purchase”
namespace
            <<http://www.wsmo.org/ontologies/purchase#>>
            po: <<http://www.wsmo.org/ontologies/purchase#>>
            dc: <<http://purl.org/dc/elements/1.1#>>
            cu: <<http://www.wsmo.org/2004/d3/d3.2/v0.1/20040628/resources/owlCurrencyMediator.wsml#>>
            dt: <<http:://www.wsmo.org/ontologies/dateTime#>>
            targetnamespace: <<http://www.wsmo.org/ontologies/purchase#>>

ontology <<http://wsmo.org/ontologies/purchase/20041004/po.wsml>>

      nonFunctionalProperties
            dc:title hasValue "Purchase Ontology"
            dc:creator hasValue "DERI International"
            dc:subject hasValues {"Purchase Order Request", "Buyer", "Seller", "Product Line Item", "Price", "Payment method", "Delivery"}
            dc:description hasValue "general purchase order request ontology based on the 3A4 PIP of RosettaNet"
            dc:publisher hasValue "DERI International"
            dc:contributor hasValues {"Armin Haller, Maciej Zaremba"}
            dc:date hasValue "2004-10-04"
            dc:type hasValue <<http://www.wsmo.org/2004/d2/#ontologies>>
            dc:format hasValue "text/html"
            dc:language hasValue "en-US"
            dc:relation hasValues {<<http://www.daml.ecs.soton.ac.uk/ont/currency.daml>>, <<http://www.wsmo.org/ontologies/dateTime>>}
            dc:rights hasValue <<http://www.deri.org/privacy.html>>
            version hasValue "$Revision: 1.14 $"
      endNonFunctionalProperties

      importedOntologies 
            <<http://www.wsmo.org/ontologies/dateTime>>
                  
      usedMediators 
            ooMediator <<http://www.wsmo.org/2004/d3/d3.2/v0.1/20041004/resources/owlCurrencyMediator.wsml>>


      comment: conceptDefinitions
            concept pip3A4Purchase
                  nonFunctionalProperties
                        dc:description hasValue "Rosettanets Purchase Order Request Document"
                  endNonFunctionalProperties
                  buyer ofType buyer
                  globaldocumentfunctioncode ofType globalDocumentFunctionCode
                  purchaseorder ofType purchaseOrder
                  thisdocumentgenerationdatetime ofType thisDocumentGenerationDateTime
                  thisdocumentidentifier ofType thisDocumentIdentifier
                  seller ofType seller

            concept buyer
                  nonFunctionalProperties
                        dc:description hasValue "The role initiating a business document exchange."
                  endNonFunctionalProperties
                  partnerroledescription ofType partnerRoleDescription

            concept seller
                  nonFunctionalProperties
                        dc:description hasValue "The role receiving the document in a business document exchange."
                  endNonFunctionalProperties
                  partnerroledescription ofType partnerRoleDescription

            concept partnerRoleDescription
                  nonFunctionalProperties
                        dc:description hasValue "The collection of business properties that
                               describe a business partners role in the purchase order request."
                  endNonFunctionalProperties
                  contactinformation ofType contactInformation
                  globalpartnerroleclassificationcode ofType globalPartnerRoleClassificationCode
                  partnerdescription ofType partnerDescription

            concept contactInformation
                  nonFunctionalProperties
                        dc:description hasValue "The collection of business properties that
                               provide communication and address information for
                               contacting a person, organization or business."
                  endNonFunctionalProperties
                  contactname ofType contactName
                  emailaddress ofType emailAddress
                  facsimilenumber ofType facsimileNumber
                  telephonenumber ofType telephoneNumber
                  physicallocation ofType physicalLocation

            concept contactName
                  nonFunctionalProperties
                        dc:description hasValue "Name of the contact person(s) within the organization."
                  endNonFunctionalProperties
                  freeformtext ofType freeFormText

            concept freeFormText subConceptOf xsd:string
                  nonFunctionalProperties
                        dc:description hasValue "Unformatted text."
                  endNonFunctionalProperties

            concept emailAddress subConceptOf xsd:string
                  nonFunctionalProperties
                        dc:description hasValue "Electronic mail address."
                  endNonFunctionalProperties

            concept facsimileNumber
                  nonFunctionalProperties
                        dc:description hasValue "The numerical schema designed to achieve contact via facsimile."
                  endNonFunctionalProperties
                  communicationsnumber ofType communicationsNumber

            concept communicationsNumber subConceptOf xsd:string
                  nonFunctionalProperties
                        dc:description hasValue "The electro-technical communication number,
                               e.g., telephone number, facsimile number, pager number."
                  endNonFunctionalProperties

            concept telephoneNumber
                  nonFunctionalProperties
                        dc:description hasValue "The numerical schema designed to achieve contact via telephone."
                  endNonFunctionalProperties
                  communicationsnumber ofType communicationsNumber

            concept globalPartnerRoleClassificationCode subConceptOf xsd:string
                  nonFunctionalProperties
                        dc:description hasValue "Code identifying a partys role in the supply chain."
                  endNonFunctionalProperties

            concept partnerDescription
                  nonFunctionalProperties
                        dc:description hasValue "The collection of business properties that
                               describe a business partners identity, their contact information,
                               where they are physically located and their function in a supply chain."
                  endNonFunctionalProperties
                  businessdescription ofType businessDescription
                  globalpartnerclassificationcode ofType globalPartnerClassificationCode
                  contactinformation ofType contactInformation
                  physicallocation ofType physicalLocation

            concept businessDescription
                  nonFunctionalProperties
                        dc:description hasValue "The collection of business properties that
                               describe a business identity and location."
                  endNonFunctionalProperties
                  globalbusinessidentifier ofType globalBusinessIdentifier
                  globalsupplychaincode ofType globalSupplyChainCode
                  businessname ofType businessName
                  partnerbusinessidentification ofType set partnerBusinessIdentification
                  nationalbusinesstaxidentifier ofType nationalBusinessTaxIdentifier

            concept globalBusinessIdentifier subConceptOf xsd:integer
                  nonFunctionalProperties
                        dc:description hasValue "A unique business identifier."
                  endNonFunctionalProperties

            concept globalSupplyChainCode subConceptOf xsd:string
                  nonFunctionalProperties
                        dc:description hasValue "Code identifying the supply chain for the partners function."
                  endNonFunctionalProperties

            concept globalPartnerClassificationCode subConceptOf xsd:string
                  nonFunctionalProperties
                        dc:description hasValue "Code identifying a partners function in the supply chain."
                  endNonFunctionalProperties

            concept globalDocumentFunctionCode subConceptOf xsd:string
                  nonFunctionalProperties
                        dc:description hasValue "Code identifying the function of
                               a document as either a request or a response."
                  endNonFunctionalProperties

            concept purchaseOrder
                  nonFunctionalProperties
                        dc:description hasValue "The collection of business properties that
                               describe a buyers offer to purchase a quantity of
                               products at an agreed price and schedule."
                  endNonFunctionalProperties
                  accountdescription ofType accountDescription
                  comments ofType comments
                  contractinformation ofType set contractInformation
                  documentreference ofType set documentReference
                  financingterms ofType set financingTerms
                  generalservicesadministrationnumber ofType generalServicesAdministrationNumber
                  globalgovernmentpriorityratingcode ofType globalGovernmentPriorityRatingCode
                  globalpurchaseorderfillprioritycode ofType globalPurchaseOrderFillPriorityCode
                  globalpurchaseordertypecode ofType set globalPurchaseOrderTypeCode
                  governmentcontractidentifier ofType governmentContractIdentifier
                  installat ofType installAt
                  isdropship ofType isDropShip
                  ordershippinginformation ofType orderShippingInformation
                  productlineitem ofType set productLineItem
                  proprietaryinformation ofType proprietaryInformation
                  requestedevent ofType requestedEvent
                  requestedshipfrom ofType set requestedShipFrom
                  secondarybuyer ofType secondaryBuyer
                  shipto ofType shipTo
                  taxexemptstatus ofType taxExemptStatus
                  totalamount ofType totalAmount

            concept accountDescription
                  nonFunctionalProperties
                        dc:description hasValue "The collection of business properties that
                               describe a customer or supplier account."
                  endNonFunctionalProperties
                  accountname ofType accountName
                  accountnumber ofType accountNumber
                  billto ofType billTo
                  creditcard ofType creditCard
                  financedby ofType financedBy
                  globalaccountclassificationcode ofType globalAccountClassificationCode
                  prepaymentchecknumber ofType prePaymentCheckNumber
                  wiretransferidentifier ofType wireTransferIdentifier

            concept po:comments
                  nonFunctionalProperties
                        dc:description hasValue "Free form textual description of a general nature."
                  endNonFunctionalProperties
                  freeformtext ofType freeFormText

            concept accountName
                  nonFunctionalProperties
                        dc:description hasValue "The name of a bank account."
                  endNonFunctionalProperties
                  freeformtext ofType freeFormText

            concept accountNumber subConceptOf xsd:string
                  nonFunctionalProperties
                        dc:description hasValue "Identification number of an account."
                  endNonFunctionalProperties

            concept billTo
                  nonFunctionalProperties
                        dc:description hasValue "The party that will pay the invoice."
                  endNonFunctionalProperties
                  partnerdescription ofType partnerDescription

            concept businessName
                  nonFunctionalProperties
                        dc:description hasValue "The name of a business entity."
                  endNonFunctionalProperties
                  freeformtext ofType freeFormText

            concept partnerBusinessIdentification
                  nonFunctionalProperties
                        dc:description hasValue "The collection of business properties that
                               allow for the proprietary identification of a business entity."
                  endNonFunctionalProperties
                  proprietarybusinessidentifier ofType proprietaryBusinessIdentifier
                  proprietarydomainidentifier ofType proprietaryDomainIdentifier
                  proprietaryidentifierauthority ofType proprietaryIdentifierAuthority

            concept proprietaryBusinessIdentifier subConceptOf xsd:string
                  nonFunctionalProperties
                        dc:description hasValue "A unique business identifier assigned
                               and administered by a private authority."
                  endNonFunctionalProperties

            concept proprietaryDomainIdentifier subConceptOf xsd:string
                  nonFunctionalProperties
                        dc:description hasValue "A descriptor that is used to categorize an organization
                               or business entity that is in the Proprietary Business Identifier."
                  endNonFunctionalProperties

            concept proprietaryIdentifierAuthority subConceptOf xsd:string
                  nonFunctionalProperties
                        dc:description hasValue "A unique name that identifies an organization or business entity
                               that is responsible for managing one or more lists of identifiers."
                  endNonFunctionalProperties

            concept physicalLocation
                  nonFunctionalProperties
                        dc:description hasValue "The collection of business properties that
                               identify and describe the actual physical location of an entity
                               as prescribed by local postal authorities,
                               including country identification."
                  endNonFunctionalProperties
                  globallocationidentifier ofType globalLocationIdentifier
                  partnerlocationidentification ofType set partnerLocationIdentification
                  physicaladdress ofType physicalAddress

            concept globalLocationIdentifier subConceptOf xsd:string
                  nonFunctionalProperties
                        dc:description hasValue "Location uniquely identified by the DUNS +4 number."
                  endNonFunctionalProperties

            concept partnerLocationIdentification
                  nonFunctionalProperties
                        dc:description hasValue "The collection of business properties that
                               allow for the proprietary identification of a business location."
                  endNonFunctionalProperties
                  proprietarydomainidentifier ofType proprietaryDomainIdentifier
                  proprietaryidentifierauthority ofType proprietaryIdentifierAuthority
                  proprietarylocationidentifier ofType proprietaryLocationIdentifier

            concept proprietaryLocationIdentifier subConceptOf xsd:string
                  nonFunctionalProperties
                        dc:description hasValue "A unique location identifier assigned
                               and administered by a private authority."
                  endNonFunctionalProperties

            concept physicalAddress
                  nonFunctionalProperties
                        dc:description hasValue "The actual physical location of an entity as
                               prescribed by local postal authorities, including
                               country identification as it relates to the party or a product."
                  endNonFunctionalProperties
                  addressline1 ofType addressLine1
                  addressline2 ofType addressLine2
                  addressline3 ofType addressLine3
                  cityname ofType cityName
                  globalcountrycode ofType globalCountryCode
                  nationalpostalcode ofType nationalPostalCode
                  postofficeboxidentifier ofType postOfficeBoxIdentifier
                  regionname ofType regionName
                  globallocationidentifier ofType globalLocationIdentifier
                  partnerlocationidentification ofType set partnerLocationIdentification

            concept addressLine1
                  nonFunctionalProperties
                        dc:description hasValue "Line 1 of the physical address."
                  endNonFunctionalProperties
                  freeformtext ofType freeFormText

            concept addressLine2
                  nonFunctionalProperties
                        dc:description hasValue "Line 2 of the physical address."
                  endNonFunctionalProperties
                  freeformtext ofType freeFormText

            concept addressLine3
                  nonFunctionalProperties
                        dc:description hasValue "Line 3 of the physical address."
                  endNonFunctionalProperties
                  freeformtext ofType freeFormText

            concept cityName
                  nonFunctionalProperties
                        dc:description hasValue "The name of a city."
                  endNonFunctionalProperties
                  freeformtext ofType freeFormText

            concept globalCountryCode subConceptOf xsd:string
                  nonFunctionalProperties
                        dc:description hasValue "Code identifying the two character
                               country code specified in ISO 3166-1993."
                  endNonFunctionalProperties

            concept nationalPostalCode subConceptOf xsd:string
                  nonFunctionalProperties
                        dc:description hasValue "Code identifying geographic
                               location as specified by a national postal code."
                  endNonFunctionalProperties

            concept postOfficeBoxIdentifier
                  nonFunctionalProperties
                        dc:description hasValue "The proprietary identity of a physical address,
                               located at a post office, designed solely to accept and receive mail."
                  endNonFunctionalProperties
                  freeformtext ofType freeFormText

            concept regionName
                  nonFunctionalProperties
                        dc:description hasValue "The name of a state or province within a country."
                  endNonFunctionalProperties
                  freeformtext ofType freeFormText

            concept creditCard
                  nonFunctionalProperties
                        dc:description hasValue "A collection of business properties
                               that describe information about a credit card."
                  endNonFunctionalProperties
                  cardholdername ofType cardHolderName
                  creditcardidentifier ofType creditCardIdentifier
                  expirydate ofType expiryDate
                  globalcreditcardclassificationcode ofType globalCreditCardClassificationCode
                  proprietarycididentifier ofType proprietaryCIDIdentifier

            concept cardHolderName
                  nonFunctionalProperties
                        dc:description hasValue "The name of the owner of a credit card."
                  endNonFunctionalProperties
                  freeformtext ofType freeFormText

            concept creditCardIdentifier
                  nonFunctionalProperties
                        dc:description hasValue "The unique number that identifies a credit card."
                  endNonFunctionalProperties
                  proprietaryreferenceidentifier ofType proprietaryReferenceIdentifier

            concept proprietaryReferenceIdentifier subConceptOf xsd:string
                  nonFunctionalProperties
                        dc:description hasValue "A unique reference identifier for goods,
                               services or business documents."
                  endNonFunctionalProperties

            concept expiryDate
                  nonFunctionalProperties
                        dc:description hasValue "The date that a contractual agreement expires."
                  endNonFunctionalProperties
                  expMonth ofType dt:monthOfYear
                  expYear ofType dt:year

            concept globalCreditCardClassificationCode subConceptOf xsd:string
                  nonFunctionalProperties
                        dc:description hasValue "Code identifying the type of credit card used."
                  endNonFunctionalProperties

            concept proprietaryCIDIdentifier subConceptOf xsd:string
                  nonFunctionalProperties
                        dc:description hasValue "Unique identifier for credit card purchase
                               activity utilized by American Express."
                  endNonFunctionalProperties

            concept financedBy
                  nonFunctionalProperties
                        dc:description hasValue "The party who is the financier."
                  endNonFunctionalProperties
                  partnerdescription ofType partnerDescription

            concept globalAccountClassificationCode subConceptOf xsd:string
                  nonFunctionalProperties
                        dc:description hasValue "Account classification indicating
                               its functionality, e.g., credit card account, debit card account."
                  endNonFunctionalProperties

            concept prePaymentCheckNumber
                  nonFunctionalProperties
                        dc:description hasValue "The check number issued to prepay a monetary amount for an account."
                  endNonFunctionalProperties
                  checknumber ofType checkNumber

            concept checkNumber subConceptOf xsd:string
                  nonFunctionalProperties
                        dc:description hasValue "The identification code of a bank cheque."
                  endNonFunctionalProperties

            concept wireTransferIdentifier subConceptOf xsd:string
                  nonFunctionalProperties
                        dc:description hasValue "A unique identity of a wire transfer used for reference."
                  endNonFunctionalProperties

            concept contractInformation
                  nonFunctionalProperties
                        dc:description hasValue "The collection of business properties that
                               represent a business arrangement for the supply
                               of goods or services at an agreed price."
                  endNonFunctionalProperties
                  contractidentifier ofType contractIdentifier
                  primarycontractwith ofType primaryContractWith
                  secondarycontractwith ofType secondaryContractWith

            concept contractIdentifier
                  nonFunctionalProperties
                        dc:description hasValue "The unique number than identifies a contract."
                  endNonFunctionalProperties
                  proprietarydocumentidentifier ofType proprietaryDocumentIdentifier

            concept proprietaryDocumentIdentifier subConceptOf xsd:string
                  nonFunctionalProperties
                        dc:description hasValue "Unique identifier, i.e. a numeric value
                               or alphanumeric value, for a business document."
                  endNonFunctionalProperties

            concept primaryContractWith
                  nonFunctionalProperties
                        dc:description hasValue "The principal party in a binding
                               agreement between two or more persons or parties."
                  endNonFunctionalProperties
                  partnerdescription ofType partnerDescription

            concept secondaryContractWith
                  nonFunctionalProperties
                        dc:description hasValue "The subsequent party in a binding
                               agreement between two or more persons or parties."
                  endNonFunctionalProperties
                  partnerdescription ofType partnerDescription

            concept documentReference
                  nonFunctionalProperties
                        dc:description hasValue "The collection of business properties that
                               allows the description of multiple proprietary
                               documents and applicable line number references."
                  endNonFunctionalProperties
                  datetimestamp ofType dt:dateAndTime
                  globaldocumentreferencetypecode ofType globalDocumentReferenceTypeCode
                  globalpartnerroleclassificationcode ofType globalPartnerRoleClassificationCode
                  linenumber ofType lineNumber
                  proprietarydocumentidentifier ofType proprietaryDocumentIdentifier
                  revisionnumber ofType revisionNumber

            concept globalDocumentReferenceTypeCode subConceptOf xsd:string
                  nonFunctionalProperties
                        dc:description hasValue "Code identifying the type of business
                               document used for referencing within another business document."
                  endNonFunctionalProperties

            concept lineNumber subConceptOf xsd:string
                  nonFunctionalProperties
                        dc:description hasValue "Number of the line in the document."
                  endNonFunctionalProperties

            concept revisionNumber subConceptOf xsd:string
                  nonFunctionalProperties
                        dc:description hasValue "An incremental number used to identify changes."
                  endNonFunctionalProperties
 
            concept financingTerms
                  nonFunctionalProperties
                        dc:description hasValue "The collection of business properties that describe financing terms."
                  endNonFunctionalProperties
                  globalfinancetermscode ofType globalFinanceTermsCode
                  paymentterms ofType set paymentTerms

            concept globalFinanceTermsCode subConceptOf xsd:string
                  nonFunctionalProperties
                        dc:description hasValue "Code identifying the terms that govern financing."
                  endNonFunctionalProperties

            concept paymentTerms
                  nonFunctionalProperties
                        dc:description hasValue "The collection of business properties that describe payment terms."
                  endNonFunctionalProperties
                  discounts ofType set discounts
                  globalpaymentconditioncode ofType globalPaymentConditionCode
                  nettermsday ofType netTermsDay
                  nettermsdays ofType netTermsDays
                  percentdue ofType percentDue

            concept discounts
                  nonFunctionalProperties
                        dc:description hasValue "The collection of business properties that describe payment discounts."
                  endNonFunctionalProperties
                  discountday ofType discountDay
                  discountdays ofType discountDays
                  discountpercent ofType discountPercent

            concept discountDay
                  nonFunctionalProperties
                        dc:description hasValue "The specific day of the month a
                               payment is required in order to receive a discount."
                  endNonFunctionalProperties
                  dayofmonth ofType dt:dayOfMonth

            concept discountDays
                  nonFunctionalProperties
                        dc:description hasValue "The number of days within which a
                               payment is required in order to receive a discount."
                  endNonFunctionalProperties
                  countableamount ofType countableAmount

            concept countableAmount subConceptOf xsd:integer
                  nonFunctionalProperties
                        dc:description hasValue "Dimensionless magnitude, e.g. number of products."
                  endNonFunctionalProperties

            concept discountPercent
                  nonFunctionalProperties
                        dc:description hasValue "The financial percent representing a reduction to the total amount due."
                  endNonFunctionalProperties
                  percentamount ofType percentAmount

            concept percentAmount subConceptOf xsd:float
                  nonFunctionalProperties
                        dc:description hasValue "A real number representing a percentage value,
                               e.g. 75.125 represents 75 1/8 percent."
                  endNonFunctionalProperties

            concept globalPaymentConditionCode subConceptOf xsd:string
                  nonFunctionalProperties
                        dc:description hasValue "A code identifying the conditions
                               under which payment will be made."
                  endNonFunctionalProperties

            concept netTermsDay
                  nonFunctionalProperties
                        dc:description hasValue "The specific day of the month
                               a payment is due without incurring late charges."
                  endNonFunctionalProperties
                  dayofmonth ofType dt:dayOfMonth

            concept netTermsDays
                  nonFunctionalProperties
                   dc:description hasValue "The number of days within
                              which a payment is due without incurring late charges."
                  endNonFunctionalProperties
                  countableamount ofType countableAmount

            concept percentDue
                  nonFunctionalProperties
                        dc:description hasValue "The amount owed expressed as a percentage."
                  endNonFunctionalProperties
                  percentamount ofType percentAmount

            concept generalServicesAdministrationNumber
                  nonFunctionalProperties
                        dc:description hasValue "Identifying number relating to a pre-established end-user pricing agreement."
                  endNonFunctionalProperties
                  proprietarydocumentidentifier ofType proprietaryDocumentIdentifier

            concept globalGovernmentPriorityRatingCode subConceptOf xsd:string
                  nonFunctionalProperties
                        dc:description hasValue "If a contract number exists and
                               PO type is Government, a priority rating code is required."
                   endNonFunctionalProperties

            concept globalPurchaseOrderFillPriorityCode subConceptOf xsd:string
                  nonFunctionalProperties
                        dc:description hasValue "Code identifying fill priority for manufacturing
                               in a constrained condition. Value to be determined by Trading Partner Agreement."
                  endNonFunctionalProperties

            concept globalPurchaseOrderTypeCode subConceptOf xsd:string
                  nonFunctionalProperties
                        dc:description hasValue "Code identifying category specification for a purchase order."
                  endNonFunctionalProperties

            concept governmentContractIdentifier
                  nonFunctionalProperties
                        dc:description hasValue "The unique number that identifies a government contract."
                  endNonFunctionalProperties
                  proprietarydocumentidentifier ofType proprietaryDocumentIdentifier

            concept installAt
                  nonFunctionalProperties
                        dc:description hasValue "The partner and/or location to
                               which the product must be set up for use or service."
                  endNonFunctionalProperties
                  partnerdescription ofType partnerDescription

            concept isDropShip
                  nonFunctionalProperties
                        dc:description hasValue "Indicates whether the order is a drop shipment."
                  endNonFunctionalProperties
                  affirmationindicator ofType affirmationIndicator

            concept affirmationIndicator subConceptOf xsd:string
                  nonFunctionalProperties
                        dc:description hasValue "Used to indicate "Yes", "No" statements."
                  endNonFunctionalProperties

            concept orderShippingInformation
                  nonFunctionalProperties
                        dc:description hasValue "The collection of business properties that
                               describe information relating to shipping a product."
                  endNonFunctionalProperties
                  carrierinformation ofType carrierInformation
                  globalfreeonboardcode ofType globalFreeOnBoardCode
                  globalshipmenttermscode ofType globalShipmentTermsCode
                  globalshippingservicelevelcode ofType globalShippingServiceLevelCode
                  globalspecialfulfillmentrequestcode ofType set globalSpecialFulfillmentRequestCode
                  packlistrequirements ofType packListRequirements
                  specialhandlinginstruction ofType specialHandlingInstruction

            concept carrierInformation
                  nonFunctionalProperties
                        dc:description hasValue "The collection of business properties that
                               describe a carriers identification."
                  endNonFunctionalProperties
                  accountidentifier ofType accountIdentifier
                  globalcarriercode ofType globalCarrierCode

            concept accountIdentifier
                  nonFunctionalProperties
                        dc:description hasValue "The unique identifier that identifies an account."
                  endNonFunctionalProperties
                  proprietaryreferenceidentifier ofType proprietaryReferenceIdentifier
 
            concept globalCarrierCode subConceptOf xsd:string
                  nonFunctionalProperties
                        dc:description hasValue "A unique carrier identification code,
                               based on Standard Carrier Alpha Code(s) (SCAC)."
                  endNonFunctionalProperties

            concept globalFreeOnBoardCode subConceptOf xsd:string
                  nonFunctionalProperties
                        dc:description hasValue "Code identifying a specified point where
                               a product is delivered or placed on board a carrier without charge."
                  endNonFunctionalProperties

            concept globalShipmentTermsCode subConceptOf xsd:string
                  nonFunctionalProperties
                        dc:description hasValue "Code identifying the terms under which a product is shipped."
                  endNonFunctionalProperties

            concept globalShippingServiceLevelCode subConceptOf xsd:string
                  nonFunctionalProperties
                        dc:description hasValue "Code identifying the shipping service level, e.g., overnight, same day."
                  endNonFunctionalProperties

            concept globalSpecialFulfillmentRequestCode subConceptOf xsd:string
                  nonFunctionalProperties
                        dc:description hasValue "Code identifying a special fulfillment request, e.g. delivery options."
                  endNonFunctionalProperties

            concept packListRequirements
                  nonFunctionalProperties
                        dc:description hasValue "Free form textual description, on the pack list,
                               of requirements relating to the packing of the product."
                  endNonFunctionalProperties
                  freeformtext ofType freeFormText

            concept specialHandlingInstruction
                  nonFunctionalProperties
                        dc:description hasValue "The collection of business properties that
                               describe product packaging or shipping handling instructions."
                  endNonFunctionalProperties
                  globalspecialhandlingcode ofType set globalSpecialHandlingCode
                  specialhandlingtext ofType specialHandlingText

            concept globalSpecialHandlingCode subConceptOf xsd:string
                  nonFunctionalProperties
                        dc:description hasValue "Code identifying special handling or packaging requirements for the product."
                  endNonFunctionalProperties

            concept specialHandlingText
                  nonFunctionalProperties
                        dc:description hasValue "Free form textual description for
                               how specified goods, packages or containers should be handled." 
                  endNonFunctionalProperties
                  freeformtext ofType freeFormText

            concept productLineItem
                  nonFunctionalProperties
                        dc:description hasValue "The collection of business properties that
                               describe a business document entry for a product."
                  endNonFunctionalProperties
                  comments ofType comments
                  contractinformation ofType set contractInformation
                  countryoforigin ofType countryOfOrigin
                  customerinformation ofType set customerInformation
                  documentreference ofType set documentReference
                  expeditereferenceidentifier ofType expediteReferenceIdentifier
                  globalproductunitofmeasurecode ofType globalProductUnitOfMeasureCode
                  globalpurchaseorderfillprioritycode ofType globalPurchaseOrderFillPriorityCode
                  installat ofType installAt
                  isdropship ofType isDropShip
                  linenumber ofType lineNumber
                  orderquantity ofType orderQuantity
                  ordershippinginformation ofType orderShippingInformation
                  productidentification ofType productIdentification
                  productsublineitem ofType set productSubLineItem
                  proprietaryinformation ofType proprietaryInformation
                  requestedevent ofType requestedEvent
                  requestedshipfrom ofType set requestedShipFrom
                  requestedunitprice ofType requestedUnitPrice
                  shipto ofType shipTo
                  taxexemptstatus ofType taxExemptStatus
                  totallineitemamount ofType totalLineItemAmount

            concept countryOfOrigin
                  nonFunctionalProperties
                        dc:description hasValue "Country where product originates."
                  endNonFunctionalProperties
                  globalcountrycode ofType globalCountryCode

            concept customerInformation
                  nonFunctionalProperties
                        dc:description hasValue "The collection of business properties that describe an end user."
                  endNonFunctionalProperties
                  customerprojectidentifier ofType customerProjectIdentifier
                  globalcustomertypecode ofType globalCustomerTypeCode
                  partnerdescription ofType partnerDescription

            concept customerProjectIdentifier
                  nonFunctionalProperties
                        dc:description hasValue "The unique identification number that
                               identifies a project for a given customer."
                  endNonFunctionalProperties
                  proprietaryreferenceidentifier ofType proprietaryReferenceIdentifier

            concept globalCustomerTypeCode subConceptOf xsd:string
                  nonFunctionalProperties
                        dc:description hasValue "Code identifying the type of end user."
                  endNonFunctionalProperties

            concept nationalBusinessTaxIdentifier
                  nonFunctionalProperties
                        dc:description hasValue "The national tax identification number assigned to a business."
                  endNonFunctionalProperties
                  businesstaxidentifier ofType businessTaxIdentifier
                  globalcountrycode ofType globalCountryCode

            concept businessTaxIdentifier subConceptOf xsd:string
                  nonFunctionalProperties
                        dc:description hasValue "Identifying number for Tax Information Field."
                  endNonFunctionalProperties

            concept expediteReferenceIdentifier
                  nonFunctionalProperties
                        dc:description hasValue "The unique identification number for the expediting of a product."
                  endNonFunctionalProperties
                  proprietaryreferenceidentifier ofType proprietaryReferenceIdentifier

            concept globalProductUnitOfMeasureCode subConceptOf xsd:string
                  nonFunctionalProperties
                        dc:description hasValue "Code identifying a product unit of measure."
                  endNonFunctionalProperties

            concept orderQuantity
                  nonFunctionalProperties
                        dc:description hasValue "The collection of business properties that
                               describe various types of product quantity used in an ordering process."
                  endNonFunctionalProperties
                  requestedquantity ofType requestedQuantity

            concept productIdentification
                  nonFunctionalProperties
                        dc:description hasValue "The collection of business properties that
                               describe proprietary and global identifier information regarding a product."
                  endNonFunctionalProperties
                  globalproductidentifier ofType globalProductIdentifier
                  partnerproductidentification ofType set partnerProductIdentification

            concept requestedQuantity
                  nonFunctionalProperties
                        dc:description hasValue "The quantity of product requested."
                  endNonFunctionalProperties
                  productquantity ofType productQuantity

            concept productQuantity subConceptOf xsd:float
                  nonFunctionalProperties
                        dc:description hasValue "A quantity specifying the number of product units."
                  endNonFunctionalProperties

            concept partnerProductIdentification
                  nonFunctionalProperties
                        dc:description hasValue "The collection of business properties that describe proprietary part information."
                  endNonFunctionalProperties
                  globalpartnerclassificationcode ofType globalPartnerClassificationCode
                  proprietaryproductidentifier ofType proprietaryProductIdentifier
                  revisionidentifier ofType revisionIdentifier

            concept globalProductIdentifier subConceptOf xsd:string
                  nonFunctionalProperties
                        dc:description hasValue "Global unique product identifier,
                               expressed by the Global Trade Identification Number (GTIN)."
                  endNonFunctionalProperties

            concept proprietaryProductIdentifier subConceptOf xsd:string
                  nonFunctionalProperties
                        dc:description hasValue "An internal identifier used to identify a product."
                  endNonFunctionalProperties

            concept revisionIdentifier
                  nonFunctionalProperties
                        dc:description hasValue "Free form text that identifies a revision to a proprietary serial number."
                  endNonFunctionalProperties
                  freeformtext ofType freeFormText

            concept productSubLineItem
                  nonFunctionalProperties
                        dc:description hasValue "The collection of business properties that describe a part of a product line item."
                  endNonFunctionalProperties
                  comments ofType comments
                  contractinformation ofType contractInformation
                  countryoforigin ofType countryOfOrigin
                  customerinformation ofType set customerInformation
                  expeditereferenceidentifier ofType expediteReferenceIdentifier
                  globalproductunitofmeasurecode ofType globalProductUnitOfMeasureCode
                  globalpurchaseorderfillprioritycode ofType globalPurchaseOrderFillPriorityCode
                  installat ofType installAt
                  isdropship ofType isDropShip
                  orderquantity ofType orderQuantity
                  ordershippinginformation ofType orderShippingInformation
                  proprietaryinformation ofType proprietaryInformation
                  requestedevent ofType requestedEvent
                  requestedshipfrom ofType set requestedShipFrom
                  requestedunitprice ofType requestedUnitPrice
                  shipto ofType shipTo
                  sublineitem ofType subLineItem

            concept proprietaryInformation
                  nonFunctionalProperties
                        dc:description hasValue "A free form textual description of information, relating to a product."
                  endNonFunctionalProperties
                  freeformtext ofType freeFormText

            concept requestedEvent
                  nonFunctionalProperties
                        dc:description hasValue "The date a transportation event is requested to occur."
                  endNonFunctionalProperties
                  transportationevent ofType transportationEvent

            concept transportationEvent
                  nonFunctionalProperties
                        dc:description hasValue "The collection of business properties that
                               describe the occurrence of the public conveyance of goods as a commercial enterprise."
                  endNonFunctionalProperties
                  begintime ofType beginTime
                  datestamp ofType dt:dateAndTime
                  endtime ofType endTime
                  globaltransporteventcode ofType globalTransportEventCode

            concept beginTime
                  nonFunctionalProperties
                        dc:description hasValue "The start time of a time period."
                  endNonFunctionalProperties
                  timestamp ofType dt:dateAndTime

            concept endTime
                  nonFunctionalProperties
                        dc:description hasValue "The end time of a time period."
                  endNonFunctionalProperties
                  timestamp ofType dt:dateAndTime

            concept globalTransportEventCode subConceptOf xsd:string
                  nonFunctionalProperties
                        dc:description hasValue "Code identifying an event during the transportation of a shipment."
                  endNonFunctionalProperties

            concept requestedShipFrom
                  nonFunctionalProperties
                        dc:description hasValue "The      location where the product is requested to be shipped from."
                  endNonFunctionalProperties
                  physicaladdress ofType physicalAddress

            concept requestedUnitPrice
                  nonFunctionalProperties
                        dc:description hasValue "The price requested for a unit of product."
                  endNonFunctionalProperties
                  financialamount ofType financialAmount

            concept financialAmount
                  nonFunctionalProperties
                        dc:description hasValue "The collection of business properties
                               that describe the monetary amount defined by a specified currency."
                  endNonFunctionalProperties
                  globalcurrencycode ofType cu:currency
                  globalmonetaryamounttypecode ofType globalMonetaryAmountTypeCode
                  invoicechargetypecode ofType invoiceChargeTypeCode
                  monetaryamount ofType monetaryAmount

            concept globalMonetaryAmountTypeCode subConceptOf xsd:string
                  nonFunctionalProperties
                        dc:description hasValue "Code identifying whether the monetary amount is a debit or credit."
                  endNonFunctionalProperties

            concept invoiceChargeTypeCode subConceptOf xsd:string
                  nonFunctionalProperties
                        dc:description hasValue "Code identifying the values for the types of charges contained in an invoice."
                  endNonFunctionalProperties

            concept monetaryAmount subConceptOf xsd:float
                  nonFunctionalProperties
                        dc:description hasValue "Magnitude of currency amount."
                  endNonFunctionalProperties

            concept shipTo
                  nonFunctionalProperties
                        dc:description hasValue "The partner and/or location to which the product must be delivered."
                  endNonFunctionalProperties
                  partnerdescription ofType partnerDescription

            concept subLineItem
                  nonFunctionalProperties
                        dc:description hasValue "Information contained within a subline."
                  endNonFunctionalProperties
                  linenumber ofType lineNumber

            concept taxExemptStatus
                  nonFunctionalProperties
                        dc:description hasValue "The collection of business properties that describe tax exemption conditions."
                  endNonFunctionalProperties
                  istaxexempt ofType isTaxExempt
                  taxexemption ofType taxExemption

            concept isTaxExempt
                  nonFunctionalProperties
                        dc:description hasValue "Indicates whether a product is exempt from taxation."
                  endNonFunctionalProperties
                  affirmationindicator ofType affirmationIndicator

            concept taxExemption
                  nonFunctionalProperties
                        dc:description hasValue "The collection of business properties that describe
                               tax exemption type and identification information."
                  endNonFunctionalProperties
                  globaltaxexemptioncode ofType globalTaxExemptionCode
                  taxexemptioncertificationidentifier ofType taxExemptionCertificationIdentifier

            concept globalTaxExemptionCode subConceptOf xsd:string
                  nonFunctionalProperties
                        dc:description hasValue "Code identifying the type of tax exemption for a product or service."
                  endNonFunctionalProperties

            concept taxExemptionCertificationIdentifier
                  nonFunctionalProperties
                        dc:description hasValue "The unique identifier that represents the authorization
                               for a product or services tax exempt status."
                  endNonFunctionalProperties
             proprietaryreferenceidentifier ofType ProprietaryReferenceIdentifier

            concept totalLineItemAmount
                  nonFunctionalProperties
                        dc:description hasValue "The monetary total associated with a line item."
                  endNonFunctionalProperties
                  financialamount ofType financialAmount

            concept secondaryBuyer
                  nonFunctionalProperties
                        dc:description hasValue "The collection of business properties that describe an alternate buyer."
                  endNonFunctionalProperties
                  partnerdescription ofType partnerDescription
                  secondarybuyerpurchaseorderidentifier ofType secondaryBuyerPurchaseOrderIdentifier

            concept secondaryBuyerPurchaseOrderIdentifier
                  nonFunctionalProperties
                        dc:description hasValue "Unique number that identifies a purchase order issued by the secondary buyer."
                  endNonFunctionalProperties
                  proprietarydocumentidentifier ofType proprietaryDocumentIdentifier

            concept totalAmount
                  nonFunctionalProperties
                        dc:description hasValue "Total price for an entire invoice."
                  endNonFunctionalProperties
                  financialamount ofType financialAmount

            concept thisDocumentGenerationDateTime
                  nonFunctionalProperties
                        dc:description hasValue "The date-time stamp indicating when this business document was generated."
                  endNonFunctionalProperties
                  datetimestamp ofType dt:dateAndTime

            concept thisDocumentIdentifier
                  nonFunctionalProperties
                        dc:description hasValue "The information that identifies the business document being sent.
                               This identifier is used to represent the specific business document
                               associated with the defined business process."
                  endNonFunctionalProperties
                  proprietarydocumentidentifier ofType proprietaryDocumentIdentifier

      comment: axiomDefinitions
            axiom validBuyer
                  nonFunctionalProperties
                              dc:description hasValue "Exactly one buyer."
                  endNonFunctionalProperties
                  definedBy
                                    forAll ?x (exists ?y (?x memberOf pip3A4Purchase -> ?x[buyer hasValue ?y])).

            axiom validPurchaseorder
                   nonFunctionalProperties
                              dc:description hasValue "Exactly one purchaseorder."
                  endNonFunctionalProperties
                  definedBy
                                    forAll ?x (exists ?y (?x memberOf pip3A4Purchase -> ?x[purchaseorder hasValue ?y])).

            axiom validThisdocumentgenerationdatetime
                   nonFunctionalProperties
                              dc:description hasValue "Exactly one thisdocumentgenerationdatetime."
                  endNonFunctionalProperties
                  definedBy
                                    forAll ?x (exists ?y (?x memberOf pip3A4Purchase -> ?x[thisdocumentgenerationdatetime hasValue ?y])).

            axiom validThisdocumentidentifier
                   nonFunctionalProperties
                              dc:description hasValue "Exactly one thisdocumentidentifier."
                  endNonFunctionalProperties
                  definedBy
                                    forAll ?x (exists ?y (?x memberOf pip3A4Purchase -> ?x[thisdocumentidentifier hasValue ?y])).

            axiom validSeller
                   nonFunctionalProperties
                              dc:description hasValue "Exactly one seller."
                  endNonFunctionalProperties
                  definedBy
                                    forAll ?x (exists ?y (?x memberOf pip3A4Purchase -> ?x[seller hasValue ?y])).

            axiom validPartnerroledescription
                   nonFunctionalProperties
                              dc:description hasValue "Exactly one partnerroledescription."
                  endNonFunctionalProperties
                  definedBy
                                    forAll ?x (exists ?y (?x memberOf buyer or ?x memberOf seller or ?x memberOf toRole 
                                          -> ?x[partnerroledescription hasValue ?y])).

            axiom validGlobalpartnerroleclassificationcode 
                   nonFunctionalProperties
                              dc:description hasValue "Exactly one globalpartnerroleclassificationcode."
                  endNonFunctionalProperties
                  definedBy
                                    forAll ?x (exists ?y (?x memberOf partnerRoleDescription or ?x memberOf documentReference 
                                          -> ?x[globalpartnerroleclassificationcode hasValue ?y])).

/************************************
 the rest of theses axioms are commented out, since they where not done in a proper wsml syntax yet

            axiom validPartnerdescription
                   nonFunctionalProperties
                              dc:description hasValue "Exactly one partnerdescription."
                  endNonFunctionalProperties
                  definedBy
                                    "forAll ?x exists ?y ((?x memberOf partnerRoleDescription hasValue ?x[partnerdescription hasValue ?y]) and
                                     (?x memberOf billTo hasValue ?x[partnerdescription hasValue ?y]) and
                                     (?x memberOf financedBy hasValue ?x[partnerdescription hasValue ?y]) and
                                     (?x memberOf primaryContractWith hasValue ?x[partnerdescription hasValue ?y]) and
                                     (?x memberOf secondaryContractWith hasValue ?x[partnerdescription hasValue ?y]) and
                                     (?x memberOf installAt hasValue ?x[partnerdescription hasValue ?y]) and
                                     (?x memberOf secondaryBuyer hasValue ?x[partnerdescription hasValue ?y]) and
                                     (?x memberOf customerInformation hasValue ?x[partnerdescription hasValue ?y]) and
                                     (?x memberOf shipTo hasValue ?x[partnerdescription hasValue ?y]))"

            axiom validFreeformtext
                   nonFunctionalProperties
                              dc:description hasValue "Exactly one freeformtext."
                  endNonFunctionalProperties
                  definedBy
                                    "forAll ?x exists ?y ((?x memberOf contactName hasValue ?x[freeformtext -> ?y]) and
                                     (?x memberOf comments hasValue ?x[freeformtext hasValue ?y]) and
                                     (?x memberOf accountName hasValue ?x[freeformtext hasValue ?y]) and
                                     (?x memberOf businessName hasValue ?x[freeformtext hasValue ?y]) and
                                     (?x memberOf addressLine1 hasValue ?x[freeformtext hasValue ?y]) and
                                     (?x memberOf addressLine2 hasValue ?x[freeformtext hasValue ?y]) and
                                     (?x memberOf addressLine3 hasValue ?x[freeformtext hasValue ?y]) and
                                     (?x memberOf cityName hasValue ?x[freeformtext hasValue ?y]) and
                                     (?x memberOf postOfficeBoxIdentifier hasValue ?x[freeformtext hasValue ?y]) and
                                     (?x memberOf regionName hasValue ?x[freeformtext hasValue ?y]) and
                                     (?x memberOf cardHolderName hasValue ?x[freeformtext hasValue ?y]) and
                                     (?x memberOf packListRequirements hasValue ?x[freeformtext hasValue ?y]) and
                                     (?x memberOf specialHandlingText hasValue ?x[freeformtext hasValue ?y]) and
                                     (?x memberOf revisionIdentifier hasValue ?x[freeformtext hasValue ?y] and
                                     (?x memberOf proprietaryInformation hasValue ?x[freeformtext hasValue ?y))"

            axiom validCommunicationsnumber
                   nonFunctionalProperties
                              dc:description hasValue "Exactly one communicationsnumber."
                  endNonFunctionalProperties
                  definedBy
                                    "forAll ?x exists ?y ((?x memberOf facsimileNumber -> ?x[communicationsnumber -> ?y]) and 
                                     (?x memberOf telephone -> ?x[communicationsnumber -> ?y]))"

            axiom validBusinessdescription
                   nonFunctionalProperties
                              dc:description hasValue "Exactly one businessdescription."
                  endNonFunctionalProperties
                  definedBy
                                    "forAll ?x exists ?y (?x memberOf partnerDescription -> ?x[businessdescription -> ?y])"

            axiom validGlobalpurchaseordertypecode
                   nonFunctionalProperties
                              dc:description hasValue "One or more globalpurchaseordertypecode."
                  endNonFunctionalProperties
                  definedBy
                                    "forAll ?x exists ?y (?x memberOf purchaseOrder -> ?x[globalpurchaseordertypecode ->> ?y])"

            axiom validIsdropship
                   nonFunctionalProperties
                              dc:description hasValue "Exactly one isdropship."
                  endNonFunctionalProperties
                  definedBy
                                    "forAll ?x exists ?y ((?x memberOf purchaseOrder -> ?x[isdropship -> ?y]) and
                                     (?x memberOf productLineItem -> ?x[isdropship -> ?y]) and
                                     (?x memberOf productSubLineItem -> ?x[isdropship -> ?y]))"

            axiom validProductlineitem
                   nonFunctionalProperties
                              dc:description hasValue "One or more productlineitem."
                  endNonFunctionalProperties
                  definedBy
                                    "forAll ?x exists ?y (?x memberOf purchaseOrder -> ?x[productlineitem ->> ?y])"

            axiom validRequestedshipfrom
                   nonFunctionalProperties
                              dc:description hasValue "One or more requestedshipfrom."
                  endNonFunctionalProperties
                  definedBy
                                    "forAll ?x exists ?y (?x memberOf purchaseOrder -> ?x[requestedshipfrom ->> ?y])"

            axiom validAccountname 
                   nonFunctionalProperties
                              dc:description hasValue "Exactly one accountname."
                  endNonFunctionalProperties
                  definedBy
                                    "forAll ?x exists ?y (?x memberO