예제 #1
0
def test_thing_query_URL():
    """Thing - URL query - : Should pass """
    thing = Thing(url='http://dbpedia.org/resource/Charles_Baudelaire',
                  endpoints=[e for e in Endpoint])
    thing.query(strict_mode=True)
    assert u'http://dbpedia.org/resource/Charles_Baudelaire' in thing.attributes.get(
        u'owl:sameAs')
예제 #2
0
def test_thing_deepen_search():
    """Thing - find_more_about(): Should pass"""
    endpoints = [
        Endpoint.dbpedia_fr, Endpoint.dbpedia, Endpoint.wikidata, Endpoint.bnf
    ]
    thing = Thing(url='http://dbpedia.org/resource/Charles_Baudelaire')
    thing.add_query_endpoints(endpoints)
    thing.query(strict_mode=True)
    attr_before_deep_search = len(thing.attributes)
    thing.find_more_about()
    attr_after_deep_search = len(thing.attributes)
    assert attr_before_deep_search < attr_after_deep_search
예제 #3
0
    def find_author_organisation(self,
                                 author,
                                 query_language,
                                 strict_mode=True,
                                 check_type=True):
        """ Find an Organisation corresponding to an author name.
        :param author: Full name of the Organisation
        :param query_language: The language declared in the Book query
        :return:
        """
        # raise NotImplementedError("The Class 'Organisation' is not implemented yet !")

        author = Thing(label=author,
                       query_language=query_language,
                       endpoints=[e for e in Endpoint])
        author.query(strict_mode=strict_mode, check_type=check_type)
        if not author.attributes:
            raise QueryException(
                "The authoring organisation could be found on the Semantic Web."
            )
        return author.get_uris()
예제 #4
0
def test_query_content_multiple_labels_nochecktype_strictmode():
    """Thing - query multiple labels - check_type=False, strict_mode=True: Should pass"""
    thing = Thing(label=["A", 2, "http://exemple.org/B"],
                  limit=1,
                  endpoints=[e for e in Endpoint])

    thing.query(check_type=False, strict_mode=True)
    expected_queries = {
        Endpoint.DEFAULT:
        u' SELECT DISTINCT ?Thing ?pred ?obj WHERE { ?Thing ?pred ?obj . { ?Thing ?has_label <http://exemple.org/B>  } UNION { ?Thing ?has_label "A"@en  } UNION { ?Thing ?has_label 2  } .  } LIMIT 1',
        Endpoint.wikidata:
        u' SELECT DISTINCT ?Thing ?pred ?obj WHERE { SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". } ?Thing ?pred ?obj . { ?Thing ?has_label <http://exemple.org/B>  } UNION { ?Thing ?has_label "A"@en  } UNION { ?Thing ?has_label 2  } .  } LIMIT 1',
        Endpoint.dbpedia_fr:
        u' SELECT DISTINCT ?Thing ?pred ?obj WHERE { ?Thing ?pred ?obj . { ?Thing ?has_label <http://exemple.org/B>  } UNION { ?Thing ?has_label "A"@en  } UNION { ?Thing ?has_label 2  } .  } LIMIT 1',
        Endpoint.bnf:
        u' SELECT DISTINCT ?Thing ?pred ?obj WHERE { ?Thing ?pred ?obj . { ?Thing ?has_label <http://exemple.org/B>  } UNION { ?Thing ?has_label "A"  } UNION { ?Thing ?has_label 2  } .  } LIMIT 1'
    }

    for e in Endpoint:
        assert fuzz.token_sort_ratio(expected_queries[e],
                                     thing.query_builder.queries[e]) > 90
