@prefix : <https://ontology.inferal.com/modules/data-classification/> .
@prefix conf: <https://ontology.inferal.com/modules/confidence/> .
@prefix dpv: <https://w3id.org/dpv#> .
@prefix ex: <https://example.com/data-classification/> .
@prefix pd: <https://w3id.org/dpv/pd#> .
@prefix prov: <http://www.w3.org/ns/prov#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

ex:customer-pii-rule-set
    a :ClassificationRuleSet ;
    rdfs:label "Customer PII rule set" ;
    :hasClassificationRule ex:email-name-rule ;
    :hasClassificationRule ex:tax-identifier-rule .

ex:email-name-rule
    a :ClassificationRule ;
    rdfs:label "Email field-name rule" ;
    :matchesFieldPart :LocalNamePart ;
    :matchesFieldPart :LabelPart ;
    :matchesPattern "email" ;
    :assignsPersonalDataCategory pd:EmailAddress ;
    :assignsClassificationStatus :Confirmed ;
    :assignsSensitivityLevel :ModerateSensitivity ;
    :assignsConfidence 0.98 ;
    :assignsReviewRequirement false ;
    :ruleOrder 10 ;
    :ruleRationale "Fields explicitly named email are treated as confirmed email-address fields in this example rule set." .

ex:tax-identifier-rule
    a :ClassificationRule ;
    rdfs:label "Tax identifier rule" ;
    :matchesFieldPart :LocalNamePart ;
    :matchesPattern "tax_identifier" ;
    :assignsPersonalDataCategory pd:OfficialID ;
    :assignsClassificationStatus :Candidate ;
    :assignsSensitivityLevel :RestrictedSensitivity ;
    :assignsConfidence 0.97 ;
    :assignsReviewRequirement true ;
    :ruleOrder 20 ;
    :ruleRationale "Tax identifier fields are high-risk candidates that require review before being asserted as official identifiers." .

ex:customer-table
    a ex:Table ;
    ex:name "customer" .

ex:customer-email-field
    a :DataElement ;
    :sourceAsset ex:customer-table ;
    :path "customer.email" .

ex:customer-ssn-field
    a :DataElement ;
    :sourceAsset ex:customer-table ;
    :path "customer.tax_identifier" .

ex:customer-favorite-color-field
    a :DataElement ;
    :sourceAsset ex:customer-table ;
    :path "customer.favorite_color" .

ex:customer-city-field
    a :DataElement ;
    :sourceAsset ex:customer-table ;
    :path "customer.city" .

ex:customer-note-field
    a :DataElement ;
    :sourceAsset ex:customer-table ;
    :path "customer.note" .

ex:customer-profile-photo-field
    a :DataElement ;
    :sourceAsset ex:customer-table ;
    :path "customer.profile_photo_url" .

ex:email-review
    a :DetectionActivity ;
    :hasDetectionMethod :ManualReview ;
    prov:wasAssociatedWith ex:privacy-analyst .

ex:ssn-scan
    a :DetectionActivity ;
    :hasDetectionMethod :RegexDetection ;
    prov:used ex:customer-table-sample ;
    prov:used ex:customer-pii-rule-set ;
    prov:wasAssociatedWith ex:pii-scanner-v3 .

ex:favorite-color-scan
    a :DetectionActivity ;
    :hasDetectionMethod :SchemaNameDetection ;
    prov:used ex:customer-schema ;
    prov:wasAssociatedWith ex:pii-scanner-v3 .

ex:restricted-personal-data-policy
    a :DataPolicy ;
    rdfs:label "Restricted personal data policy" .

ex:us-customer-privacy-context
    a :ClassificationContext ;
    rdfs:label "US customer privacy context" .

ex:email-classification
    a :DataClassification ;
    :classifiesElement ex:customer-email-field ;
    :classifiedByRule ex:email-name-rule ;
    :personalDataCategory pd:EmailAddress ;
    :hasSensitivityLevel :ModerateSensitivity ;
    :reviewedBy ex:email-review ;
    :confidenceAssessment ex:email-classification-confidence ;
    :hasClassificationStatus :Confirmed ;
    :hasClassificationContext ex:us-customer-privacy-context ;
    :requiresReview false ;
    :requiresMeasure :IdentityLinkagePseudonymisation ;
    :requiresMeasure dpv:AccessControlMethod .

ex:email-classification-confidence
    a conf:ConfidenceAssessment ;
    conf:assessmentTarget ex:email-classification ;
    conf:confidenceValue ex:email-classification-confidence-value ;
    prov:wasGeneratedBy ex:email-review .

