-
Notifications
You must be signed in to change notification settings - Fork 8
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
Credential Approval Lists Domain Model and Terms Proposal #806
Comments
Two options. Both examples show the use of a Credential bnode to "append" data to a real record, which is a separate use case, but is useful to illustrate. First, the one we discussed last week involving the use of a single generic Member class. The purpose of the Member class is to enable indicating the startDate and endDate for each item on the list (meaning the date the item is added to the list, and the date that item comes off the list). Pros:
Cons:
Second, one that I am floating as a means of reducing the total number of entities required if it is true that most state CALs will be updated in batches (ie lots of credentials will have the same startDate/endDate). This has the danger that if each item does have a distinct startDate/endDate, you will end up with a lot of single-item Collections. Pros:
Cons:
It would be possible/valid to do both, I guess, so that we have a generic Member class for cases where each item needs its own startDate/endDate but could otherwise take advantage of sub-Collections for groups. But if we don't need to have a Member class, we shouldn't create one. This should be driven by the real data. What does the actual data (in particular, ETPLs for various states) look like? |
[with the usual grumbling about bnodes] I would be happy with either of the approaches Nate suggests, though as he points out option 1 is more robust. |
I concur with Phil in terms of option 1. BUT, I do not think that the Members should be bNodes since the Credentials etc. need to be able to reference the member nodes (hasProxy or hasETPLproxy). |
We have to discuss and we have to agree to discuss this in a way that begins with the members of a collection for a list are not bnodes. The members of a list are not just repeating for example a credential as described by a credentialing organizations. The Proxy classes are for describing, for example, a credential in the context of the list irrespective of what the credential organizations publishes. The credential organization may not even be aware their credential is on a list. @siuc-nate thanks for the JSON examples but it would be more helpful if they were realistic. Using ProPath. Every single list member of an ETPL has a unique start and end date unless they just happened to be approved on thes same day. On the other hand, there can be lists that all get approved on the same day and end on the same day...e,g,, an annual list of quality credentials. |
At the RDF level, those would still be the real classes, so that modeling (
I believe this is a separate issue: the need for one or more entities to be able to contribute data about a resource that they do not have publishing permission for. That problem has a broader scope than Credential Approval Lists, so whatever solution we come up with there is what would be utilized here. Currently, that solution is via bnodes. If a more ideal solution arises, we would use it instead. For example, if we came up with some kind of a "composite credential" or "wiki credential" or even decided to allow any state to publish anything about anything - whatever the solution may be, it would be used here. So for now we can stick with bnodes (as that is what we use with transfer value, which would also be affected by such a TBD solution) knowing that that may change once we solve the broader problem.
The examples are reflective of what the real JSON would be. That constraint (everything having its own date range) would fall under the first example, which uses the Member class. I did use the real propath data as part of constructing those examples. |
With regard to the ProPath data, there are two ways to look at it: Current State: Currently, Illinois publishes all of the data. Because of this, the records in the registry published by Illinois have CTIDs and can thus, for our purposes, be considered authoritative records (as in "trusted third party publisher" style). That means that there don't need to be any intermediary Credential bnodes because Illinois can simply provide everything it wants to say in the "real" records. Future State: Where Illinois wants to go is to have the "real" records be published by the "real" authoritative sources - the education/training institutions themselves, rather than having Illinois publish on their behalf. In this case, if the records don't provide everything Illinois wants to say, then (and only then) does Illinois need to provide some source for the information (whether that's a bnode, wiki credential, RDF Star, whatever solution we come up with - that is a separate issue) that can be, in some sense, appended to the "real"/authoritative record. Regardless of what approach solves the problem of "how do multiple sources say things about the same credential", the Collection/Member approach is the same. |
Let me try to summarise some points from yesterdays call, to check that we all took on board the same points
Looking at the options: @siuc-nate if I am right about point 2.2 I think that it means bnodes won't work. I think that is Jeanne's point of objection. Combining the information about the resource into the proxies (as in Jeanne's diagram) doesn't work if there is any information about the member that is only true in the context of that specific collection/CAL -- proxies by purpose only exist only in the context of a single list and so they cannot be the the solution to point 2.2. In the long term a solution around named graphs could be built, but in the timescale of dealling with CALs we probably need some ad hoc solution based on providing supplementary information about a resource and an indication that that information is not for general consumption. We could create new classes that are for additonal data only -- that's potentially a lot of new classes, though there might be a way of creating "shadow" data classes with URI based on a different stem but the same name as the RDF classes. I don't much like this idea, it seems like just having a database of JSON objects -- or worse, a mixed RDF / JSON object database. We could try to come up with something that works as linked data (i.e. RDF) and uses existing classes and has (a) an indication that it is not to be exposed as a description of a credential except for certain CALs; and (b) a link to the resource about which it provides additonal information. That final option would look a lot like Nate's suggestion, but not bnodes and with an additional property. It would require coding additional logic in order to display the right information for CALs and for the resources outwith CALs. |
I guess I'm mostly struggling to understand @jeannekitchens's aversion to bnodes that brought on all of yesterday's conversation. Specifically, what do they fail to accomplish that you are trying to accomplish? Is it a technical problem? The semantics of it work just fine. |
@siuc-nate, as an RDF based approach, the initial assumption should be that everything is identified by URI (i.e., not a bNode) unless there are sound reason for them to be a bNode. We seem to always get it backwards starting with the assumption everything is represented by a bNode and assigned a URI only when a good case is made for doing so. Please note that I managed those two sentences without ever uttering CTID. So, my question is: What's the strong RDF modeling case for these to be bNodes? |
Doesn't hasReplacementData actually mean that the member data for a specific attribute in a collection contradicts the source. It isn't "replacing" anything. |
This is a by-product of our entire infrastructure being CTID-based. In essence, we don't assign URIs unless we need to because assigning URIs is synonymous with assigning CTIDs because of how all of our stuff functions. Is this (and possibly other things) a problem that might be solved if we had a good way to supply URIs to any (reasonable) entity that were GUID-based instead of CTID-based? That would obviously have a lot of implications beyond the scope of this issue but is that something we need to look at in earnest?
Primarily that they are supplying extra data ranging from a single property to a full-fledged record (for lack of a better term) about the entity that may or may not exist in the registry. Deliberately highlighting their nature as non-primary records seems like what we want to do, even if that data is coming from a state. In other words, they specifically are not "the thing", they are "data about the thing" - hence not having a CTID. I am less concerned about them being or not being bnodes - my main concern is that we do not invent new doppelganger classes purely to avoid having bnodes. We need to use the existing classes that we already have regardless of whether instances of those classes have a URI (CTID-based or otherwise). I am only focused on bnodes because, as I said, our infrastructure limits our capacity for URIs to things that have CTIDs so we don't have a choice unless we want to look at much deeper technical changes to our systems.
I'm not quite sure what you mean. The intent there was to handle the use case (that I am not certain of the origin/purpose of) that Phil mentioned about needing to provide data that should be interpreted as replacing other data in the main record. In other words, if the record in the registry lists 50 locations, the bnode on the other end of "hasReplacementData" lists just 3, and the consumer of the data should interpret that as "ignore what the main record says for this property and just look at these 3 locations". If that's something we need to be able to do, then that is one way to do it. |
I still believe we have two separate use cases:
The former seems very well-suited to being a bnode as we discussed last week, though whether such a bnode sits between the Member and the real record or hangs off of some other property of the Member class is something we can discuss here. The latter seems to be where we have trouble due to the whole CTID/URI/infrastructure/RDF thing. Phil has mentioned that a bnode could be a short-term solution to this, and I agree (admittedly with some bias). I also agree that a longer-term solution should be explored, but that is, again, beyond the scope of this issue. It probably deserves its own github thread. |
Nate, it is important to keep information about the resource's membership of the list separate from the information the resource: your two use cases only cover the information about the resource. For example in:
those values for startDate and endDate only apply to one list, and so cannot be merged with data about the resource in any other list or outside of the list. This isn't altering or extending data about the resource as covered in your use cases, because it is not even data about the resource, any more that the name of the owner is data about the resource -- it is data about something else that is related to the resource. To you previous q about "where/when did overwriting/removing information come up?": I had in mind Jeanne's example of a L.Opp offered at locations in 50 states, but the list author only wanted to show one of those locations, the one in their state. |
Yes, the distinction is intentional. The simple Member class covers both of them by pointing to one mechanism or another (or just directly to the "real record" when no such data-altering mechanism is needed). |
@stuartasutton @philbarker @mparsons-ce @siuc-nate based on the CAL Task Group meeting held this week where I went over the model linked in the 1st comment in detail. See slides 8 - 17. , (1) Using Member as a class label is too confusing. I think MemberProfile may address this issue. See updated draft model dated Dec 16th below based on Task group feedback. |
Since the word "profile" has no solid meaning in the CTDL context, I have no problem with the change. |
Agreed, though I have wondered whether we might build off
schema.org/ListItem <https://schema.org/ListItem>
Phil
On 17/12/2021 14:39, Stuart Sutton wrote:
Since the word "profile" has no solid meaning in the CTDL context, I
have no problem with the change.
—
Reply to this email directly, view it on GitHub
<#806 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAFAU763PTWPR2FGKMJU7NLURNDSLANCNFSM5J6OAAOA>.
Triage notifications on the go with GitHub Mobile for iOS
<https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675>
or Android
<https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub>.
You are receiving this because you were mentioned.Message ID:
***@***.***>
--
Phil Barker <http://people.pjjk.net/phil>. http://people.pjjk.net/phil
CETIS LLP <https://www.cetis.org.uk>: a cooperative consultancy for
innovation in education technology.
PJJK Limited <https://www.pjjk.co.uk>: technology to enhance learning;
information systems for education.
CETIS is a co-operative limited liability partnership, registered in
England number OC399090
PJJK Limited is registered in Scotland as a private limited company,
number SC569282.
|
@philbarker Item Profile would make more sense to this group. An item in a collection and item on a list....makes more sense. Member immediately brings to mind people who join something. |
Just to gently push back since we have to live with the solution in many Collection contexts other than this one, please google "member of a collection". "Member" as a property is quite common in the context of collections. Not all collections are lists. |
Good point, well made.
Get TypeApp for Android
On 17 Dec 2021, 22:04, at 22:04, Stuart Sutton ***@***.***> wrote:
Just to gently push back since we have to live with the solution in
many Collection contexts other than this one, please google "member of
a collection". "Member" as a property is quite common in the context of
collections. Not all collections are lists.
--
Reply to this email directly or view it on GitHub:
#806 (comment)
You are receiving this because you were mentioned.
Message ID:
***@***.***>
|
Using Member Profile would imply that the class describes the thing rather than just pointing to it, which we want to avoid. Maybe "CollectionMember" instead? |
Also, where did the "reference____" properties in the above diagram originate? You would need one of those properties for every top-level class in CTDL, which we want to avoid. If anything, use |
I have a somewhat tagential question, and, again, I am not sure I can articulate it very well. My question stems from whether the distinctions between "primary source" and "secondary source" are generally applicable or whether they are artifacts of how the Registry is implemented. We have had to be on guard since the beginning to not confuse implementation artifacts of the Registry with notions that belong to the generally applicable CTDL (i.e., confusing Registry fringe cases with more general needs). In a way, the circumstance that led to splitting off some Registry needs into the "meta" namespace. If a property to indicate "primary source" or "secondary source" (as well as my pet peeve of "top-level" entity) is a Registry implementation artifact, it really belong to a separate Credential Registry namespace--currently the "meta" namespace. Such a separate namespace is exactly what we'd suggest to some 3rd party that had implementation-centric needs for a property or two--i.e., define them locally in your own namespace and integrate them into your CTDL application profile schema. In sum, in its relationship to the CTDL, the Registry is a 3rd party that may have peculiar needs of its own that shouldn't clutter the CTDL namespace. |
It's more of a CE policy thing, though it's reflected in the Registry data. If we stick with a purely envelope based approach, then I don't think there would be any CTDL changes needed (hence no explicit property in my domain model). If we did decide to create some kind of sd____ property(ies), then I'm fine with putting them in the |
Per our 1/11/2022 meeting:
Re: Same As
Re: List Type/Collection Type
Re: Secondary source publishing
|
Nate, couldn't we still use membershipCriteria and declare it a subproperty of ceterms:condition? While using ceterms:condition instead of membershipCriteria would not be incorrect, it is certainly less precise. |
@siuc-nate please update the explanatory diagram to correspond to all changes discussed over the past week. It's my understanding that, for example, a conclusion was reached that QA Credential did not belong in the model. Instead, the membershipCriteria property should point to a ConditionProfile where the ceterms:condition property could identify the array of membership criteria statements. With QA Credential out of the model, the jurisdiction property could be placed on Collection pointing to the Jurisdiction Profile. Include any/all updates not currently reflected here by duplicating the diagram and updating the date. Also, please create a clean proposal with all proposed updates. https://drive.google.com/file/d/17jM34lLSYTQPX9cSoWHbJduTdWsnR3cu/view?usp=sharing |
@stuartasutton It depends on whether it would be a subproperty of ceterms:condition or a new property that points to Condition Profile as @jeannekitchens suggests above. We should probably discuss it since we did spend a fair chunk of time on this one in last week's meeting. |
@siuc-nate please update the diagram and only use a new property if we really need it. Rather than you all rehash what you discussed last week, far more productive to have diagram and proposal to tweak rather than start all over again. Thanks! |
@siuc-nate @stuartasutton @philbarker @mparsons-ce Per a meeting today with Indiana Commission for Higher Education, we need to add at least one more Concept to CollectionCategory. Likely, we need to add a very similar concept for K-12. I added it to the [Google doc version of this proposal URI: collectionCategory:StateApprovedPostsecondaryPrograms Depending on how this ends up better labeled and defined, create a similar URI/Label/Definition for State Approved K-12 Programs. I couldn't think of a less verbose label or definition so edits are welcomed. I'm also sending this to Indiana Commission for Higher Education. Also, adding them to techncial team interview list. |
It's a little overly-specific, I think. I would suggest broadening it, either to "state approved programs" or just "state approved" so that we don't end up needing terms for state-approved things other than postsecondary programs. There's also the international considerations (e.g. "province-approved programs") and other scopes ("nationally approved programs" or "city approved programs" etc). Maybe just "Government Approved Programs"? But then "approved" has kind of a special meaning in CTDL too, would we also need to consider "accredited" programs and such? Also, more of a general thought than a reaction to this specifically: Should we explore requiring some kind of threshold of demand/usage for list types before adding them to CTDL? Keep in mind that anyone can publish and use their own list type concepts. |
I asked Ken during our meeting and he confirmed the specificity. All states have a postsecondary approval agency. His list would be approved state agency approved postsecondary programs. Every state has a similar set up for K-12. As we talked about with Indiana today. The state will be publishing their approved program directory and the colleges such as Ivy Tech are expected to publish as well. Where applicable Indiana will link to primary source records. |
I'm sort of with Nate on the specificity. Doesn't "StateApproved" and "PostsecondaryPrograms" make this very US-centric. "State Approved" vs "Government or Quasi-Government Approved", "Postsecondary Programs"/"Tertiary Programs". I'd lay bets that these list notions in this general context have applicability in places other than the US. |
To be fair, we do already have the notion of "state" in several existing terms:
However, all of the financial aid terms there use "state, province, region, and/or local government" in their definitions, and the in-state/out-of-state terms use "state or province", so maybe we can still soften up the proposed term a bit. |
Please provide edits to the definition that accomplish the Collection being
a state approved postsecondary program list. That's what they'll
specifically publish as stated by the person directly overseeing the
Indiana agency that is responsible for postsecondary program.approval. Nate
and Mike heard him state this. So, every state in the US has a state
agency specifically responsibile for postsecondary program approval and
they create lists of the state approved postsecondary programs. Many other
countries have ministries that approve programs that would be akin to a
federal approval here. However. Here postsecondary program approval occurs
at the state level.
…On Tue, Jan 25, 2022, 3:04 PM Stuart Sutton ***@***.***> wrote:
I'm sort of with Nate on the specificity. Doesn't "StateApproved" and
"PostsecondaryPrograms" make this very US-centric. "State Approved" vs
"Government or Quasi-Government Approved", "Postsecondary
Programs"/"Tertiary Programs". I'd lay bets that these list notions in this
general context have applicability in places other than the US.
—
Reply to this email directly, view it on GitHub
<#806 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AE7SXVWSKZLQFFHZDTJJ753UX4T6TANCNFSM5J6OAAOA>
.
Triage notifications on the go with GitHub Mobile for iOS
<https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675>
or Android
<https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub>.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
I don't mind this level specificity in the context of a concept scheme, it can be useful to get precisely the right results. If we get several specific terms in the same area we can always add a broader term. Absent other context, most people outwith the US will read "state" as "national" -- so "state, province, region, and/or local government" will be read to include national government -- and in many countries these are a function of national government (or their agencies). If you need a definition that excludes sovereign state then you could call it an administrative division. |
I am less concerned with the label than the definition and I certainly am not questioning whether every U.S. state has one of these; but the definition should be broadened to make sure it is internationally accommodating with text such as "state, province, region, and/or local government". We don't want to exclude "sovereign states" since the U.S. states are, in fact considered sovereign states. |
I have attempted to capture, in pending CTDL and the history tracking, all of the changes documented both in this thread and in the planning google doc. There were some differences here and there and some gaps I had to fill in, so it would be good to review these before we close the issue. |
Add Comment for CollectionMember per @philbarker: |
Also: Include CAL terms in the policy updates and update the concepts per Scott's advisement: Also: Add comment/usage note to ETPL concept indicating that it is to be used for collections of programs/courses despite the label/definition referring to providers |
Changes made per the above posts:
Policy:
|
This is to intiate the CAL Terms Proposal.
The text was updated successfully, but these errors were encountered: