Mailing list ARC-DEV: Archives

Re: [arc-dev] An effort at a serializer for Graph Gear + the file!

From: "Patrick Murray-John" 
Subject: Re: [arc-dev] An effort at a serializer for Graph Gear + the
	file!
Date: Sun, 03 May 2009 14:09:07 -0400


This is a MIME message. If you are reading this text, you may want to 
consider changing to a mail reader or gateway that understands how to 
properly handle MIME multipart messages.

--=__PartD2FA6BD3.0__=
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Ooops...forgot to attach it!



>>> "Patrick Murray-John" <pgosetti@umw.edu> 05/03/09 2:01 PM >>>


Hi all,

I was kinda inspired by the use of Graph Gear [1] in the recent re-release =
of the LCSH data as skos, so I thought I'd take a stab at serializing an =
ARC2 graph into Graph Gear's XML format.  I'm attaching what I have so =
far.  It's not at all thoroughly tested, but I thought I'd throw it open =
to see if anyone has thoughts, comments, or especially guidance.  (I'm =
really not a coder--I've just been picking things up as I go along).

There's a blog post with a bit more about it [2], and the results of an =
early test [3].  Any thoughts and suggestions very welcome and appreciated!=


Thanks!
Patrick

[1] http://www.creativesynthesis.net/blog/projects/graph-gear
[2] http://www.patrickgmj.net/node/171
[3] http://devel.patrickgmj.net/GEG/arc/plugins/testGG.html



--=__PartD2FA6BD3.0__=
Content-Type: application/octet-stream; name="ARC2_GraphGearSerializerPlugin.php"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="ARC2_GraphGearSerializerPlugin.php"

PD9waHAKLyoKICogQ3JlYXRlZCBvbiBNYXkgMiwgMjAwOQogKgogKiBjcmVhdG9yOiBQYXRyaWNr
IE11cnJheS1Kb2huCiAqIHBnb3NldHRpQHVtdy5lZHUKICogaHR0cDovL3d3dy5wYXRyaWNrZ21q
Lm5ldC9ibG9nCiAqIAogKiBQb3N0L0RvY3VtZW50YXRpb246IGh0dHA6Ly93d3cucGF0cmlja2dt
ai5uZXQvbm9kZS8xNzEKICogCiAqIEdQTAogKiAKICogQVJDMiBQbHVnaW4gdG8gcHJvZHVjZSBY
TUwgZm9yIEdyYXBoR2VhciBodHRwOi8vd3d3LmNyZWF0aXZlc3ludGhlc2lzLm5ldC9ibG9nL3By
b2plY3RzL2dyYXBoLWdlYXIvCiAqLwogCiBBUkMyOjppbmMoJ1JERlNlcmlhbGl6ZXInKTsKIAog
Y2xhc3MgQVJDMl9HcmFwaEdlYXJTZXJpYWxpemVyUGx1Z2luIGV4dGVuZHMgQVJDMl9SREZTZXJp
YWxpemVyIHsKIAkKIAkKIAlwdWJsaWMgJGdyYXBoRE9NOwogCXB1YmxpYyAkZG9uZU5vZGVzID0g
YXJyYXkoKTsKIAlwdWJsaWMgJGluZGV4OwogCQogCQogIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRh
ID0gJycsICYkY2FsbGVyKSB7CglpZihpc3NldCgkYVsnbGFuZyddKSkgJHRoaXMtPmxhbmcgPSAk
YVsnbGFuZyddOwogICAgcGFyZW50OjpfX2NvbnN0cnVjdCgkYSwgJGNhbGxlcik7CiAgfQogIAog
IGZ1bmN0aW9uIEFSQzJfRXhoaWJpdEpTT05TZXJpYWxpemVyUGx1Z2luKCRhID0gJycsICYkY2Fs
bGVyKSB7CiAgICAkdGhpcy0+X19jb25zdHJ1Y3QoJGEsICRjYWxsZXIpOwogIH0KCiAgZnVuY3Rp
b24gX19pbml0KCkgewogICAgcGFyZW50OjpfX2luaXQoKTsKICAgIAogICAgaWYoaXNzZXQoJHRo
aXMtPmFbJ2xhYmVsUHJlZHMnXSkpIHsKICAgIAlmb3JlYWNoICggJHRoaXMtPmFbJ2xhYmVsUHJl
ZHMnXSBhcyAkaT0+JHByZWQgKSB7CiAgICAJCSR0aGlzLT5hWydsYWJlbFByZWRzJ11bJGldID0g
JHRoaXMtPmV4cGFuZFBOYW1lKCRwcmVkKTsKICAgIAl9CiAgICB9CiAgICAKICAgIGlmKGlzc2V0
KCR0aGlzLT5hWydsaW5rUHJlZHMnXSkpIHsKICAgIAlmb3JlYWNoICggJHRoaXMtPmFbJ2xpbmtQ
cmVkcyddIGFzICRpPT4kcHJlZCApIHsKICAgIAkJJHRoaXMtPmFbJ2xpbmtQcmVkcyddWyRpXSA9
ICR0aGlzLT5leHBhbmRQTmFtZSgkcHJlZCk7CiAgICAJfQogICAgfSAgIAogICAgCglpZihpc3Nl
dCgkdGhpcy0+YVsnaW1hZ2VQcmVkcyddKSkgewoJCWZvcmVhY2ggKCAkdGhpcy0+YVsnaW1hZ2VQ
cmVkcyddIGFzICRpPT4kcHJlZCApIHsKCQkJJHRoaXMtPmFbJ2ltYWdlUHJlZHMnXVskaV0gPSAk
dGhpcy0+ZXhwYW5kUE5hbWUoJHByZWQpOwoJCX0KCX0gCiAgfSAJCiAJCiAJCiAJCiAJLyoKIAkg
KiBTZXJpYWxpemUgdGhlIGluZGV4CiAJICogCiAJICovCiAJcHVibGljIGZ1bmN0aW9uIHNlcmlh
bGl6ZUluZGV4KCRpbmRleCkgewogCQkkdGhpcy0+YnVpbGRHR0RPTSgpOwogCQkkdGhpcy0+ZG9u
ZU5vZGVzID0gYXJyYXkoKTsKIAkJJHRoaXMtPmluZGV4ID0gJGluZGV4OwogCQlmb3JlYWNoKCRp
bmRleCBhcyAkdXJpPT4kcHJlZHMpIHsKIAkJCSR0aGlzLT5idWlsZE5vZGVGcm9tU3ViamVjdChh
cnJheSgkdXJpPT4kcHJlZHMpKTsKIAkJCWZvcmVhY2goJHByZWRzIGFzICRwcmVkPT4kb2JqZWN0
cykgewogCQkJCWlmICggICggKGlzc2V0KCR0aGlzLT5hWydsYWJlbFByZWRzJ10pKSAmJiAoICEg
aW5fYXJyYXkoJHByZWQgLCAkdGhpcy0+YVsnbGFiZWxQcmVkcyddICkgKSApCiAJCQkJICYmICgg
KGlzc2V0KCR0aGlzLT5hWydsaW5rUHJlZHMnXSkpICYmICggISBpbl9hcnJheSgkcHJlZCAsICR0
aGlzLT5hWydsaW5rUHJlZHMnXSApICkgKQogCQkJCSAmJiAoIChpc3NldCgkdGhpcy0+YVsnaW1h
Z2VQcmVkcyddKSkgJiYgKCAhIGluX2FycmF5KCRwcmVkICwgJHRoaXMtPmFbJ2ltYWdlUHJlZHMn
XSApICkgKSApIHsKCSAJCQkJZm9yZWFjaCgkb2JqZWN0cyBhcyAkb2JqZWN0KSB7CgkgCQkJCQkk
dGhpcy0+YnVpbGROb2RlRnJvbU9iamVjdCgkb2JqZWN0KTsKCSAJCQkJCSR0aGlzLT5idWlsZEVk
Z2UoJHVyaSwgJHByZWQsICRvYmplY3QpOwkJCgkgCQkJCX0KIAkJCQl9CiAJCQl9CiAJCX0KIAkJ
cmV0dXJuICR0aGlzLT5ncmFwaERPTS0+c2F2ZVhNTCgpOwogCX0KIAkKIAkvKgogCSAqIEZpZ3Vy
ZSBvdXQgdGhlIEdHIG5vZGUgdHlwZQogCSAqLwogCXB1YmxpYyBmdW5jdGlvbiBnZ05vZGVUeXBl
KCRyZXNvdXJjZSkgewogCQkkbm9kZVR5cGUgPSAnQ2lyY2xlVGV4dE5vZGUnOwogCQkkcmVzTlMg
PSAkdGhpcy0+Z2V0UHJlZml4KCR0aGlzLT5nZXRVUkkoJHJlc291cmNlKSk7CiAJCSRyZXNUeXBl
cyA9ICRyZXNvdXJjZVsnaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5z
IyddOyAJCQogCQlpZihpc3NldCgkdGhpcy0+YVsnbnNOb2RlVHlwZU1hcCddKSkgewogCQkJaWYo
aXNzZXQoJHRoaXMtPmFbJ25zTm9kZVR5cGVNYXAnXVskcmVzTlNdKSkgICRjb2xvciA9ICAkdGhp
cy0+YVsnbnNOb2RlVHlwZU1hcCddWyRyZXNOU107IAogCQkJaWYoaXNzZXQoJHRoaXMtPmFbJ25z
Tm9kZVR5cGVNYXAnXVskdGhpcy0+Z2V0UHJlZml4KCRyZXNOUyldKSkgICRjb2xvciA9ICAkdGhp
cy0+YVsnbnNOb2RlVHlwZU1hcCddWyR0aGlzLT5nZXRQcmVmaXgoJHJlc05TKV07CiAJCX0gCQog
CQkKCiAJCWlmKCRyZXNUeXBlcyAmJiBpc3NldCgkdGhpcy0+YVsndHlwZU5vZGVUeXBlTWFwJ10p
KSB7CgkgCQlmb3JlYWNoKCRyZXNUeXBlcyBhcyAkdHlwZSkgewoJCSAJCWlmKGlzc2V0KCR0aGlz
LT5hWyd0eXBlTm9kZVR5cGVNYXAnXVskdHlwZV0pKSAgJGNvbG9yID0gICR0aGlzLT5hWyd0eXBl
Tm9kZVR5cGVNYXAnXVskdHlwZV07CgkJIAkJaWYoaXNzZXQoJHRoaXMtPmFbJ3R5cGVOb2RlVHlw
ZU1hcCddWyR0aGlzLT5nZXRQTmFtZSgkdHlwZSldKSkgICRjb2xvciA9ICAkdGhpcy0+YVsndHlw
ZU5vZGVUeXBlTWFwJ11bJHRoaXMtPmdldFBOYW1lKCR0eXBlKV07IAoJIAkJfQogCQl9CiAJCXJl
dHVybiAkbm9kZVR5cGU7CiAJfQogCQogCS8qCiAJICogRmlndXJlIG91dCB0aGUgR0cgbm9kZSBj
b2xvcgogCSAqLwogCXB1YmxpYyBmdW5jdGlvbiBnZ05vZGVDb2xvcigkcmVzb3VyY2UpIHsKIAkJ
JGNvbG9yID0gJzAwMDBmZic7CiAJCSRyZXNOUyA9ICR0aGlzLT5nZXRQcmVmaXgoJHRoaXMtPmdl
dFVSSSgkcmVzb3VyY2UpKTsKIAkJJHJlc1R5cGVzID0gJHJlc291cmNlWydodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjJ107CiAJCSAJCQkJIAkJCiAJCWlmKGlzc2V0
KCR0aGlzLT5hWyduc0NvbG9yTWFwJ10pKSB7CiAJCQlpZihpc3NldCgkdGhpcy0+YVsnbnNDb2xv
ck1hcCddWyRyZXNOU10pKSAgJGNvbG9yID0gICR0aGlzLT5hWyduc0NvbG9yTWFwJ11bJHJlc05T
XTsgCiAJCQlpZihpc3NldCgkdGhpcy0+YVsnbnNDb2xvck1hcCddWyR0aGlzLT5nZXRQcmVmaXgo
JHJlc05TKV0pKSAgJGNvbG9yID0gICR0aGlzLT5hWyduc0NvbG9yTWFwJ11bJHRoaXMtPmdldFBy
ZWZpeCgkcmVzTlMpXTsKIAkJfQogCQkKIAkJaWYoJHJlc1R5cGVzICYmIGlzc2V0KCR0aGlzLT5h
Wyd0eXBlQ29sb3JNYXAnXSkpIHsKCSAJCWZvcmVhY2goJHJlc1R5cGVzIGFzICR0eXBlKSB7CgkJ
IAkJaWYoaXNzZXQoJHRoaXMtPmFbJ3R5cGVDb2xvck1hcCddWyR0eXBlXSkpICAkY29sb3IgPSAg
JHRoaXMtPmFbJ3R5cGVDb2xvck1hcCddWyR0eXBlXTsKCQkgCQlpZihpc3NldCgkdGhpcy0+YVsn
dHlwZUNvbG9yTWFwJ11bJHRoaXMtPmdldFBOYW1lKCR0eXBlKV0pKSAgJGNvbG9yID0gICR0aGlz
LT5hWyd0eXBlQ29sb3JNYXAnXVskdGhpcy0+Z2V0UE5hbWUoJHR5cGUpXTsgCgkgCQl9CiAJCX0K
IAkJCiAJCXJldHVybiAkY29sb3I7CQkKIAl9CiAJCiAJcHVibGljIGZ1bmN0aW9uIGdnTm9kZVRl
eHRDb2xvcigkcmVzb3VyY2UpIHsKIAkJJGNvbG9yID0gJzAwMDAwMCc7CiAJCSRyZXNOUyA9ICR0
aGlzLT5nZXRQcmVmaXgoJHRoaXMtPmdldFVSSSgkcmVzb3VyY2UpKTsKIAkJJHJlc1R5cGVzID0g
JHJlc291cmNlWydodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjJ107
CiAJCSAJCQogCQlpZihpc3NldCgkdGhpcy0+YVsnbnNOb2RlVGV4dENvbG9yTWFwJ10pKSB7CiAJ
CQlpZihpc3NldCgkdGhpcy0+YVsnbnNOb2RlVGV4dENvbG9yTWFwJ11bJHJlc05TXSkpICAkY29s
b3IgPSAgJHRoaXMtPmFbJ25zTm9kZVRleHRDb2xvck1hcCddWyRyZXNOU107IAogCQkJaWYoaXNz
ZXQoJHRoaXMtPmFbJ25zTm9kZVRleHRDb2xvck1hcCddWyR0aGlzLT5nZXRQcmVmaXgoJHJlc05T
KV0pKSByZXR1cm4gJHRoaXMtPmFbJ25zTm9kZVRleHRDb2xvck1hcCddWyR0aGlzLT5nZXRQcmVm
aXgoJHJlc05TKV07CiAJCX0gCQogCQkKIAkJaWYoJHJlc1R5cGVzICYmIGlzc2V0KCR0aGlzLT5h
Wyd0eXBlTm9kZVRleHRDb2xvck1hcCddKSkgewoJIAkJZm9yZWFjaCgkcmVzVHlwZXMgYXMgJHR5
cGUpIHsKCQkgCQlpZihpc3NldCgkdGhpcy0+YVsndHlwZU5vZGVUZXh0Q29sb3JNYXAnXVskdHlw
ZV0pKSAgJGNvbG9yID0gICR0aGlzLT5hWyd0eXBlTm9kZVRleHRDb2xvck1hcCddWyR0eXBlXTsK
CQkgCQlpZihpc3NldCgkdGhpcy0+YVsndHlwZU5vZGVUZXh0Q29sb3JNYXAnXVskdGhpcy0+Z2V0
UE5hbWUoJHR5cGUpXSkpIHJldHVybiAkdGhpcy0+YVsndHlwZU5vZGVUZXh0Q29sb3JNYXAnXVsk
dGhpcy0+Z2V0UE5hbWUoJHR5cGUpXTsgCgkgCQl9CiAJCX0JCQkKIAkJCiAJCXJldHVybiAkY29s
b3I7CiAJCQogCX0KIAkKIAlwdWJsaWMgZnVuY3Rpb24gZ2dQcmVkVGV4dENvbG9yKCRwcmVkKSB7
CiAJCSRwcmVkTlMgPSAkdGhpcy0+Z2V0TlMoJHByZWQpOwoJCSRjb2xvciA9ICcwMDAwMDAnOwog
CQlpZihpc3NldCgkdGhpcy0+YVsnbnNQcmVkVGV4dENvbG9yTWFwJ10pKSB7CiAJCQlpZihpc3Nl
dCgkdGhpcy0+YVsnbnNQcmVkVGV4dENvbG9yTWFwJ11bJHByZWROU10pKSAkY29sb3IgPSAkdGhp
cy0+YVsnbnNQcmVkVGV4dENvbG9yTWFwJ11bJHByZWROU107CiAJCQlpZihpc3NldCgkdGhpcy0+
YVsnbnNQcmVkVGV4dENvbG9yTWFwJ11bJHRoaXMtPmdldFByZWZpeCgkcHJlZE5TKV0pKSAgJGNv
bG9yID0gJHRoaXMtPmFbJ25zUHJlZFRleHRDb2xvck1hcCddWyR0aGlzLT5nZXRQcmVmaXgoJHBy
ZWROUyldOyAKIAkJfSAJCiAJCQogCQlpZihpc3NldCgkdGhpcy0+YVsncHJlZFByZWRUZXh0Q29s
b3JNYXAnXSkpIHsKIAkJCWlmKGlzc2V0KCR0aGlzLT5hWydwcmVkUHJlZFRleHRDb2xvck1hcCdd
WyRwcmVkXSkpICAkY29sb3IgPSAgJHRoaXMtPmFbJ3ByZWRQcmVkVGV4dENvbG9yTWFwJ11bJHBy
ZWRdOwogCQkJaWYoaXNzZXQoJHRoaXMtPmFbJ3ByZWRQcmVkVGV4dENvbG9yTWFwJ11bJHRoaXMt
PmdldFBOYW1lKCRwcmVkKV0pKSAgJGNvbG9yID0gICR0aGlzLT5hWydwcmVkUHJlZFRleHRDb2xv
ck1hcCddWyR0aGlzLT5nZXRQTmFtZSgkcHJlZCldOyAKIAkJfSAJCQkKIAkJCiAJCXJldHVybiAk
Y29sb3I7CiAJCQogCX0KIAkKIAlwdWJsaWMgZnVuY3Rpb24gZ2dOb2RlSW1hZ2UoJHJlc291cmNl
KSB7CiAJCQogCQkKCQlpZiAoICEgaXNfYXJyYXkoJHJlc291cmNlKSApIHsJCQkKCQkJJHIgPSAk
dGhpcy0+Z2V0VVJJUmVmKCRyZXNvdXJjZSk7CgkJCWlmKCRyKSAkcmVzb3VyY2UgPSAkcjsJCQkK
CQl9CiAgCQkKCQlpZiggaXNfYXJyYXkoJHJlc291cmNlKSAmJiBpc3NldCgkdGhpcy0+YVsnaW1h
Z2VQcmVkcyddKSApIHsKCQkJJHVyaSA9ICR0aGlzLT5nZXRVUkkoJHJlc291cmNlKTsKCQkJZm9y
ZWFjaCgkdGhpcy0+YVsnaW1hZ2VQcmVkcyddIGFzICRpbWFnZVByZWQpIHsKCiAJCQkJaWYoaXNz
ZXQoJHJlc291cmNlWyR1cmldWyRpbWFnZVByZWRdKSkgewogCQkJCQkKIAkJCQkJcmV0dXJuICgk
cmVzb3VyY2VbJHVyaV1bJGltYWdlUHJlZF1bMF1bJ3ZhbHVlJ10pOwogCQkJCX0KIAkJCX0gCQkJ
CQkJCQkJCQogCQl9CiAJCWlmKGlzc2V0KCR0aGlzLT5hWydub2RlSW1hZ2UnXSkpIHsKIAkJCXJl
dHVybiAkdGhpcy0+YVsnbm9kZUltYWdlJ107CiAJCX0gCQkKIAkJcmV0dXJuICcnOwogCX0KIAkK
IAkvKgogCSAqIFByb2R1Y2UgYW4gYXBwcm9wcmlhdGUgbGluayBmb3IgdGhlIG5vZGUuCiAJICov
CiAJcHVibGljIGZ1bmN0aW9uIGdnTm9kZUxpbmsoJHJlc291cmNlKSB7CiAJCQoJCWlmICggISBp
c19hcnJheSgkcmVzb3VyY2UpICkgewkJCQoJCQkkciA9ICR0aGlzLT5nZXRVUklSZWYoJHJlc291
cmNlKTsKCQkJaWYoJHIpICRyZXNvdXJjZSA9ICRyOwkJCQoJCX0KICAJCQoJCWlmKCBpc19hcnJh
eSgkcmVzb3VyY2UpICYmIGlzc2V0KCR0aGlzLT5hWydsaW5rUHJlZHMnXSkgKSB7CgkJCSR1cmkg
PSAkdGhpcy0+Z2V0VVJJKCRyZXNvdXJjZSk7CgkJCWZvcmVhY2goJHRoaXMtPmFbJ2xpbmtQcmVk
cyddIGFzICRsaW5rUHJlZCkgewogCQkJCWlmKCBpc3NldCgkcmVzb3VyY2VbJHVyaV0pICYmIGlz
c2V0KCRyZXNvdXJjZVskdXJpXVskbGlua1ByZWRdKSkgewogCQkJCQlyZXR1cm4gKCRyZXNvdXJj
ZVskdXJpXVskbGlua1ByZWRdWzBdWyd2YWx1ZSddKTsKIAkJCQl9CiAJCQl9IAkJCQkJCQkJCQkK
IAkJfQoJCQogCQlyZXR1cm4gJyc7CiAJfQogCQogCXB1YmxpYyBmdW5jdGlvbiBnZ1NjYWxlKCRy
ZXNvdXJjZSkgewogCQlpZihpc3NldCgkdGhpcy0+YVsnc2NhbGUnXSkpIHJldHVybiAkdGhpcy0+
YVsnc2NhbGUnXTsKIAkJcmV0dXJuICcnOwogCX0KIAkKIAlwdWJsaWMgZnVuY3Rpb24gZ2dMaXRl
cmFsTm9kZVRleHRDb2xvcigpIHsKIAkJaWYoaXNzZXQoJHRoaXMtPmFbJ2xpdGVyYWxOb2RlVGV4
dENvbG9yJ10pKSB7CiAJCQlyZXR1cm4gJHRoaXMtPmFbJ2xpdGVyYWxOb2RlVGV4dENvbG9yJ107
CiAJCX0gIAkJCiAJCXJldHVybiAnMDBmZjAwJzsKIAl9CiAJCiAJcHVibGljIGZ1bmN0aW9uIGdn
TGl0ZXJhbE5vZGVDb2xvcigpIHsKIAkJaWYoaXNzZXQoJHRoaXMtPmFbJ2xpdGVyYWxOb2RlQ29s
b3InXSkpIHsKIAkJCXJldHVybiAkdGhpcy0+YVsnbGl0ZXJhbE5vZGVDb2xvciddOwogCQl9CiAJ
CXJldHVybiAnZmZmZmZmJzsKIAl9CiAJCiAJcHVibGljIGZ1bmN0aW9uIGdnTGl0ZXJhbE5vZGVU
eXBlKCkgewogCQlpZihpc3NldCgkdGhpcy0+YVsnbGl0ZXJhbE5vZGVUeXBlJ10pKSB7CiAJCQly
ZXR1cm4gJHRoaXMtPmFbJ2xpdGVyYWxOb2RlVHlwZSddOwogCQl9CiAJCXJldHVybiAnU3F1YXJl
Tm9kZSc7CiAJfQogCQogCXB1YmxpYyBmdW5jdGlvbiBnZ0xpdGVyYWxOb2RlSW1hZ2UoKSB7CiAJ
CWlmKGlzc2V0KCR0aGlzLT5hWydsaXRlcmFsTm9kZUltYWdlJ10pKSB7CiAJCQlyZXR1cm4gJHRo
aXMtPmFbJ2xpdGVyYWxOb2RlSW1hZ2UnXTsKIAkJfQogCQlyZXR1cm4gJyc7CiAJfQogCQogCXB1
YmxpYyBmdW5jdGlvbiBnZXRJRCgkcmVzb3VyY2UpIHsKIAkJJGtleXMgPSBhcnJheV9rZXlzKCRy
ZXNvdXJjZSk7CiAJCXJldHVybiBzaGExKCRrZXlzWzBdICk7CQogCX0KIAkKIAlwdWJsaWMgZnVu
Y3Rpb24gYnVpbGRHR0RPTSgpIHsKIAkJJHRoaXMtPmdyYXBoRE9NID0gbmV3IERPTURvY3VtZW50
KCk7CiAJCSRyb290ID0gJHRoaXMtPmdyYXBoRE9NLT5jcmVhdGVFbGVtZW50KCdncmFwaCcpOwoK
IAkJJHJvb3QtPnNldEF0dHJpYnV0ZSgndGl0bGUnLCAkdGhpcy0+YVsndGl0bGUnXSk7CiAJCSRy
b290LT5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAkdGhpcy0+YVsndHlwZSddKTsKIAkJJHJvb3QtPnNl
dEF0dHJpYnV0ZSgnYmdjb2xvcicsICR0aGlzLT5hWydiZ2NvbG9yJ10pOwogCQkkcm9vdC0+c2V0
QXR0cmlidXRlKCdsaW5lY29sb3InLCAkdGhpcy0+YVsnbGluZWNvbG9yJ10pOwogCQkkcm9vdC0+
c2V0QXR0cmlidXRlKCd2aWV3bW9kZScsICR0aGlzLT5hWyd2aWV3bW9kZSddKTsKIAkJJHJvb3Qt
PnNldEF0dHJpYnV0ZSgnd2lkdGgnLCAkdGhpcy0+YVsnd2lkdGgnXSk7CiAJCSRyb290LT5zZXRB
dHRyaWJ1dGUoJ2hlaWdodCcsICR0aGlzLT5hWydoZWlnaHQnXSk7CiAJCSRyb290LT5zZXRBdHRy
aWJ1dGUoJ2FuaW1hdGlvbicsICR0aGlzLT5hWydhbmltYXRpb24nXSk7CiAJCSRyb290LT5zZXRB
dHRyaWJ1dGUoJ2hpZGVsYWJlbCcsICR0aGlzLT5hWydoaWRlbGFiZWwnXSk7CiAJCSRyb290LT5z
ZXRBdHRyaWJ1dGUoJ2xvY2snLCAkdGhpcy0+YVsnbG9jayddKTsKIAkJJHJvb3QtPnNldEF0dHJp
YnV0ZSgnYWN0aW9uJywgJHRoaXMtPmFbJ2FjdGlvbiddKTsKIAkJJHRoaXMtPmdyYXBoRE9NLT5h
cHBlbmRDaGlsZCgkcm9vdCk7CiAJCQogCX0KIAkKIAkvKgogCSAqIExvb2sgZm9yIGFuIGFwcHJv
cHJpYXRlIGxhYmVsCiAJICovCiAJZnVuY3Rpb24gZ2V0TGFiZWwoJHJlc291cmNlKSB7CiAJCQoJ
CWlmICggISBpc19hcnJheSgkcmVzb3VyY2UpICkgewkJCQoJCQkkciA9ICR0aGlzLT5nZXRVUklS
ZWYoJHJlc291cmNlKTsKCQkJaWYoJHIpICRyZXNvdXJjZSA9ICRyOwkJCQoJCX0KICAJCQoJCWlm
KCBpc19hcnJheSgkcmVzb3VyY2UpICkgewoJCQkkdXJpID0gJHRoaXMtPmdldFVSSSgkcmVzb3Vy
Y2UpOwoJCQlmb3JlYWNoKCR0aGlzLT5hWydsYWJlbFByZWRzJ10gYXMgJGxhYmVsUHJlZCkgewoK
IAkJCQlpZihpc3NldCgkcmVzb3VyY2VbJHVyaV1bJGxhYmVsUHJlZF0pKSB7CiAJCQkJCXJldHVy
biAoJHJlc291cmNlWyR1cmldWyRsYWJlbFByZWRdWzBdWyd2YWx1ZSddKTsKIAkJCQl9CgogCQkJ
CWlmKGlzc2V0KCRyZXNvdXJjZVskdXJpXVskdGhpcy0+ZXhwYW5kUE5hbWUoJGxhYmVsUHJlZCld
KSkgewogCQkJCQlyZXR1cm4gKCRyZXNvdXJjZVskdXJpXVskdGhpcy0+ZXhwYW5kUE5hbWUoJGxh
YmVsUHJlZCldWzBdWyd2YWx1ZSddKTsKIAkJCQl9CiAJCQkJCiAJCQl9IAkJCQkJCQkJCQkKIAkJ
CSRrZXlzID0gYXJyYXlfa2V5cygkcmVzb3VyY2UpOyAJCSAJCQkKIAkJCXJldHVybiAkdGhpcy0+
Z2V0UE5hbWUoJGtleXNbMF0pID8gJHRoaXMtPmdldFBOYW1lKCRrZXlzWzBdKSA6ICRrZXlzWzBd
IDsKIAkJfSBlbHNlIHsgCQkJCiAJCQlyZXR1cm4gJHRoaXMtPmdldFBOYW1lKCRyZXNvdXJjZSk7
IAkJCQoJCX0gCQkJIAkJCSAJCSAJCQogCX0KIAkKIAlmdW5jdGlvbiBidWlsZE5vZGVGcm9tU3Vi
amVjdCgkcmVzb3VyY2UpIHsKIAkJJGlkID0gJHRoaXMtPmdldElEKCRyZXNvdXJjZSk7CiAJCWlm
ICghIGluX2FycmF5KCRpZCwgJHRoaXMtPmRvbmVOb2RlcykpIHsKCSAJCSRub2RlID0gJHRoaXMt
PmdyYXBoRE9NLT5jcmVhdGVFbGVtZW50KCdub2RlJyk7CSAJCQoJIAkJJG5vZGUtPnNldEF0dHJp
YnV0ZSgnaWQnLCAkaWQgKTsKCSAJCSRub2RlLT5zZXRBdHRyaWJ1dGUoJ2NvbG9yJywgJHRoaXMt
PmdnTm9kZUNvbG9yKCRyZXNvdXJjZSkgKTsKCSAJCSRub2RlLT5zZXRBdHRyaWJ1dGUoJ2xpbmsn
LCAkdGhpcy0+Z2dOb2RlTGluaygkcmVzb3VyY2UpKTsKCSAJCSRub2RlLT5zZXRBdHRyaWJ1dGUo
J3R5cGUnLCAkdGhpcy0+Z2dOb2RlVHlwZSgkcmVzb3VyY2UpKTsKCSAJCSRub2RlLT5zZXRBdHRy
aWJ1dGUoJ3RleHQnLCAkdGhpcy0+Z2V0TGFiZWwoJHJlc291cmNlKSk7CgkgCQkkbm9kZS0+c2V0
QXR0cmlidXRlKCd0ZXh0Y29sb3InLCAkdGhpcy0+Z2dOb2RlVGV4dENvbG9yKCRyZXNvdXJjZSkp
OwoJIAkJJG5vZGUtPnNldEF0dHJpYnV0ZSgnaW1hZ2UnLCAkdGhpcy0+Z2dOb2RlSW1hZ2UoJHJl
c291cmNlKSk7CgkgCQkkbm9kZS0+c2V0QXR0cmlidXRlKCdzY2FsZScsICR0aGlzLT5nZ1NjYWxl
KCRyZXNvdXJjZSkpOwoJIAkJJHRoaXMtPmdyYXBoRE9NLT5kb2N1bWVudEVsZW1lbnQtPmFwcGVu
ZENoaWxkKCRub2RlKTsKCSAJCSR0aGlzLT5kb25lTm9kZXNbXSA9ICRpZDsKIAkJfQogCX0KIAkK
IAkKIAlmdW5jdGlvbiBidWlsZE5vZGVGcm9tT2JqZWN0KCRvYmplY3QpIHsKIAkJaWYoJG9iamVj
dFsndHlwZSddID09ICdsaXRlcmFsJykgewogCQkJJG9Ob2RlID0gJHRoaXMtPmdyYXBoRE9NLT5j
cmVhdGVFbGVtZW50KCdub2RlJyk7IAkJCQogCQkJJG9Ob2RlLT5zZXRBdHRyaWJ1dGUoJ2lkJywg
c2hhMSgkb2JqZWN0Wyd2YWx1ZSddKSApOwoJIAkJJG9Ob2RlLT5zZXRBdHRyaWJ1dGUoJ2NvbG9y
JywgJHRoaXMtPmdnTGl0ZXJhbE5vZGVDb2xvcigpICk7CgkgCQkkb05vZGUtPnNldEF0dHJpYnV0
ZSgndHlwZScsICR0aGlzLT5nZ0xpdGVyYWxOb2RlVHlwZSgpKTsKCSAJCSRvTm9kZS0+c2V0QXR0
cmlidXRlKCd0ZXh0JywgJG9iamVjdFsndmFsdWUnXSk7CgkgCQkkb05vZGUtPnNldEF0dHJpYnV0
ZSgnc2NhbGUnLCAkdGhpcy0+Z2dTY2FsZSgkb2JqZWN0KSk7CgkgCQkkb05vZGUtPnNldEF0dHJp
YnV0ZSgndGV4dGNvbG9yJywgJHRoaXMtPmdnTGl0ZXJhbE5vZGVUZXh0Q29sb3IoKSk7CgkgCQkk
b05vZGUtPnNldEF0dHJpYnV0ZSgnaW1hZ2UnLCAkdGhpcy0+Z2dMaXRlcmFsTm9kZUltYWdlKCRv
YmplY3QpKTsKCSAJCSR0aGlzLT5ncmFwaERPTS0+ZG9jdW1lbnRFbGVtZW50LT5hcHBlbmRDaGls
ZCgkb05vZGUpOyAJCQkKIAkJCQogCQl9IGVsc2UgewogCQkJJHJlc291cmNlID0gJHRoaXMtPmdl
dFVSSVJlZigkb2JqZWN0Wyd2YWx1ZSddKTsKIAkJCWlmKCRyZXNvdXJjZSkgewogCQkJCSR0aGlz
LT5idWlsZE5vZGVGcm9tU3ViamVjdCgkcmVzb3VyY2UpOwogCQkJfSBlbHNlIHsKIAkJCQkkaWQg
PSBzaGExKCRvYmplY3RbJ3ZhbHVlJ10pOwogCQkJCWlmICghIGluX2FycmF5KCRpZCwgJHRoaXMt
PmRvbmVOb2RlcykpIHsKCSAJCQkJJG9Ob2RlID0gJHRoaXMtPmdyYXBoRE9NLT5jcmVhdGVFbGVt
ZW50KCdub2RlJyk7CgkgCQkJCSRvTm9kZS0+c2V0QXR0cmlidXRlKCd0ZXh0JywgJ01pc3Npbmcg
RGF0YScpOwkgCQkJCQoJIAkJCQkkdGhpcy0+ZG9uZU5vZGVzW10gPSAkaWQ7CgkgCQkJCSRvTm9k
ZS0+c2V0QXR0cmlidXRlKCdpZCcsICRpZCApOwoJIAkJCQkkb05vZGUtPnNldEF0dHJpYnV0ZSgn
dHlwZScsICR0aGlzLT5nZ05vZGVUeXBlKCRvYmplY3RbJ3ZhbHVlJ10pKTsKCSAJCQkJJG9Ob2Rl
LT5zZXRBdHRyaWJ1dGUoJ3RleHRjb2xvcicsICdmZjAwMDAnKTsKCSAJCQkJJG9Ob2RlLT5zZXRB
dHRyaWJ1dGUoJ2NvbG9yJywgJ2ZmMDAwMCcpOwoJIAkJCQkkb05vZGUtPnNldEF0dHJpYnV0ZSgn
c2NhbGUnLCAkdGhpcy0+Z2dTY2FsZSgkb2JqZWN0KSk7CgkgCQkJCSRvTm9kZS0+c2V0QXR0cmli
dXRlKCdpbWFnZScsICR0aGlzLT5nZ05vZGVJbWFnZSgkb2JqZWN0KSk7CgkgCQkJCSRvTm9kZS0+
c2V0QXR0cmlidXRlKCdsaW5rJywgJHRoaXMtPmdnTm9kZUxpbmsoJG9iamVjdCkpOwoJIAkJCQkk
dGhpcy0+Z3JhcGhET00tPmRvY3VtZW50RWxlbWVudC0+YXBwZW5kQ2hpbGQoJG9Ob2RlKTsKIAkJ
CQl9CiAJCQl9CiAJCX0KIAkJCiAJfQogCQogCWZ1bmN0aW9uIGJ1aWxkRWRnZSgkc1VSSSwgJHBy
ZWQsICRvYmplY3QpIHsKIAkJJGVkZ2UgPSAkdGhpcy0+Z3JhcGhET00tPmNyZWF0ZUVsZW1lbnQo
J2VkZ2UnKTsKIAkJJGVkZ2UtPnNldEF0dHJpYnV0ZSgnbGFiZWwnLCAkdGhpcy0+Z2V0TGFiZWwo
JHByZWQpKTsKIAkJJGVkZ2UtPnNldEF0dHJpYnV0ZSgndGV4dGNvbG9yJywgJHRoaXMtPmdnUHJl
ZFRleHRDb2xvcigkcHJlZCkpOwogCQkKIAkJJGVkZ2UtPnNldEF0dHJpYnV0ZSgnc291cmNlTm9k
ZScsIHNoYTEoJHNVUkkpKTsKIAkJCiAJCQogCQkkZWRnZS0+c2V0QXR0cmlidXRlKCd0YXJnZXRO
b2RlJywgc2hhMSgkb2JqZWN0Wyd2YWx1ZSddKSApOyAJCQkKIAkJCiAJCSR0aGlzLT5ncmFwaERP
TS0+ZG9jdW1lbnRFbGVtZW50LT5hcHBlbmRDaGlsZCgkZWRnZSk7CiAJfQogCQogCS8qCiAJICog
RnJvbSBhbiBvYmplY3QncyBVUkksIGZpbmQgdGhlIHJlc291cmNlIGFzIGEgc3ViamVjdAogCSAq
LwogCWZ1bmN0aW9uIGdldFVSSVJlZigkdXJpKSB7CiAJCWlmKGlzc2V0KCR0aGlzLT5pbmRleFsk
dXJpXSkpIHsKIAkJCXJldHVybiBhcnJheSgkdXJpPT4kdGhpcy0+aW5kZXhbJHVyaV0pOwogCQl9
IGVsc2UgewogCQkJcmV0dXJuIGZhbHNlOwogCQl9CiAJCQogCX0KIAkKIAlmdW5jdGlvbiBnZXRV
UkkoJHJlc291cmNlKSB7CiAJCWlmKGlzX2FycmF5KCRyZXNvdXJjZSkpIHsKIAkJCWlmKGlzc2V0
KCRyZXNvdXJjZVsndmFsdWUnXSkgKSB7CiAJCQkJaWYgKCRyZXNvdXJjZVsndHlwZSddID09ICd1
cmknKSB7CiAJCQkJCXJldHVybiAkcmVzb3VyY2VbJ3ZhbHVlJ107CiAJCQkJfQogCQkJfSBlbHNl
IHsKIAkJCQkka2V5cyA9IGFycmF5X2tleXMoJHJlc291cmNlKTsKIAkJCQlyZXR1cm4gJGtleXNb
MF07CiAJCQl9CiAJCX0gZWxzZSB7CiAJCQlyZXR1cm4gJHJlc291cmNlOwogCQl9CiAJfQogCQog
Ly9tYW5pcHVsYXRpbmcgQVJDMidzIGdldFByZWZpeAogICBmdW5jdGlvbiBnZXROUygkdXJpKSB7
CgogICAgaWYgKHByZWdfbWF0Y2goJy9eKC4qW1wvXCNdKShbYS16XF9dW2EtejAtOVwtXF9dKikk
L2knLCAkdXJpLCAkbSkpIHsKICAgIAlyZXR1cm4gJG1bMV07CiAgICAgIC8vcmV0dXJuICR0aGlz
LT5nZXRQcmVmaXgoJG1bMV0pIC4gJzonIC4gJG1bMl07CiAgICB9CiAgICByZXR1cm4gMDsKICB9
IAkKIAkKIH0KCiAKPz4K

--=__PartD2FA6BD3.0__=--

""" ;
         ns1:returnPath "<pgosetti@umw.edu>" ;
         ns1:xOriginalTo "arc-dev@semsol.org" ;
         ns1:deliveredTo "web11p1@p15192371.pureserver.info" ;
         ns1:received """from SMTP-DOM-MTA by umwgw.umw.edu
	with Novell_GroupWise; Sun, 03 May 2009 14:09:19 -0400""" ;
         ns1:messageId "<49FDA580020000B100097B7A@umwgw.umw.edu>" ;
         ns1:xMailer "Novell GroupWise Internet Agent 7.0.3 " ;
         ns1:date "Sun, 03 May 2009 14:09:07 -0400" ;
         ns1:from '"Patrick Murray-John" <pgosetti@umw.edu>' ;
         ns1:to "<arc-dev@semsol.org>" ;
         ns1:subject """Re: [arc-dev] An effort at a serializer for Graph Gear + the
	file!""" ;
         ns1:mimeVersion "1.0" ;
         ns1:contentType 'multipart/mixed; boundary="=__PartD2FA6BD3.0__="' ;
         ns1:xSpamCheckerVersion """SpamAssassin 2.64 (2004-01-11) on 
	p15192371.pureserver.info""" ;
         ns1:xSpamLevel "" ;
         ns1:xSpamStatus """No, hits=-0.8 required=5.0 tests=AWL,BAYES_40 autolearn=ham 
	version=2.64""" ;
         ns1:xUIDL """1'="!n<h!!L_B"!b$H"!