Social Finance Fund Companion Module version 2 - brief for developers #142
Pinned
mrgarth
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
SFF Companion Module Version 2.0
This release of the Social Finance Fund (SFF) Companion Module v2.0 introduces significant breaking changes to enhance data modelling and consistency, primarily addressing awkward modelling of
EquityDeservingGroup,PopulationServed, andCharacteristicclasses, as well as inconsistencies in code list development patterns.The key solutions involve simplifying the data model by replacing
sff:EquityDeservingGroupwithcids:Characteristicand adhering to a consistentcids:Codeandskos:Conceptstructure for code lists (taxonomies).Issue 1: Modelling EquityDeservingGroup
The initial modelling issue stemmed from the differences between ontology constraints for context-free versus context-dependent classes, and from having separate code lists for
PopulationServedandEquityDeservingGroup, despite one being a subset of the other. Bothsff:EquityDeservingGroupandPopulationServedconceptually map well to thecids:Characteristicclass, but were modelled as their own classes/lists in Version 1.cids:Characteristicis a context-dependent class, meaning it may use properties with unique, organization-specific values. This risks data conflicts if the same URI is reused by multiple organizations. In Version 1,EquityDeservingGrouphad issues with its ontology definition implying direct use of a code list for its URIs, despite being modelled as context-dependent, and with itshasCharacteristicproperty incorrectly pointing to instances of the context-dependentCharacteristicclass.Solution: simplifying the model {#solution:-simplifying-the-model}
Version 2 resolves these issues with a simpler model that better utilizes the
CharacteristicandCodeclasses. The former role of thesff:EquityDeservingGrouptable/class is now filled by thecids:Characteristictable/class, andsff:EquityDeservingGroupis removed.Characteristicare@id,@type,hasName,hasDescription, andhasCode, where@id,@type, andhasNameare not blank.@idvalue for aCharacteristicmust be in the user’s own domain/namespace and cannot reuse URIs from code lists.hasCodeproperty ofCharacteristicmay now point to code list items from the updatedPopulationServedcode list, which now includes all items from the formerly separateEquityDeservingGroupcode list and has properties consistent withcids:Code.Changes to table structure and relationships
OrganizationProfileservesEDGlinks toEquityDeservingGroupprimaryPopulationServedlinks toPopulationServedprimaryPopulationServedlinks toCharacteristicEquityDeservingGrouphasCharacteristiclinks toCharacteristicCharacteristichasCodelinks toPopulationServedIncludes non-standard propertieshasCodelinks toPopulationServed(no change) Properties now consistent with standard definition.PopulationServed(code list)EquityDeservingGroup. Fields/properties inconsistent withcids:Codeclass.@typeproperty indicates whether a code list item is anEquityDeservingGroup. Fields/properties are consistent withcids:Codeclass.EDGProfileforEDGlinks toEquityDeservingGroupforEDGlinks toCharacteristicImplementation examples
Creating custom, user-defined entries in the Characteristics table
EXAMPLE: The fictional organization “Zero Waste Meal Kits” has an existing set of categories used to track historical board demographic data. They have data on the number of their Board members who identify as “men”, “women”, “trans men”, and “trans women”.
To set up a data model for their impact report that maps to their existing data collection, Zero Waste Meal Kits would create these four entries in their
Characteristictable:Table 1: Characteristic table example for user-defined categories
@idhasNamehasDescriptionhasCodehasCodeentry for “Men” because there is no corresponding entry in thePopulationServedtable that ESDC has identified as an Equity Deserving Group.PopulationServeditem ps1, "2SLGBTQIA+", whose description is "People who identify as being two-spirit, lesbian, gay, bisexual, transgender, queer, intersex, asexual and others (“+”)."PopulationServeditem ps22, "Women (Cisgender and Transgender)".Using ESDC’s categories for the Characteristics table
EXAMPLE: The fictional organization “Zero Waste Meal Kits” has no historical data about their Board composition. They will set up a data model for their impact report that uses the demographic data categories provided in the ESDC
PopulationServedlist:Table 2: Characteristic table example for ESDC categories
@idhasNamehasDescriptionhasCodePopulationServedlist entries, and the relevant URI is entered inhasCode.@typeproperty in thePopulationServedclass/table indicates whether or not an item is an Equity Deserving Group.@typeproperty of ps18 in thePopulationServedtable. However, itsskos:broaderproperty identifies ps18 as a sub-item of ps27, “People Living with a Disability (including invisible and episodic disabilities)”, which is an Equity Deserving Group. Counting people identifying as ps18 as members of EquityDeservingGroup ps27 is technically feasible given thisskos:broaderrelationship. However, it requires extra effort by analysts that cannot be guaranteed, and so it is recommended that Characteristics be explicitly mapped to Equity Deserving Groups using hasCode where applicable.Issue 2: Code list consistency
The “breaking” change is that some taxonomies (“code lists”) may require different rdf:types, properties, or (worst case) a change in URI naming scheme before they can be expected to function properly when data is validated by SHACL and/or aggregated at the portfolio level.
Where possible, URIs will be maintained in updated code lists, and where this is not possible, “redirects” put in place to manage the differences between versions and minimize disruption for users.
The root of the issue: inconsistent development patterns
Code lists used with the SFF Companion module have not followed a consistent pattern of development and employ different naming conventions, structures, and vary in their use of taxonomy frameworks such as
skos:ConceptSchemeversuscids:Code.The solution: adhering to cids:Code and skos:Concept structure
The proposed changes to address this are not specific to SFF, and affect all code lists for all users of the Common Impact Data Standard.
The
PopulationServedlist is the first code list to be updated, see https://codelist.commonapproach.org/PopulationServed.ttl.Common Approach will update the other code lists shortly to mirror these changes to the codelist and item structure. We will provide a further update when these changes are complete and the new versions are live.
Beta Was this translation helpful? Give feedback.
All reactions