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'
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'
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')), ])
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)
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)
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)
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)
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)
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)
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/')]
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/')]