w3c-ccg / citizenship-vocab

A vocabulary for asserting Verifiable Credentials related to citizenship status

Home Page:https://w3c-ccg.github.io/citizenship-vocab/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Expand vocabulary for other immigration documents

wonjchoe opened this issue · comments

Please add additional terms to be used in other immigration documents, to include Employment Authorization Document (EAD) and naturalization (becoming a citizen) / citizenship (deriving citizenship from parents) certificates. These documents are USCIS-specific but the concepts should apply to other nations and use cases.

Additionally, adding use cases for EAD, naturalization and citizenship certificates would be useful.

@wonjchoe Acknowledged. I'll make a PR for this.

@wonjchoe, I've done some initial comparison work between what's in this vocabulary now and what may be needed given a typical "green card" or similar document. I'd love additional thoughts on the comparison below before I work up a PR to the spec:

Existing terms

Data Terminology
Date of Birth birthdate
Sex/Gender gender
First Name givenName
Last Name lastName

Proposed terms

"Easy" additions

Data Terminology
Middle Name https://schema.org/additionalName
Height https://schema.org/height + https://schema.org/QuantitativeValue
City of Residence https://schema.org/homeLocation
Country of Former Nationality https://schema.org/nationality + some time quantifier for "former"?
Filing Location (City) https://schema.org/PostalAddress + related to issuance moment?
Filing Location (State) https://schema.org/PostalAddress + related to issuance moment?

More complex additions

Most of these will need to lean on new relationship terms in addition to property terms--which will likely need discussion around conceptual approaches that may differ--i.e Schema.org's "action" based approach to "marriage" history.

Data Terminology
Marital Status https://dbpedia.org/property/maritalStatus OR https://id.nlm.nih.gov/mesh/D017533.html
Marriage Certificate Number identifier + (perhaps) https://schema.org/MarryAction
Ceremony Location within location on https://schema.org/MarryAction
Ceremony City within location on https://schema.org/MarryAction
Ceremony State within location on https://schema.org/MarryAction
Ceremony Date endTime on https://schema.org/MarryAction

I'm working on expanding the example from the spec to show what this would look like in practice.

I'd love any additional terminology and data modeling thoughts you'd have time to share, though, @wonjchoe.

Thanks!
🎩

The stack of PRs above contain all the fields mentioned in the previous comment. I worked to simplify the marriage related terms a bit, and would happily do the same with height if that flexibility isn't needed or if there's an interest in trusting some additional parsing of strings like 5ft 6in or 5 foot 6 inches. The current model provides clearer accuracy (though the property names could be improved to use Good Relations hasUnitOfMeasurement rather than the shorter, but less clear unitCode).

Here is the full JSON example that would appear at the top of the spec if all the above PRs made it in unchanged:

{
  "@context": [
    "https://www.w3.org/2018/credentials/v1",
    "contexts/citizenship-v1.jsonld"
  ],
  "id": "https://issuer.oidp.uscis.gov/credentials/83627465",
  "type": ["VerifiableCredential", "PermanentResidentCard"],
  "issuer": "did:example:28394728934792387",
  "identifier": "83627465",
  "name": "Permanent Resident Card",
  "description": "Government of Example Permanent Resident Card.",
  "issuanceDate": "2019-12-03T12:19:52Z",
  "expirationDate": "2029-12-03T12:19:52Z",
  "credentialSubject": {
    "id": "did:example:b34ca6cd37bbf23",
    "type": ["PermanentResident", "Person"],
    "givenName": "JOHN",
    "additionalName": "JACOB",
    "familyName": "SMITH",
    "gender": "Male",
    "image": "data:image/png;base64,iVBORw0KGgo...kJggg==",
    "residentSince": "2015-01-01",
    "lprCategory": "C09",
    "lprNumber": "999-999-999",
    "commuterClassification": "C1",
    "birthCountry": "Bahamas",
    "birthDate": "1958-07-17",
    "height": [
      {
        "type": ["QuantitativeValue"],
        "unitCode": "ft",
        "value": 5
      }, {
        "type": ["QuantitativeValue"],
        "unitCode": "in",
        "value": 11
      }
    ],
    "residence": {
      "type": ["PostalAddress"],
      "addressLocality": "Boston",
      "addressRegion": "Massachusetts"
    },
    "filingLocation": {
      "type": ["PostalAddress"],
      "addressLocality": "Washington, D.C.",
      "addressRegion": "District of Columbia",
      "addressCountry": "US"
    },
    "formerNationality": "BS",
    "maritalStatus": "married",
    "marriageCertificateNumber": "A123B",
    "marriageLocation": {
      "type": ["PostalAddress"],
      "addressLocality": "Nassau",
      "addressRegion": "New Providence",
      "addressCountry": "BS"
    }
  },
  "proof": {
     "type": "Ed25519Signature2018",
     "created": "2020-01-30T03:32:15Z",
     "jws": "eyJhbGciOiJFZERTQSIsI...wRG2fNmAx60Vi4Ag",
     "proofPurpose": "assertionMethod",
     "verificationMethod": "did:example:28394728934792387#keys-7f83he7s8"
  }
}

This has been addressed via PRs #20 and #21. I expect we will need to refine these changes, but the initial request is now complete; closing.