{-# OPTIONS --safe --cubical #-}
module OWL2.Examples.WebProtege.Primer where
open import OWL2.Prelude
open import OWL2.Check.Result using (Clean)
import OWL2.Syntax as S
open S
open import OWL2.DirectSemantics
import OWL2.DirectSemantics.Expansions as Expansions
import OWL2.Examples.Cardinality as Cardinality
import OWL2.Examples.Family as Family
import OWL2.Examples.HasKey as HasKey
import OWL2.Examples.PropertyChain as PropertyChain
import OWL2.Examples.WebProtege.Annotations as A
import OWL2.Examples.WebProtege.CardinalityRestrictions
as CardinalityRestrictions
import OWL2.Examples.WebProtege.Constructors as Constructors
import OWL2.Examples.WebProtege.KeyRestrictions as KeyRestrictions
import OWL2.Portable.CardinalityRestrictions as CR
import OWL2.Portable.Check.WebProtege as WebProtegeCheck
import OWL2.Portable.KeyRestrictions as KR
import OWL2.Portable.Semantics as PS
import OWL2.Portable.Syntax as P
import OWL2.Portable.WebProtegeReport as Report
record PrimerConstructorCoverage : Type₀ where
constructor mkPrimerConstructorCoverage
field
negativeObjectPropertyAssertionSupported :
SatisfiesAxiom Family.familyInterpretation
(negativeObjectPropertyAssertion
Family.HasWife
Family.Bill
Family.Mary)
propertyChainSupported :
SatisfiesAxiom PropertyChain.chainInterpretation
(subObjectPropertyOf
PropertyChain.ParentParentChain
PropertyChain.HasGrandparent)
propertyChainEntailsGrandparent :
evalObjectProperty
PropertyChain.chainInterpretation
PropertyChain.HasGrandparent
PropertyChain.aliceObject
PropertyChain.carolObject
hasKeySupported :
SatisfiesAxiom HasKey.keyInterpretation
(hasKey HasKey.PersonC HasKey.PersonSSNKey)
keyIdentifiesAlias :
ObjectEq
HasKey.keyInterpretation
(individualDenotation HasKey.keyInterpretation HasKey.Alice)
(individualDenotation HasKey.keyInterpretation HasKey.AliceAlias)
inverseObjectPropertiesSupported :
SatisfiesAxiom Constructors.constructorInterpretation
(Expansions.inverseObjectPropertiesExpansion
Constructors.HasPart
Constructors.PartOf)
inverseObjectPropertiesEntailPartOf :
evalObjectProperty
Constructors.constructorInterpretation
Constructors.PartOf
Constructors.imageDatasetObject
Constructors.textDatasetObject
disjointUnionSupported :
AllList
(Expansions.disjointUnionExpansion
Constructors.Dataset
Constructors.TextDatasetC
Constructors.ImageDatasetC
[])
(SatisfiesAxiom Constructors.constructorInterpretation)
objectExactCardinalitySupported :
SatisfiesAxiom Cardinality.cardinalityInterpretation
(classAssertion
Cardinality.ExactlyOneSpouse
Cardinality.Alice)
dataExactCardinalitySupported :
SatisfiesAxiom Cardinality.cardinalityInterpretation
(classAssertion
Cardinality.ExactlyOneAge
Cardinality.Alice)
portableKeyRestrictionsAccepted :
KR.NoKeyRestrictionViolations KeyRestrictions.acceptedKeyDocument
portableCardinalityRestrictionsAccepted :
CR.NoUnsafeCardinalityRestrictions
CardinalityRestrictions.cardinalityDocument
primerConstructorCoverage : PrimerConstructorCoverage
primerConstructorCoverage =
mkPrimerConstructorCoverage
Family.billDoesNotHaveWifeMary
PropertyChain.parentParentImpliesGrandparent
PropertyChain.aliceHasGrandparentCarolByChain
HasKey.personSSNKeySatisfied
HasKey.aliceAliasSameByKey
Constructors.inverseObjectPropertiesSatisfied
Constructors.imagePartOfTextByInverseExpansion
Constructors.disjointUnionExpansionSatisfied
Cardinality.aliceHasExactlyOneSpouse
Cardinality.aliceHasExactlyOneAge
KeyRestrictions.acceptedKeyNoRestrictions
CardinalityRestrictions.cardinalityDocumentAllSafe
primerPortableCardinalityRestrictionCount :
CR.reportCardinalityRestrictionCount
CardinalityRestrictions.cardinalityReport
≡ 6
primerPortableCardinalityRestrictionCount =
CardinalityRestrictions.cardinalityDocumentRestrictionCount
primerPortableKeyStructuralViolationCount :
KR.keyRestrictionStructuralViolationCount
KeyRestrictions.acceptedKeyReport
≡ 0
primerPortableKeyStructuralViolationCount =
KeyRestrictions.acceptedKeyStructuralViolationCount
primerPortableKeyDeclarationCoverageGapCount :
KR.keyRestrictionDeclarationCoverageGapCount
KeyRestrictions.acceptedKeyReport
≡ 0
primerPortableKeyDeclarationCoverageGapCount =
KeyRestrictions.acceptedKeyDeclarationCoverageGapCount
primerPortableKeyPropertyRoleConflictCount :
KR.keyRestrictionPropertyRoleUsageConflictCount
KeyRestrictions.acceptedKeyReport
≡ 0
primerPortableKeyPropertyRoleConflictCount =
KeyRestrictions.acceptedKeyPropertyRoleConflictCount
curatedByIRI : P.IRI
curatedByIRI =
P.iri "https://example.org/webprotege#curatedBy"
curatedBy : P.ObjectPropertyName
curatedBy =
P.named curatedByIRI
CuratedBy : P.ObjectPropertyExpression
CuratedBy =
P.objectProperty curatedBy
reviewScoreLiteral : P.Literal
reviewScoreLiteral =
P.typedLiteral "5" CardinalityRestrictions.xsdString
curatorCuratedByChain : P.ObjectPropertyChain
curatorCuratedByChain =
P.objectPropertyChain
(P.twoOrMore A.HasCurator CuratedBy [])
sourceObjectExactCardinality : P.ClassExpression
sourceObjectExactCardinality =
P.objectExactCardinality
1
A.HasCurator
(present A.ContributorC)
sourceDataExactCardinality : P.ClassExpression
sourceDataExactCardinality =
P.dataExactCardinality
1
CardinalityRestrictions.ReviewScore
(present CardinalityRestrictions.StringRange)
sourceDisjointUnionAxiom sourceInverseObjectPropertiesAxiom
sourcePropertyChainAxiom sourceNegativeObjectPropertyAxiom
sourceNegativeDataPropertyAxiom sourceHasKeyAxiom
sourceObjectExactCardinalityAxiom sourceDataExactCardinalityAxiom :
P.Axiom
sourceDisjointUnionAxiom =
P.disjointUnion
A.dataset
(P.twoOrMore A.CuratedDatasetC A.ContributorC [])
sourceInverseObjectPropertiesAxiom =
P.inverseObjectProperties A.HasCurator CuratedBy
sourcePropertyChainAxiom =
P.subObjectPropertyOf
(P.subObjectPropertyChain curatorCuratedByChain)
A.HasCurator
sourceNegativeObjectPropertyAxiom =
P.negativeObjectPropertyAssertion
A.HasCurator
A.draftDataset
A.alice
sourceNegativeDataPropertyAxiom =
P.negativeDataPropertyAssertion
CardinalityRestrictions.ReviewScore
A.draftDataset
reviewScoreLiteral
sourceHasKeyAxiom =
P.hasKey
A.CuratedDatasetC
(P.propertyKey
(A.HasCurator ∷ [])
(CardinalityRestrictions.ReviewScore ∷ []))
sourceObjectExactCardinalityAxiom =
P.classAssertion sourceObjectExactCardinality A.datasetOne
sourceDataExactCardinalityAxiom =
P.classAssertion sourceDataExactCardinality A.datasetOne
primerSourceDeclarationAxioms :
List (P.Annotated P.Axiom)
primerSourceDeclarationAxioms =
A.declarationAxioms
++ CardinalityRestrictions.localDeclarationAxioms
++ (A.axiom (P.declaration (P.objectPropertyEntity curatedBy)) ∷ [])
primerSourceConstructorAxioms :
List (P.Annotated P.Axiom)
primerSourceConstructorAxioms =
A.axiom sourceDisjointUnionAxiom
∷ A.axiom sourceInverseObjectPropertiesAxiom
∷ A.axiom sourcePropertyChainAxiom
∷ A.axiom sourceNegativeObjectPropertyAxiom
∷ A.axiom sourceNegativeDataPropertyAxiom
∷ A.axiom sourceHasKeyAxiom
∷ A.axiom sourceObjectExactCardinalityAxiom
∷ A.axiom sourceDataExactCardinalityAxiom
∷ []
primerSourceDocument : P.OntologyDocument
primerSourceDocument =
P.ontologyDocument
(A.webProtegePrefix ∷ [])
(P.ontology
(P.ontologyIRI A.webProtegeOntologyIRI absent)
[]
[]
(primerSourceDeclarationAxioms ++ primerSourceConstructorAxioms))
primerSourceCheckResult : WebProtegeCheck.WebProtegeDocumentCheckResult
primerSourceCheckResult =
WebProtegeCheck.checkWebProtegeDocument primerSourceDocument
primerSourceCheckClean : Clean primerSourceCheckResult
primerSourceCheckClean =
tt
primerSourceReport : Report.DocumentReport
primerSourceReport =
WebProtegeCheck.webProtegeReportFromClean
primerSourceCheckResult
primerSourceCheckClean
primerSourceCompleteWebProtegeDocument :
Report.CompleteWebProtegeDocument primerSourceDocument
primerSourceCompleteWebProtegeDocument =
WebProtegeCheck.completeWebProtegeDocumentFromClean
primerSourceCheckResult
primerSourceCheckClean
primerSourceCompleteSemanticTranslation :
PS.CompleteSemanticTranslation primerSourceDocument
primerSourceCompleteSemanticTranslation =
refl
primerSourceCardinalityReport :
CR.CardinalityRestrictionsReport
primerSourceCardinalityReport =
CR.reportCardinalityRestrictions primerSourceDocument
primerSourceCardinalityRestrictionCount :
CR.reportCardinalityRestrictionCount
primerSourceCardinalityReport
≡ 2
primerSourceCardinalityRestrictionCount =
refl
primerSourceUnsafeCardinalityIssueCount :
CR.reportUnsafeCardinalityRestrictionIssueCount
primerSourceCardinalityReport
≡ 0
primerSourceUnsafeCardinalityIssueCount =
refl
primerSourceCardinalitiesSafe :
CR.NoUnsafeCardinalityRestrictions primerSourceDocument
primerSourceCardinalitiesSafe =
tt*
primerSourceKeyReport :
KR.KeyRestrictionsReport
primerSourceKeyReport =
KR.reportKeyRestrictions primerSourceDocument
primerSourceKeyRestrictionsAccepted :
KR.NoKeyRestrictionViolations primerSourceDocument
primerSourceKeyRestrictionsAccepted =
KR.noKeyRestrictionViolations tt* tt* tt*
sourceDisjointUnionTranslationShape :
PS.translateAxiom sourceDisjointUnionAxiom ≡
present
( S.equivalentClasses
( S.namedClass A.dataset
∷ S.objectUnionOf
(S.namedClass A.curatedDataset ∷
S.namedClass A.contributor ∷ [])
∷ [] )
∷ S.disjointClasses
(S.namedClass A.curatedDataset ∷
S.namedClass A.contributor ∷ [])
∷ [] )
sourceDisjointUnionTranslationShape =
refl
sourceInverseObjectPropertiesTranslationShape :
PS.translateAxiom sourceInverseObjectPropertiesAxiom ≡
present
( S.equivalentObjectProperties
( PS.translateObjectPropertyExpression A.HasCurator
∷ S.objectInverseOf
(PS.translateObjectPropertyExpression CuratedBy)
∷ [] )
∷ [] )
sourceInverseObjectPropertiesTranslationShape =
refl
sourcePropertyChainTranslationShape :
PS.translateAxiom sourcePropertyChainAxiom ≡
present
( S.subObjectPropertyOf
(S.subObjectPropertyChain
(PS.translateObjectPropertyExpression A.HasCurator)
(PS.translateObjectPropertyExpression CuratedBy)
[])
(PS.translateObjectPropertyExpression A.HasCurator)
∷ [] )
sourcePropertyChainTranslationShape =
refl
sourceNegativeObjectPropertyTranslationShape :
PS.translateAxiom sourceNegativeObjectPropertyAxiom ≡
present
( S.negativeObjectPropertyAssertion
(PS.translateObjectPropertyExpression A.HasCurator)
A.draftDataset
A.alice
∷ [] )
sourceNegativeObjectPropertyTranslationShape =
refl
sourceNegativeDataPropertyTranslationShape :
PS.translateAxiom sourceNegativeDataPropertyAxiom ≡
present
( S.negativeDataPropertyAssertion
( PS.translateDataPropertyExpression
CardinalityRestrictions.ReviewScore )
A.draftDataset
reviewScoreLiteral
∷ [] )
sourceNegativeDataPropertyTranslationShape =
refl
sourceHasKeyTranslationShape :
PS.translateAxiom sourceHasKeyAxiom ≡
present
( S.hasKey
(S.namedClass A.curatedDataset)
(S.propertyKey
(PS.translateObjectPropertyExpression A.HasCurator ∷ [])
( PS.translateDataPropertyExpression
CardinalityRestrictions.ReviewScore ∷ [] ))
∷ [] )
sourceHasKeyTranslationShape =
refl
sourceObjectExactCardinalityTranslationShape :
PS.translateAxiom sourceObjectExactCardinalityAxiom ≡
present
( S.classAssertion
(S.objectExactCardinality
1
(PS.translateObjectPropertyExpression A.HasCurator)
(present (S.namedClass A.contributor)))
A.datasetOne
∷ [] )
sourceObjectExactCardinalityTranslationShape =
refl
sourceDataExactCardinalityTranslationShape :
PS.translateAxiom sourceDataExactCardinalityAxiom ≡
present
( S.classAssertion
(S.dataExactCardinality
1
( PS.translateDataPropertyExpression
CardinalityRestrictions.ReviewScore )
(present (S.datatype CardinalityRestrictions.xsdString)))
A.datasetOne
∷ [] )
sourceDataExactCardinalityTranslationShape =
refl