예제 #1
0
    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)
예제 #2
0
    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
예제 #3
0
    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