ex:email-classification-confidence-value
    a conf:ProbabilityValue ;
    conf:scale conf:ProbabilityScale ;
    conf:score 1.0 .

ex:city-classification
    a :DataClassification ;
    :classifiesElement ex:customer-city-field ;
    :personalDataCategory pd:City ;
    :hasSensitivityLevel :ModerateSensitivity ;
    :confidenceAssessment ex:city-classification-confidence ;
    :hasClassificationStatus :Confirmed ;
    :hasClassificationContext ex:us-customer-privacy-context ;
    :requiresReview false ;
    :requiresMeasure :AttributeGroupingObfuscation .

ex:city-classification-confidence
    a conf:ConfidenceAssessment ;
    conf:assessmentTarget ex:city-classification ;
    conf:confidenceValue ex:city-classification-confidence-value .

ex:city-classification-confidence-value
    a conf:ProbabilityValue ;
    conf:scale conf:ProbabilityScale ;
    conf:score 0.94 .

ex:note-classification
    a :DataClassification ;
    :classifiesElement ex:customer-note-field ;
    :personalDataCategory pd:Communication ;
    :hasSensitivityLevel :HighSensitivity ;
    :confidenceAssessment ex:note-classification-confidence ;
    :hasClassificationStatus :Confirmed ;
    :hasClassificationContext ex:us-customer-privacy-context ;
    :requiresReview false ;
    :requiresMeasure :ValueElision .

ex:note-classification-confidence
    a conf:ConfidenceAssessment ;
    conf:assessmentTarget ex:note-classification ;
    conf:confidenceValue ex:note-classification-confidence-value .

ex:note-classification-confidence-value
    a conf:ProbabilityValue ;
    conf:scale conf:ProbabilityScale ;
    conf:score 0.89 .

ex:profile-photo-classification
    a :DataClassification ;
    :classifiesElement ex:customer-profile-photo-field ;
    :personalDataCategory pd:Profile ;
    :hasSensitivityLevel :HighSensitivity ;
    :confidenceAssessment ex:profile-photo-classification-confidence ;
    :hasClassificationStatus :Confirmed ;
    :hasClassificationContext ex:us-customer-privacy-context ;
    :requiresReview false ;
    :requiresMeasure :ElementElision .

ex:profile-photo-classification-confidence
    a conf:ConfidenceAssessment ;
    conf:assessmentTarget ex:profile-photo-classification ;
    conf:confidenceValue ex:profile-photo-classification-confidence-value .

ex:profile-photo-classification-confidence-value
    a conf:ProbabilityValue ;
    conf:scale conf:ProbabilityScale ;
    conf:score 0.86 .

ex:ssn-classification
    a :DataClassification ;
    :classifiesElement ex:customer-ssn-field ;
    :classifiedByRule ex:tax-identifier-rule ;
    :candidatePersonalDataCategory pd:OfficialID ;
    :hasSensitivityLevel :RestrictedSensitivity ;
    :detectedBy ex:ssn-scan ;
    :confidenceAssessment ex:ssn-classification-confidence ;
    :hasClassificationStatus :Candidate ;
    :hasClassificationContext ex:us-customer-privacy-context ;
    :requiresReview true ;
    :requiresMeasure dpv:Encryption ;
    :requiresLegalBasis dpv:Consent ;
    :prohibitedProcessing dpv:Share ;
    :triggersPolicy ex:restricted-personal-data-policy .

ex:ssn-classification-confidence
    a conf:ConfidenceAssessment ;
    conf:assessmentTarget ex:ssn-classification ;
    conf:confidenceValue ex:ssn-classification-confidence-value ;
    prov:wasGeneratedBy ex:ssn-scan .

ex:ssn-classification-confidence-value
    a conf:ProbabilityValue ;
    conf:scale conf:ProbabilityScale ;
    conf:score 0.97 .

ex:favorite-color-classification
    a :DataClassification ;
    :classifiesElement ex:customer-favorite-color-field ;
    :candidatePersonalDataCategory pd:Preference ;
    :hasSensitivityLevel :LowSensitivity ;
    :detectedBy ex:favorite-color-scan ;
    :confidenceAssessment ex:favorite-color-classification-confidence ;
    :hasClassificationStatus :Rejected ;
    :requiresReview false .

ex:favorite-color-classification-confidence
    a conf:ConfidenceAssessment ;
    conf:assessmentTarget ex:favorite-color-classification ;
    conf:confidenceValue ex:favorite-color-classification-confidence-value ;
    prov:wasGeneratedBy ex:favorite-color-scan .

ex:favorite-color-classification-confidence-value
    a conf:ProbabilityValue ;
    conf:scale conf:ProbabilityScale ;
    conf:score 0.31 .
