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

Handling logical relationships between model entities #12

Open
stuartasutton opened this issue Feb 8, 2019 · 1 comment
Open

Handling logical relationships between model entities #12

stuartasutton opened this issue Feb 8, 2019 · 1 comment
Labels
data model Matters concerning creation, maintenance and methods for publication of JDX data model enhancement New feature or request

Comments

@stuartasutton
Copy link
Collaborator

On Wednesday's deep dive, @robinsonkwame asked about handling logical relationships between model entities. I gave a long-winded comment about the distinction between handling them algorithmically (smart system/dumb data) or through the data modeling (smart data). I've created a couple of figures on how we might handle such relationships directly in the model: (1) a revised subsection from the domain model; and (2) a cartoon that illustrates how the modeled entities could work to support logical relationships (and/or).

Model snippet

This snippet from the data model does the following: It fleshes out the properties directly referencing education, experience and credential entities to include naming aspects that better define some in terms of their relationships to others--e.g., the use of "preferred", "minimum", "alternative", "equivalent". Second, there is a new Condition entity used to cluster related entities. A Job Description/Posting can have more than one Condition entity and any Condition entity can have "alternative" Condition entities.

2019-02-08 conditions

Cartoon example

In the cartoon below, we have a Job Description/Posting that provides an experience option (left branch alternative condition) for fulfilling requirements as well as an education option (right branch alternative condition). While the cartoon is a bit tidy, nothing precludes alternatives mixing education, experience and credentialing. In this example, the education option ORs together minimum credential and a preferred credential. The experience branch is more difficult since it includes two levels of branching--one ANDing and the other ORing choices.
2019-02-08 conditioned_choices

@robinsonkwame
Copy link

@stuartasutton this would be extremely useful to include in the data model and it's straight forward to apply. The cartoon clarifies the application of this quite well.

On the same deep dive I remember it was mentioned that the alternative to smart data would be to embed the logic into the application (e.g, smart system).

I think I may have come upon a third way, of sorts, that may be of interest: embed the logic not into the application but into the data as a separate element, outside of the JDX schema and into the actual .json-ld file. By doing so the JDX schema needs no changes and a dumb system, if you will, can also evaluate a job description described by both the schema and the embedded rules.

To illustrate, a rough example for “The successful candidate will have a bachelor degree or obtain a bachelor’s degree before 9 months of starting and also have completed an internship," is given below:

    {                                                                    
        "@context": [ "http://schema.org/" ,
                {"jdx": "http://jdx.org/terms/"}
            ],
        "@graph": [{
            "jdx:title": {"en": "Software Engineer"},
	    ... // includes educationRequirements for bachelor degree, internship
            }],
        "description_logic": {
            "rules": { "and" : [
                        {"<" : [ { "var" : "bachelor_degree.months_to_completion" }, 9 ]},
                        {"==" : [ { "var" : "internship" }, "True" ] }
                        ] }
        }                                                                
    }

The above uses the JDX schema with no modifications to describe the job description while also providing a description_logic to describe how the description can be logically interpreted, to determine if a given applicant meets requirements. I see this approach as a third approach since it includes the logic, the system just has to extract applicant variables carry out the description_logic.

Given all of this, what might you see as pros and cons of the "smart data" vs. "smart system" vs. this third approach?

@DMSaunders DMSaunders added enhancement New feature or request data model Matters concerning creation, maintenance and methods for publication of JDX data model labels Dec 31, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
data model Matters concerning creation, maintenance and methods for publication of JDX data model enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants