Skip to content
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

Credit Value Proposal #564

Closed
cwd-mparsons opened this issue Jan 4, 2019 · 24 comments

Comments

Projects
None yet
5 participants
@cwd-mparsons
Copy link
Member

commented Jan 4, 2019

Jillian from Indiana, is currently working on a bulk upload for Indiana University East. She has brought to our attention that some their programs are a range of credit hours. For example a program ranges from 9 - 23 credit hours. Currently you can only add the single value in this field. Jillian has also mentioned they have quite a few programs that are like this.

How should we best handle this? I am sure that if Indiana has programs like this, then there are likely others who do too.

Example: https://www.iue.edu/hss/foreign-language/cert-hispanicstudies.php

@stuartasutton

This comment has been minimized.

Copy link
Contributor

commented Jan 5, 2019

It would be good for us to see 3 or 4 examples from as many sources. While this certainly does not sound like a fringe case, having examples from a few different sources would help guarantee that we are solving a widely applicable problem and in a useful way.

For credit, we currently have the following:

creditHourType (rdf:langString)
creditHourValue (xsd:float)
creditUnitType (ceterms:CreditUnit)
creditUnitValue (xsd:foat)
creditUnitDescription (rdf:langString)

We could add to cover ranges for both hours and units:

creditRangeLow (xsd:float)
creditRangeHigh (xsd:float)

Note: We need to look carefully at Schema.org for instances that might guide or cover.

@philbarker

This comment has been minimized.

Copy link

commented Jan 7, 2019

schema.org QuantitativeValue covers similar ground

@stuartasutton

This comment has been minimized.

Copy link
Contributor

commented Jan 7, 2019

Yes.

@siuc-nate

This comment has been minimized.

Copy link

commented Jan 7, 2019

Based on our 1-7-2019 meeting:

Proposal 1:

  • Use QuantitativeValue (or a derived class thereof) and its minValue and maxValue properties to enable defining a range
    • QuantitativeValue (or its derived class) would become the range for creditHourValue and creditUnitValue
{
  "ceterms:creditUnitValue": {
    "ceterms:minValue": 9,
    "ceterms:maxValue: 23
  },
  "ceterms:creditUnitDescription": "This program requires 9-23 credits."
}

Proposal 2:

  • Create a new class (i.e. CreditProfile)
  • Change the domain of the following properties to the new class:
    • creditHourType
    • creditHourValue
    • creditUnitType
    • creditUnitValue
    • creditUnitDescription
  • Add properties to this new class to allow defining a range.
    • These properties would be equivalent to the schema.org minValue and maxValue properties.
  • Create a new property to point to this profile (e.g. credit)
    • The domain of this property would be all of the classes that currently host the credit related properties listed above.
{
  "ceterms:credit": [
    {
      "ceterms:minValue": 9,
      "ceterms:maxValue": 23,
      "ceterms:creditUnitDescription": "This program requires 9-23 credits."
    },
    {
      "ceterms:value": 30,
      "ceterms:creditUnitDescription": "This program requires 30 credits."
    }
  ]
}
@siuc-nate

This comment has been minimized.

Copy link

commented Jan 15, 2019

Per our 1/15/2019 meeting:

  • We moved this to the next release so we have more time to review it, given its potential impact on data that has already been published and systems that are already implementing these properties.
  • @stuartasutton will review these properties.
@stuartasutton

This comment has been minimized.

Copy link
Contributor

commented Jan 19, 2019

Michael reports that there are 104 learning opportunity profiles and 1,523 condition profiles with credit unit/hour data.

While we'd need to discuss the level of disruption, any solution should be keep as simple as possible which, for me, would likely be: (1) picking up directly on schema.org/QuantitativeValue (no derivative, please, and no tailoring to the credit context only); and (2) a single new property credit/creditValue:

{
  "credit": {
         "@type": "QuantitiveValue", 
         "value":  25,     
         "minValue": ...,
         "maxValue": ...,
         "unitText": "Credit Hour",
         "description": "Blah, blah, blah..."
    }
}
@siuc-nate

This comment has been minimized.

Copy link

commented Mar 5, 2019

I'd prefer creditValue over credit, or maybe hasCredit is a bit more neutral?

Regardless, this will also impact the benchmark policy discussions, as such a change will effectively replace the credit-related properties currently in use.

@stuartasutton

This comment has been minimized.

Copy link
Contributor

commented Mar 5, 2019

Sigh...

@cwd-mparsons

This comment has been minimized.

Copy link
Member Author

commented Mar 15, 2019

@stuartasutton this issue had a milestone of today (March 15th).
Are we ready to start implementation on this change?

@stuartasutton

This comment has been minimized.

Copy link
Contributor

commented Mar 16, 2019

I've looked at this carefully and think we need to do the following:

  1. Add the schema.org/QuantitativeValue to the ceterms term documentation; but
  2. Use rdfs:isDefinedBy https://schema.org/ and do not put this class or its properties in the ceterms namespace ;
  3. Add the following schema.org properties: schema.org/maxValue, schema.org/minValue, schema.org/unitText and schema.org/value to our ceterms term documentation;
  4. Add a schema:domainIncludes schema.org/QuantitativeValue to each of the properties above in #4;
  5. Add schema.org/QuantitativeValue as schema:rangeIncludes of both ceterms:creditHourValue and ceterms:creditUnitValue;
  6. Do not add any additional properties from schema.org/Thing or from the ceterms namespace--keep this minimal and clean; and
  7. Leave ceterms:creditHourType, ceterms:creditUnitType and ceterms:creditUnitDescription untouched at this time.

I know that this may impact the benchmark policy discussions; but, everybody knows that changes, refinements, and updates will be ongoing and it is up to CE to develop processes that support, or at least do not hinder, such evolution.


Here are the addition/changes. Please do NOT change the definitions since we are claiming that they are defined by schema.org:

QuantitativeValue

schema:QuantitativeValue a rdf:Class ; 
   rdfs:isDefinedBy <https://schema.org/> ; 
   rdfs:label "Quantitative Value."@en-US ; 
   rdfs:comment "A point value or interval for product characteristics and other purposes."@en-US ;
   vann:usageNote "Use in CTDL to describe quantitative values such as minimum and maximum credits or credit hours etc."@en-US .

maxValue

schema:maxValue a rdf:Property ;
   rdfs:isDefinedBy <https://schema.org/> ;
   rdfs:label "Maximum Value"@en-US ;
   rdfs:comment "The upper value of some characteristic or property."@en-US ;
   schema:domainIncludes schema:QuantitativeValue ;
   schema:rangeIncludes xsd:float .

minValue

schema:minValue a rdf:Property ;
   rdfs:isDefinedBy <https://schema.org/> ;
   rdfs:label "Minimum Value"@en-US ;
   rdfs:comment "The lower value of some characteristic or property."@en-US ;
   schema:domainIncludes schema:QuantitativeValue ;
   rdfs:range xsd:float .

unitText

schema:unitText a rdf:Property ;
   rdfs:isDefinedBy <https://schema.org/> ;
   rdfs:label "Unit Text"@en-US ;
   rdfs:comment "A string or text indicating the unit of measurement."@en-US ;
   schema:domainIncludes schema:QuantitativeValue ;
   rdfs:range rdfs:Literal .

value

schema:value a rdf:Property ;
   rdfs:isDefinedBy <https://schema.org/> ;
   rdfs:label "Value"@en-US ;
   rdfs:comment "The value of the property value node."@en-US ;
   schema:domainIncludes schema:QuantitativeValue ;
   rdfs:range xsd:float .
@siuc-nate

This comment has been minimized.

Copy link

commented Mar 18, 2019

Which property should have QuantitativeValue in its range?

@stuartasutton

This comment has been minimized.

Copy link
Contributor

commented Mar 18, 2019

This is the number 5 in #564 (comment):

creditHourValue
creditUnitValue

@cwd-mparsons

This comment has been minimized.

Copy link
Member Author

commented Mar 21, 2019

A little late, but out of couriousity, why are there still creditHourValue and creditUnitValue instead of just of properties like requiredCredit and educationalCredit that have QuantitativeValue as their range? The unitText will express whether the credit is in hours or units.

Also, regarding unitText, should we have a recommended vocabulary, to minimize variations in possible values? We were already doing this for creditUnitType. Or, if retaining creditHourValue and creditUnitValue, would we then still have the controlled vocabulary for creditHourType?

In production, we have the following distinct values for:
CreditHourType

  • (blank)
  • Credit Hours
  • Quarter hours
  • Semester
  • Semester Hours
  • Contact hours
  • CEUs
  • Hours of participation
  • CEU
  • semester
  • Quarter credit hours

CreditUnitType

  • Certificate Credit
  • Continuing Education Unit
  • Degree Credit
@siuc-nate

This comment has been minimized.

Copy link

commented Mar 26, 2019

Is this a correct implementation of the example ( https://www.iue.edu/hss/foreign-language/cert-hispanicstudies.php )?:

{
	"@type": "ceterms:Certificate",
	"ceterms:requires": [
		{
			"@type": "ceterms:ConditionProfile",
			"ceterms:creditHourValue": [
				{
					"@type": "schema:QuantitativeValue",
					"schema:value": 3,
					"ceterms:description": {
						"en": "Hispanic Culture"
					}
				},
				{
					"@type": "schema:QuantitativeValue",
					"schema:minValue": 0,
					"schema:maxValue": 14,
					"ceterms:description": {
						"en": "Spanish Language"
					}
				},
				{
					"@type": "schema:QuantitativeValue",
					"schema:value": 6,
					"ceterms:description": {
						"en": "Diversity and Culture"
					}
				}
			],
			"ceterms:creditHourType": [
				{
					"@type": "ceterms:CredentialAlignmentObject",
					"ceterms:targetNode": "creditUnit:DegreeCredit",
					"ceterms:targetNodeName": {
						"en": "Degree Credit"
					}
				}
			]
		}
	]
}
@siuc-nate

This comment has been minimized.

Copy link

commented Mar 26, 2019

Proposed CTDL Updates:

  • Eliminate all 5 credit properties and start over (aka deprecate and replace)
  • Use this:
    • ceterms:creditValue
    • ceterms:creditType
    • A vocabulary to go with creditType (likely the existing vocabulary for credit unit type)
    • The Quantitative Value stuff above

Example:

{
    "@type": "ceterms:Certificate",
    "ceterms:requires": [
        {
            "@type": "ceterms:ConditionProfile",
            "ceterms:creditValue": [
                {
                    "@type": "schema:QuantitativeValue",
                    "schema:value": 3,
                    "ceterms:description": {
                        "en": "Hispanic Culture"
                    },
                    "ceterms:creditType": {
                        "@type": "ceterms:CredentialAlignmentObject",
                        "ceterms:targetNode": "creditType:DegreeCredit",
                        "ceterms:targetNodeName": {
                            "en": "Degree Credit"
                        }
                    }
                },
                {
                    "@type": "schema:QuantitativeValue",
                    "schema:minValue": 0,
                    "schema:maxValue": 14,
                    "ceterms:description": {
                        "en": "Spanish Language"
                    },
                    "ceterms:creditType": {
                        "@type": "ceterms:CredentialAlignmentObject",
                        "ceterms:targetNode": "creditType:DegreeCredit",
                        "ceterms:targetNodeName": {
                            "en": "Degree Credit"
                        }
                    }
                },
                {
                    "@type": "schema:QuantitativeValue",
                    "schema:value": 6,
                    "ceterms:description": {
                        "en": "Diversity and Culture"
                    },
                    "ceterms:creditType": {
                        "@type": "ceterms:CredentialAlignmentObject",
                        "ceterms:targetNode": "creditType:DegreeCredit",
                        "ceterms:targetNodeName": {
                            "en": "Degree Credit"
                        }
                    }
                }
            ]
        }
    ]
}
@siuc-nate

This comment has been minimized.

Copy link

commented Mar 26, 2019

Proposed Changes:

  • Deprecate ceterms:creditHourType
  • Deprecate cetermscreditHourValue
  • Deprecate ceterms:creditUnitValue
  • Keep ceterms:creditUnitType (in place of ceterms:creditType in the above example)
    • This allows us to reuse the existing CreditUnit vocabulary
  • Keep ceterms:creditUnitDescription (to enhance descriptions of ceterms:creditType where needed)

Add:

URI: ceterms:creditValue
Label: Credit Value
Description: A description of credit-related information
Domain: ceterms:ConditionProfile, ceterms:AssessmentProfile, ceterms:LearningOpportunityProfile
Range: schema:QuantitativeValue

Add the following:

QuantitativeValue

schema:QuantitativeValue a rdf:Class ; 
   rdfs:isDefinedBy <https://schema.org/> ; 
   rdfs:label "Quantitative Value."@en-US ; 
   rdfs:comment "A point value or interval for product characteristics and other purposes."@en-US ;
   vann:usageNote "Use in CTDL to describe quantitative values such as minimum and maximum credits or credit hours etc."@en-US .

maxValue

schema:maxValue a rdf:Property ;
   rdfs:isDefinedBy <https://schema.org/> ;
   rdfs:label "Maximum Value"@en-US ;
   rdfs:comment "The upper value of some characteristic or property."@en-US ;
   schema:domainIncludes schema:QuantitativeValue ;
   schema:rangeIncludes xsd:float .

minValue

schema:minValue a rdf:Property ;
   rdfs:isDefinedBy <https://schema.org/> ;
   rdfs:label "Minimum Value"@en-US ;
   rdfs:comment "The lower value of some characteristic or property."@en-US ;
   schema:domainIncludes schema:QuantitativeValue ;
   rdfs:range xsd:float .

unitText

schema:unitText a rdf:Property ;
   rdfs:isDefinedBy <https://schema.org/> ;
   rdfs:label "Unit Text"@en-US ;
   rdfs:comment "A string or text indicating the unit of measurement."@en-US ;
   schema:domainIncludes schema:QuantitativeValue ;
   rdfs:range rdfs:Literal .

value

schema:value a rdf:Property ;
   rdfs:isDefinedBy <https://schema.org/> ;
   rdfs:label "Value"@en-US ;
   rdfs:comment "The value of the property value node."@en-US ;
   schema:domainIncludes schema:QuantitativeValue ;
   rdfs:range xsd:float .
@siuc-nate

This comment has been minimized.

Copy link

commented Mar 26, 2019

Per our 3-26-2019 meeting:

The proposal in my previous post is mostly complete, however there is an open question regarding whether we should:

A) Keep the existing creditUnitType property and CreditUnit vocabulary

  • And whether or not we would keep the corresponding creditUnitDescription property

