def test_sparql_query(self):
     results = sparqlquery(u'http://dbpedia.org/sparql',
                           u'''SELECT DISTINCT ?uri ?designer
                               WHERE {
                               ?uri rdf:type <http://dbpedia.org/ontology/ProgrammingLanguage> ;
                                    rdfs:label ?label ;
                                    dbpedia-owl:designer ?designer .
                               FILTER(regex(?label, "^Python"))
                               }''')
     self.assertEqual(results, [['http://dbpedia.org/resource/Python_(programming_language)', 'http://dbpedia.org/resource/Guido_van_Rossum'],
                                ['http://dbpedia.org/resource/Python_for_S60', 'http://dbpedia.org/resource/Guido_van_Rossum']])
 def test_sparql_no_autocast(self):
     alignset = sparqlquery('http://dbpedia.inria.fr/sparql',
                              'prefix db-owl: <http://dbpedia.org/ontology/>'
                              'prefix db-prop: <http://fr.dbpedia.org/property/>'
                              'select ?ville, ?name, ?long, ?lat where {'
                              ' ?ville db-owl:country <http://fr.dbpedia.org/resource/France> .'
                              ' ?ville rdf:type db-owl:PopulatedPlace .'
                              ' ?ville db-owl:populationTotal ?population .'
                              ' ?ville foaf:name ?name .'
                              ' ?ville db-prop:longitude ?long .'
                              ' ?ville db-prop:latitude ?lat .'
                              ' FILTER (?population > 1000)'
                              '} LIMIT 100', indexes=[0, 1, (2, 3)], autocast_data=False)
     self.assertEqual(len(alignset), 100)
     self.assertFalse(isinstance(alignset[0][2][0], float))
 def __call__(self, named_entities):
     filtered_named_entities = []
     seen_uris = {}
     for uri, p, t in named_entities:
         if uri in seen_uris:
             if seen_uris[uri]:
                 filtered_named_entities.append((uri, p, t))
         else:
             results = sparqlquery(self.endpoint, self.query % {'uri': uri})
             types = set([r[0] for r in results])
             if not len(types.intersection(self.accepted_types)):
                 seen_uris[uri] = False
             else:
                 seen_uris[uri] = True
                 filtered_named_entities.append((uri, p, t))
     return filtered_named_entities
 def query_word(self, word):
     """ Query a word for a Named Entities Recognition process
     """
     return [r[0] for r in sparqlquery(self.endpoint, self.query % {'word': word})]