[Pellet-users] ranking in matchmaking..

Krishna pkrsar at yahoo.com
Sun Jun 24 00:34:24 UTC 2007


Hi,
  
  I tried to add more jobs and persons in your example. After a long try  could get more than a single job in the query result. The problem was  that I did not specify minimum requirement for additional jobs, which  seems  must. Am I right?
  
  Would you explain little more how this query acertain that the person in the result  have fulfilled minimum requirements. 
  
  Thanks again for your valuable response. 
  
  Krishna
  
  

"Ibach, Brandon L" <brandon.l.ibach at lmco.com> wrote:          Hi, Krishna...
      It looks like you're using approximately the   approach I demonstrated with my example a while back, so I've attached an   extended version that example that demonstrates a possible solution for   ranking.  The solution makes use of the "punning" feature of OWL 1.1,   which allows you to have a class, property and individual (or any combination of   those) all with the same name, but having no effect on the semantics of each   other.  Having the same name, though, allows you to tie them together at   the RDF level, so queries such as with SPARQL can integrate data across these   lines.
      As before, the example job has qualifications of   1) Person must be a citizen of Vietnam or Thailand, 2) Computer Science degree   and 3) skill in Object Oriented programming.  Each of these qualifications   is modeled with a separate class (citOfVOrT, degCS and sklOO,   respectively).  I've chosen to make the citizenship qualification an   absolute requirement, such that those persons who are not citizens will not be   considered at all.  Therefore, the class representing this job,   jobCSOOVOrT, is made equivalent to the class representing the citizenship   qualification.  The ontology uses intersectionOf, for this, even though   there is only the one required qualification, but I left it in to show how   multiple qualifications could be included.
      For the other qualifications (CS degree and OO   skill), I created a Qualification class whose members will be individuals with   the same name as qualification classes (degCS and sklOO, in our example).    A floating-point weight value must be specified for each   desired qualification.  This allows emphasis to be placed on certain   qualifications over others when ranking CVs.  Each job class will have a   datatype property created which will be a sub-property of   qualificationWeight.  Each desired qualification will use this property to   specify the weight for that qualification.
      This sub-property mechanism is a means   of getting around the lack of higher arity relations in OWL, as the property   itself carries the knowledge of which job class it relates to.  To make   this knowledge explicit so that the query can operate on it, a hasQual property   relates an individual with the same name as the job class to an individual with   the same name as the datatype property.  As a side note, a similar   technique could be used to, for example, specify for a CV the number of years of   experience in a particular skill.  A base datatype property, such as   hasExperience, would setup the domain and range, then a sub-property of that for   each skill would be used to specify the value for an individual CV.    Another property, similar to hasQual in our example, would relate the skill   to an individual with the same name as the property that represents   experience in the skill.  OWL 1.1's user-defined datatype mechanisms could   then be used to define
 qualification classes for different ranges of experience   in a given skill.
      Back to the example, the following query will   produce results listing a person (CV), job, qualification and ranking weight   value for those who meet the minimum requirements for the job and some   additional qualifications.
   
  PREFIX rdf:  <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX   rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX   jobs: <http://www.owl-ontologies.com/jobs.owl#>
   
  SELECT ?pers ?job ?qual ?weight
WHERE { ?pers rdf:type   jobs:Person .
        ?job rdfs:subClassOf   jobs:Job .
        ?pers rdf:type ?job   .
        ?job jobs:hasQual ?prop   .
        ?qual ?prop ?weight   .
        ?pers rdf:type ?qual   }

      Summing the weight values for each   combination of CV and job will produce a ranking.  I think this is probably   the least programming-intensive way to do something like this, since OWL (and   therefore Pellet) doesn't provide a way to talk about partial matches to a   class, nor a reasoner would decide which partial match is better than   another.  Of course, there's probably some good papers out there about   general approaches and how such a mechanism could be added directly to a   language like OWL, but that's a little beyond my scope, at the moment.   :)
      Note that this query and the attached ontology   have been tested with Pellet 1.4.  I'm fairly sure this version is   required, as it provides the support for OWL 1.1 punning.  On that note,   though (hey, Evren!), I did get the following warnings when running this query   at the command line:
   
  Non OWL-DL features used:
Multiple Types: Resource   jobs:degCS  is defined both as Class and Individual
Multiple Types:   Resource jobs:jobCSOOVOrT  is defined both as Class and   Individual
Multiple Types: Resource jobs:sklOO  is defined both as an   individual and a class
Multiple Types: Resource jobs:hasQual  is used as   an individual but defined as aclass

      I assume this is just Pellet not   handling species determination in the presence of OWL 1.1 feature   use very well (a known problem in 1.4)?  Naturally, the use of punning   DOES make this non-OWL-DL, so the warnings are correct.  However, the last   one struck me as odd, since hasQual is not used as an individual, but does cause   jobCSOOVOrT-q, which is defined as a datatype property, to also be used as   an individual.
      I hope this example and explanation are   reasonably clear and helpful.  Kudos to the OWL 1.1 gang for including   punning in the new features!
  -Brandon :) 
   

    
---------------------------------
  From: pellet-users-bounces at lists.owldl.com   [mailto:pellet-users-bounces at lists.owldl.com] On Behalf Of   Krishna
Sent: Monday, May 14, 2007 1:01 PM
To:   Pellet-users at lists.owldl.com
Subject: [Pellet-users] ranking in   matchmaking..


  
Hi all,
After getting some idea from this group and some study, I   have learnt to match job with CV. In my ontology  I have CV as individual   of class PERSON and jobs as subclasses of JOB class. with this approach I can   only decide if certain CV matches with a job or not. But I can't rank them.   

If I had modelled CV as subclasses, I  could have divided them into   match classes( exact, full, plugin,  intersection or disjoint). But still I   can't make rank of CVs? can I do so?

Is there someway to do it (with some   coding)  or what can be  done for getting rank in a same match group   ?

Thanks in advance.
Krishna
    

---------------------------------
  Yahoo! oneSearch: Finally, mobile   search that gives answers, not web links. 

       
---------------------------------
Luggage? GPS? Comic books? 
Check out fitting  gifts for grads at Yahoo! Search.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.owldl.com/pipermail/pellet-users/attachments/20070624/35833551/attachment.htm 


More information about the Pellet-users mailing list