B) Deprecate creditUnitType and creditUnitDescription and replace them with creditType

  • And whether or not creditType would point to the CreditUnit vocabulary, or
  • Whether or not to deprecate the entire CreditUnit vocabulary and replace it with a Credit[name needed] vocabulary

I am in favor of keeping the existing property and vocabulary, so that we do not move too aggressively in terms of deprecating properties and risk deprecating something we may end up wishing we had kept later on.

At most, I would suggest creating a new Credit[something] vocabulary and using a new creditType property to point at it, and simply mark the creditUnitType property and CreditUnit vocabulary as unstable (and/or remove the domain of the creditUnitType property), so that it is still available if and when we need it in the future.

@stuartasutton

This comment has been minimized.

Copy link
Contributor

commented Mar 26, 2019

I am for biting the bullet:

{
    "@type": "ceterms:Certificate",
    "ceterms:requires": [
        {
            "@type": "ceterms:ConditionProfile",
            "ceterms:creditValue": [
                {
                    "@type": "schema:QuantitativeValue",
                    "schema:value": 3,
                    "schema:description": { "en": "Hispanic Culture"},
                    "schema:unitText": {
                        "@type": "ceterms:CredentialAlignmentObject",
                        "ceterms:targetNode": "creditType:DegreeCredit",
                        "ceterms:targetNodeName": {"en": "Degree Credit"}
                    }
                },
                {
                    "@type": "schema:QuantitativeValue",
                    "schema:minValue": 0,
                    "schema:maxValue": 14,
                    "schema:description": {"en": "Spanish Language"},
                    "schema:unitText": {
                        "@type": "ceterms:CredentialAlignmentObject",
                        "ceterms:targetNode": "creditType:DegreeCredit",
                        "ceterms:targetNodeName": {"en": "Degree Credit"}
                    }
                },
                {
                    "@type": "schema:QuantitativeValue",
                    "schema:value": 6,
                    "schema:description": {"en": "Diversity and Culture"},
                    "schema:unitText": {
                        "@type": "ceterms:CredentialAlignmentObject",
                        "ceterms:targetNode": "creditType:DegreeCredit",
                        "ceterms:targetNodeName": {"en": "Degree Credit"}
                    }
                }
            ]
        }
    ]
}
  1. Deprecate both creditUnitValue and creditHourValue and use meta:supersededBy referencing replacement creditValue;
  2. Define the range of creditValue as schema:QuantitativeValue;
  3. Deprecate both creditUnitType and creditHourType and use meta:supersededBy referencing replacement schema:unitText;
  4. Deprecate creditUnitDescription; and
  5. Leave the concept scheme ceterms:CreditUnit as is.
@siuc-nate

