def test_sparql_network_label_length_truncated(self):
     sparql_network = SPARQLNetwork(label_max_length=5)
     data = get_sparql_result('008_duplicate_s_and_p_bindings.json')
     sparql_network.add_results(data)
     node = sparql_network.graph.nodes.get('http://kelvinlawrence.net/air-routes/resource/24')
     self.assertEqual('re...', node['label'])
     self.assertEqual('resource:24', node['title'])
 def test_sparql_network_node_different_label_and_tooltip(self):
     sparql_network = SPARQLNetwork(label_max_length=100, display_property='value', tooltip_property='type')
     data = get_sparql_result('008_duplicate_s_and_p_bindings.json')
     sparql_network.add_results(data)
     node = sparql_network.graph.nodes.get('http://kelvinlawrence.net/air-routes/resource/24')
     self.assertEqual('http://kelvinlawrence.net/air-routes/resource/24', node['label'])
     self.assertEqual('uri', node['title'])
Example #3
0
    def test_sparql_network_to_json(self):
        data = get_sparql_result("001_kelvin-airroutes.json")

        sparql_network = SPARQLNetwork()
        sparql_network.add_results(data)
        js = sparql_network.to_json()
        self.assertTrue('graph' in js)
 def test_sparql_network_multiple_s_and_p_bindings(self):
     sparql_network = SPARQLNetwork()
     data = get_sparql_result('008_duplicate_s_and_p_bindings.json')
     sparql_network.add_results(data)
     node = sparql_network.graph.nodes.get('http://kelvinlawrence.net/air-routes/resource/24')
     self.assertEqual(['value1', 'value2'], node['properties']['example:prop'])
     self.assertEqual(['value3', 'value4'], node['properties']['propLiteral'])
 def test_highly_connected_node(self):
     data = get_sparql_result('002_airroutes-labels.json')
     sn = SPARQLNetwork()
     sn.add_results(data)
     center_node = sn.graph.nodes.get('http://kelvinlawrence.net/air-routes/resource/12')
     self.assertEqual('JFK', center_node['label'])
     self.assertEqual(14, len(center_node['properties']))
 def test_sparql_network_edge_label_string_invalid(self):
     sparql_network = SPARQLNetwork(edge_label_max_length=100, edge_display_property="foo")
     data = get_sparql_result('009_airroutes_edge_test.json')
     sparql_network.add_results(data)
     edge = sparql_network.graph.get_edge_data('http://kelvinlawrence.net/air-routes/resource/365',
                                               'http://kelvinlawrence.net/air-routes/resource/31',
                                               'http://kelvinlawrence.net/air-routes/objectProperty/route')
     self.assertEqual('objectProperty:route', edge['label'])
 def test_sparql_network_edge_tooltip_default(self):
     sparql_network = SPARQLNetwork()
     data = get_sparql_result('009_airroutes_edge_test.json')
     sparql_network.add_results(data)
     edge = sparql_network.graph.get_edge_data('http://kelvinlawrence.net/air-routes/resource/365',
                                               'http://kelvinlawrence.net/air-routes/resource/31',
                                               'http://kelvinlawrence.net/air-routes/objectProperty/route')
     self.assertEqual('objectProperty:route', edge['title'])
 def test_sparql_network_edge_tooltip_map_invalid_json(self):
     sparql_network = SPARQLNetwork(edge_label_max_length=100, edge_tooltip_property='{"uri":"value')
     data = get_sparql_result('009_airroutes_edge_test.json')
     sparql_network.add_results(data)
     edge = sparql_network.graph.get_edge_data('http://kelvinlawrence.net/air-routes/resource/365',
                                               'http://kelvinlawrence.net/air-routes/resource/31',
                                               'http://kelvinlawrence.net/air-routes/objectProperty/route')
     self.assertEqual('objectProperty:route', edge['title'])
 def test_sparql_network_edge_tooltip_default_with_custom_label(self):
     sparql_network = SPARQLNetwork(edge_label_max_length=100, edge_display_property="value")
     data = get_sparql_result('009_airroutes_edge_test.json')
     sparql_network.add_results(data)
     edge = sparql_network.graph.get_edge_data('http://kelvinlawrence.net/air-routes/resource/365',
                                               'http://kelvinlawrence.net/air-routes/resource/31',
                                               'http://kelvinlawrence.net/air-routes/objectProperty/route')
     self.assertEqual('http://kelvinlawrence.net/air-routes/objectProperty/route', edge['label'])
     self.assertEqual('http://kelvinlawrence.net/air-routes/objectProperty/route', edge['title'])
