File: DumbDown.py

package info (click to toggle)
zope-rdfgrabber 0.4-4
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 208 kB
  • ctags: 196
  • sloc: python: 794; makefile: 32; sh: 24
file content (103 lines) | stat: -rw-r--r-- 3,489 bytes parent folder | download | duplicates (2)
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