{-# LANGUAGE OverloadedStrings #-}

--------------------------------------------------------------------------------
--  See end of this file for licence information.
--------------------------------------------------------------------------------
-- |
--  Module      :  Swish.RDF.Vocabulary.SIOC
--  Copyright   :  (c) 2011 Douglas Burke
--  License     :  GPL V2
--
--  Maintainer  :  Douglas Burke
--  Stability   :  experimental
--  Portability :  OverloadedStrings
--
--  This module defines some commonly used vocabulary terms from the SIOC
--  project (<http://sioc-project.org/>).
--
--------------------------------------------------------------------------------

module Swish.RDF.Vocabulary.SIOC
    ( 
      -- | The version used for this module is Revison 1.35 of the
      -- \"SIOC Core Ontology Specification\", dated 25 March 2010,
      -- <http://rdfs.org/sioc/spec/>.
      namespaceSIOC
      
      -- * Classes
      , siocCommunity
      , siocContainer
      , siocForum
      , siocItem
      , siocPost
      , siocRole
      , siocSite
      , siocSpace
      , siocThread
      , siocUserAccount
      , siocUsergroup
        
      -- * Properties
      , siocabout
      , siocaccount_of
      , siocaddressed_to
      , siocadministrator_of
      , siocattachment
      , siocavatar
      , sioccontainer_of
      , sioccontent
      , sioccreator_of
      , siocearlier_version
      , siocemail
      , siocemail_sha1
      , siocembeds_knowledge
      , siocfeed
      , siocfollows
      , siocfunction_of
      , siochas_administrator
      , siochas_container
      , siochas_creator
      , siochas_discussion
      , siochas_function
      , siochas_host
      , siochas_member
      , siochas_moderator
      , siochas_modifier
      , siochas_owner
      , siochas_parent
      , siochas_reply
      , siochas_scope
      , siochas_space
      , siochas_subscriber
      , siochas_usergroup
      , siochost_of
      , siocid
      , siocip_address
      , sioclast_activity_date
      , sioclast_item_date
      , sioclast_reply_date
      , sioclater_version
      , sioclatest_version
      , sioclink
      , sioclinks_to
      , siocmember_of
      , siocmoderator_of
      , siocmodifier_of
      , siocname
      , siocnext_by_date
      , siocnext_version
      , siocnote
      , siocnum_authors
      , siocnum_items
      , siocnum_replies
      , siocnum_threads
      , siocnum_views
      , siocowner_of
      , siocparent_of
      , siocprevious_by_date
      , siocprevious_version
      , siocrelated_to
      , siocreply_of
      , siocscope_of
      , siocsibling
      , siocspace_of
      , siocsubscriber_of
      , sioctopic
      , siocusergroup_of 
    )
where

import Swish.Namespace (Namespace, makeNamespace, ScopedName, makeNSScopedName)
import Swish.QName (LName)

import Data.Maybe (fromMaybe)
import Network.URI (URI, parseURI)

------------------------------------------------------------
--  Namespace
------------------------------------------------------------

siocURI :: URI
siocURI :: URI
siocURI = URI -> Maybe URI -> URI
forall a. a -> Maybe a -> a
fromMaybe ([Char] -> URI
forall a. HasCallStack => [Char] -> a
error [Char]
"Internal error processing SIOC URI") (Maybe URI -> URI) -> Maybe URI -> URI
forall a b. (a -> b) -> a -> b
$ [Char] -> Maybe URI
parseURI [Char]
"http://rdfs.org/sioc/ns#"

-- | Maps @sioc@ to <http://rdfs.org/sioc/ns#>.
namespaceSIOC :: Namespace
namespaceSIOC :: Namespace
namespaceSIOC = Maybe Text -> URI -> Namespace
makeNamespace (Text -> Maybe Text
forall a. a -> Maybe a
Just Text
"sioc") URI
siocURI

------------------------------------------------------------
--  Terms
------------------------------------------------------------

toS :: LName -> ScopedName
toS :: LName -> ScopedName
toS  = Namespace -> LName -> ScopedName
makeNSScopedName Namespace
namespaceSIOC

-- Classes

-- | @sioc:Community@ from <http://rdfs.org/sioc/spec/#term_Community>. 
siocCommunity :: ScopedName
siocCommunity :: ScopedName
siocCommunity = LName -> ScopedName
toS LName
"Community"

-- | @sioc:Container@ from <http://rdfs.org/sioc/spec/#term_Container>. 
siocContainer :: ScopedName
siocContainer :: ScopedName
siocContainer = LName -> ScopedName
toS LName
"Container"

-- | @sioc:Forum@ from <http://rdfs.org/sioc/spec/#term_Forum>. 
siocForum :: ScopedName
siocForum :: ScopedName
siocForum = LName -> ScopedName
toS LName
"Forum"

-- | @sioc:Item@ from <http://rdfs.org/sioc/spec/#term_Item>. 
siocItem :: ScopedName
siocItem :: ScopedName
siocItem = LName -> ScopedName
toS LName
"Item"

-- | @sioc:Post@ from <http://rdfs.org/sioc/spec/#term_Post>. 
siocPost :: ScopedName
siocPost :: ScopedName
siocPost = LName -> ScopedName
toS LName
"Post"

-- | @sioc:Role@ from <http://rdfs.org/sioc/spec/#term_Role>. 
siocRole :: ScopedName
siocRole :: ScopedName
siocRole = LName -> ScopedName
toS LName
"Role"

-- | @sioc:Site@ from <http://rdfs.org/sioc/spec/#term_Site>. 
siocSite :: ScopedName
siocSite :: ScopedName
siocSite = LName -> ScopedName
toS LName
"Site"

-- | @sioc:Space@ from <http://rdfs.org/sioc/spec/#term_Space>. 
siocSpace :: ScopedName
siocSpace :: ScopedName
siocSpace = LName -> ScopedName
toS LName
"Space"

-- | @sioc:Thread@ from <http://rdfs.org/sioc/spec/#term_Thread>. 
siocThread :: ScopedName
siocThread :: ScopedName
siocThread = LName -> ScopedName
toS LName
"Thread"

-- | @sioc:UserAccount@ from <http://rdfs.org/sioc/spec/#term_UserAccount>. 
siocUserAccount :: ScopedName
siocUserAccount :: ScopedName
siocUserAccount = LName -> ScopedName
toS LName
"UserAccount"

-- | @sioc:Usergroup@ from <http://rdfs.org/sioc/spec/#term_Usergroup>. 
siocUsergroup :: ScopedName
siocUsergroup :: ScopedName
siocUsergroup = LName -> ScopedName
toS LName
"Usergroup"

-- Properties

-- | @sioc:about@ from <http://rdfs.org/sioc/spec/#term_about>. 
siocabout :: ScopedName
siocabout :: ScopedName
siocabout = LName -> ScopedName
toS LName
"about"

-- | @sioc:account_of@ from <http://rdfs.org/sioc/spec/#term_account_of>. 
siocaccount_of :: ScopedName
siocaccount_of :: ScopedName
siocaccount_of = LName -> ScopedName
toS LName
"account_of"

-- | @sioc:addressed_to@ from <http://rdfs.org/sioc/spec/#term_addressed_to>. 
siocaddressed_to :: ScopedName
siocaddressed_to :: ScopedName
siocaddressed_to = LName -> ScopedName
toS LName
"addressed_to"

-- | @sioc:administrator_of@ from <http://rdfs.org/sioc/spec/#term_administrator_of>. 
siocadministrator_of :: ScopedName
siocadministrator_of :: ScopedName
siocadministrator_of = LName -> ScopedName
toS LName
"administrator_of"

-- | @sioc:attachment@ from <http://rdfs.org/sioc/spec/#term_attachment>. 
siocattachment :: ScopedName
siocattachment :: ScopedName
siocattachment = LName -> ScopedName
toS LName
"attachment"

-- | @sioc:avatar@ from <http://rdfs.org/sioc/spec/#term_avatar>. 
siocavatar :: ScopedName
siocavatar :: ScopedName
siocavatar = LName -> ScopedName
toS LName
"avatar"

-- | @sioc:container_of@ from <http://rdfs.org/sioc/spec/#term_container_of>. 
sioccontainer_of :: ScopedName
sioccontainer_of :: ScopedName
sioccontainer_of = LName -> ScopedName
toS LName
"container_of"

-- | @sioc:content@ from <http://rdfs.org/sioc/spec/#term_content>. 
sioccontent :: ScopedName
sioccontent :: ScopedName
sioccontent = LName -> ScopedName
toS LName
"content"

-- | @sioc:creator_of@ from <http://rdfs.org/sioc/spec/#term_creator_of>. 
sioccreator_of :: ScopedName
sioccreator_of :: ScopedName
sioccreator_of = LName -> ScopedName
toS LName
"creator_of"

-- | @sioc:earlier_version@ from <http://rdfs.org/sioc/spec/#term_earlier_version>. 
siocearlier_version :: ScopedName
siocearlier_version :: ScopedName
siocearlier_version = LName -> ScopedName
toS LName
"earlier_version"

-- | @sioc:email@ from <http://rdfs.org/sioc/spec/#term_email>. 
siocemail :: ScopedName
siocemail :: ScopedName
siocemail = LName -> ScopedName
toS LName
"email"

-- | @sioc:email_sha1@ from <http://rdfs.org/sioc/spec/#term_email_sha1>. 
siocemail_sha1 :: ScopedName
siocemail_sha1 :: ScopedName
siocemail_sha1 = LName -> ScopedName
toS LName
"email_sha1"

-- | @sioc:embeds_knowledge@ from <http://rdfs.org/sioc/spec/#term_embeds_knowledge>. 
siocembeds_knowledge :: ScopedName
siocembeds_knowledge :: ScopedName
siocembeds_knowledge = LName -> ScopedName
toS LName
"embeds_knowledge"

-- | @sioc:feed@ from <http://rdfs.org/sioc/spec/#term_feed>. 
siocfeed :: ScopedName
siocfeed :: ScopedName
siocfeed = LName -> ScopedName
toS LName
"feed"

-- | @sioc:follows@ from <http://rdfs.org/sioc/spec/#term_follows>. 
siocfollows :: ScopedName
siocfollows :: ScopedName
siocfollows = LName -> ScopedName
toS LName
"follows"

-- | @sioc:function_of@ from <http://rdfs.org/sioc/spec/#term_function_of>. 
siocfunction_of :: ScopedName
siocfunction_of :: ScopedName
siocfunction_of = LName -> ScopedName
toS LName
"function_of"

-- | @sioc:has_administrator@ from <http://rdfs.org/sioc/spec/#term_has_administrator>. 
siochas_administrator :: ScopedName
siochas_administrator :: ScopedName
siochas_administrator = LName -> ScopedName
toS LName
"has_administrator"

-- | @sioc:has_container@ from <http://rdfs.org/sioc/spec/#term_has_container>. 
siochas_container :: ScopedName
siochas_container :: ScopedName
siochas_container = LName -> ScopedName
toS LName
"has_container"

-- | @sioc:has_creator@ from <http://rdfs.org/sioc/spec/#term_has_creator>. 
siochas_creator :: ScopedName
siochas_creator :: ScopedName
siochas_creator = LName -> ScopedName
toS LName
"has_creator"

-- | @sioc:has_discussion@ from <http://rdfs.org/sioc/spec/#term_has_discussion>. 
siochas_discussion :: ScopedName
siochas_discussion :: ScopedName
siochas_discussion = LName -> ScopedName
toS LName
"has_discussion"

-- | @sioc:has_function@ from <http://rdfs.org/sioc/spec/#term_has_function>. 
siochas_function :: ScopedName
siochas_function :: ScopedName
siochas_function = LName -> ScopedName
toS LName
"has_function"

-- | @sioc:has_host@ from <http://rdfs.org/sioc/spec/#term_has_host>. 
siochas_host :: ScopedName
siochas_host :: ScopedName
siochas_host = LName -> ScopedName
toS LName
"has_host"

-- | @sioc:has_member@ from <http://rdfs.org/sioc/spec/#term_has_member>. 
siochas_member :: ScopedName
siochas_member :: ScopedName
siochas_member = LName -> ScopedName
toS LName
"has_member"

-- | @sioc:has_moderator@ from <http://rdfs.org/sioc/spec/#term_has_moderator>. 
siochas_moderator :: ScopedName
siochas_moderator :: ScopedName
siochas_moderator = LName -> ScopedName
toS LName
"has_moderator"

-- | @sioc:has_modifier@ from <http://rdfs.org/sioc/spec/#term_has_modifier>. 
siochas_modifier :: ScopedName
siochas_modifier :: ScopedName
siochas_modifier = LName -> ScopedName
toS LName
"has_modifier"

-- | @sioc:has_owner@ from <http://rdfs.org/sioc/spec/#term_has_owner>. 
siochas_owner :: ScopedName
siochas_owner :: ScopedName
siochas_owner = LName -> ScopedName
toS LName
"has_owner"

-- | @sioc:has_parent@ from <http://rdfs.org/sioc/spec/#term_has_parent>. 
siochas_parent :: ScopedName
siochas_parent :: ScopedName
siochas_parent = LName -> ScopedName
toS LName
"has_parent"

-- | @sioc:has_reply@ from <http://rdfs.org/sioc/spec/#term_has_reply>. 
siochas_reply :: ScopedName
siochas_reply :: ScopedName
siochas_reply = LName -> ScopedName
toS LName
"has_reply"

-- | @sioc:has_scope@ from <http://rdfs.org/sioc/spec/#term_has_scope>. 
siochas_scope :: ScopedName
siochas_scope :: ScopedName
siochas_scope = LName -> ScopedName
toS LName
"has_scope"

-- | @sioc:has_space@ from <http://rdfs.org/sioc/spec/#term_has_space>. 
siochas_space :: ScopedName
siochas_space :: ScopedName
siochas_space = LName -> ScopedName
toS LName
"has_space"

-- | @sioc:has_subscriber@ from <http://rdfs.org/sioc/spec/#term_has_subscriber>. 
siochas_subscriber :: ScopedName
siochas_subscriber :: ScopedName
siochas_subscriber = LName -> ScopedName
toS LName
"has_subscriber"

-- | @sioc:has_usergroup@ from <http://rdfs.org/sioc/spec/#term_has_usergroup>. 
siochas_usergroup :: ScopedName
siochas_usergroup :: ScopedName
siochas_usergroup = LName -> ScopedName
toS LName
"has_usergroup"

-- | @sioc:host_of@ from <http://rdfs.org/sioc/spec/#term_host_of>. 
siochost_of :: ScopedName
siochost_of :: ScopedName
siochost_of = LName -> ScopedName
toS LName
"host_of"

-- | @sioc:id@ from <http://rdfs.org/sioc/spec/#term_id>. 
siocid :: ScopedName
siocid :: ScopedName
siocid = LName -> ScopedName
toS LName
"id"

-- | @sioc:ip_address@ from <http://rdfs.org/sioc/spec/#term_ip_address>. 
siocip_address :: ScopedName
siocip_address :: ScopedName
siocip_address = LName -> ScopedName
toS LName
"ip_address"

-- | @sioc:last_activity_date@ from <http://rdfs.org/sioc/spec/#term_last_activity_date>. 
sioclast_activity_date :: ScopedName
sioclast_activity_date :: ScopedName
sioclast_activity_date = LName -> ScopedName
toS LName
"last_activity_date"

-- | @sioc:last_item_date@ from <http://rdfs.org/sioc/spec/#term_last_item_date>. 
sioclast_item_date :: ScopedName
sioclast_item_date :: ScopedName
sioclast_item_date = LName -> ScopedName
toS LName
"last_item_date"

-- | @sioc:last_reply_date@ from <http://rdfs.org/sioc/spec/#term_last_reply_date>. 
sioclast_reply_date :: ScopedName
sioclast_reply_date :: ScopedName
sioclast_reply_date = LName -> ScopedName
toS LName
"last_reply_date"

-- | @sioc:later_version@ from <http://rdfs.org/sioc/spec/#term_later_version>. 
sioclater_version :: ScopedName
sioclater_version :: ScopedName
sioclater_version = LName -> ScopedName
toS LName
"later_version"

-- | @sioc:latest_version@ from <http://rdfs.org/sioc/spec/#term_latest_version>. 
sioclatest_version :: ScopedName
sioclatest_version :: ScopedName
sioclatest_version = LName -> ScopedName
toS LName
"latest_version"

-- | @sioc:link@ from <http://rdfs.org/sioc/spec/#term_link>. 
sioclink :: ScopedName
sioclink :: ScopedName
sioclink = LName -> ScopedName
toS LName
"link"

-- | @sioc:links_to@ from <http://rdfs.org/sioc/spec/#term_links_to>. 
sioclinks_to :: ScopedName
sioclinks_to :: ScopedName
sioclinks_to = LName -> ScopedName
toS LName
"links_to"

-- | @sioc:member_of@ from <http://rdfs.org/sioc/spec/#term_member_of>. 
siocmember_of :: ScopedName
siocmember_of :: ScopedName
siocmember_of = LName -> ScopedName
toS LName
"member_of"

-- | @sioc:moderator_of@ from <http://rdfs.org/sioc/spec/#term_moderator_of>. 
siocmoderator_of :: ScopedName
siocmoderator_of :: ScopedName
siocmoderator_of = LName -> ScopedName
toS LName
"moderator_of"

-- | @sioc:modifier_of@ from <http://rdfs.org/sioc/spec/#term_modifier_of>. 
siocmodifier_of :: ScopedName
siocmodifier_of :: ScopedName
siocmodifier_of = LName -> ScopedName
toS LName
"modifier_of"

-- | @sioc:name@ from <http://rdfs.org/sioc/spec/#term_name>. 
siocname :: ScopedName
siocname :: ScopedName
siocname = LName -> ScopedName
toS LName
"name"

-- | @sioc:next_by_date@ from <http://rdfs.org/sioc/spec/#term_next_by_date>. 
siocnext_by_date :: ScopedName
siocnext_by_date :: ScopedName
siocnext_by_date = LName -> ScopedName
toS LName
"next_by_date"

-- | @sioc:next_version@ from <http://rdfs.org/sioc/spec/#term_next_version>. 
siocnext_version :: ScopedName
siocnext_version :: ScopedName
siocnext_version = LName -> ScopedName
toS LName
"next_version"

-- | @sioc:note@ from <http://rdfs.org/sioc/spec/#term_note>. 
siocnote :: ScopedName
siocnote :: ScopedName
siocnote = LName -> ScopedName
toS LName
"note"

-- | @sioc:num_authors@ from <http://rdfs.org/sioc/spec/#term_num_authors>. 
siocnum_authors :: ScopedName
siocnum_authors :: ScopedName
siocnum_authors = LName -> ScopedName
toS LName
"num_authors"

-- | @sioc:num_items@ from <http://rdfs.org/sioc/spec/#term_num_items>. 
siocnum_items :: ScopedName
siocnum_items :: ScopedName
siocnum_items = LName -> ScopedName
toS LName
"num_items"

-- | @sioc:num_replies@ from <http://rdfs.org/sioc/spec/#term_num_replies>. 
siocnum_replies :: ScopedName
siocnum_replies :: ScopedName
siocnum_replies = LName -> ScopedName
toS LName
"num_replies"

-- | @sioc:num_threads@ from <http://rdfs.org/sioc/spec/#term_num_threads>. 
siocnum_threads :: ScopedName
siocnum_threads :: ScopedName
siocnum_threads = LName -> ScopedName
toS LName
"num_threads"

-- | @sioc:num_views@ from <http://rdfs.org/sioc/spec/#term_num_views>. 
siocnum_views :: ScopedName
siocnum_views :: ScopedName
siocnum_views = LName -> ScopedName
toS LName
"num_views"

-- | @sioc:owner_of@ from <http://rdfs.org/sioc/spec/#term_owner_of>. 
siocowner_of :: ScopedName
siocowner_of :: ScopedName
siocowner_of = LName -> ScopedName
toS LName
"owner_of"

-- | @sioc:parent_of@ from <http://rdfs.org/sioc/spec/#term_parent_of>. 
siocparent_of :: ScopedName
siocparent_of :: ScopedName
siocparent_of = LName -> ScopedName
toS LName
"parent_of"

-- | @sioc:previous_by_date@ from <http://rdfs.org/sioc/spec/#term_previous_by_date>. 
siocprevious_by_date :: ScopedName
siocprevious_by_date :: ScopedName
siocprevious_by_date = LName -> ScopedName
toS LName
"previous_by_date"

-- | @sioc:previous_version@ from <http://rdfs.org/sioc/spec/#term_previous_version>. 
siocprevious_version :: ScopedName
siocprevious_version :: ScopedName
siocprevious_version = LName -> ScopedName
toS LName
"previous_version"

-- | @sioc:related_to@ from <http://rdfs.org/sioc/spec/#term_related_to>. 
siocrelated_to :: ScopedName
siocrelated_to :: ScopedName
siocrelated_to = LName -> ScopedName
toS LName
"related_to"

-- | @sioc:reply_of@ from <http://rdfs.org/sioc/spec/#term_reply_of>. 
siocreply_of :: ScopedName
siocreply_of :: ScopedName
siocreply_of = LName -> ScopedName
toS LName
"reply_of"

-- | @sioc:scope_of@ from <http://rdfs.org/sioc/spec/#term_scope_of>. 
siocscope_of :: ScopedName
siocscope_of :: ScopedName
siocscope_of = LName -> ScopedName
toS LName
"scope_of"

-- | @sioc:sibling@ from <http://rdfs.org/sioc/spec/#term_sibling>. 
siocsibling :: ScopedName
siocsibling :: ScopedName
siocsibling = LName -> ScopedName
toS LName
"sibling"

-- | @sioc:space_of@ from <http://rdfs.org/sioc/spec/#term_space_of>. 
siocspace_of :: ScopedName
siocspace_of :: ScopedName
siocspace_of = LName -> ScopedName
toS LName
"space_of"

-- | @sioc:subscriber_of@ from <http://rdfs.org/sioc/spec/#term_subscriber_of>. 
siocsubscriber_of :: ScopedName
siocsubscriber_of :: ScopedName
siocsubscriber_of = LName -> ScopedName
toS LName
"subscriber_of"

-- | @sioc:topic@ from <http://rdfs.org/sioc/spec/#term_topic>. 
sioctopic :: ScopedName
sioctopic :: ScopedName
sioctopic = LName -> ScopedName
toS LName
"topic"

-- | @sioc:usergroup_of@ from <http://rdfs.org/sioc/spec/#term_usergroup_of>. 
siocusergroup_of :: ScopedName
siocusergroup_of :: ScopedName
siocusergroup_of = LName -> ScopedName
toS LName
"usergroup_of"

--------------------------------------------------------------------------------
--
--  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
--
--------------------------------------------------------------------------------