Esempio n. 1
0
    def test_language(self):
        rec = '''
          <marc:record xmlns:marc="http://www.loc.gov/MARC21/slim">
            <marc:leader>00000nw  a2200000n  4500</marc:leader>
            <marc:datafield tag="040" ind2=" " ind1=" ">
              <marc:subfield code="a">OCLCD</marc:subfield>
              <marc:subfield code="b">nob</marc:subfield>
              <marc:subfield code="c">OCLCD</marc:subfield>
            </marc:datafield>
            <marc:datafield tag="084" ind2=" " ind1="0">
              <marc:subfield code="a">ddc</marc:subfield>
              <marc:subfield code="c">23no</marc:subfield>
              <marc:subfield code="e">nob</marc:subfield>
            </marc:datafield>
            <marc:datafield tag="153" ind2=" " ind1=" ">
              <marc:subfield code="a">564.58</marc:subfield>
              <marc:subfield code="e">564.5</marc:subfield>
              <marc:subfield code="j">Decapoda (tiarmede blekkspruter)</marc:subfield>
            </marc:datafield>
          </marc:record>
        '''
        graph = Graph()
        process_record(graph, rec, base_uri='http://test/{object}')
        uri = URIRef(u'http://test/564.58')

        assert graph.preferredLabel(uri)[0][0] == SKOS.prefLabel
        assert graph.preferredLabel(uri)[0][1].language == 'nb'
Esempio n. 2
0
    def test_language(self):
        rec = '''
          <marc:record xmlns:marc="http://www.loc.gov/MARC21/slim">
            <marc:leader>00000nw  a2200000n  4500</marc:leader>
            <marc:datafield tag="040" ind2=" " ind1=" ">
              <marc:subfield code="a">OCLCD</marc:subfield>
              <marc:subfield code="b">nob</marc:subfield>
              <marc:subfield code="c">OCLCD</marc:subfield>
            </marc:datafield>
            <marc:datafield tag="084" ind2=" " ind1="0">
              <marc:subfield code="a">ddc</marc:subfield>
              <marc:subfield code="c">23no</marc:subfield>
              <marc:subfield code="e">nob</marc:subfield>
            </marc:datafield>
            <marc:datafield tag="153" ind2=" " ind1=" ">
              <marc:subfield code="a">564.58</marc:subfield>
              <marc:subfield code="e">564.5</marc:subfield>
              <marc:subfield code="j">Decapoda (tiarmede blekkspruter)</marc:subfield>
            </marc:datafield>
          </marc:record>
        '''
        graph = Graph()
        self.vocabularies.set_default_scheme('http://test/{object}')
        process_record(graph, rec, vocabularies=self.vocabularies)
        uri = URIRef(u'http://test/564.58')

        assert graph.preferredLabel(uri)[0][0] == SKOS.prefLabel
        assert graph.preferredLabel(uri)[0][1].language == 'nb'
Esempio n. 3
0
    def test153(self):
        rec = '''
          <marc:record xmlns:marc="http://www.loc.gov/MARC21/slim">
            <marc:leader>00000nw  a2200000n  4500</marc:leader>
            <marc:datafield tag="153" ind1=" " ind2=" ">
              <marc:subfield code="a">003.5</marc:subfield>
              <marc:subfield code="e">003</marc:subfield>
              <marc:subfield code="h">Generalities</marc:subfield>
              <marc:subfield code="h">Systems</marc:subfield>
              <marc:subfield code="j">Theory of communication and control</marc:subfield>
            </marc:datafield>
          </marc:record>
        '''
        graph = Graph()
        self.vocabularies.set_default_scheme('http://test/{object}')
        process_record(graph, rec, vocabularies=self.vocabularies)
        uri = URIRef(u'http://test/003.5')

        assert set(graph) == set([
            (uri, RDF.type, SKOS.Concept),
            (uri, SKOS.broader, URIRef(u'http://test/003')),
            (uri, SKOS.prefLabel, Literal('Theory of communication and control', lang='en')),
            (uri, SKOS.inScheme, URIRef(u'http://test/')),
            (uri, SKOS.notation, Literal('003.5')),
        ])
