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:

Faculty: Chris Riesbeck
Time: Monday, Wednesday, Friday: 1pm - 2pm
Location:Annenberg G15

Contents

Important Links