[Pellet-users] ranking in matchmaking..
Krishna
pkrsar at yahoo.com
Mon Jun 25 19:22:15 UTC 2007
Hi,
Thanks again.
If I like to have 0.3 for degCS, 0.3 for OO, I have 0.4 for something else (let's say Database Skill). But if I do 0.2 for combined degCS and OO and if the Database Skill is also present it becomes 1.2 in total. It does not make any problem for ranking because it can be sorted in descending order of total weight but it does not look good. Isn't it? In earlier case it was 0.3 out of 1 or in later case it was 0.3 out of 1.2.
Now, I am trying to add experience year. I have added datatype property hasExperience and created subproperties for it. Similarly, added object property hasExp and linked each Skill to the subproperties created above for them. I have also assigned years of experience for some person. Am I doing correct till now? ( I have attached my owl file). I have problem to go further from this.
As your earlier mail suggests about using " OWL1.1 user-defined datatype properties mechanims .....". I can see that there will differnt skill for 2 years experience in java and 4 years experience in java. And, then put different weight to them for some jobs as done before. But I don't know how to make use of user-define datatype.
I would apprecite if you could add an example of this.
Krishna
"Ibach, Brandon L" <brandon.l.ibach at lmco.com> wrote: Hi, Krishna...
It sounds like you figured out the minimum requirements problem, but just to clarify, the Job subclass should be declared equivalent to the intersection of those classes which represent the minimum requirements. There could be no minimum requirements, in which case you would just declare the class to be a subclass of Job, with no other restrictions.
For cases where you want to put a weight on a combination of requirements, simply declare a class that is the intersection of restrictions on properties, then create an instance of the Qualification class to specify the weight. You just need to be careful when specifying the weights so you get the results you want. For instance, if you wanted to give a weight of 0.3 for either a CS degree or OO experience, but a weight of 0.8 for both, you'd specify 0.3 for each of them separately and 0.2 for the intersection of the two. The CV with both would satisfy all three classes, thus giving a total of 0.8.
Hope this helps.
-Brandon :)
---------------------------------
From: Krishna [mailto:pkrsar at yahoo.com]
Sent: Sunday, June 24, 2007 2:10 PM
To: Ibach, Brandon L; Pellet-users at lists.owldl.com
Subject: Re: [Pellet-users] ranking in matchmaking..
Hi,
I solved the problem with query and modelling. I had mixed the individuals and qualifications.
User's preference weight may not be absolute, but depend upon the other avaiable skills. Conditional weight. What could be easy option in that case?
Thanks
Krishna
Krishna <pkrsar at yahoo.com> wrote: 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._______________________________________________
Pellet-users mailing list
Pellet-users at lists.owldl.com
http://lists.owldl.com/mailman/listinfo/pellet-users
_______________________________________________
Sponsored by Clark & Parsia, LLC http://clarkparsia.com/
---------------------------------
Get the Yahoo! toolbar and be alerted to new email wherever you're surfing.
---------------------------------
Moody friends. Drama queens. Your life? Nope! - their life, your story.
Play Sims Stories at Yahoo! Games.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.owldl.com/pipermail/pellet-users/attachments/20070625/53400c5d/attachment-0001.htm
More information about the Pellet-users
mailing list