Sign.hs revision bf47922605c34ddeb05f77188da395945ac2a2c8
66267bcb678a9c341272c323b299337bcfdb7cc5Christian Maeder{- |
66267bcb678a9c341272c323b299337bcfdb7cc5Christian MaederModule : $Header$
66267bcb678a9c341272c323b299337bcfdb7cc5Christian MaederCopyright : Heng Jiang, Uni Bremen 2007
66267bcb678a9c341272c323b299337bcfdb7cc5Christian MaederLicense : GPLv2 or higher, see LICENSE.txt
e7ce154edb906685b3fa7f6c0a764e18a4658068Christian Maeder
66267bcb678a9c341272c323b299337bcfdb7cc5Christian MaederMaintainer : Christian.Maeder@dfki.de
ffd01020a4f35f434b912844ad6e0d6918fadffdChristian MaederStability : provisional
66267bcb678a9c341272c323b299337bcfdb7cc5Christian MaederPortability : portable
66267bcb678a9c341272c323b299337bcfdb7cc5Christian Maeder
fb69cd512eab767747f109e40322df7cae2f7bdfChristian MaederSignatures and sentences for OWL 2
fb69cd512eab767747f109e40322df7cae2f7bdfChristian Maeder-}
fb69cd512eab767747f109e40322df7cae2f7bdfChristian Maeder
e8ffec0fa3d3061061bdc16e44247b9cf96b050fChristian Maedermodule OWL2.Sign where
fb69cd512eab767747f109e40322df7cae2f7bdfChristian Maeder
e8ffec0fa3d3061061bdc16e44247b9cf96b050fChristian Maederimport OWL2.AS
e8ffec0fa3d3061061bdc16e44247b9cf96b050fChristian Maederimport qualified Data.Set as Set
5e26bfc8d7b18cf3a3fa7b919b4450fb669f37a5Christian Maederimport qualified Data.Map as Map
e8ffec0fa3d3061061bdc16e44247b9cf96b050fChristian Maeder
e8ffec0fa3d3061061bdc16e44247b9cf96b050fChristian Maedertype ClassID = IRIreference
05e2a3161e4589a717c6fe5c7306820273a473c5Christian Maedertype DatatypeID = IRIreference
05e2a3161e4589a717c6fe5c7306820273a473c5Christian Maedertype IndividualID = IRIreference
08b724e8dcbba5820d80f0974b9a5385140815baChristian Maedertype DataRoleIRI = IRIreference
e8ffec0fa3d3061061bdc16e44247b9cf96b050fChristian Maedertype IndividualRoleIRI = IRIreference
712f5e5ca1c3a5cfdd28518154ecf2dd0994cdb5Christian Maedertype AnnotationPropertyID = IRIreference
da245da15da78363c896e44ea97a14ab1f83eb50Christian Maeder
f71a8dcf94fd9eb3c9800e16dcdc5e5ff74e5c22Christian Maederdata Sign = Sign
e8ffec0fa3d3061061bdc16e44247b9cf96b050fChristian Maeder { concepts :: Set.Set ClassID
024621f43239cfe9629e35d35a8669fad7acbba2Christian Maeder -- ^ a set of classes
c00adad2e9459b422dee09e3a2bddba66b433bb7Christian Maeder , datatypes :: Set.Set DatatypeID -- ^ a set of datatypes
36c6cc568751e4235502cfee00ba7b597dae78dcChristian Maeder , objectProperties :: Set.Set IndividualRoleIRI
36c6cc568751e4235502cfee00ba7b597dae78dcChristian Maeder -- ^ a set of object properties
36c6cc568751e4235502cfee00ba7b597dae78dcChristian Maeder , dataProperties :: Set.Set DataRoleIRI
e7ce154edb906685b3fa7f6c0a764e18a4658068Christian Maeder -- ^ a set of data properties
e7ce154edb906685b3fa7f6c0a764e18a4658068Christian Maeder , annotationRoles :: Set.Set AnnotationPropertyID
e7ce154edb906685b3fa7f6c0a764e18a4658068Christian Maeder , individuals :: Set.Set IndividualID -- ^ a set of individual
05e2a3161e4589a717c6fe5c7306820273a473c5Christian Maeder -- ^ a set of axioms of subconceptrelations, domain an drenge
05e2a3161e4589a717c6fe5c7306820273a473c5Christian Maeder -- ^of roles, functional roles and concept membership
05e2a3161e4589a717c6fe5c7306820273a473c5Christian Maeder , prefixMap :: PrefixMap
024621f43239cfe9629e35d35a8669fad7acbba2Christian Maeder } deriving (Show, Eq, Ord)
cf3232cec840a6945667bdb06f5b47b22243bc8fChristian Maeder
36c6cc568751e4235502cfee00ba7b597dae78dcChristian Maederdata SignAxiom =
36c6cc568751e4235502cfee00ba7b597dae78dcChristian Maeder Subconcept ClassExpression ClassExpression -- subclass, superclass
36c6cc568751e4235502cfee00ba7b597dae78dcChristian Maeder | Role (DomainOrRangeOrFunc (RoleKind, RoleType)) ObjectPropertyExpression
36c6cc568751e4235502cfee00ba7b597dae78dcChristian Maeder | Data (DomainOrRangeOrFunc ()) DataPropertyExpression
36c6cc568751e4235502cfee00ba7b597dae78dcChristian Maeder | Conceptmembership IndividualID ClassExpression
36c6cc568751e4235502cfee00ba7b597dae78dcChristian Maeder deriving (Show, Eq, Ord)
36c6cc568751e4235502cfee00ba7b597dae78dcChristian Maeder
36c6cc568751e4235502cfee00ba7b597dae78dcChristian Maederdata RoleKind = FuncRole | RefRole deriving (Show, Eq, Ord)
fb50920e621bfc152c19147cb52077ff06b3526bChristian Maeder
2a598ff0c1b7b51c33aee7029b43bc5cfcbea6b8Christian Maederdata RoleType = IRole | DRole deriving (Show, Eq, Ord)
5e26bfc8d7b18cf3a3fa7b919b4450fb669f37a5Christian Maeder
715ffaf874309df081d1e1cd8e05073fc1227729Christian Maederdata DesKind = RDomain | DDomain | RIRange deriving (Show, Eq, Ord)
05e2a3161e4589a717c6fe5c7306820273a473c5Christian Maeder
05e2a3161e4589a717c6fe5c7306820273a473c5Christian Maederdata DomainOrRangeOrFunc a =
05e2a3161e4589a717c6fe5c7306820273a473c5Christian Maeder DomainOrRange DesKind ClassExpression
fb50920e621bfc152c19147cb52077ff06b3526bChristian Maeder | RDRange DataRange
fb50920e621bfc152c19147cb52077ff06b3526bChristian Maeder | FuncProp a
5e26bfc8d7b18cf3a3fa7b919b4450fb669f37a5Christian Maeder deriving (Show, Eq, Ord)
05e2a3161e4589a717c6fe5c7306820273a473c5Christian Maeder
05e2a3161e4589a717c6fe5c7306820273a473c5Christian MaederemptySign :: Sign
05e2a3161e4589a717c6fe5c7306820273a473c5Christian MaederemptySign = Sign
05e2a3161e4589a717c6fe5c7306820273a473c5Christian Maeder { concepts = Set.empty
05e2a3161e4589a717c6fe5c7306820273a473c5Christian Maeder , datatypes = Set.empty
fb69cd512eab767747f109e40322df7cae2f7bdfChristian Maeder , objectProperties = Set.empty
cf3232cec840a6945667bdb06f5b47b22243bc8fChristian Maeder , dataProperties = Set.empty
c18e9c3c6d5039618f1f2c05526ece84c7794ea3Christian Maeder , annotationRoles = Set.empty
05e2a3161e4589a717c6fe5c7306820273a473c5Christian Maeder , individuals = Set.empty
05e2a3161e4589a717c6fe5c7306820273a473c5Christian Maeder , prefixMap = Map.empty
05e2a3161e4589a717c6fe5c7306820273a473c5Christian Maeder }
715ffaf874309df081d1e1cd8e05073fc1227729Christian Maeder
fb69cd512eab767747f109e40322df7cae2f7bdfChristian Maeder-- ignoe ontologyID
36c6cc568751e4235502cfee00ba7b597dae78dcChristian MaederdiffSig :: Sign -> Sign -> Sign
36c6cc568751e4235502cfee00ba7b597dae78dcChristian MaederdiffSig a b =
36c6cc568751e4235502cfee00ba7b597dae78dcChristian Maeder a { concepts = concepts a `Set.difference` concepts b
36c6cc568751e4235502cfee00ba7b597dae78dcChristian Maeder , datatypes = datatypes a `Set.difference` datatypes b
36c6cc568751e4235502cfee00ba7b597dae78dcChristian Maeder , objectProperties = objectProperties a `Set.difference` objectProperties b
36c6cc568751e4235502cfee00ba7b597dae78dcChristian Maeder , dataProperties = dataProperties a `Set.difference` dataProperties b
36c6cc568751e4235502cfee00ba7b597dae78dcChristian Maeder , annotationRoles = annotationRoles a `Set.difference` annotationRoles b
36c6cc568751e4235502cfee00ba7b597dae78dcChristian Maeder , individuals = individuals a `Set.difference` individuals b
31242f7541fd6ef179e4eb5be7522ddf54ae397bChristian Maeder }
31242f7541fd6ef179e4eb5be7522ddf54ae397bChristian Maeder
05e2a3161e4589a717c6fe5c7306820273a473c5Christian MaederaddSign :: Sign -> Sign -> Sign
31242f7541fd6ef179e4eb5be7522ddf54ae397bChristian MaederaddSign toIns totalSign =
628310b42327ad76ce471caf0dde6563d6fa6307Christian Maeder totalSign {
36c6cc568751e4235502cfee00ba7b597dae78dcChristian Maeder concepts = Set.union (concepts totalSign)
36c6cc568751e4235502cfee00ba7b597dae78dcChristian Maeder (concepts toIns),
36c6cc568751e4235502cfee00ba7b597dae78dcChristian Maeder datatypes = Set.union (datatypes totalSign)
36c6cc568751e4235502cfee00ba7b597dae78dcChristian Maeder (datatypes toIns),
36c6cc568751e4235502cfee00ba7b597dae78dcChristian Maeder objectProperties = Set.union (objectProperties totalSign)
36c6cc568751e4235502cfee00ba7b597dae78dcChristian Maeder (objectProperties toIns),
36c6cc568751e4235502cfee00ba7b597dae78dcChristian Maeder dataProperties = Set.union (dataProperties totalSign)
628310b42327ad76ce471caf0dde6563d6fa6307Christian Maeder (dataProperties toIns),
628310b42327ad76ce471caf0dde6563d6fa6307Christian Maeder annotationRoles = Set.union (annotationRoles totalSign)
715ffaf874309df081d1e1cd8e05073fc1227729Christian Maeder (annotationRoles toIns),
05e2a3161e4589a717c6fe5c7306820273a473c5Christian Maeder individuals = Set.union (individuals totalSign)
05e2a3161e4589a717c6fe5c7306820273a473c5Christian Maeder (individuals toIns)
05e2a3161e4589a717c6fe5c7306820273a473c5Christian Maeder }
05e2a3161e4589a717c6fe5c7306820273a473c5Christian Maeder
ffd01020a4f35f434b912844ad6e0d6918fadffdChristian MaederisSubSign :: Sign -> Sign -> Bool
ffd01020a4f35f434b912844ad6e0d6918fadffdChristian MaederisSubSign a b =
ffd01020a4f35f434b912844ad6e0d6918fadffdChristian Maeder Set.isSubsetOf (concepts a) (concepts b)
f0742398d4587242b1a115de113cd17f63dcb6d0Christian Maeder && Set.isSubsetOf (datatypes a) (datatypes b)
e1839fb37a3a2ccd457464cb0dcc5efd466dbe22Christian Maeder && Set.isSubsetOf (objectProperties a) (objectProperties b)
715ffaf874309df081d1e1cd8e05073fc1227729Christian Maeder && Set.isSubsetOf (dataProperties a) (dataProperties b)
05e2a3161e4589a717c6fe5c7306820273a473c5Christian Maeder && Set.isSubsetOf (annotationRoles a) (annotationRoles b)
05e2a3161e4589a717c6fe5c7306820273a473c5Christian Maeder && Set.isSubsetOf (individuals a) (individuals b)
2a598ff0c1b7b51c33aee7029b43bc5cfcbea6b8Christian Maeder
88ece6e49930670e8fd3ee79c89a2e918d2fbd0cChristian MaedersymOf :: Sign -> Set.Set Entity
05e2a3161e4589a717c6fe5c7306820273a473c5Christian MaedersymOf s = Set.unions
05e2a3161e4589a717c6fe5c7306820273a473c5Christian Maeder [ Set.map (Entity Class) $ concepts s
c1031ac42b3f3d7d0fe7d9d6b54423a092d473a0Christian Maeder , Set.map (Entity Datatype) $ datatypes s
e7ce154edb906685b3fa7f6c0a764e18a4658068Christian Maeder , Set.map (Entity ObjectProperty) $ objectProperties s
e7ce154edb906685b3fa7f6c0a764e18a4658068Christian Maeder , Set.map (Entity DataProperty) $ dataProperties s
05e2a3161e4589a717c6fe5c7306820273a473c5Christian Maeder , Set.map (Entity NamedIndividual) $ individuals s
e7ce154edb906685b3fa7f6c0a764e18a4658068Christian Maeder , Set.map (Entity AnnotationProperty) $ annotationRoles s ]
e7ce154edb906685b3fa7f6c0a764e18a4658068Christian Maeder