@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix airport: <http://www.daml.ri.cmu.edu/ont/AirportCodes.daml#> .
@prefix airline: <http://www.daml.org/2001/06/itinerary/icao#> .
@prefix : <http://www.daml.org/2001/06/itinerary/itinerary-ont#> .

<> a owl:Ontology;
   owl:versionInfo "$Id: itinerary-ont.n3,v 1.5 2003/10/03 20:37:07 mdean Exp $";
   rdfs:comment "Travel Itinerary".

:Itinerary a owl:Class;
   rdfs:subClassOf
     [ a owl:Restriction;
       owl:onProperty :passenger;
       owl:allValuesFrom xsd:string];
   rdfs:subClassOf
     [ a owl:Restriction;
       owl:onProperty :passenger;
       owl:cardinality "1"];
   rdfs:subClassOf
     [ a owl:Restriction;
       owl:onProperty :rln;
       owl:allValuesFrom :RecordLocatorNumber];
   rdfs:subClassOf
     [ a owl:Restriction;
       owl:onProperty :flight;
       owl:allValuesFrom :Flight];
   rdfs:subClassOf
     [ a owl:Restriction;
       owl:onProperty :hotel;
       owl:allValuesFrom :HotelReservation];
   rdfs:subClassOf
     [ a owl:Restriction;
       owl:onProperty :rentalCar;
       owl:allValuesFrom :RentalCar].

:Flight a owl:Class;
   rdfs:subClassOf
     [ a owl:Restriction;
       owl:onProperty :airline;
       owl:allValuesFrom airline:Airline ];
   rdfs:subClassOf
     [ a owl:Restriction;
       owl:onProperty :airline;
       owl:cardinality "1" ];
   rdfs:subClassOf
     [ a owl:Restriction;
       owl:onProperty :flight;
       owl:allValuesFrom xsd:nonNegativeInteger ];
   rdfs:subClassOf
     [ a owl:Restriction;
       owl:onProperty :flight;
       owl:cardinality "1" ];
   rdfs:subClassOf
     [ a owl:Restriction;
       owl:onProperty :origin;
       owl:allValuesFrom airport:AirportCode ];
   rdfs:subClassOf
     [ a owl:Restriction;
       owl:onProperty :origin;
       owl:cardinality "1" ];
   rdfs:subClassOf
     [ a owl:Restriction;
       owl:onProperty :destination;
       owl:allValuesFrom airport:AirportCode ];
   rdfs:subClassOf
     [ a owl:Restriction;
       owl:onProperty :destination;
       owl:cardinality "1" ];
   rdfs:subClassOf
     [ a owl:Restriction;
       owl:onProperty :depart;
       owl:allValuesFrom xsd:dateTime ];
   rdfs:subClassOf
     [ a owl:Restriction;
       owl:onProperty :depart;
       owl:cardinality "1" ];
   rdfs:subClassOf
     [ a owl:Restriction;
       owl:onProperty :arrive;
       owl:allValuesFrom xsd:dateTime ];
   rdfs:subClassOf
     [ a owl:Restriction;
       owl:onProperty :arrive;
       owl:cardinality "1" ];
   rdfs:subClassOf
     [ a owl:Restriction;
       owl:onProperty :class;
       owl:allValuesFrom :Class ];
   rdfs:subClassOf
     [ a owl:Restriction;
       owl:onProperty :class;
       owl:cardinality "1" ];
   rdfs:subClassOf
     [ a owl:Restriction;
       owl:onProperty :duration;
       owl:allValuesFrom xsd:timeDuration ];
   rdfs:subClassOf
     [ a owl:Restriction;
       owl:onProperty :duration;
       owl:cardinality "1" ];
   rdfs:subClassOf
     [ a owl:Restriction;
       owl:onProperty :aircraft;
       owl:allValuesFrom :Aircraft ];
   rdfs:subClassOf
     [ a owl:Restriction;
       owl:onProperty :aircraft;
       owl:cardinality "1" ];
   rdfs:subClassOf
     [ a owl:Restriction;
       owl:onProperty :miles;
       owl:allValuesFrom xsd:integer ];
   rdfs:subClassOf
     [ a owl:Restriction;
       owl:onProperty :miles;
       owl:cardinality "1" ];
   rdfs:subClassOf
     [ a owl:Restriction;
       owl:onProperty :seat;
       owl:allValuesFrom xsd:string ];
   rdfs:subClassOf
     [ a owl:Restriction;
       owl:onProperty :meal;
       owl:allValuesFrom :Meal ].