Example #10
0
 def test_extract_prefix(self):
     sparql_network = SPARQLNetwork()
     uri_to_prefix = {
         'http://www.w3.org/1999/02/22-rdf-syntax-ns#type': 'rdf',
         'http://kelvinlawrence.net/air-routes/class/Airport': 'class',
         'http://kelvinlawrence.net/air-routes/resource/24': 'resource',
         'http://www.w3.org/2000/01/rdf-schema#': 'rdfs'
     }
     for k in uri_to_prefix:
         prefix = sparql_network.extract_prefix(k)
         self.assertEqual(uri_to_prefix[k], prefix)
    def test_node_and_edge_label_extraction(self):
        data = get_sparql_result("003_large_binding_set.json")

        sn = SPARQLNetwork()
        sn.add_results(data)
        self.assertEqual(443, len(sn.graph.nodes))

        # pick out a few random nodes and ensure that they match the expected result from json file
        node_108 = sn.graph.nodes.get('http://kelvinlawrence.net/air-routes/resource/108')
        self.assertEqual('NCE', node_108['label'])

        node_1265 = sn.graph.nodes.get('http://kelvinlawrence.net/air-routes/resource/1265')
        self.assertEqual('resourc...', node_1265['label'])
Example #12
0
 def test_extract_conflicting_prefix(self):
     sparql_network = SPARQLNetwork()
     uri_to_prefix = {
         'http://kelvinlawrence.net/air-routes/resource/24': 'resource',
         'http://kelvinlawrence.net/class/resource/24': 'resource-2',
         'http://example/resource/24': 'resource-3',
         'http://example.org/index.html#section2': 'index.html',
         # this is invalid uri syntax but Neptune allows it.
         'http://example.org/index.html#section2#point1': 'index.html',
         'http://example.org/index.html#/user/orders/1': 'index.html'
     }
     for k in uri_to_prefix:
         prefix = sparql_network.extract_prefix(k)
         self.assertEqual(uri_to_prefix[k], prefix)
Example #13
0
    def test_extract_value(self):
        sparql_network = SPARQLNetwork()
        uri_to_value = {
            'http://www.w3.org/1999/02/22-rdf-syntax-ns#type': 'type',
            'http://kelvinlawrence.net/air-routes/class/Airport': 'Airport',
            'http://kelvinlawrence.net/air-routes/resource/24': '24',
            'http://example.org/index.html#section2': 'section2',
            # this is invalid uri syntax but Neptune allows it.
            'http://example.org/index.html#section2#point1': 'section2#point1',
            'http://example.org/index.html#/user/orders/1': '/user/orders/1'
        }

        for k in uri_to_value:
            value = sparql_network.extract_value(k)
            self.assertEqual(uri_to_value[k], value)
Example #14
0
    def test_sparql_network_extract_prefixes_from_query(self):
        sparql_network = SPARQLNetwork()
        query = """
        PREFIX rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
        PREFIX rdfs:  <http://www.w3.org/2000/01/rdf-schema#>
        PREFIX res:   <http://kelvinlawrence.net/air-routes/resource/>
        PREFIX prop:  <http://kelvinlawrence.net/air-routes/datatypeProperty/>
        PREFIX op:    <http://kelvinlawrence.net/air-routes/objectProperty/>
        PREFIX class: <http://kelvinlawrence.net/air-routes/class/>

        SELECT ?s ?p ?o 
        WHERE {
            ?s ?p ?o . 
            ?s prop:code "CZM" .
            ?s op:route ?o
        } 
        LIMIT 50
        """
        sparql_network.extract_prefix_declarations_from_query(query)
        self.assertEqual(sparql_network.prefix_to_namespace['prop'],
                         'http://kelvinlawrence.net/air-routes/datatypeProperty/')
        self.assertEqual(sparql_network.namespace_to_prefix['http://kelvinlawrence.net/air-routes/datatypeProperty/'],
                         'prop')

        # now load some bindings which use these prefixes and verify they are used over the extracted ones.
        data = get_sparql_result('001_kelvin-airroutes.json')
        sparql_network.add_results(data)
        icao = sparql_network.graph.nodes['http://kelvinlawrence.net/air-routes/resource/24']['properties']['prop:icao']
        self.assertEqual(icao, 'KSJC')
    def test_sparql_network_event_callback(self):
        callback_reached = {}
        node_id = 'http://kelvinlawrence.net/air-routes/resource/24'

        def add_node_callback(network, event_name, data):
            expected_data = {
                'data': {
                    'label': 'resourc...',
                    'prefix': 'resource',
                    'title': 'resource:24'
                },
                'node_id': 'http://kelvinlawrence.net/air-routes/resource/24'
            }
            self.assertEqual(expected_data, data)
            node = network.graph.nodes.get(node_id)
            self.assertIsNotNone(node)
            self.assertEqual(expected_data['data'], node)
            callback_reached[event_name] = True

        callbacks = {EVENT_ADD_NODE: [add_node_callback]}
        sn = SPARQLNetwork(callbacks=callbacks)
        sn.add_node(node_id)
        self.assertTrue(callback_reached[EVENT_ADD_NODE])
