class TestPrefLabel(unittest.TestCase): def setUp(self): self.g = ConjunctiveGraph() self.u = URIRef('http://example.com/foo') self.g.add([self.u, RDFS.label, Literal('foo')]) self.g.add([self.u, RDFS.label, Literal('bar')]) def test_default_label_sorting(self): res = sorted(self.g.preferredLabel(self.u)) tgt = [(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#label'), rdflib.term.Literal(u'bar')), (rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#label'), rdflib.term.Literal(u'foo'))] self.assertEqual(res, tgt) def test_default_preflabel_sorting(self): self.g.add([self.u, SKOS.prefLabel, Literal('bla')]) res = self.g.preferredLabel(self.u) tgt = [(rdflib.term.URIRef('http://www.w3.org/2004/02/skos/core#prefLabel'), rdflib.term.Literal(u'bla'))] self.assertEqual(res, tgt) def test_preflabel_lang_sorting_no_lang_attr(self): self.g.add([self.u, SKOS.prefLabel, Literal('bla')]) self.g.add([self.u, SKOS.prefLabel, Literal('blubb', lang='en')]) res = sorted(self.g.preferredLabel(self.u)) tgt = [(rdflib.term.URIRef('http://www.w3.org/2004/02/skos/core#prefLabel'), rdflib.term.Literal(u'bla')), (rdflib.term.URIRef('http://www.w3.org/2004/02/skos/core#prefLabel'), rdflib.term.Literal(u'blubb', lang='en'))] self.assertEqual(res, tgt) def test_preflabel_lang_sorting_empty_lang_attr(self): self.g.add([self.u, SKOS.prefLabel, Literal('bla')]) self.g.add([self.u, SKOS.prefLabel, Literal('blubb', lang='en')]) res = self.g.preferredLabel(self.u, lang='') tgt = [(rdflib.term.URIRef('http://www.w3.org/2004/02/skos/core#prefLabel'), rdflib.term.Literal(u'bla'))] self.assertEqual(res, tgt) def test_preflabel_lang_sorting_en_lang_attr(self): self.g.add([self.u, SKOS.prefLabel, Literal('blubb', lang='en')]) res = self.g.preferredLabel(self.u, lang='en') tgt = [(rdflib.term.URIRef('http://www.w3.org/2004/02/skos/core#prefLabel'), rdflib.term.Literal(u'blubb', lang='en'))] self.assertEqual(res, tgt)
from rdflib import ConjunctiveGraph, URIRef, RDFS, Literal from rdflib.namespace import SKOS from pprint import pprint g = ConjunctiveGraph() u = URIRef(u'http://example.com/foo') g.add([u, RDFS.label, Literal('foo')]) # 给u添加标签 g.add([u, RDFS.label, Literal('bar')]) # 给u添加标签 pprint(sorted(g.preferredLabel(u))) g.add([u, SKOS.prefLabel, Literal('bla')]) pprint(g.preferredLabel(u)) g.add([u, SKOS.prefLabel, Literal('blubb', lang='en')]) sorted(g.preferredLabel(u)) g.preferredLabel(u, lang='') pprint(g.preferredLabel(u, lang='en'))
"alt_labels_es": {"type": "text", "analyzer": "autocomplete", "search_analyzer": "autocomplete_search"}, } } print("creating mapping ...") res = es_con.indices.put_mapping(index=index_name, doc_type="doc", body=thesaurus_mapping) print("resonse: {}".format(res)) i = 0 for uri in graph.query(querystring): this_uri = uri[0] doc = {"uri": this_uri} j = 0 for lang in ['ar', 'zh', 'en', 'fr', 'ru', 'es']: pref_labels = [] for label in graph.preferredLabel(URIRef(this_uri), lang): pref_labels.append(label[1]) doc.update({"labels_{}".format(lang): pref_labels}) alt_labels = [] for label in graph.objects(URIRef(this_uri), SKOS.altLabel): if label.language == lang: alt_labels.append(label) doc.update({"alt_labels_{}".format(lang): alt_labels}) payload = json.dumps(doc) res = es_con.index(index=index_name, doc_type='doc', body=payload) doc = {"uri": this_uri} j += 1 i += j
class TestPrefLabel(unittest.TestCase): def setUp(self): self.g = ConjunctiveGraph() self.u = URIRef("https://example.com/foo") self.g.add((self.u, RDFS.label, Literal("foo"))) self.g.add((self.u, RDFS.label, Literal("bar"))) def test_default_label_sorting(self): res = sorted(self.g.preferredLabel(self.u)) tgt = [ ( rdflib.term.URIRef("http://www.w3.org/2000/01/rdf-schema#label"), rdflib.term.Literal("bar"), ), ( rdflib.term.URIRef("http://www.w3.org/2000/01/rdf-schema#label"), rdflib.term.Literal("foo"), ), ] self.assertEqual(res, tgt) def test_default_preflabel_sorting(self): self.g.add((self.u, SKOS.prefLabel, Literal("bla"))) res = self.g.preferredLabel(self.u) tgt = [ ( rdflib.term.URIRef("http://www.w3.org/2004/02/skos/core#prefLabel"), rdflib.term.Literal("bla"), ) ] self.assertEqual(res, tgt) def test_preflabel_lang_sorting_no_lang_attr(self): self.g.add((self.u, SKOS.prefLabel, Literal("bla"))) self.g.add((self.u, SKOS.prefLabel, Literal("blubb", lang="en"))) res = sorted(self.g.preferredLabel(self.u)) tgt = [ ( rdflib.term.URIRef("http://www.w3.org/2004/02/skos/core#prefLabel"), rdflib.term.Literal("bla"), ), ( rdflib.term.URIRef("http://www.w3.org/2004/02/skos/core#prefLabel"), rdflib.term.Literal("blubb", lang="en"), ), ] self.assertEqual(res, tgt) def test_preflabel_lang_sorting_empty_lang_attr(self): self.g.add((self.u, SKOS.prefLabel, Literal("bla"))) self.g.add((self.u, SKOS.prefLabel, Literal("blubb", lang="en"))) res = self.g.preferredLabel(self.u, lang="") tgt = [ ( rdflib.term.URIRef("http://www.w3.org/2004/02/skos/core#prefLabel"), rdflib.term.Literal("bla"), ) ] self.assertEqual(res, tgt) def test_preflabel_lang_sorting_en_lang_attr(self): self.g.add((self.u, SKOS.prefLabel, Literal("blubb", lang="en"))) res = self.g.preferredLabel(self.u, lang="en") tgt = [ ( rdflib.term.URIRef("http://www.w3.org/2004/02/skos/core#prefLabel"), rdflib.term.Literal("blubb", lang="en"), ) ] self.assertEqual(res, tgt)
def handle(self, *args, **options): es = settings.ELASTIC_SEARCH_URL db = os.path.join(settings.BASE_DIR, "db") print(es) graph = ConjunctiveGraph('Sleepycat') graph.open(db, create=False) graph.bind('skos', SKOS) EU = Namespace('http://eurovoc.europa.eu/schema#') UNBIST = Namespace('http://unontologies.s3-website-us-east-1.amazonaws.com/unbist#') querystring = "select ?uri where { ?uri rdf:type skos:Concept filter not exists { ?uri rdf:type unbist:PlaceName } . }" index = 1 # make the index: thes_index = { "mappings": { "terms": { "properties": { "scope_notes": { "type": "string" }, "uri": { "type": "string" }, "alt_labels": { "type": "string" }, "alt_labels_orig": { "type": "string", "index": "not_analyzed" }, "labels": { "type": "string" }, "labels_orig": { "type": "string", "index": "not_analyzed" } } } } } r = requests.put(es + 'thesaurus/', data=json.dumps(thes_index)) for uri in graph.query(querystring): this_uri = uri[0] doc = { "uri": this_uri } pref_labels = [] labels_orig_lc = [] print("Getting preferred labels") for label in graph.preferredLabel(URIRef(this_uri)): pref_labels.append(label[1]) if label[1].language in ['en','fr','es']: labels_orig_lc.append(label[1].lower()) doc.update({"labels": pref_labels}) doc.update({"labels_orig": pref_labels + labels_orig_lc}) alt_labels = [] alt_labels_orig_lc = [] print("Getting alternate labels") for label in graph.objects(URIRef(this_uri), SKOS.altLabel): alt_labels.append(label) if label.language in ['en','fr','es']: alt_labels_orig_lc.append(label.lower()) doc.update({"alt_labels": alt_labels}) doc.update({"alt_labels_orig": alt_labels + alt_labels_orig_lc}) scope_notes = [] print("Getting scope notes") for sn in graph.objects(URIRef(this_uri), SKOS.scopeNote): scope_notes.append(sn) doc.update({"scope_notes": scope_notes}) payload = json.dumps(doc) r = requests.put(es + 'thesaurus/terms/' + str(index), data=payload) index += 1