예제 #5
0
def test_query_content_multiple_labels_checktype_nostrictmode():
    """Thing - query multiple labels - check_type=True, strict_mode=False: Should pass"""
    thing = Thing(label=["A", 2, "http://exemple.org/B"],
                  limit=1,
                  endpoints=[e for e in Endpoint])

    thing.query(check_type=True, strict_mode=True)
    expected_queries = {
        Endpoint.DEFAULT:
        u'PREFIX owl: <http://www.w3.org/2002/07/owl#> PREFIX wd: <http://www.wikidata.org/entity/> PREFIX wdt_o: <http://www.wikidata.org/ontology#> PREFIX dbo: <http://dbpedia.org/ontology/> PREFIX schema: <http://schema.org/> SELECT DISTINCT ?Thing ?pred ?obj WHERE { ?Thing ?pred ?obj . { ?Thing a wdt_o:Item  } UNION { ?Thing a owl:Class  } UNION { ?Thing a schema:Thing  } UNION { ?Thing a wd:Q35120  } UNION { ?Thing a owl:Thing  } UNION { ?Thing a schema:Class  } UNION { ?Thing a dbo:Thing  } .  { ?Thing ?has_label "A"@en  } UNION { ?Thing ?has_label 2  } UNION { ?Thing ?has_label <http://exemple.org/B>  } .  } LIMIT 1',
        Endpoint.wikidata:
        u'PREFIX owl: <http://www.w3.org/2002/07/owl#> PREFIX wd: <http://www.wikidata.org/entity/> PREFIX wdt_o: <http://www.wikidata.org/ontology#> PREFIX dbo: <http://dbpedia.org/ontology/> PREFIX schema: <http://schema.org/> SELECT DISTINCT ?Thing ?pred ?obj WHERE { SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". } ?Thing ?pred ?obj . { ?Thing a wdt_o:Item  } UNION { ?Thing a owl:Class  } UNION { ?Thing a schema:Thing  } UNION { ?Thing a wd:Q35120  } UNION { ?Thing a owl:Thing  } UNION { ?Thing a schema:Class  } UNION { ?Thing a dbo:Thing  } .  { ?Thing ?has_label "A"@en  } UNION { ?Thing ?has_label 2  } UNION { ?Thing ?has_label <http://exemple.org/B>  } .  } LIMIT 1',
        Endpoint.dbpedia_fr:
        u'PREFIX owl: <http://www.w3.org/2002/07/owl#> PREFIX wd: <http://www.wikidata.org/entity/> PREFIX wdt_o: <http://www.wikidata.org/ontology#> PREFIX dbo: <http://dbpedia.org/ontology/> PREFIX schema: <http://schema.org/> SELECT DISTINCT ?Thing ?pred ?obj WHERE { ?Thing ?pred ?obj . { ?Thing a wdt_o:Item  } UNION { ?Thing a owl:Class  } UNION { ?Thing a schema:Thing  } UNION { ?Thing a wd:Q35120  } UNION { ?Thing a owl:Thing  } UNION { ?Thing a schema:Class  } UNION { ?Thing a dbo:Thing  } .  { ?Thing ?has_label "A"@en  } UNION { ?Thing ?has_label 2  } UNION { ?Thing ?has_label <http://exemple.org/B>  } .  } LIMIT 1',
        Endpoint.bnf:
        u'PREFIX owl: <http://www.w3.org/2002/07/owl#> PREFIX wd: <http://www.wikidata.org/entity/> PREFIX wdt_o: <http://www.wikidata.org/ontology#> PREFIX dbo: <http://dbpedia.org/ontology/> PREFIX schema: <http://schema.org/> SELECT DISTINCT ?Thing ?pred ?obj WHERE { ?Thing ?pred ?obj . { ?Thing a wdt_o:Item  } UNION { ?Thing a owl:Class  } UNION { ?Thing a schema:Thing  } UNION { ?Thing a wd:Q35120  } UNION { ?Thing a owl:Thing  } UNION { ?Thing a schema:Class  } UNION { ?Thing a dbo:Thing  } .  { ?Thing ?has_label "A"  } UNION { ?Thing ?has_label 2  } UNION { ?Thing ?has_label <http://exemple.org/B>  } .  } LIMIT 1'
    }

    for e in Endpoint:
        assert fuzz.token_sort_ratio(expected_queries[e],
                                     thing.query_builder.queries[e]) > 90