This comment has been minimized.

Copy link

commented Mar 27, 2019

https://schema.org/unitText appears to require text (xsd:string? Maybe rdf:langString) as a value, not a credential alignment object.

@siuc-nate

This comment has been minimized.

Copy link

commented Mar 27, 2019

I'm also a little leery on deprecating creditUnitDescription because it enables differentiating between a description of the value and a description of the credit type itself.

In the examples above, if someone wanted to explain something about their degreeCredit separate from a description of the value itself (in other words, not mix it in with "Diversity and Culture"), how would they do it?

Actually, in trying to capture all of the data from the example, it gets even more tricky:

{
    "@type": "ceterms:Certificate",
    "ceterms:requires": [
        {
            "@type": "ceterms:ConditionProfile",
            "ceterms:creditValue": [
                {
                    "@type": "schema:QuantitativeValue",
                    "schema:value": 3,
                    "ceterms:name": {
                        "en": "Hispanic Culture"
                    },
                    "ceterms:description": {
                        "en": "Course is taught in english."
                    },
                    "ceterms:creditType": {
                        "@type": "ceterms:CredentialAlignmentObject",
                        "ceterms:targetNode": "creditUnit:DegreeCredit",
                        "ceterms:targetNodeName": {
                            "en": "Degree Credit"
                        }
                    },
                    "ceterms:creditUnitDescription": {
                        "en": "This course's credits are required."
                    }
                },
                {
                    "@type": "schema:QuantitativeValue",
                    "schema:minValue": 0,
                    "schema:maxValue": 14,
                    "ceterms:name": {
                        "en": "Spanish Language"
                    },
                    "ceterms:description": {
                        "en": "Requirement based on proficiency, or testing out via placement exam."
                    },
                    "ceterms:creditType": {
                        "@type": "ceterms:CredentialAlignmentObject",
                        "ceterms:targetNode": "creditUnit:DegreeCredit",
                        "ceterms:targetNodeName": {
                            "en": "Degree Credit"
                        }
                    },
                    "ceterms:creditUnitDescription": {
                        "en": "Credit requirement depends on proficiency, or testing out via placement exam."
                    }
                },
                {
                    "@type": "schema:QuantitativeValue",
                    "schema:value": 6,
                    "ceterms:name": {
                        "en": "Diversity and Culture"
                    },
                    "ceterms:description": {
                        "en": "Choose two courses from the list below or other courses by approval of certificate advisors."
                    },
                    "ceterms:creditType": {
                        "@type": "ceterms:CredentialAlignmentObject",
                        "ceterms:targetNode": "creditUnit:DegreeCredit",
                        "ceterms:targetNodeName": {
                            "en": "Degree Credit"
                        }
                    },
                    "ceterms:creditUnitDescription": {
                        "en": "These credits are elective."
                    }
                }
            ]
        }
    ]
}

I suspect the correct way to describe such complex data may be to leverage existing parts of the schema (namely learning opportunity profile, condition profile, and alternativeCondition). I'll try to work up an example

@siuc-nate

This comment has been minimized.

Copy link

commented Mar 27, 2019

In working through the example, it became clear to me that we are making a mistake by trying to pack too much contextual information into what is ultimately supposed to be an expression of a value (a single value or a range), not a profile of more complex information. It should be as close to a simple number (or number pair) as we can get.

In my example below, I limit the use of QuantitativeValue to describing the range of required credits with no regard to the exact context of those credits, because it isn't necessary - that context is provided by the requirements described via condition profile and by the learning opportunities as blank nodes in the graph. For brevity, I did not include all of the blank nodes that would need to exist to convey this.