Example #16
0
 def test_sparql_network_ignore_groups(self):
     sparql_network = SPARQLNetwork(group_by_property='{"uri":"value"}', ignore_groups=True)
     data = get_sparql_result('008_duplicate_s_and_p_bindings.json')
     sparql_network.add_results(data)
     node = sparql_network.graph.nodes.get('http://kelvinlawrence.net/air-routes/resource/24')
     self.assertEqual('DEFAULT_GROUP', node['group'])
Example #17
0
def create_network_from_dataset(dataset: str, expand_all: bool = False) -> SPARQLNetwork:
    data = get_sparql_result(dataset)
    sparql_network = SPARQLNetwork(expand_all=expand_all)
    sparql_network.add_results(data)
    return sparql_network
Example #18
0
 def test_sparql_network_group_map_invalid_json(self):
     sparql_network = SPARQLNetwork(group_by_property='{"uri":bar"')
     data = get_sparql_result('008_duplicate_s_and_p_bindings.json')
     sparql_network.add_results(data)
     node = sparql_network.graph.nodes.get('http://kelvinlawrence.net/air-routes/resource/24')
     self.assertEqual('uri', node['group'])
Example #19
0
 def test_sparql_network_group_by_raw_json(self):
     sparql_network = SPARQLNetwork(group_by_raw='{"uri":"__RAW_RESULT__"}')
     data = get_sparql_result('008_duplicate_s_and_p_bindings.json')
     sparql_network.add_results(data)
     node = sparql_network.graph.nodes.get('http://kelvinlawrence.net/air-routes/resource/24')
     self.assertEqual("{'type': 'uri', 'value': 'http://kelvinlawrence.net/air-routes/resource/24'}", node['group'])
Example #20
0
 def test_sparql_network_group_by_raw_explicit_overrule_gbp(self):
     sparql_network = SPARQLNetwork(group_by_raw=True, group_by_property='value')
     data = get_sparql_result('008_duplicate_s_and_p_bindings.json')
     sparql_network.add_results(data)
     node = sparql_network.graph.nodes.get('http://kelvinlawrence.net/air-routes/resource/24')
     self.assertEqual("{'type': 'uri', 'value': 'http://kelvinlawrence.net/air-routes/resource/24'}", node['group'])
Example #21
0
 def test_sparql_network_node_tooltip_map_invalid_json(self):
     sparql_network = SPARQLNetwork(label_max_length=100, tooltip_property='{"uri"type"}')
     data = get_sparql_result('008_duplicate_s_and_p_bindings.json')
     sparql_network.add_results(data)
     node = sparql_network.graph.nodes.get('http://kelvinlawrence.net/air-routes/resource/24')
     self.assertEqual('resource:24', node['title'])
Example #22
0
 def test_sparql_network_node_tooltip_default(self):
     sparql_network = SPARQLNetwork()
     data = get_sparql_result('008_duplicate_s_and_p_bindings.json')
     sparql_network.add_results(data)
     node = sparql_network.graph.nodes.get('http://kelvinlawrence.net/air-routes/resource/24')
     self.assertEqual('resource:24', node['title'])
Example #23
0
 def test_sparql_network_node_label_map_invalid_key(self):
     sparql_network = SPARQLNetwork(label_max_length=100, display_property='{"foo":"value"}')
     data = get_sparql_result('008_duplicate_s_and_p_bindings.json')
     sparql_network.add_results(data)
     node = sparql_network.graph.nodes.get('http://kelvinlawrence.net/air-routes/resource/24')
     self.assertEqual('resource:24', node['label'])