def render(self, context): row = self.row_variable.resolve(context) resource = row[self.resource_column] context['resource'] = resource.value context['label'] = row.get(self.label_column, resource).value if self.property_column: context['property'] = abbreviate(row[self.property_column].value) else: try: del context['property'] except KeyError: pass anchor = " <A title='{{resource}}' href='{{resource}}' {% if property %} rel='{{property}}' about='{{resource_uri}}' {% endif %} >{{label}}</A>" span = """<SPAN {% if property %} property='{{property}}' {% endif %} >{{resource}}</SPAN> """ template = Template(anchor if resource.type =='uri' else span) return template.render(context)
def read(self, request, file_hash): sparql = """ SELECT DISTINCT ?predicate ?object ?range WHERE { <%s> ?predicate ?object . ?predicate rdfs:range ?range . } ORDER BY ?p """ % CLIP[file_hash] proxy = get_sparql_proxy() resource_data = proxy.query(sparql,output='ResultSet') output = {} for row in resource_data: obj = abbreviate(row['object'].value) if row['object'].type =='uri' else row['object'].value ran = abbreviate(row['range'].value) pred = abbreviate(row['predicate'].value) output[pred] = { 'value' : obj, 'type' : ran } return output
def read(self, request, file_hash, predicate): sparql = """ SELECT DISTINCT ?object ?object_prop ?object_range ?label ?object_value WHERE { <%s> %s ?object . OPTIONAL {?object ?object_prop ?object_value } OPTIONAL {?object_prop rdfs:range ?object_range } OPTIONAL { ?object rdfs:label ?object_label } } ORDER BY ?p """ % (CLIP[file_hash], predicate) proxy = get_sparql_proxy() resource_data = proxy.query(sparql,output='ResultSet') output = [] aggregated = {} for row in resource_data: obj = row['object'] if obj.type == 'uri': ran = abbreviate(row['object_range'].value) prop = abbreviate(row['object_prop'].value) obj_val = row['object_value'] value = abbreviate(obj_val.value) if obj_val.type == 'uri' else obj_val.value try: aggregated[obj.value][prop] = value except KeyError: aggregated[obj.value] = {} aggregated[obj.value][prop] = value else: output.append(obj.value) for (key, val) in aggregated.items(): output.append(val) return output