{
    "@graph": [
        {
            "@id": "https://...",
            "@type": "ceterms:Certificate",
            "ceterms:requires": [
                {
                    "@type": "ceterms:ConditionProfile",
                    "ceterms:targetLearningOpportunity": [
                        "_:TheHispanicWorld"
                    ],
                    "ceterms:creditValue": [
                        {
                            "@type": "schema:QuantitativeValue",
                            "schema:value": 3,
                            "ceterms:creditType": {
                                "@type": "ceterms:CredentialAlignmentObject",
                                "ceterms:targetNode": "creditUnit:DegreeCredit",
                                "ceterms:targetNodeName": {
                                    "en": "Degree Credit"
                                }
                            }
                        }
                    ]
                },
                {
                    "@type": "ceterms:ConditionProfile",
                    "ceterms:description": {
                        "en": "Course requirements based on proficiency or testing out via placement exam"
                    },
                    "ceterms:alternativeCondition": [
                        {
                            "@type": "ceterms:ConditionProfile",
                            "ceterms:targetLearningOpportunity": [
                                "_:LoppElementarySpanishI",
                                "_:LoppElementarySpanishII",
                                "_:LoppSecondYearSpanishI",
                                "_:LoppSecondYearSpanishII"
                            ],
                            "ceterms:creditValue": [
                                {
                                    "@type": "schema:QuantitativeValue",
                                    "schema:minValue": 0,
                                    "schema:maxValue": 14,
                                    "ceterms:description": {
                                        "en": "Credit varies depending on proficiency and placement exams."
                                    },
                                    "ceterms:creditType": {
                                        "@type": "ceterms:CredentialAlignmentObject",
                                        "ceterms:targetNode": "creditUnit:DegreeCredit",
                                        "ceterms:targetNodeName": {
                                            "en": "Degree Credit"
                                        }
                                    }
                                }
                            ]
                        },
                        {
                            "@type": "ceterms:ConditionProfile",
                            "ceterms:targetAssessment": [
                                "_:AsmtPlacementExam"
                            ]
                        }
                    ]
                },
                {
                    "@type": "ceterms:ConditionProfile",
                    "ceterms:description": {
                        "en": "Choose two courses from the list below or other courses by approval of certificate advisors."
                    },
                    "ceterms:targetLearningOpportunity": [
                        "_:LoppSpanishCulture",
                        "_:LoppWomenInHispanicCultures",
                        "_:LoppTopicsInHispanicCultures",
                        "_:LoppCrossCultural",
                        "_:LoppIntroductionToHispanicCulture",
                        "_:LoppSpanishConversation",
                        "_:LoppIntroductionToHispanicLiterature"
                    ],
                    "ceterms:creditValue": [
                        {
                            "@type": "schema:QuantitativeValue",
                            "schema:value": 6,
                            "ceterms:creditType": {
                                "@type": "ceterms:CredentialAlignmentObject",
                                "ceterms:targetNode": "creditUnit:DegreeCredit",
                                "ceterms:targetNodeName": {
                                    "en": "Degree Credit"
                                }
                            }
                        }
                    ]
                }
            ]
        },
        {
            "@type": "ceterms:LearningOpportunityProfile",
            "@id": "_:LoppElementarySpanishI",
            "ceterms:creditValue": [
                {
                    "@type": "schema:QuantitativeValue",
                    "schema:value": 4,
                    "ceterms:creditType": {
                        "@type": "ceterms:CredentialAlignmentObject",
                        "ceterms:targetNode": "creditUnit:DegreeCredit",
                        "ceterms:targetNodeName": {
                            "en": "Degree Credit"
                        }
                    }
                }
            ]
        },
        {
            "@type": "ceterms:LearningOpportunityProfile",
            "@id": "_:LoppSpanishCulture",
            "ceterms:creditValue": [
                {
                    "@type": "schema:QuantitativeValue",
                    "schema:value": 3,
                    "ceterms:creditType": {
                        "@type": "ceterms:CredentialAlignmentObject",
                        "ceterms:targetNode": "creditUnit:DegreeCredit",
                        "ceterms:targetNodeName": {
                            "en": "Degree Credit"
                        }
                    }
                }
            ]
        }
    ]
}

I also took a similar alternative approach by attempting to use our recent pathway additions:

{
    "@graph": [
        {
            "@id": "https://...",
            "@type": "ceterms:Certificate",
            "ceterms:requires": [
                {
                    "@type": "ceterms:ConditionProfile",
                    "ceterms:targetPathway": [
                        "_:Pathway"
                    ],
                    "ceterms:creditValue": [
                        {
                            "@type": "schema:QuantitativeValue",
                            "schema:minValue": 9,
                            "schema:maxValue": 23,
                            "ceterms:description": {
                                "en": "Credit varies depending on proficiency and placement exams."
                            },
                            "ceterms:creditType": {
                                "@type": "ceterms:CredentialAlignmentObject",
                                "ceterms:targetNode": "creditUnit:DegreeCredit",
                                "ceterms:targetNodeName": {
                                    "en": "Degree Credit"
                                }
                            }
                        }
                    ]
                }
            ]
        },
        {
            "@type": "ceterms:Pathway",
            "@id": "_:Pathway",
            "ceterms:hasDestinationComponent": "_:FulfillmentComponent"
        },
        {
            "@type": "ceterms:BasicComponent",
            "@id": "_:FulfillmentComponent",
            "ceterms:name": {
                "en": "Conditions for earning the required credit"
            },
            "ceterms:hasChild": [
                "_:RequiredCourse",
                "_:RequiredVariableCourses",
                "_:Electives"
            ]
        },
        {
            "@type": "ceterms:CourseComponent",
            "@id": "_:RequiredCourse",
            "ceterms:sourceData": [
                "_:HispanicCulture"
            ]
        },
        {
            "@type": "ceterms:BasicComponent",
            "@id": "_:RequiredVariableCourses",
            "ceterms:sourceData": [
                "_:RequiredVariableCourseSet",
                "_:PlacementExam"
            ],
            "ceterms:hasCondition": [
                {
                    "@type": "ceterms:ComponentCondition",
                    "ceterms:requiredNumber": 1
                }
            ]
        },
        {
            "@type": "ceterms:CourseComponent",
            "@id": "_:RequiredVariableCourseSet",
            "ceterms:sourceData": [
                "_:LoppElementarySpanishI",
                "_:LoppElementarySpanishII",
                "_:LoppSecondYearSpanishI",
                "_:LoppSecondYearSpanishII"
            ],
            "ceterms:description": "Requirement based on proficiency."
        },
        {
            "@type": "ceterms:AssessmentComponent",
            "@id": "_:PlacementExam",
            "ceterms:sourceData": [
                "_:AsmtPlacementExam"
            ]
        },
        {
            "@type": "ceterms:CourseComponent",
            "@id": "_:Electives",
            "ceterms:sourceData": [
                "_:LoppSpanishCulture",
                "_:LoppWomenInHispanicCultures",
                "_:LoppTopicsInHispanicCultures",
                "_:LoppCrossCultural",
                "_:LoppIntroductionToHispanicCulture",
                "_:LoppSpanishConversation",
                "_:LoppIntroductionToHispanicLiterature"
            ],
            "ceterms:hasCondition": [
                {
                    "@type": "ceterms:ComponentCondition",
                    "ceterms:requiredNumber": 2
                }
            ]
        },
        {
            "@type": "ceterms:LearningOpportunityProfile",
            "@id": "_:LoppElementarySpanishI",
            "ceterms:creditValue": [
                {
                    "@type": "schema:QuantitativeValue",
                    "schema:value": 4,
                    "ceterms:creditType": {
                        "@type": "ceterms:CredentialAlignmentObject",
                        "ceterms:targetNode": "creditUnit:DegreeCredit",
                        "ceterms:targetNodeName": {
                            "en": "Degree Credit"
                        }
                    }
                }
            ]
        },
        {
            "@type": "ceterms:LearningOpportunityProfile",
            "@id": "_:LoppSpanishCulture",
            "ceterms:creditValue": [
                {
                    "@type": "schema:QuantitativeValue",
                    "schema:value": 3,
                    "ceterms:creditType": {
                        "@type": "ceterms:CredentialAlignmentObject",
                        "ceterms:targetNode": "creditUnit:DegreeCredit",
                        "ceterms:targetNodeName": {
                            "en": "Degree Credit"
                        }
                    }
                }
            ]
        }
    ]
}

I don't think we should try to pack contextual data into QuantitativeValue or we risk reinventing condition profile.

@siuc-nate

This comment has been minimized.

Copy link

commented Mar 27, 2019

I would also note that the problem of "how do we avoid having a dozen blank nodes to diagram this data" is probably outside the scope of this issue and may merit an issue of its own.

@siuc-nate

This comment has been minimized.

Copy link

commented Mar 27, 2019

Per 3-27-2019 meeting, this is the proposal:

UNCHANGED

URI: ceterms:creditUnitTypeDescription
no changes

URI: ceterms:CreditUnit (and related concepts)
no changes

SUPERSEDED TERMS

URI: ceterms:creditUnitValue

remove vs:term_status vs:stable
add vs:term_status vs:deprecated
add meta:supersededBy ceterms:creditValue

URI: ceterms:creditHourValue

remove vs:term_status vs:stable
add vs:term_status vs:deprecated
add meta:supersededBy ceterms:creditValue

URI: ceterms:creditUnitType