:Meal a owl:Class;
    owl:oneOf ( :Breakfast :Lunch :Dinner :Snack ).
:Breakfast a :Meal.
:Lunch a :Meal.
:Dinner a :Meal.
:Snack a :Meal.

:Class a owl:Class;
    owl:oneOf ( :First :Business :Coach ).
:First a :Class.
:Business a :Class.
:Coach a :Class.

:Aircraft a owl:Class;
    owl:oneOf ( :A300 :A320 :A340 :B727 :B737 :B747 :B757 :B767 :B777 ).
:A300 a :Aircraft.
:A320 a :Aircraft.
:A340 a :Aircraft.
:B727 a :Aircraft.
:B737 a :Aircraft.
:B747 a :Aircraft.
:B757 a :Aircraft.
:B767 a :Aircraft.
:B777 a :Aircraft.

:HotelReservation a owl:Class;
    rdfs:subClassOf
      [ a owl:Restriction;
        owl:onProperty :hotelName;
        owl:allValuesFrom xsd:string ];
    rdfs:subClassOf
      [ a owl:Restriction;
        owl:onProperty :hotelName;
	owl:cardinality "1" ];
    rdfs:subClassOf
      [ a owl:Restriction;
        owl:onProperty :address;
        owl:allValuesFrom xsd:string ];
    rdfs:subClassOf
      [ a owl:Restriction;
        owl:onProperty :address;
	owl:cardinality "1" ];
    rdfs:subClassOf
      [ a owl:Restriction;
        owl:onProperty :checkin;
        owl:allValuesFrom xsd:date ];
    rdfs:subClassOf
      [ a owl:Restriction;
        owl:onProperty :checkin;
	owl:cardinality "1" ];
    rdfs:subClassOf
      [ a owl:Restriction;
        owl:onProperty :checkout;
        owl:allValuesFrom xsd:date ];
    rdfs:subClassOf
      [ a owl:Restriction;
        owl:onProperty :checkout;
	owl:cardinality "1" ];
    rdfs:subClassOf
      [ a owl:Restriction;
        owl:onProperty :rate;
        owl:allValuesFrom xsd:decimal ];
    rdfs:subClassOf
      [ a owl:Restriction;
        owl:onProperty :rate;
	owl:cardinality "1" ];
    rdfs:subClassOf
      [ a owl:Restriction;
        owl:onProperty :confirmation;
        owl:allValuesFrom xsd:string ];
    rdfs:subClassOf
      [ a owl:Restriction;
        owl:onProperty :confirmation;
	owl:cardinality "1" ];
    rdfs:subClassOf
      [ a owl:Restriction;
        owl:onProperty :smoking;
        owl:allValuesFrom xsd:boolean ];
    rdfs:subClassOf
      [ a owl:Restriction;
        owl:onProperty :smoking;
	owl:maxCardinality "1" ].

:RentalCar a owl:Class
      # XXX
      .

:RecordLocatorNumber a owl:Class;
    rdfs:subClassOf
      [ a owl:Restriction;
        owl:onProperty :airline;
        owl:allValuesFrom airline:Airline ];
    rdfs:subClassOf
      [ a owl:Restriction;
        owl:onProperty :airline;
        owl:cardinality "1" ];
    rdfs:subClassOf
      [ a owl:Restriction;
        owl:onProperty :rloc;
        owl:allValuesFrom xsd:string ];
    rdfs:subClassOf
      [ a owl:Restriction;
        owl:onProperty :rloc;
        owl:cardinality "1" ].

:address a owl:DatatypeProperty .
:aircraft a owl:ObjectProperty .
:airline a owl:ObjectProperty .
:arrive a owl:DatatypeProperty .
:checkin a owl:DatatypeProperty .
:checkout a owl:DatatypeProperty .
:class a owl:ObjectProperty .
:confirmation a owl:DatatypeProperty .
:depart a owl:DatatypeProperty .
:destination a owl:ObjectProperty .
:duration a owl:DatatypeProperty .
:flight a rdf:Property .
:hotel a owl:DatatypeProperty .
:hotelName a owl:DatatypeProperty .
:meal a owl:ObjectProperty .
:miles a owl:DatatypeProperty .
:origin a owl:ObjectProperty .
:passenger a owl:DatatypeProperty .
:rate a owl:DatatypeProperty .
:rentalCar a owl:ObjectProperty .
:rln a owl:ObjectProperty .
:rloc a owl:DatatypeProperty .
:seat a owl:DatatypeProperty .
:smoking a owl:DatatypeProperty .