예제 #6
0
def test_thing_wikidata_query_strict_True():
    """Thing - wikidata - strict=True - : Should pass """
    thing = Thing()
    thing.add_query_endpoint(Endpoint.wikidata)
    thing.query(strict_mode=True)

    assert thing.endpoints == set([Endpoint.wikidata])
    assert thing.query_language == Lang.English

    expected_query = """
   PREFIX owl: <http://www.w3.org/2002/07/owl#>
   PREFIX wd: <http://www.wikidata.org/entity/>
   PREFIX schema: <http://schema.org/>
   PREFIX dbo: <http://dbpedia.org/ontology/>
   PREFIX wdt_o: <http://www.wikidata.org/ontology#>
   SELECT DISTINCT ?Thing ?pred ?obj WHERE {
   SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
   ?Thing ?pred ?obj .
   { ?Thing a owl:Class  } UNION
   { ?Thing a schema:Class  } UNION
   { ?Thing a wd:Q35120  } UNION
   { ?Thing a schema:Thing  } UNION
   { ?Thing a wdt_o:Item  } UNION
   { ?Thing a dbo:Thing  } UNION
   { ?Thing a owl:Thing  } .
   } LIMIT 1500
   """
    ratio = fuzz.token_sort_ratio(
        thing.query_builder.queries[Endpoint.wikidata], expected_query)
    assert ratio > 90
예제 #7
0
def test_thing_dbpedia_fr_query_strict_True():
    """Thing - dbpedia_fr - strict=True - : Should pass """
    label = "Acide pinique"
    thing = Thing(label=label, query_language=Lang.French)
    thing.add_query_endpoint(Endpoint.dbpedia_fr)
    thing.query(strict_mode=True)

    assert thing.endpoints == set([Endpoint.dbpedia_fr])
    assert thing.has_label == u'Acide pinique'
    assert thing.query_language == Lang.French
    assert thing.attributes
    assert thing.labels_by_languages
예제 #8
0
def test_thing_query_URLs():
    """Thing - URLs list query - : Should pass """

    thing = Thing(url=[
        'http://viaf.org/viaf/17218730', 'http://www.wikidata.org/entity/Q501',
        'http://dbpedia.org/resource/Charles_Baudelaire'
    ])

    thing.add_query_endpoints([e for e in Endpoint])
    thing.query(strict_mode=True)
    assert u'http://dbpedia.org/resource/Charles_Baudelaire' in thing.attributes.get(
        u'owl:sameAs')
예제 #9
0
def test_thing_dbpedia_fr_query_strict_False():
    """Thing - dbpedia_fr - strict=False - : Should pass """

    label = u"11e régiment du génie"
    thing = Thing(label=label, query_language=Lang.French)
    thing.add_query_endpoint(Endpoint.dbpedia_fr)
    thing.query(strict_mode=False)

    assert thing.endpoints == set([Endpoint.dbpedia_fr])
    assert thing.has_label == u'11e r\xe9giment du g\xe9nie'
    assert thing.query_language == Lang.French
    assert thing.labels_by_languages
    assert thing.attributes
예제 #10
0
def test_thing_dbpedia_query_strict_False():
    """Thing - dbpedia - strict=False - : Should pass """
    thing = Thing(label=u"Paris", query_language=Lang.French, limit=666)
    thing.add_query_endpoint(Endpoint.dbpedia)
    thing.query(strict_mode=False)

    expected = {
        'endpoints': set([Endpoint.dbpedia]),
        'has_label': u"Paris",
        'query_language': Lang.French,
    }
    assert thing.endpoints == expected.get('endpoints')
    assert thing.has_label == expected.get('has_label')
    assert thing.query_language == expected.get('query_language')
    assert thing.attributes
    assert thing.labels_by_languages
