W3C home > Mailing lists > Public > www-rdf-interest@w3.org > June 2002

Re: Resume schema in RDF

From: Patrick Stickler <patrick.stickler@nokia.com>
Date: Thu, 06 Jun 2002 15:10:48 +0300
To: Uldis Bojars <uldis.bojars@gmx.net>, RDF Interest <www-rdf-interest@w3.org>
Message-ID: <B9252BFA.16375%patrick.stickler@nokia.com>
On 2002-06-06 5:05, "ext Uldis Bojars" <uldis.bojars@gmx.net> wrote:

> 
> 
> The Resume schema I am making has now most of properties defined.
> Constructive criticism is welcome.
> 
> PS There are no properties for Person class because I could not get
> Protege to import vCard properties so I can use them.
> 
> In the process of creating it some new questions emerged:
> 
> _1_ How do I define an ontology for the possible property values?
> 
> I.e. jobType:
> <rdf:Property rdf:about="http://nightman.lv/~captsolo/cv.rdfs#jobType"
> a:allowedValues="Intern" a:maxCardinality="1" a:range="symbol"
> rdfs:comment="Type of the job: employee / contractor / intern"
> rdfs:label="jobType">
> <rdfs:domain rdf:resource="http://nightman.lv/~captsolo/cv.rdfs#WorkHistory"
> /> 
> <rdfs:range 
> rdf:resource="http://www.w3.org/TR/1999/PR-rdf-schema-19990303#Literal" />
> <a:allowedValues>Contractor</a:allowedValues>
> <a:allowedValues>Employee</a:allowedValues>
> </rdf:Property>
> 
> Protege 2000 has defined allowed values by it's own means, but this
> information will not mean anything outside Protege ontology.
> 
> Do I have to create a class "allowedJobTypes" with subclasses for
> possible values and then define rdfs:range as pointing to
> allowedJobTypes?
>
> Or [developing what Patrick suggested for, i.e., sex] do I just define
> something like:
> voc://nightman.lv/job/type/employee
> voc://nightman.lv/job/type/contractor
> voc://nightman.lv/job/type/intern
> and then point rdfs:range to voc://nightman.lv/job/type/ ?
> 


The way we do controlled value sets at Nokia is as follows (note,
this is just plain old simple RDF/RDFS, not Protoge or DAML):

1. Define the range of the property to be a particular class. E.g.

<rdf:Property rdf:about="&ns;job_type">
    <rdfs:range "&ns;JobType"/>
</rdf:Property> 

2. Define a set of typed resources of that class.

<ns:JobType rdf:about="&ns;JobType/Contractor"/>
<ns:JobType rdf:about="&ns;JobType/Employee"/>
<ns:JobType rdf:about="&ns;JobType/Intern"/>


Now, an RDFS validator can test whether or not the range constraint
is satisfied. Also, you can define additional statements about the
particular job types, such as labels, etc.

Attached is one of our RDF schemas, within which you can
find lots of similar examples.

> _2_ Similar to previous - how to define boolean properties?
> <rdf:Property 
> rdf:about="http://nightman.lv/~captsolo/cv.rdfs#conditionWillRelocate"
> a:maxCardinality="1" a:range="boolean" rdfs:comment="Is candidate willing to
> relocate?" rdfs:label="conditionWillRelocate">
> <rdfs:domain rdf:resource="http://nightman.lv/~captsolo/cv.rdfs#Target" />
> <rdfs:range 
> rdf:resource="http://www.w3.org/TR/1999/PR-rdf-schema-19990303#Literal" />
> </rdf:Property>
> 
> Or do I define ontology with 2 values for this property: willRel /
> willNotRel? Or define TRUE / FALSE and use it?

Just a personal preference. I used to define URIs for true and false,
but have found that defining a lexical datatype with lexical forms
'1' and '0' is alot easier to work with when moving values in/out
of real systems, and users don't seem to have any trouble with
seeing the numerical rather than textual representation.

But using either tokens or URIs is also fine. URIs, as above,
allow you to take advantage of generic RDFS validation, if
you have such a tool. Literal values will require your application
to do custom validation.

> _3_ Salary / currency of salary:
> I currently have 2 properties for target salary:
> <rdf:Property rdf:about="http://nightman.lv/~captsolo/cv.rdfs#targetSalary"
> a:maxCardinality="1" a:range="integer" rdfs:comment="Target salary"
> rdfs:label="targetSalary">
> <rdfs:domain rdf:resource="http://nightman.lv/~captsolo/cv.rdfs#Target" />
> <rdfs:range 
> rdf:resource="http://www.w3.org/TR/1999/PR-rdf-schema-19990303#Literal" />
> </rdf:Property>
> <rdf:Property 
> rdf:about="http://nightman.lv/~captsolo/cv.rdfs#targetSalaryCurrency"
> a:maxCardinality="1" rdfs:label="targetSalaryCurrency">
> <rdfs:comment>Currency for target salary. @@ Locate ontology for
> currencies.</rdfs:comment>
> <rdfs:domain rdf:resource="http://nightman.lv/~captsolo/cv.rdfs#Target" />
> <rdfs:range 
> rdf:resource="http://www.w3.org/TR/1999/PR-rdf-schema-19990303#Literal" />
> </rdf:Property>
> 
> Is this way OK for describing salary and it's currency or is it better
> to do like vCard does for TEL, E-MAIL types where it defines instances
> of EMAILTYPES and then write:
> <rdf:Description ID="EMAIL">
>   <rdf:type 
> rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Property"/>
>   <rdfs:label>Email Address</rdfs:label>
>   <rdfs:range rdf:resource="#EMAILTYPES"/>
> </rdf:Description>

[The following advice is based on the current RDF Datatyping WD,
which is still a work in progress, so caveat emptor, but it should
remain valid advice]

How I would do this is to define a set of lexical (simple) datatypes where
the currency semantics was bound to the datatype

Thus:

<rdfd:Datatype rdf:about="&ns;USD"/>
<rdfd:Datatype rdf:about="&ns;EUR"/>
...

Then, your literal property values would be qualfied for currency datatype

   <cv:targetSalary ns:USD="123456.0"/>

You can then define exchange rates as property relations between
the datatype classes, etc.

> _4_ Is there an ontology for currency names?

Not insofar as URIs are concerned, as far as I'm aware of.

> Are there existing ontologies for industries, education level,
> languages, other types of resources in CV?

There exist alot of standards that define controlled value sets
for such things, but few of them provide URIs. This is a problem

The XML Topic Map community has been busy working on what are
called Published Subject Identifiers, which are sets of URIs
denoting such commonly used values. There may be some useful
stuff to be found there.

Regards,

Patrick

> Thanks in advance.
> 
> [1] Resume RDF schema: http://nightman.lv/~captsolo/cv.rdfs
> 
> [2] Draft model of data structure for Resume schema:
>   http://blackeye.vsaa.lv/~davidson/scheme.gif

--
               
Patrick Stickler              Phone: +358 50 483 9453
Senior Research Scientist     Fax:   +358 7180 35409
Nokia Research Center         Email: patrick.stickler@nokia.com





Received on Thursday, 6 June 2002 08:06:54 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 7 December 2009 10:51:54 GMT