Esempio n. 4
0
    def testEmptyRecord(self):
        g = Graph()

        rec = '''
          <marc:record xmlns:marc="http://www.loc.gov/MARC21/slim">
          </marc:record>
        '''

        with pytest.raises(InvalidRecordError):
            process_record(g, rec)
Esempio n. 5
0
    def testEmptyRecord(self):
        g = Graph()

        rec = '''
          <marc:record xmlns:marc="http://www.loc.gov/MARC21/slim">
          </marc:record>
        '''

        with pytest.raises(InvalidRecordError):
            process_record(g, rec, vocabularies=self.vocabularies)
Esempio n. 6
0
    def testRecordWithout153(self):
        # Not sure if this test should fail or not.

        rec = '''
          <marc:record xmlns:marc="http://www.loc.gov/MARC21/slim">
            <marc:leader>00000nw  a2200000n  4500</marc:leader>
            <marc:datafield tag="084" ind2=" " ind1="0">
              <marc:subfield code="a">ddc</marc:subfield>
              <marc:subfield code="c">23no</marc:subfield>
              <marc:subfield code="e">nob</marc:subfield>
            </marc:datafield>
          </marc:record>
        '''

        with pytest.raises(InvalidRecordError):
            process_record(Graph(), rec)
Esempio n. 7
0
    def testRecordWithInvalidLeader(self):

        # A Marc21 Bibliographic record
        rec = '''
          <marc:record xmlns:marc="http://www.loc.gov/MARC21/slim">
            <marc:leader>00000aa  a2200000n  4500</marc:leader>
            <marc:datafield tag="084" ind2=" " ind1="0">
              <marc:subfield code="a">ddc</marc:subfield>
              <marc:subfield code="c">23no</marc:subfield>
              <marc:subfield code="e">nob</marc:subfield>
            </marc:datafield>
          </marc:record>
        '''

        with pytest.raises(InvalidRecordError):
            process_record(Graph(), rec)
Esempio n. 8
0
    def testRecordWithout153(self):
        # Not sure if this test should fail or not.

        rec = '''
          <marc:record xmlns:marc="http://www.loc.gov/MARC21/slim">
            <marc:leader>00000nw  a2200000n  4500</marc:leader>
            <marc:datafield tag="084" ind2=" " ind1="0">
              <marc:subfield code="a">ddc</marc:subfield>
              <marc:subfield code="c">23no</marc:subfield>
              <marc:subfield code="e">nob</marc:subfield>
            </marc:datafield>
          </marc:record>
        '''

        with pytest.raises(InvalidRecordError):
            process_record(Graph(), rec, vocabularies=self.vocabularies)
Esempio n. 9
0
    def testRecordWithInvalidLeader(self):

        # A Marc21 Bibliographic record
        rec = '''
          <marc:record xmlns:marc="http://www.loc.gov/MARC21/slim">
            <marc:leader>00000aa  a2200000n  4500</marc:leader>
            <marc:datafield tag="084" ind2=" " ind1="0">
              <marc:subfield code="a">ddc</marc:subfield>
              <marc:subfield code="c">23no</marc:subfield>
              <marc:subfield code="e">nob</marc:subfield>
            </marc:datafield>
          </marc:record>
        '''

        with pytest.raises(InvalidRecordError):
            process_record(Graph(), rec, vocabularies=self.vocabularies)
