In this document you can find detailed information about the Standard Data Formats that will be used for the following cases:
Nodes represent objects or entities that can be connected between them. Those connections are called Edges. A Graph consist of a set of nodes and a set of edges.
We have defined a Standard Data Format to represent Graphs, defining some general rules about the structure, but allowing the future extension of the format, always respecting the initial structure.
Parameters marked with an asterisk (*) are mandatory.
Node = {
"id"(*) : Number,
"value"(*) : Number,
"label"(*) : String,
"group"(*) : String,
"weight" : Number,
"sources" : Array<Source>,
}
Source = {
"title"(*) : String,
"url"(*) : String,
}
{
"id": 1,
"value": 10,
"label": "Data Science",
"group": "1",
"weight": 5,
"sources": [
{
"title":"Data Science (Wikipedia)",
"url":"https://en.wikipedia.org/wiki/Data_science",
}
]
}
Graphs are processed by the building block as undirected graphs, this implies that:
Edge = {
from: id_nodeA,
to: id_nodeB,
}
Example:
{
"from": 1,
"to": 4,
}
The Groups that are present in a Graph are normally represented by simple values (group numbers for example). Legends associate each group with a more descriptive title, that facilitates the interpretation of the final results.
Legends = {
group1 : "Legend 1",
group2 : "Legend 2",
...
}
Example:
{
"1": "Skills demand in French Labor Market on 2024",
"2": "Skills from Bachelor's degree that are not demanded",
"3": "Demanded Skills that are also included in the Bachelor's Degree"
}
"Legends" is an optional attribute in the graph representation. They enable a more descriptive labeling of the groups present in the given Graph.
{
"data":{
"nodes": Array<Node>,
"edges": Array<Edge>,
"legends": Legends,
}
}
The attribute names for courses can be defined using two different standard cases: underscore_case and camelCase.
{
"code": "Course code.",
"url": "Link to the course.",
"title": "Course title.",
"description": "Description of the course.",
"explanation": "Skills you have: x,y,z. Skills you will get: w, z, t.",
"new_skills": ["New skill 1", "New skill 2"],
"existing_skills": ["Existing skill 1","Exsiting skill 2"],
"interests": ["Interest 1", "Interest 2"],
"score": "Scoring index of the training recommendation.",
"normalized_score": "Normalized Scoring Index of the training recommendation.",
"language": "String in Free Format",
"organization": "Organization that Provides the Training",
"duration": "Duration of the Course. String in Free Format.",
"price": "Price of the Course. String in Free Format."
}
{
"url": "Link to the job post.",
"author": "Name of the job portal the job is posted to.",
"language": "Language of the job post.",
"title": "Title of the job post.",
"description": "Full description of the job post.",
"location": "Location of the vacant (city / country). String in Free format",
"time": "Date and time the job is posted.",
"score": "Scoring index of the job recommendation.",
"normalized_score": "Normalized Scoring Index of the training recommendation.",
"matching_skills": ["Matching skill 1", "Matching skill 2", "Matching skill 3"],
"missing_skills": ["Missing skill 1", "Missing skill 2", "Missing skill 3"]
}
Visual Properties are handled as a Dictionary where each Property name (key) has an associated value. Depending on the visualization, properties will have initial values that are configured by default. More details about this can be found in the section called Properties.
Properties = {
"propertyName1": "propertyValue1",
"propertyName2": "propertyValue2",
...
}
rules.json contains the definition of the User Journey, including:
/** VisualizationInfo if data is persisted **/
VisualizationInfo = {
"type": String,
"properties": Properties,
"title": String,
"buttonTitle": String,
"url": String,
}
/** VisualizationInfo if data is not persisted **/
VisualizationInfo = {
"type": String,
"properties": Properties,
"title": String,
"buttonTitle": String,
"data": Object,
}
/** Format of the Configuration File **/
rules.json = {
"visuals" : Array<VisualizationInfo>,
"properties": Properties,
}
Example:
{
"visuals": [
{
"type": "HexagonMap",
"url": "https://example.com/example.json",
"properties": {"figSize":40},
"title": "Skills Profile",
"buttonTitle": "Skills",
},{
"type": "CourseRecommendations",
"data": [{...},{...},{...}],
"title": "Recommended Trainings",
"buttonTitle": "Trainings",
},{
"type": "JobRecommendations",
"data": [{...},{...},{...}],
"title": "Possible Job Applications",
"buttonTitle": "Jobs",
}
],
"properties" : {
"fontSize": 14,
"fontFamily": "Arial",
},
}