@prefix : <http://purl.org/ns/meteo#> .
@prefix met: <http://purl.org/ns/meteo#> . # hint
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix un: <http://www.w3.org/2007/ont/unit#> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix doc: <http://www.w3.org/2000/10/swap/pim/doc#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix geo: <http://www.w3.org/2003/01/geo/wgs84_pos#> .
@prefix vs: <http://www.w3.org/2003/06/sw-vocab-status/ns#> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .

# @keywords a, is, of .

<http://inamidst.com/sw/ont/meteo> a foaf:Document, owl:Ontology; 
   dc:title "An Ontology for Meteorological Data"; 
   rdfs:comment "great for simple weather forecasts"; 
   dc:creator [ foaf:name "Sean B. Palmer"; 
                foaf:homepage <http://inamidst.com/sbp/> ] .

# @@ Provide a hint that this is OWL Full?

:Place a owl:Class .
:name a owl:DatatypeProperty; 
   rdfs:domain :Place; 
   rdfs:range rdfs:Literal .
:location a owl:ObjectProperty; 
   rdfs:domain :Place; 
   rdfs:range geo:Point .
:forecast a owl:ObjectProperty; 
   rdfs:domain :Place; 
   rdfs:range :Forecast .

# Forecast must have time and predicted

:Forecast a owl:Class; 
   rdfs:subClassOf 
     [ a owl:Restriction; owl:onProperty :time; 
       owl:cardinality "1"^^xsd:nonNegativeInteger ], 
     [ a owl:Restriction; owl:onProperty :predicted; 
       owl:cardinality "1"^^xsd:nonNegativeInteger ], 

     [ a owl:Restriction; owl:onProperty :cloudCover; 
       owl:allValuesFrom un:Quantity ], 
     [ a owl:Restriction; owl:onProperty :humidity; 
       owl:allValuesFrom un:Quantity ], 
     [ a owl:Restriction; owl:onProperty :precipitation; 
       owl:allValuesFrom un:Quantity ], 
     [ a owl:Restriction; owl:onProperty :pressure; 
       owl:allValuesFrom un:Quantity ], 
     [ a owl:Restriction; owl:onProperty :temperature; 
       owl:allValuesFrom un:Quantity ], 
     [ a owl:Restriction; owl:onProperty :wind; 
       owl:allValuesFrom :Wind ] .

# These two form a CIFP together
:time a rdf:Property . # owl:DatatypeProperty .
:predicted a rdf:Property . # owl:DatatypeProperty .

:cloudCover a owl:ObjectProperty .
:humidity a owl:ObjectProperty .
:precipitation a owl:ObjectProperty .
:pressure a owl:ObjectProperty .
:temperature a owl:ObjectProperty .
:wind a owl:ObjectProperty .

:Wind a owl:Class; 
   rdfs:subClassOf 
     [ a owl:Restriction; owl:onProperty :speed; 
       owl:allValuesFrom un:Quantity ], 
     [ a owl:Restriction; owl:onProperty :meridional; 
       owl:allValuesFrom un:Quantity ], 
     [ a owl:Restriction; owl:onProperty :zonal; 
       owl:allValuesFrom un:Quantity ] .

:speed a owl:ObjectProperty .
:meridional a owl:ObjectProperty .
:zonal a owl:ObjectProperty .

:percent a # owl:DatatypeProperty, 
          un:Unit; 
   rdfs:seeAlso <http://en.wikipedia.org/wiki/Dimensionless_quantity>; 
   rdfs:domain un:Quantity; 
   # rdfs:range xsd:decimal, 
   rdfs:range un:Quantity .

:inches a # owl:DatatypeProperty, 
         un:Unit; 
   rdfs:domain un:Quantity; 
   # rdfs:range xsd:decimal, 
   rdfs:range un:Quantity .

:millibars a # owl:DatatypeProperty, 
            un:Unit; 
   rdfs:domain un:Quantity; 
   # rdfs:range xsd:decimal, 
   rdfs:range un:Quantity .

# pascals a owl:DatatypeProperty, un:Unit; 
#    rdfs:domain un:Quantity; 
#    rdfs:range xsd:decimal, un:Quantity .

:celsius a # owl:DatatypeProperty, 
          un:Unit; 
   rdfs:domain un:Quantity; 
   # rdfs:range xsd:decimal, 
   rdfs:range un:Quantity .

# fahrenheit a owl:DatatypeProperty, un:Unit; 
#    rdfs:domain un:Quantity; 
#    rdfs:range xsd:decimal, un:Quantity .

# knots a owl:DatatypeProperty, un:Unit; 
#    rdfs:domain un:Quantity; 
#    rdfs:range xsd:decimal, un:Quantity .

:metresPerSecond a # owl:DatatypeProperty, 
                un:Unit; 
   rdfs:domain un:Quantity; 
   # rdfs:range xsd:decimal, 
   rdfs:range un:Quantity .

# The following are defined just for convenience

:uno a # owl:DatatypeProperty, 
      un:Unit; 
   rdfs:seeAlso <http://en.wikipedia.org/wiki/Dimensionless_quantity>; 
   rdfs:domain un:Quantity; 
   # rdfs:range xsd:decimal, 
   rdfs:range un:Quantity .

:oktas a # owl:DatatypeProperty, 
        un:Unit; 
   rdfs:seeAlso <http://en.wikipedia.org/wiki/Dimensionless_quantity>; 
   rdfs:domain un:Quantity; 
   # rdfs:range xsd:integer, 
   rdfs:range un:Quantity .

(:uno 100) un:product :percent .

# kwijibo asked for these to be added, Swhack 2010-11-11
# Send queries and so on about forecasePage to him

:forecastPage a owl:ObjectProperty; 
   rdfs:domain :Forecast; 
   rdfs:range foaf:Document; 
   vs:term_status "unstable"; 
   vs:moreinfo <http://swhack.com/logs/2010-11-11#T14-57-15> .

:Category a owl:Class; 
   rdfs:subClassOf skos:Concept; 
   rdfs:label "Category"@en-gb; 
   rdfs:comment "A category within a taxonomy of weather types. eg: A weather site may have a set of icons for Sun, Cloud, Rain, Thunder, Snow, Fog, that they use to categorise weather."@en; 
   vs:term_status "unstable"; 
   vs:moreinfo <http://swhack.com/logs/2010-11-13#T10-47-29> .

:category a owl:ObjectProperty; 
   rdfs:domain :Forecast; 
   rdfs:range :Category; 
   rdfs:label "Category"@en-gb; 
   rdfs:comment "many weather sites use a set of Sun, Cloud, Rain etc icons to categorise/summarise a particular forecast."@en; 
   vs:term_status "unstable"; 
   vs:moreinfo <http://swhack.com/logs/2010-11-13#T10-47-29> .

# EOF