Esempio n. 10
0
    def testSynthesizedNumberComponents(self):
        rec = '''
        <mx:record xmlns:mx="http://www.loc.gov/MARC21/slim">
          <mx:leader>00000nw  a2200000n  4500</mx:leader>
          <mx:controlfield tag="001">ocd00132963</mx:controlfield>
          <mx:controlfield tag="008">100204aaaaaabb</mx:controlfield>
          <mx:datafield tag="084" ind2=" " ind1="0">
            <mx:subfield code="a">ddc</mx:subfield>
            <mx:subfield code="c">23no</mx:subfield>
          </mx:datafield>
          <mx:datafield tag="153" ind2=" " ind1=" ">
            <mx:subfield code="a">306.6804</mx:subfield>
            <mx:subfield code="e">306.63</mx:subfield>
            <mx:subfield code="f">306.69</mx:subfield>
            <mx:subfield code="9">ess=ien</mx:subfield>
          </mx:datafield>
          <mx:datafield tag="765" ind2=" " ind1="0">
            <mx:subfield code="b">306.6</mx:subfield>
            <mx:subfield code="a">306.63</mx:subfield>
            <mx:subfield code="c">306.69</mx:subfield>
            <mx:subfield code="r">2</mx:subfield>
            <mx:subfield code="s">804</mx:subfield>
            <mx:subfield code="u">306.6804</mx:subfield>
            <mx:subfield code="9">ess=hn</mx:subfield>
          </mx:datafield>
        </mx:record>
        '''

        graph = Graph()
        process_record(graph, rec, include_components=True)

        components = [n[0] for n in graph.query('''
            PREFIX mads: <http://www.loc.gov/mads/rdf/v1#>
            SELECT ?comp WHERE {
              <http://dewey.info/class/306.6804/e23/> mads:componentList/rdf:rest*/rdf:first ?comp
            }
        ''')]

        assert len(components) == 2
        assert components == [URIRef(u'http://dewey.info/class/306.6/e23/'),
                              URIRef(u'http://dewey.info/class/280.4/e23/')]
Esempio n. 11
0
    def testSynthesizedNumberComponents(self):
        rec = '''
        <mx:record xmlns:mx="http://www.loc.gov/MARC21/slim">
          <mx:leader>00000nw  a2200000n  4500</mx:leader>
          <mx:controlfield tag="001">ocd00132963</mx:controlfield>
          <mx:controlfield tag="008">100204aaaaaabb</mx:controlfield>
          <mx:datafield tag="084" ind2=" " ind1="0">
            <mx:subfield code="a">ddc</mx:subfield>
            <mx:subfield code="c">23no</mx:subfield>
          </mx:datafield>
          <mx:datafield tag="153" ind2=" " ind1=" ">
            <mx:subfield code="a">306.6804</mx:subfield>
            <mx:subfield code="e">306.63</mx:subfield>
            <mx:subfield code="f">306.69</mx:subfield>
            <mx:subfield code="9">ess=ien</mx:subfield>
          </mx:datafield>
          <mx:datafield tag="765" ind2=" " ind1="0">
            <mx:subfield code="b">306.6</mx:subfield>
            <mx:subfield code="a">306.63</mx:subfield>
            <mx:subfield code="c">306.69</mx:subfield>
            <mx:subfield code="r">2</mx:subfield>
            <mx:subfield code="s">804</mx:subfield>
            <mx:subfield code="u">306.6804</mx:subfield>
            <mx:subfield code="9">ess=hn</mx:subfield>
          </mx:datafield>
        </mx:record>
        '''

        graph = Graph()
        process_record(graph, rec, include_components=True, vocabularies=self.vocabularies)

        components = [n[0] for n in graph.query('''
            PREFIX mads: <http://www.loc.gov/mads/rdf/v1#>
            SELECT ?comp WHERE {
              <http://dewey.info/class/306.6804/e23/> mads:componentList/rdf:rest*/rdf:first ?comp
            }
        ''')]

        assert len(components) == 2
        assert components == [URIRef(u'http://dewey.info/class/306.6/e23/'),
                              URIRef(u'http://dewey.info/class/280.4/e23/')]