コード例 #1
0
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)
コード例 #2
0
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'))











コード例 #3
0
        "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
コード例 #4
0
ファイル: test_preflabel.py プロジェクト: edmondchuc/rdflib
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)
コード例 #5
0
  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