New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
CTDL-ASN Export of CASE framework can result in malformed character errors. #135
Comments
Publisher Name is being imported from CASE into the Publisher field here, which expects a URL. I suspect that's why the export isn't working for this framework. |
So here's the situation: ceasn:identifier is equivalentTo asn:identifier So, we import IMS CASE identifiers, assigning them to schema:identifier as a text string (permitted). As such, the natural casting from schema:identifier to ceasn:identifier is inhibited by the refined requirement for a URI, and causes this error message. @stuartasutton Is only allowing that cast from schema:identifier to ceasn:identifier if it is a URL the appropriate path forward? |
@Lomilar, schema.org/identifier has an owl:equivalentProperty to http://purl.org/dc/terms/identifier which is defined with a range of http://www.w3.org/2000/01/rdf-schema#Literal. However, schema.org has a rangeIncludes of both URL and Text. ASN simply uses the DC terms and says nothing about range while ctdl-identifier uses xsd:anyURI. But, given the schema.org range includes both URL and Text, I'm not sure of the issue unless CaSS only handles part of the schema.org ranges. I don't have a problem with the current ctdl-asn position since it's explicitly defined as
This is intended to differentiate the @ id of a competency node from some alternative URI; e.g., the URI assigned to a node in the Common Core State Standards by its creators would be an "alternative URI" to the @ id for that node in the ASN-US repository. |
Ah, some more background may help. In IMS CASE, identifier seems to be used in the dc sense. https://opensalt.net/ims/case/v1p0/CFDocuments/c5fb3436-d7cb-11e8-824f-0242ac160002 {
"uri": "https://opensalt.net/ims/case/v1p0/CFDocuments/c5fb3436-d7cb-11e8-824f-0242ac160002",
"identifier": "c5fb3436-d7cb-11e8-824f-0242ac160002",
"lastChangeDateTime": "2018-10-24T20:31:24+00:00",
...
} When we convert CASE to CASS, we cast case:identifier to schema:identifier. https://cass.credentialengine.org/api/data/b2679040117f9e708f6f477359e505d5 {
"@context": "http://schema.cassproject.org/0.3",
"@id": "https://opensalt.net/ims/case/v1p0/CFDocuments/c5fb3436-d7cb-11e8-824f-0242ac160002",
...
"schema:dateModified": "2018-10-24T20:31:24+00:00",
"schema:identifier": "c5fb3436-d7cb-11e8-824f-0242ac160002",
"schema:inLanguage": "en",
"schema:publisher": "Public Consulting Group"
} When we attempt to cast schema:identifier to ceasn:identifier based on the @context, the ceasn schema requires a URL in the JSON-LD @context via this attribute: {
"ceasn:identifier": {
"@type": "@id"
},
} This causes an error in the JSON-LD Translation Processor as a UUID isn't a URI. We can put some manual code in that checks schema:identifier for a URI before casting it to ceasn:identifier, just wondering if there is a better way to handle this. Probably also appropriate now to rope in @siuc-nate, as he may have context for this. |
The declaration of ceasn:identifier as follows is correct since it is defined as an ..."alternative URI": {
"ceasn:identifier": {
"@type": "@id"
},
} The functional pattern here is that CASE |
I think those are the pathways. |
I don't see anything in the schema that would really fit a generic GUID identifier (aside from maybe ceasn:codedNotation, but that is a bit of a stretch). It seems to me that while the casting from case:identifier to schema:identifier is appropriate, the casting from schema:identifier to ceasn:identifier should only happen if the identifier is a URI (as you pointed out above). In cases where it is not, perhaps one of these would work:
|
TODO: Translation from schema:identifier to ceasn:identifier should only happen if the identifier is a URI. Transferring to cassproject/cass to be addressed by the CTDL-ASN export. |
Relevant: |
I went ahead and added code to only translate schema:identifier and schema:publisher to ceasn if they are URLs. If ceasn:altIdentifier is added, we can amend it. This will allow for CTDL-ASN JSON-LD export of CASE frameworks in the meantime though. |
See:
https://cass.credentialengine.org/api/ceasn/b2679040117f9e708f6f477359e505d5
The text was updated successfully, but these errors were encountered: