--- /dev/null
+from os.path import join
+from Globals import package_home
+from _namespaces import namespaces
+
+home = package_home(globals())
+
+f = file(join(home, 'accessors.csv'))
+lines = f.readlines()
+f.close()
+
+accessors = {}
+accessorIds = {}
+rdfKwnowTypes = {'Seq':True, 'prop':True, 'Alt':True, 'Bag':True}
+
+prefix2Ns = dict([item[::-1] for item in namespaces.items()])
+
+for l in [l for l in lines if not l.startswith('#')] :
+ fields = [f.strip() for f in l.split(',')]
+
+ if not filter(None, fields) : continue
+
+ cat, caption, name, root, rdfType = fields
+
+ accessor = { 'id' : name.split(':')[1]
+ , 'root' : root
+ , 'rdfType' : rdfType
+ , 'namespace' : prefix2Ns.get(name.split(':')[0])
+ }
+
+ assert not accessors.has_key(name), "Duplicate definition for %r" % name
+ assert name.count(':') <=1, "Ambiguous name %r" % name
+ assert not accessorIds.has_key(accessor['id']), "Ambiguous name: %r" % name
+ assert rdfKwnowTypes.has_key(rdfType), "Unknown rdf type: %r" % rdfType
+ if rdfType == 'prop' :
+ assert prefix2Ns.has_key(name.split(':')[0]), \
+ "Attribute name %r don't match a known namespace prefix" % name
+
+ accessors[name] = accessor
+ accessorIds[accessor['id']] = True
+
+
+__all__ = ('namespaces', 'prefix2Ns', 'accessors')