예제 #11
0
def test_thing_dbpedia_query_strict_True():
    """Thing - dbpedia - strict=True - : Should pass"""
    thing = Thing(label=u'አዲስ አበባ', query_language=Lang.Amharic)
    thing.add_query_endpoint(Endpoint.dbpedia)
    thing.query(strict_mode=True)

    expected = {
        'args': {
            'object': u'?obj',
            'predicate': u'?pred',
            'subject': u'?Thing'
        },
        'class_name': u'Thing',
        'endpoints': set([Endpoint.dbpedia]),
        'has_label': u'\u12a0\u12f2\u1235 \u12a0\u1260\u1263',
        'query_language': Lang.Amharic,
    }
    assert thing.args == expected.get('args')
    assert thing.class_name == expected.get('class_name')
    assert thing.endpoints == expected.get('endpoints')
    assert thing.has_label == expected.get('has_label')
    assert thing.query_language == expected.get('query_language')
    assert thing.attributes
예제 #12
0
def test_thing_wikidata_query_strict_False():
    """Thing - wikidata - strict=True, check_type=False - : Should pass"""
    thing = Thing(label=u"혁kστ혁ηjh혁kي혁ةsjdジアh", query_language=Lang.DEFAULT)
    thing.add_query_endpoint(Endpoint.wikidata)
    thing.query(strict_mode=True, check_type=False)

    assert thing.endpoints == set([Endpoint.wikidata])
    assert thing.has_label == u'혁kστ혁ηjh혁kي혁ةsjdジアh'
    assert thing.query_language == Lang.English

    expected_query = u'''
   PREFIX wdt: <http://www.wikidata.org/prop/direct/>
   PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
   SELECT DISTINCT ?Thing ?pred ?obj WHERE
   { SERVICE wikibase:label
    { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
     ?Thing ?pred ?obj .
     { ?Thing rdfs:label "혁kστ혁ηjh혁kي혁ةsjdジアh"@en  }
     UNION { ?Thing wdt:P1813 "혁kστ혁ηjh혁kي혁ةsjdジアh"@en  } .
       } LIMIT 1500'''

    ratio = fuzz.token_sort_ratio(
        thing.query_builder.queries[Endpoint.wikidata], expected_query)
    assert ratio > 90
예제 #13
0
                     endpoints=[Endpoint.wikidata],
                     query_language=Lang.French)

work3.query(strict_mode=False, check_type=True)

print(work3.query_builder.queries.get(Endpoint.wikidata))

exit(0)
ipdb.set_trace()

lemmas = ["chair", "law", "right", "beaver"]
things = []
for lemma in lemmas:
    thing = Thing(
        label=lemma,
        limit=100,
        endpoints=[Endpoint.wikidata, Endpoint.dbpedia, Endpoint.dbpedia_fr],
        query_language=Lang.English)

    thing.query(check_type=False, strict_mode=False)
    thing.find_more_about()
    things.append(thing)

book = Book(author='Virginia Woolf',
            title="A Room of One's Own",
            endpoints=[e for e in Endpoint])
book.query()

#for e in Endpoint:
#    assert fuzz.token_sort_ratio(expected_queries[e], thing.query_builder.queries[e]) == 100
예제 #14
0
def test_thing_bad_language():
    """Thing - wrong language definition: Should fail"""
    thing = Thing(query_language="fr")
예제 #15
0
def test_thing_add_query_endpoints():
    """Thing - add_query_endpoints: Should pass"""
    thing = Thing()
    all_endpoints = set([e for e in Endpoint if not e == Endpoint.DEFAULT])
    thing.add_query_endpoints(all_endpoints)
    assert thing.endpoints == all_endpoints
예제 #16
0
def test_thing_bnf_query_strict_False():
    """Thing - bnf - strict=False - : Should pass """
    thing = Thing(label="Nothing", query_language=Lang.English)
    thing.add_query_endpoint(Endpoint.bnf)
    thing.query(strict_mode=False)
    assert thing.attributes.get(u'owl:complementOf') == u'owl:Thing'
예제 #17
0
def test_thing_bnf_query_strict_True():
    """Thing - bnf - strict=True - : Should pass """
    thing = Thing(label="Thing", query_language=Lang.English)
    thing.add_query_endpoint(Endpoint.bnf)
    thing.query(strict_mode=True)
    assert thing.attributes.get(u'owl:sameAs') == u'owl:Thing'