Superseded by Modelling vCards in RDF, 05 Dec 2005.  Superseded by Extracting vCards from hCard markup, 12 Dec 2005.  Supersedes An address book ontology, 25 Nov 2005.

An address book ontology (take 2)

Volume 8, Issue 154; 30 Nov 2005; last modified 08 Oct 2010

More thoughts on modelling names and addresses.

In proper Lazyweb fashion, posting about a topic invariably leads to new information about the topic. In this particular case:

  • David Powell pointed me to the AddressVocab, a vocabulary for postal addresses derived directly from a draft UPU specification.

    It's a bit tricker to generate this model from the raw address book data, but not impossible. Does the benefit of using a more standard vocabulary outweigh the cost (in terms of complexity) of using it? Time will tell.

  • The BIO vocabulary looks like a more standard way to deal with birthdays. And it will naturally handle anniversaries and deaths, too.

  • And with another few days of experience under my belt, I think Rich's suggestion to avoid all the subproperty names is worth pursuing. Instead of making classes for all the different kinds of phone numbers and email addresses, I'm simply assigning labels to them. They are, after all, just labels in my address book (I don't actually know if your “Work” phone number is or isn't a mobile phone, for example.)

That reduces the size of my ontology considerably:

# -*- N3 -*-

@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix xs: <http://www.w3.org/2001/XMLSchema#> .
@prefix c: <http://nwalsh.com/rdf/contacts#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .

# What about bio: http://vocab.org/bio/0.1/
# Or contacts: http://www.w3.org/2000/10/swap/pim/contact

<http://nwalsh.com/rdf/contacts> a owl:Ontology;
    rdfs:comment "Norm's ontology for his address book." .

# ------------------------------------------------------------

# A contact in an address book
c:Contact a owl:Class;
    rdfs:subClassOf
        [
             a owl:Restriction;
             owl:cardinality "1"^^xs:nonNegativeInteger;
             owl:onProperty c:lastModified ] .

# Timestamp of address book entry
c:lastModified a owl:DatatypeProperty;
    rdfs:domain c:Contact;
    rdfs:range xs:dateTime .

# Category in address book
c:category a owl:DatatypeProperty;
    rdfs:domain c:Contact .

# A middle name (other name properties come from FOAF)
c:middleName a owl:DatatypeProperty .

# Company and title
c:associatedName a owl:DatatypeProperty .
c:associatedTitle a owl:DatatypeProperty .

# Labels
c:label a owl:DatatypeProperty .

# Notes
c:notes a owl:DatatypeProperty .

Time, as I said, will tell if these are good choices.

Comments

Thanks Norm for these two articles. That was great.

I was a bit afraid with the previous article, and too much information for the name. Names are a very difficult topic, I remember to have discussed about it when FOAF was designed. Defining a full ontology of names would be a huge task.

http://rdfweb.org/pipermail/rdfweb-dev/2003-July/011484.html

—Posted by karl on 01 Dec 2005 @ 03:16 UTC #

Bruce D'Arcus, myself, and a few others have been discussing names in a bibliographic context for some time now. It ain't easy!

—Posted by Rich on 02 Dec 2005 @ 06:28 UTC #