1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
|
def calculateDumbDown(self, property, node):
rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
rdfs="http://www.w3.org/1999/02/22-rdf-schema-ns#"
dc="http://purl.org/dc/elements/1.1/"
dct="http://purl.org/dc/terms/"
dcq=dct # old: "http://purl.org/dc/qualifiers/1.0/"
# care about cycles:
if visitedHash==None:
visitedHash={}
#
if node.is_literal():
return node
else:
if property == (dc + "identifier")\
or property == (dc + "reference")\
or property == (dc + "source"):
# preferably calculate a URI
# Bag or Seq ?:
if isinstance(node, rdf + "Bag") or
isinstance(node, rdf + "Seq"):
return self.processBag_Seq(property,node,visitedHash)
# Alt ?
if isinstance(node, rdf+"Alt"):
return self._processAlt(property,node,visitedHash)
# URI ?
if(node.getLabel != ""):
return (node.getLabel)
# rdfs:label ?
label=node.getChildsByProperty(rdfs+"label")
if label:
return map _.getLabel label
# has rdf:value?
rdfvalue=node.getChildsByProperty(rdf+"value")
if rdfvalue:
return self._process_rdf_value(property,visitedHash,rdfvalue)
# else: do nothing!
return None
else:
# rdfs:label ?
label=node.getChildsByProperty(rdfs+"label")
if label:
return map _.getLabel label
# has rdf:value?
rdfvalue=node.getChildsByProperty(rdf+"value")
if rdfvalue:
return self._process_rdf_value(property,visitedHash,rdfvalue)
# Bag or Seq ?:
if isinstance(node, rdf+"Bag") or\
isinstance(node, rdf+"Seq"):
return self._processBag_Seq(property,node,visitedHash)
# Alt ?
if isinstance(node, rdf+"Alt"):
return self._processAlt(property,node,visitedHash)
# has dc:title?
title=node.getChildsByProperty(dc+"title")
if title:
return self._process_rdf_value(property,visitedHash,title)
# URI ?
if(node.getLabel != ""):
return (node.getLabel)
# else: do nothing!
return None
def _processBag_Seq (self,property,node,visitedHash):
elements=node.rdfPath('element()')
res=""
for each elem(elements):
res += (elem.getLabel + ";")
if isinstance(elem, 'Literal')
if isinstance(elem, 'Resource'):
res=res.join(' ',self._calculateDumbDown(property,elem,visitedHash))
res=~s/\\s//
return (res)
def _processAlt (self,property,node,visitedHash):
elements = node.rdfPath('element()')
erg = None
for each elem(elements):
push erg,elem.getLabel
if isinstance(elem, 'Literal')
if isinstance(elem, 'Resource'):
push erg,self._calculateDumbDown(property,elem,visitedHash)
return erg
def _process_rdf_value (self,property,visitedHash,rdfvalue):
erg = None
for each elem(rdfvalue):
push erg,elem.getLabel
if isinstance(elem, 'Literal')
if isinstance(elem, 'Resource'):
push erg,self._calculateDumbDown(property,elem,visitedHash)
return erg
|