swish-0.7.0.0: src/Swish/RDF/Vocabulary/XSD.hs
{-# LANGUAGE OverloadedStrings #-}
--------------------------------------------------------------------------------
-- See end of this file for licence information.
--------------------------------------------------------------------------------
-- |
-- Module : Swish.RDF.Vocabulary.XSD
-- Copyright : (c) 2011 Douglas Burke
-- License : GPL V2
--
-- Maintainer : Douglas Burke
-- Stability : experimental
-- Portability : OverloadedStrings
--
-- This module defines vocabulary terms from the XSD document.
--
--------------------------------------------------------------------------------
module Swish.RDF.Vocabulary.XSD
(
namespaceXSD
-- * XSD data types
--
-- | See the XSD Schema Part 2 documentation at <http://www.w3.org/TR/xmlschema-2/>;
-- the version used is \"W3C Recommendation 28 October 2004\",
-- <http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/>.
, xsdType
-- ** Primitive datatypes
--
-- | See the section \"Primitive datatypes\" at
-- <http://www.w3.org/TR/xmlschema-2/#built-in-primitive-datatypes>.
, xsdString
, xsdBoolean
, xsdDecimal
, xsdFloat
, xsdDouble
, xsdDateTime
, xsdTime
, xsdDate
, xsdAnyURI
-- ** Derived datatypes
--
-- | See the section \"Derived datatypes\" at
-- <http://www.w3.org/TR/xmlschema-2/#built-in-derived>.
, xsdInteger
, xsdNonPosInteger
, xsdNegInteger
, xsdLong
, xsdInt
, xsdShort
, xsdByte
, xsdNonNegInteger
, xsdUnsignedLong
, xsdUnsignedInt
, xsdUnsignedShort
, xsdUnsignedByte
, xsdPosInteger
)
where
import Swish.Namespace (Namespace, ScopedName, makeNamespace, makeNSScopedName)
import Swish.QName (LName)
import Data.Maybe (fromMaybe)
import Network.URI (URI, parseURI)
------------------------------------------------------------
-- Namespace
------------------------------------------------------------
xsdURI :: URI
xsdURI = fromMaybe (error "Internal error processing XSD URI") $ parseURI "http://www.w3.org/2001/XMLSchema#"
-- | Maps @xsd@ to <http://www.w3.org/2001/XMLSchema#>.
namespaceXSD :: Namespace
namespaceXSD = makeNamespace (Just "xsd") xsdURI
------------------------------------------------------------
-- Terms
------------------------------------------------------------
-- | Create a scoped name for an XSD datatype with the given name.
xsdType :: LName -> ScopedName
xsdType = makeNSScopedName namespaceXSD
-- | @xsd:string@ from <http://www.w3.org/TR/xmlschema-2/#string>.
xsdString :: ScopedName
xsdString = xsdType "string"
-- | @xsd:boolean@ from <http://www.w3.org/TR/xmlschema-2/#boolean>.
xsdBoolean :: ScopedName
xsdBoolean = xsdType "boolean"
-- | @xsd:decimal@ from <http://www.w3.org/TR/xmlschema-2/#decimal>.
xsdDecimal :: ScopedName
xsdDecimal = xsdType "decimal"
-- | @xsd:integer@ from <http://www.w3.org/TR/xmlschema-2/#integer>.
xsdInteger :: ScopedName
xsdInteger = xsdType "integer"
-- | @xsd:nonNegativeInteger@ from <http://www.w3.org/TR/xmlschema-2/#nonNegativeInteger>.
xsdNonNegInteger :: ScopedName
xsdNonNegInteger = xsdType "nonNegativeInteger"
-- | @xsd:nonPositiveInteger@ from <http://www.w3.org/TR/xmlschema-2/#nonPositiveInteger>.
xsdNonPosInteger :: ScopedName
xsdNonPosInteger = xsdType "nonPositiveInteger"
-- | @xsd:positiveInteger@ from <http://www.w3.org/TR/xmlschema-2/#positiveInteger>.
xsdPosInteger :: ScopedName
xsdPosInteger = xsdType "positiveInteger"
-- | @xsd:negativeInteger@ from <http://www.w3.org/TR/xmlschema-2/#negativeInteger>.
xsdNegInteger :: ScopedName
xsdNegInteger = xsdType "negativeInteger"
-- | @xsd:float@ from <http://www.w3.org/TR/xmlschema-2/#float>.
xsdFloat :: ScopedName
xsdFloat = xsdType "float"
-- | @xsd:double@ from <http://www.w3.org/TR/xmlschema-2/#double>.
xsdDouble :: ScopedName
xsdDouble = xsdType "double"
-- | @xsd:long@ from <http://www.w3.org/TR/xmlschema-2/#long>.
xsdLong :: ScopedName
xsdLong = xsdType "long"
-- | @xsd:int@ from <http://www.w3.org/TR/xmlschema-2/#int>.
xsdInt :: ScopedName
xsdInt = xsdType "int"
-- | @xsd:short@ from <http://www.w3.org/TR/xmlschema-2/#short>.
xsdShort :: ScopedName
xsdShort = xsdType "short"
-- | @xsd:byte@ from <http://www.w3.org/TR/xmlschema-2/#byte>.
xsdByte :: ScopedName
xsdByte = xsdType "byte"
-- | @xsd:unsignedLong@ from <http://www.w3.org/TR/xmlschema-2/#unsignedLong>.
xsdUnsignedLong :: ScopedName
xsdUnsignedLong = xsdType "unsignedLong"
-- | @xsd:unsignedInt@ from <http://www.w3.org/TR/xmlschema-2/#unsignedInt>.
xsdUnsignedInt :: ScopedName
xsdUnsignedInt = xsdType "unsignedInt"
-- | @xsd:unsignedShort@ from <http://www.w3.org/TR/xmlschema-2/#unsignedShort>.
xsdUnsignedShort :: ScopedName
xsdUnsignedShort = xsdType "unsignedShort"
-- | @xsd:unsignedByte@ from <http://www.w3.org/TR/xmlschema-2/#unsignedByte>.
xsdUnsignedByte :: ScopedName
xsdUnsignedByte = xsdType "unsignedByte"
-- | @xsd:date@ from <http://www.w3.org/TR/xmlschema-2/#date>.
xsdDate :: ScopedName
xsdDate = xsdType "date"
-- | @xsd:dateTime@ from <http://www.w3.org/TR/xmlschema-2/#dateTime>.
xsdDateTime :: ScopedName
xsdDateTime = xsdType "dateTime"
-- | @xsd:time@ from <http://www.w3.org/TR/xmlschema-2/#time>.
xsdTime :: ScopedName
xsdTime = xsdType "time"
-- | @xsd:anyURI@ from <http://www.w3.org/TR/xmlschema-2/#anyURI>.
xsdAnyURI :: ScopedName
xsdAnyURI = xsdType "anyURI"
--------------------------------------------------------------------------------
--
-- Copyright (c) 2011 Douglas Burke
-- All rights reserved.
--
-- This file is part of Swish.
--
-- Swish is free software; you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation; either version 2 of the License, or
-- (at your option) any later version.
--
-- Swish is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with Swish; if not, write to:
-- The Free Software Foundation, Inc.,
-- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
--
--------------------------------------------------------------------------------