remove vs:term_status vs:stable
add vs:term_status vs:deprecated
add meta:supersededBy schema:unitText

URI: ceterms:creditHourType

remove vs:term_status vs:stable
add vs:term_status vs:deprecated
add meta:supersededBy schema:unitText


REVISED AND NEW

URI: ceterms:creditValue

add rdfs:label "Credit Value"
add rdfs:comment "A credit-related value."
add schema:domainIncludes ceterms:ConditionProfile, ceterms:AssessmentProfile, ceterms:LearningOpportunityProfile
add schema:rangeIncludes schema:QuantitativeValue

URI: schema:QuantitativeValue

add rdfs:label "Quantitative Value"
add rdfs:isDefinedBy "https://schema.org"
add rdfs:comment "A point value or interval for product characteristics and other purposes."
add vann:usageNote "Use in CTDL to describe quantitative values such as minimum and maximum credits or credit hours, etc."

URI: schema:maxValue

add rdfs:label "Maximum Value"
add rdfs:isDefinedBy "https://schema.org"
add rdfs:comment "The upper value of some characteristic or property."
add schema:domainIncludes schema:QuantitativeValue
add schema:rangeIncludes xsd:float

URI: schema:minValue

add rdfs:label "Minimum Value"
add rdfs:isDefinedBy "https://schema.org"
add rdfs:comment "The lower value of some characteristic or property."
add schema:domainIncludes schema:QuantitativeValue
add schema:rangeIncludes xsd:float

URI: schema:unitText

add rdfs:label "Unit Text"
add rdfs:isDefinedBy "https://schema.org"
add rdfs:comment "A string or text indicating the unit of measurement."
add schema:domainIncludes schema:QuantitativeValue
add schema:rangeIncludes ceterms:CredentialAlignmentObject

URI: schema:value

add rdfs:label "Value"
add rdfs:isDefinedBy "https://schema.org"
add rdfs:comment "The value of the property value node."
add schema:domainIncludes schema:QuantitativeValue
add schema:rangeIncludes xsd:float

URI: schema:description

add rdfs:label "Description"
add rdfs:isDefinedBy "https://schema.org"
add rdfs:comment "A description of the item."
add schema:domainIncludes schema:QuantitativeValue
add schema:rangeIncludes rdf:langString


EXAMPLE

{
    "@type": "ceterms:Certificate",
    "ceterms:requires": [
        {
            "@type": "ceterms:ConditionProfile",
            "ceterms:creditValue": [
                {
                    "@type": "schema:QuantitativeValue",
                    "schema:value": 3,
                    "schema:description": { "en": "Hispanic Culture"},
                    "schema:unitText": {
                        "@type": "ceterms:CredentialAlignmentObject",
                        "ceterms:targetNode": "creditType:DegreeCredit",
                        "ceterms:targetNodeName": {"en": "Degree Credit"}
                    }
                },
                {
                    "@type": "schema:QuantitativeValue",
                    "schema:minValue": 0,
                    "schema:maxValue": 14,
                    "schema:description": {"en": "Spanish Language"},
                    "schema:unitText": {
                        "@type": "ceterms:CredentialAlignmentObject",
                        "ceterms:targetNode": "creditType:DegreeCredit",
                        "ceterms:targetNodeName": {"en": "Degree Credit"}
                    }
                },
                {
                    "@type": "schema:QuantitativeValue",
                    "schema:value": 6,
                    "schema:description": {"en": "Diversity and Culture"},
                    "schema:unitText": {
                        "@type": "ceterms:CredentialAlignmentObject",
                        "ceterms:targetNode": "creditType:DegreeCredit",
                        "ceterms:targetNodeName": {"en": "Degree Credit"}
                    }
                }
            ]
        }
    ]
}

@jkitchensSIUC jkitchensSIUC changed the title Credit Hours are a single value, and Indiana has programs that uses a range of hours Credit Value Proposal Mar 28, 2019

@CredentialEngine CredentialEngine deleted a comment from cwd-mparsons Mar 29, 2019

@CredentialEngine CredentialEngine deleted a comment from cwd-mparsons Mar 29, 2019

@siuc-nate

This comment has been minimized.

Copy link

commented Apr 10, 2019

These changes have been made in pending CTDL and noted in the history tracking.

Note: Currently the rdf:isDefinedBy designations are left out, as I don't have a means of handling them - see #595.

@siuc-nate siuc-nate closed this Apr 10, 2019

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.