These exercises sketch steps in an intelligent job posting to resume matching service using Semantic Web ideas and resources.
Overview
The main task is to rank the relevance of semantically marked up resumes to semantically marked up job postings. It's not hard to match up postings based on location, salary ranges, and educational requirements, like a college degree. More challenging is to match up resumes and postings based on the skills a job requires and an applicant might have.Key therefore is a "skills" ontology. In the simplest model, a resume is a list of skills an applicant claims to have, and a job posting is a list of skills a job requires. Skills need to be broken down quite finely -- imagine trying to use just "programming" as a skill in determining an applicant's relevance.
Another resource would be a database linking jobs to skills in general. This would not only assist in creating new job postings, but also in inferring an applicant's skills based on previous jobs.
Resources
- JobPosting at schema.org
- This is a good starting point. It shows a basic attempt at a microdata for augmenting job postings. Also valuable is to look at the discussions on what's missing.
- National Resource Directory
- This is page on using JobPosting by a jobs organization for veterans.
- http://page.mi.fu-berlin.de/mochol/papers/wi2005.pdf
-
This is a good paper summarizing an ontology-based matcher for jobs and skills. It defines a common "distance between concepts" function that's used recursively when matching a job posting with an application profile.
Note that "distance between concepts" is relatively easy to define in a frame-based system using Lisp code. It's more difficult in a deductive system (perhaps impossible in the simple DDR.LISP system) because you have to get the minimum distance over multiple paths.
- http://wissensnetze.ag-nbi.de/publ/BIS2007.pdf
-
Another good paper on the matching problem. Includes an OWL example.
- http://rdfs.org/resume-rdf/
ResumeRDF is an RDF schema for writing resumes.
- DOAC RDF
- DOAC (description of a career) is a proposed ontology for describing careers, to use in conjunction with ResumeRDF
- http://www.hr-xml.org
HR-XML is an organization devoted to XML standards for Human Resources.
As far as I can tell, you have to register with HR-XML.ORG to get to see their ontologies.
Note that XML doesn't imply RDF or OWL. Typically, XML schemas are developed for a particular application, with elements like
<education> ...</education>
or whatever. Then someone will come up with a (much more verbose) RDF triple version of this same content.For this reason, it's good to develop a very modular, data-driven answer to the Ontology reader exercise, that makes it easy to specify how to map any XML tree structure to your desired deductive or frame knowledge.
Exercises
JM-0: Microdata Reader
Using the (fairly obvious) algorithm given here and the AllegroServe tools to reading and parsing HTML, define (read-microdata url) to return a nested list representation of the microdata in a web page.
An example page is this one (let me know if it disappears). The output should be:
(job-posting (title "Software Developer 3") (hiring-organization (organization (name "Oracle")) (job-location (place (address (postal-address (address-locality "Chicago") (address-region" "IL")))))) (date-posted "November 01, 2011"))
JM-1: Skills Ontology Reader
Write an ontology reader exercise to read a job skills ontology into either deductive rules or MOP frames
JM-2: Resume and Posting Reader
Write a function to read sample resumes and postings in XML or RDF form about specific jobs and applicants, into either deductive assertions or MOP frame instances
JM-3: Resume and Posting Reader
Implement either:
- general deductive rules to support
the deductive query
(qualified ?applicant ?job)
to retrieve all applicants qualified for a given job, or all jobs suitable for a given applicant, or - a case-based retriever that can find the closest matching jobs for an applicant, or the closest matching applicants for a job