Skip to main content
. 2021 Apr 2;21(7):2452. doi: 10.3390/s21072452
Algorithm 1 Privacy Attribute Matching
    Input: Terms_of_Service ToS
    Output: Privacy_Policy PPolicy
  • 1:

    PRule; PPolicy

  • 2:

    DCategory=ToS.requestedData.hasDataCategory

  • 3:

    PRule=DCategory.hasPrivacyRule

  • 4:

    intendedPA = {Purpose, Operation, Disclosure, Retention, Condition}

  • 5:

    for eachipa in intendedPA do

  • 6:

    switch (ipa)

  • 7:

    case Purpose:

  • 8:

      if (ToS.requestedPurposeProhibitedPurposesandToS.requestedPurposeAllowedPurposes) then

  • 9:

        PPolicy.effPurp=ToS.requestedPurpose

  • 10:

       else

  • 11:

       return PPolicy

  • 12:

       end if

  • 13:

    case Operation:

  • 14:

      if (ToS.requestedOperationProhibitedOperationsandToS.requestedOperationAllowedOperations) then

  • 15:

        PPolicy.effOpe=ToS.requestedOperation

  • 16:

       else

  • 17:

       return PPolicy

  • 18:

       end if

  • 19:

    case Disclosure:

  • 20:

      if (ToS.requestedDisclosureProhibitedDisclosuresandToS.requestedDisclosureAllowedDisclosures) then

  • 21:

        PPolicy.effDisc=ToS.requestedDisclosure

  • 22:

       else

  • 23:

       return PPolicy

  • 24:

       end if

  • 25:

    case Retention:

  • 26:

      if (ToS.requestedRetention<PRule.retention) then

  • 27:

        PPolicy.effRet=ToS.requestedRetention

  • 28:

       else

  • 29:

       return PPolicy

  • 30:

       end if

  • 31:

    case Condition:

  • 32:

      if (PRule.icond.allowedRole == ToS.hasInitiator.hasRole) then

  • 33:

        PPolicy.effCondition=PRule.icond

  • 34:

       else

  • 35:

       return PPolicy

  • 36:

       end if

  • 37:

    end switch

  • 38:

    end for

  • 39:

    PPolicy.hasRequestedOutput= output

  • 40:

    PPolicy.hasAccessDecision= Permit

  • 41:

    PPolicy.hasPrivacyObligation=PRule.hasPrivacyRuleObligation

  • 42:

    returnPPolicy