#! /usr/bin/env python
"""

Demonstrate webdata.py

"""

import webdata
import debugtools

# http://xmlns.com/foaf/spec/
FOAF_NS = "http://xmlns.com/foaf/0.1/"
webdata_ns = FOAF_NS

#
#  Here are our Python classes, which mirror the FOAF classes we care about 
#

class Agent:
    pass

class Person (Agent):

    def __init__(self):
        self.knows = set()

        # FOAF naming conventions are a mess...   Down in someName()
        # we try to provide a clean interface. 
        self.name = None
        self.firstName = None
        self.givenname = None
        self.family_name = None
        self.surname = None
        
        self.schoolHomepage = None
        self.workplaceHomepage = None
        self.mbox_sha1sum = None

    def someName(self):
        if self.name:
            return self.name
        first = self.firstName or self.givenname or "(no firstname)"
        last = self.family_name or self.surname or "(no lastname)"
        return first+" "+last

    def __str__(self):
        v = self.someName()
        try:
            v += " mboxsha="+self.mbox_sha1sum[0:10]+"..."
        except AttributeError:
            pass
        return v
    
if __name__ == "__main__":

    #debugtools.tags.add("all")
    debugtools.tags.add("webdata.load")
    #webdata.load("

    obj = webdata.toPython("http://www.w3.org/People/Sandro/data#Sandro_Hawke", True)
    #  this data sends it off trying to load the world's foaf-graph!
    #obj = webdata.toPython("http://www.w3.org/People/Berners-Lee/card#i", True)

    print `obj`
    # print obj.__dict__
    for k in obj.knows:
        print "knows: "+str(k)

