Time Nick Message
06:30 osmoze hello
22:12 j0se : )
22:12 thd hello jOse
22:11 thd hello pez
22:11 pez hello
22:10 thd divested means I sold them in my bookshop and saw little reason to retain them at that time. Yet I never had the Celko books. I had some unstudied good books by Date.
22:08 thd kados: At least you have all the right references. I had divested myself of SQL books a few years ago when I realised that SQL was the wrong model for bibliographic databases.
22:06 thd kados: I won big prizes for book buying from O'Reilly and then could not get my employers to pay me after that.
22:04 kados :-)
22:04 thd kados: I am too poor to have them now.
22:03 kados thd: I've got the Celko books
21:46 thd http://vyaskn.tripod.com/hierarchies_in_sql_server_databases.htm .
21:46 thd databases : Narayana Vyas Kondreddi's home page. (Aug. 12, 2002)
21:46 thd Kondreddi, Narayana Vyas. Working with hierarchical data in SQL Server
21:46 thd Francisco : Morgan Kaufmann, 2004.
21:46 thd Celko, Joe. Joe Celko's Trees and hierarchies in SQL for smarties. San
21:46 thd SQL programming. 2nd ed. San Francisco : Morgan Kaufmann, 2000.
21:46 thd Nested Set Model of Trees in SQL : Joe Celko's SQL for smarties : advanced
21:46 thd Celko, Joe. Chapter 28 Adjacency List Model of Trees in SQL ; Chapter 29
21:46 thd SQL TREE REFERENCES
21:46 thd kados: Or at least the bibliography that I had compiled.
21:46 thd kados: I have the answers for you.
21:39 thd kados: there may be multiple solutions that function. You need the one that scales best for arbitrarily large data sets where the data is not nice and regular the way it never is in the real world.
21:35 thd kados: performance is related to the number of joins required to fulfil a query.
21:33 thd kados: There is certainly a solution much better than what MARC provides.
21:31 thd chris fulfilled his contract and is now off enjoying his summer weekend in NZ.
21:31 kados but I'm not sure if I've landed on it
21:31 kados and I have a notion that there is a solution :-)
21:31 kados well, I begin to see the problem
21:29 thd kados: you were the one describing :)
21:28 thd kados: About what are you unclear?
21:27 kados yea, just sent him an email
21:26 thd kados: do you mean chris?
21:26 kados I need to talk to a real database designer :0(
21:25 kados I'm unclear
21:25 kados yep
21:24 thd kados: are you there?
21:21 thd kados: Is the group table the entity table?
21:17 thd kados: what information would be in the group table?
21:15 thd kados: continue with your example. I think I interrupted you.
21:14 thd kados: you saw that suggested change before with virtual libraries. Very convoluted hack on what was currently in MARC Koha.
21:12 thd kados: my revised holdings doc provided a way to fix this in 2.X
21:11 thd s/killed them/killed their flexible use/
21:10 thd Unfortunately, a fixed set of bibliographic elements were tied to groups so MARC Koha killed them.
21:09 thd groups is not the table name but chris calls it that for understanding how it was envisioned
21:07 kados yep
21:06 thd kados: you could reassign items to groups for various purposes.
21:06 kados it sounds like we could have easily defined another level within the record
21:06 kados was because the default framework in Koha wasn't set up completely
21:06 kados from what it sounds like the only reason MARC killed the groups
21:05 kados maybe, I'm not too familiar with how that works
21:05 kados item-level call number
21:05 thd kados: what chris refers to as groups in non-MARC Koha that MARC Koha killed.
21:04 kados barcode
21:04 kados status
21:04 kados the entity itself will contain things like:
21:04 kados to make that transformation
21:03 kados if the information and relationship are seperate you only need to update one field
21:03 kados you want to be able to move copies from one bib record to another
21:03 kados for instance
21:03 kados but that's different than information about each element in the hierarchy (each node)
21:02 kados so you have the representation of the relationship
21:02 kados ok ...
21:02 thd your last sentence confuses me.
21:02 thd kados: how do groups differ from hierarchy levels themselves?
21:01 kados if it's defined it takes precidence over the group assigned by level
20:59 kados so we need a 'groupId' in our relationship hierarchy
20:59 kados we also need to be able to attach the group to specific holdings records
20:57 kados and then attach those groups to levels in the holdings relationship hierarchy
20:57 kados we need a framework whereby we can build 'groups' of holdings information
20:55 thd kados: we have enumeration representing various periods
20:55 kados yep
20:52 thd s/users/script needs to read from some unknown data/
20:51 thd kados: we can fill all the standard factors but users need to be able to add others that we can never enumerate in advance
20:50 kados I suppose things like volume probably weigh in
20:49 kados so ... what kinds of information do we need to know about our entities?
20:49 kados alas, we're not designing such a tree :(
20:49 kados ie, name, address, salary, etc.
20:48 kados what we need is a way to represent the 'entities' that fill those roles
20:48 kados what we have now is a way to represent the relationships (CEO, president, vice president, etc)
20:48 thd kados: all the semantic values for volume etc.?
20:47 kados if we were designing a hierarhical tree based on the sctucture of a corporation
20:47 thd kados: what aspect of the levels do you mean?
20:47 kados anyway ... we need to come up with a way to represent all the information we'll need to know about one of the entities
20:46 thd for the nearest adjacent node
20:46 kados parentId
20:46 kados nodeId
20:46 kados it's a table that has:
20:46 kados that table was a simple adjacency list
20:46 kados thd: what I showed earlier
20:45 thd ?
20:45 thd kados: what is an adjacency list
20:45 kados and by 'entities' I mean all the components (levels) of a MARC record
20:45 kados now ... I'm interested in figuring out how to represent the "entities"
20:45 kados a table with the structure of an arbitrary forest using a combo of nested sets and adjacency lists will do the trick nicely
20:44 thd kados: at least they have fewer extensions to MARC that are outside the standard now
20:44 kados I think we've got a solid idea in mind for how to represent the relationships
20:43 kados hehe
20:43 thd kados: They are already ;)
20:43 thd kados: OCLC has sometimes added their own extensions to MARC using unassigned subfields
20:43 kados is OCLC's goal to become the world's largest ILS?
20:42 thd s/them/it/
20:42 kados http://www.oclc.org/bibformats/en/5xx/506.shtm
20:42 thd kados: does OCLC do something special with them?
20:41 kados I just read through OCLC's descriptions for the 506
20:41 kados yep
20:41 thd now we are both back kados
18:43 thd kados: See you in an hour or so.
18:43 thd kados: Where MARC has not defined values you can define your own in conformity with the standard.
18:42 kados I'll be back in an hour or so
18:42 kados MARC really must die
18:41 kados we could do the authorized values thing, but this is getting absurd
18:41 thd kados: you can make it machine readable or at least additional repeatable fields to what may already exist.
18:41 kados that looks like free-text to me :-)
18:41 kados 506 Closed for 30 years; â¡d Federal government employees with a need to know.
18:41 kados here's the example they give:
18:40 thd kados: you can fill it with only authorised values and its repeatable.
18:39 kados thd: I can't believe they even bother calling it machine readable cataloging
18:39 thd kados: Fields that may or may not be public depending upon an indicator.
18:39 kados thd: 506 is anything but machine readable
18:38 thd kados: Somewhat related are MARC fields designed to be hidden from patrons showing who donated the money or whatever.
18:34 thd kados: 506 - RESTRICTIONS ON ACCESS NOTE (R) is one.
18:33 kados that is a good point
18:32 thd kados: Although the public library in the city where I grew up did not want just anyone even to know about the older material they had because of theft problems.
18:31 thd kados: I expect actually knowing what is in the collection or not is a big issue at many corporate libraries.
18:31 kados how are they structured? anything useful?
18:30 thd kados: There are MARC fields for restrictions and visibly already.
18:30 kados some kind of access control would be nice
18:30 kados good point
18:30 kados hmmm
18:30 thd kados: do you not need levels of privileges as to what is searched and not. Not for the simplest cases but for the special collections that require privileged access to search.
18:29 kados thd: that you know of?
18:29 kados thd: are their any standards for 'status'?
18:27 kados to only retrieve records for items that the library wants patrons to see
18:27 thd kados: There are also secret collections and material at many libraries.
18:27 kados you just need to tack on an extra 'and visible=1' to your CQL query
18:26 kados (well, that obviously doesn't apply to electronic resources)
18:26 kados ie, people don't want to find a record that has no items attached to it
18:26 kados some librarians don't want MARC records to show up if their status is lost or deleted
18:26 thd kados: Or do you need one boolean to inform Zebra not to return a record for a search.
18:25 kados there is a reason
18:24 thd kados: Why do you need any stausin MARC had we not settled that months ago?
18:24 kados thd: does that make sense?
18:24 kados thd: that would be turned off when the system detects that all the items of are lost or deleted
18:23 kados thd: I think we could just set a visibility flag
18:23 kados thd: I can't think of a reason we'd need to store the status of each and every item in the MARC in zebra
18:22 thd kados: When the shiny forest format becomes the lingua-franca for holdings data then you will have less need to share in MARC.
18:22 kados is it fair to say that we only need to update the status of the root MARC record (bibliographic) if there are no copies or related copies available?
18:20 thd and create new ones as needed so that MARC is available for sharing with the world that does not know how to read the shiny forest format.
18:19 thd kados: Those records will be fine there Koha, needs to know how to update them as necessary.
18:19 kados thd: and also be able to put it back into MARC on export
18:18 kados thd: right!
18:18 kados devoid of any substance :-)
18:18 kados in which case we'll have a bunch of strange-looking MARC records stranded in our zebra index :-)
18:18 thd kados: You have to pull the data out of the dark MARC forest and put it into your superior shiny Koha representation forest.
18:18 kados unless we delete all the holdings data in the MARC on import
18:17 kados and we'll have holdings records in the MARC data in zebra
18:17 kados so we'll have holdings data in Koha in our forest
18:16 kados ie, they are still just MARC records
18:16 kados they will still be in zebra
18:16 kados because even if we do pull them into our shiny new forest
18:15 kados we have a problem :-)
18:15 kados say 20% of the MARC records are JUST holdings records
18:15 kados suppose we import a bunch of records from one of these big libraries
18:15 kados but I think I see one of the problems
18:15 thd kados: That is what every system has to do some how.
18:14 kados I assume that's what you mean right?
18:14 kados so you go: find me all the records with the phrase 'harry potter', and check all the related holdings records and tell me which ones are available
18:13 thd kados: What do you mean by subselect exactly?
18:13 kados it would be nice to do some kind of subselect in zebra
18:12 kados I see what you mean though
18:12 thd kados: paul has a more complex status value than just 0/1 for UNIMARC Koha although the extra values are currently only for human reading.
18:12 kados thd: (ie, give me all the records where the 004 is X)
18:12 kados thd: we'll have to do queries to relate the data
18:11 kados thd: unless there's something in zebra I don't know about
18:11 kados thd: it's not going to be posisble to relate holdings to one another in zebra
18:11 kados it's an integer that's relevant to a given library system's branch hierarchy
18:11 thd kados: If holdings are all contained within one bibliographic record and not separate records then you have no nice parent child 001 and 004 values to consult.
18:10 kados scope refers to the physical location of the items
18:09 kados status could be a simple binary 1/0 to determine visibility
18:09 kados scope
18:09 kados status
18:09 kados I can think of two:
18:09 kados internally, what holdings data do we need indexes on?
18:08 kados i do have another question too
18:08 kados yes
18:08 thd kados: you asked about whether you can look in one place in MARC consistently for the hierarchy did you not?
18:07 kados thd: does that make sense to you? :-)
18:06 kados so that I can sell the system to one of the libraries that can afford me to build the import script :-)
18:06 kados what I want to focus on is the framework for supporting the complexity
18:06 thd kados: Then there are publication patterns that show the relationships without having common names like captions.
18:06 kados that's something to do when we have a client that needs this complexity
18:06 kados at this point, I'm not really worried at all about import/export issues
18:05 thd kados: There are captions such as 1999, June, July, etc. and 1999, issue no. 1, no. 2, etc.
18:03 thd kados: The other two being allied with machine reability but not necessarily
18:02 thd kados: the first and oldest being textual data
18:02 kados yep, and all three can easily be done in our forest model
18:02 thd kados: MARC has 3 types of representations for holdings
18:01 kados thd: I'm here now
17:40 thd kados: without more MARC in your Koha, where do the semantic identifiers go to signify what the item represents as distinct from who its parent is?
17:35 thd kados: If that is not too much MARC in your Koha ( :-D
17:33 thd kados: you need holdings_recordID and bibliographic_recordID.
17:31 thd kados: your holdings table needs both a holdings and a bibliographic record key in case they are not identical as with a separate MARC holdings record.
17:23 thd kados: are you still with us?
17:17 thd joshn_454: I expect to commit at least an external to Koha Z39.50 client for 2.X prior to that time.
17:16 thd joshn_454: maybe may but it will not be production stable for a few months later.
17:15 thd z3950/search.pl
17:15 thd /usr/local/koha/intranet/cgi-bin/z3950/search.pl or wherever you put
17:15 thd joshn_454: See above for fix for line 103 for
17:12 thd Now you should have empty quotes '""' instead of '0'.
17:12 thd :"search.pl?bibid=$bibid&random=$random")
17:12 thd refresh => ($numberpending eq 0 ? ""
17:12 thd If you find that,with an '0' after the '?' change it to the following:
17:12 thd :"search.pl?bibid=$bibid&random=$random")
17:12 thd refresh => ($numberpending eq 0 ? 0
17:12 thd Line 103 should not be as follows:
17:12 joshn_454 eta for koha 3?
17:11 thd joshn_454: Koha 3 will take the pain out of Z39,50 searching.
17:10 thd joshn_454: if you search for the same ISBN Koha may have code that assumes you found that already.
17:06 joshn_454 ah. That works! Tx!
17:04 joshn_454 didn't know about trying a new search every time
17:01 thd joshn_454: search for new titles each time but known to be contaned in the target database
17:00 kados joshn_454: what sources are you searching, are they set up correctly, and are you searching on something that is contained in them?
17:00 thd joshn_454: was search working previously?
16:59 kados thd: exactly
16:59 joshn_454 okay, did that. Now z3950-daemon-shell runs, but the search still doesn't work
16:59 thd kados: Do you mean an encoding generated by a script? Not something a cataloguer would be meant to edit?
16:58 kados I need to do some more thinking about this
16:58 kados and put it somewhere in the MARC record
16:57 kados what if we could come up with an ecoded scheme for representing the hierarchy
16:57 thd : - )
16:57 kados now ... here's the real trick
16:56 kados thd: keep MARC out of my Koha :-)
16:56 thd ok
16:55 kados thd: no, that's done with a mapping file
16:55 thd kados: The table needs more elements for tacking to MARC
16:55 kados where the /path/to/real/C4 is the parent directory for C4
16:55 kados export PERL5LIB=$PERL5LIB:/path/to/real/C4
16:54 kados export KOHA_CONF=/path/to/koha.conf
16:54 joshn_454 alright, I'll nuke it
16:54 kados joshn_454: then just do:
16:54 kados joshn_454: delete it
16:54 kados joshn_454: and will lead to confusing issues when you upgrade
16:54 joshn_454 bc I didn't know what I was doing
16:54 joshn_454 I doubt $KOHA_CONF is set
16:54 kados joshn_454: but why you would do that is beyond me
16:54 joshn_454 k
16:54 kados joshn_454: no
16:53 joshn_454 I copied the C4 directory into perl's vendor directory; do I still need the $PER5LIB?
16:53 kados thd: the status would be used to determin how Koha manages that node
16:53 thd joshn_454: both commands as root
16:53 kados thd: what do you think about that hierarchy chart
16:52 thd joshn_454: echo $PERL5LIB
16:52 kados ps aux |grep z3950
16:52 thd joshn_454: echo $KOHA_CONF
16:51 kados joshn_454: you sure it's not already running?
16:51 thd joshn_454: Test that root has the koha environment variables set.
16:49 joshn_454 I'm not aware that anything's changed :-/
16:49 thd joshn_454: had you changed any config files?
16:49 kados joshn_454: did you upgrade or something? what has changed?
16:48 joshn_454 kados: yes, it was working before
16:48 kados status is a bit limited
16:48 kados status, -- we need to decide how to handle this element in Koha
16:47 kados level, -- level in the tree that this element is at
16:47 kados parentID, -- the parent node for this node
16:47 kados recordID, -- this is the 001 in MARC
16:47 kados itemID, --unique
16:47 kados CREATE TABLE holdings_hierarchy (
16:47 kados thd: here's a table design that should work:
16:47 kados joshn_454: notice I didn't mention KOHA_CONF :-)
16:47 thd joshn_454: Did you have it working previously?
16:46 joshn_454 thd: right, that's what it's set to in the options file
16:45 thd joshn_454: maybe /etc/koha.conf for KohaConf
16:44 kados joshn_454: PERL5LIB should include the path to your C4 directory
16:44 joshn_454 okay
16:44 kados joshn_454: KOHA_CONF is wherever your koha.conf file lives
16:43 kados thd: ie a table :-)
16:43 kados thd: the first thing we need to do is create a framework for the hierarchy that works for managing holdings data
16:43 joshn_454 ?
16:43 joshn_454 kados: how does KOHA_CONF differ from the KohaConf setting in the options file
16:42 thd kados: The structure itself is merely branches in a hierarchy the problem is reading in and out of MARC for correct interpretation, particularly when either there is only human readable text or the machine readable elements are so difficult for the programmer to interpret.
16:42 kados joshn_454: PERL5LIB
16:42 kados joshn_454: KOHA_CONF
16:41 joshn_454 for the z3950 daemon
16:41 joshn_454 thd: what evironment vars need to be exported?
16:40 kados thd: it's not nearly as complex as it sounds
16:40 kados thd: no problem, you just restructure the parent-relationship for those records
16:39 thd kados: someone has the clever idea of rebinding copy1 with loose issues in boxes.
16:39 akn thd: variables are set/exported; we did have it running before
16:38 kados thd: it is still and yet nothing more than a simple tree :-)
16:38 thd kados: one further problem for my example
16:38 thd kados: the level at which copy numbering operates depends upon whatever bibliographic level it is contained within or linked to in the case of a separate holdings record.
16:37 kados thd: by making it needlessly wordy :-)
16:37 kados thd: the MARC holdings folks have just managed to hide that fact
16:37 kados thd: that's still just a simple tree
16:35 kados actually, that might get hard to manage with such a large set
16:35 thd kados: copy2 in the parent record is still copy2 in that record but each volume covering one year can have its own copy number in subsidiary records.
16:35 kados rgt
16:35 kados lft
16:35 kados (the 001 field in MARC, or another identifier in another record type)
16:35 kados recordId
16:35 kados (a unique ID for every element within the hierarchy)
16:34 kados itemId
16:34 kados columns:
16:34 kados holdings_hierarchy
16:34 kados thd: so here's our table:
16:34 thd kados: yes for nomenclature distinction though consider where we started with one record and then add subsidiary records.
16:32 thd akn: also it needs to be started as root with the Koha environment variables set and exported.
16:32 kados thd: sibling relationships can easily be derived
16:32 kados thd: nothing else
16:32 kados thd: with child-parent relationships
16:32 kados thd: right, and it seems like a simple hierarchy to me
16:31 kados akn: and you need to edit the config file and add your local settings
16:31 kados akn: if from system startup use z3950-daemon-launch.sh
16:30 kados akn: use z3950-daemon-shell.sh
16:30 kados akn: if you're running it on the command line
16:30 thd kados: so we started with one record describing 3 copies
16:30 akn kados: we did, with no visible results
16:29 kados akn: use z3950-daemon-launch.sh
16:29 akn kados: how do you start it?
16:29 akn kados: no
16:29 kados akn: and you should not be starting processqueue from the command line
16:28 thd kados: this is largely a question of nomenclature so the documentation does not confuse the terms.
16:28 kados akn: there is a config file in that directory, did you edit it?
16:28 kados thd: you have a table with a key on recordID
16:28 akn hi guys, I'm back for more help; we had the z3950 daemon running about 2 months ago, now we can't seem to get it. The processz3950queue doesn't give any output...seems to be waiting like tail -f (?)
16:28 kados thd: nothing particularly complex about it
16:27 kados thd: so far, it's just a simple hierarchy
16:27 thd back to my example where the fun is just starting
16:27 kados thd: :-)
16:27 kados thd: I have to draw the line somewhere :-_
16:27 kados thd: that's outside the scope of 3.0
16:27 kados thd: so let's stick to the here and now
16:27 thd kados: Perl is for making easy jobs easy and hard jobs possible
16:26 kados thd: not to intuit it :-)
16:26 kados thd: my goal is to allow complex cataloging
16:26 kados thd: it's not the job of the ILS to fix cataloging inconsistancies
16:25 thd kados: existing cataloguing records in the real world are often a mess of inconsistent practises.
16:25 kados that's the realm of FRBR
16:25 kados I don't want to interpret what they should be
16:25 kados ie if the relationships aren't pre-defined
16:25 kados I think that approach could be dangerous
16:24 thd kados: They can always be mapped but you want to put them in a scheme that does a better job of making the relationships explicit than the cataloguer may have done.
16:24 kados thd: your thoughts?
16:23 kados (and father is older than uncle in the above case)
16:23 kados but I'm assuming we dont' want to do that every time we pull up a record :-)
16:23 kados and it would be easy to query to find who your siblings are
16:22 kados where child1 is older than child2, etc.
16:22 kados child1 child2 child3
16:22 kados father uncle
16:22 kados grandfather
16:22 kados so for example
16:22 kados thd: I can track an arbitrary hierarchy with a nested set and even do sibling ordering
16:22 thd kados: Plan on finding cataloguing records in existing systems that require system interpretation to uncover the true relationships that you would want to map in Koha.
16:21 kados thd: because they we have exceeded the abilities of a nested set
16:21 kados thd: sibling linking could become quite complex
16:20 thd kados: I have seen reference to sibling linking.
16:20 kados or would they both refer to the parent?
16:20 kados ie, each one of them would refer to the other?
16:20 kados thd: would they be linked to each other?
16:20 thd kados: a publication with a bound volume and a CD-ROM could be all described in one record or could have separate sibling records linked together.
16:20 kados thd: then, we have relationships ... child-parent in particular
16:19 kados welcome joshn_454
16:19 kados and an arbitrary number of item-level IDs which map to owhich MARC field?
16:18 kados an arbitrary number of copy-level IDs which coorespond to which MARC field?
16:18 kados one record-level ID which cooresponds to MARC 001
16:18 kados so we have:
16:16 kados relationships between siblings? more complex than ordering?
16:16 thd kados: siblings
16:16 kados right
16:16 thd kados: MARC has theoretical limits within one record. Koha can do better for other types of data.
16:16 kados do we need to do more than just map child-parent relationships?
16:15 thd kados: yes
16:15 kados to handle holdings
16:15 kados so we need a nested set then
16:15 kados ok
16:14 thd kados: Serials can be very complex and may use many levels
16:14 kados in our tree?
16:14 kados or do we sometimes need more than three levels?
16:14 thd kados: except that it is arbitrary
16:14 kados at least where holdings is concerned
16:13 kados so this sounds quite a lot to me like biblio,biblioitems,and items
16:13 thd that is the copy number
16:13 thd kados: yes all in copy 1
16:12 kados so 1 is the copy number
16:12 kados it is in copy 1 right?
16:12 kados I literally don't understand what it would mean to have a _separate_ copy number
16:11 thd kados: In our record example MARC using $6 distinguishes copy numbers but can distinguish items at a lower level using $8 if I remember but we can check later.
16:11 kados why would it?
16:11 kados what do you mean that it doesn't have a separate copy number?
16:09 kados what does that mean?
16:09 thd kados: If you are lucky your vendor will tell you about all the gaps.
16:09 kados separate copy number
16:09 kados copy 1 designates individual issues as items but without a
16:09 kados question:
16:09 thd kados: the electronic database coverage is unlikely to be identical for full text unless the hard copies are relatively recent and even then gaps should be expected.
16:08 thd kados: wait the fun has only just begun
16:07 kados copies 1-3 cover the same years?
16:07 kados hmmm
16:07 thd kados: Just for fun we may imagine that all items do.
16:07 thd kados: Individual items may or may not have separate barcodes.
16:06 thd kados: copy 3 is a jumbled mess because that is the world of agreements that often cover electronic database rights :)
16:05 thd kados: copy 3 designates individual years as items but again without a separate copy number.
16:04 thd kados: copy 1 designates individual issues as items but without a separate copy number.
16:03 thd kados: copy 3 is an a variety of full text databases providing coverage but they might have been linked to the hard copy.
16:01 thd kados: copy 2 has each year bound separately.
16:00 kados ok
15:59 thd kados: We will presume everything fits for my example but that is practical problem that needs to be addressed for creating MARC records when the threshold is reached
15:59 kados ok
15:58 kados or for comletely arbitrary reasons?
15:58 thd kados: copy 1 is a printed copy of loose issues in boxes
15:58 kados would there be 3 because the MARC would run out of room for one?
15:57 thd kados: So imagine 3 copies in a single record for the whole run of a serial
15:57 kados I see
15:56 thd kados: A copy can be assigned at an arbitrary point.
15:56 kados ok ... strange choice of terms but I think I get it
15:53 thd kados: a single copy can be for a whole run of many years of a serial title containing many issues within just one copy.
15:52 thd ok
15:50 kados so we can then put things into practical terms
15:50 kados as soon as you're done
15:50 kados but lets start making those lists
15:50 kados yes please do
15:49 thd kados: shall I continue with the record : copy : Item distinction? If you miss that you miss the most fundamental element.
15:47 thd kados: MARC was designed in the days when almost everything ran as a batch process. People had very modest real time expectations.
15:45 thd kados: Translation is CPU intensive. Your better record system needs a performance gain exceeding the overhead of translation.
15:45 kados thd: exactly
15:43 thd kados: The presumption must be that real time translation will be only for the few records currently being worked on.
15:42 thd kados: but if there was a high degree of translation need between MARC and Koha in real time the system would become bogged down under a heavy load with a large number of records.
15:40 kados yep
15:40 thd kados: certainly possible and certainly you can devise a better flexible structure for managing the data than MARC.
15:40 kados as well as our import/export routines
15:40 kados and write that into our framework
15:40 kados we just need to invest the time into writing up the lists and how they interact
15:39 kados it's definitely possible
15:39 kados right
15:39 kados we just need a kohamarc2standardmarc.map
15:39 thd kados: and encompassing a one to one mapping to the extent that nothing should be lost in conversion.
15:39 kados and fortunately for us, zebra includes support for .map files so that shouldn't be too hard to do
15:38 kados thd: of course
15:38 thd kados: you need to have a bidirectional mapping for standards compliance
15:38 kados thd: how do you recommend specing out full support for MARC holdings in Koha?
15:37 kados well ... can we abstract out a subset that will cover 99% of cases?
15:37 thd kados: that list would be as long as the specification when it comes to the tricky parts.
15:36 kados because the standard is quite large :-)
15:36 kados I fear we're going to get lost in the forest without any clear objective :-)
15:36 kados thd: so, I'd be happy to chat with you for the next few hours if we could compile such lists
15:35 thd yes
15:35 kados thd: follow me?
15:35 kados is a mapping between the list and MARC fields
15:35 kados the third thing we will need
15:35 kados bare minimum needed to explain what they are and what they do
15:35 kados and these lists should be short laundry lists
15:34 kados 2. a list of behaviours of those elements
15:34 thd kados: a copy can be at any level including the entire run of a serial for many years as a single copy.
15:34 kados 1. a list of elements of MARC holdings
15:34 kados thd: in order to replicate MARC holdings support in Koha we need two things:
15:33 thd dce: Does Sara have info on the degree of discount Baker and Taylor gives to libraries and how much for Follett in relation to list price? What things are liable to have better prices than others and what is the degree of variance? This is something I have wondered about for years and I have worked for over 15 years in the retail book trade so I could tell you all about those discounts.
15:29 kados if a copy isn't an issue, what is it?
15:29 thd kados: 3 copies of the whole title for several years.
15:29 dce thd: Here is the reply I got about pricing: "I think it depends. Some vendors are cheaper for certain things. Sara says she likes to order from Baker & Taylor because they have a better price. Most of the school librarians I know do business with Follett--most of the Public Librarians I know do business with Baker & Taylor."
15:29 kados Vol. 1 No. 1, No. 2, No. 3 ?
15:29 kados meaning there have been three issues?
15:28 thd kados: Imagine a serial title where there are 3 copies.
15:27 thd kados: Copies are distinguished by number. Yet a copy may be for a serial title and individual items may be for issues or bound years etc.
15:26 kados I usually need examples rather than abstract descriptions :-)
15:25 thd kados: Provided the items are in the same record as the copy number.
15:24 thd kados: Within a copy level there may be subsidiary items.
15:24 kados what does that last point mean?
15:23 thd kados: copies may be distinguished on any level at which the record is specified.
15:22 thd kados: a record may have one or many copies associated.
15:21 thd kados: to continue about records : copies : items
15:16 thd kados: The utility of preserving holdings numbers from foreign systems would be primarily for libraries that catalogued on OCLC or some other remote system. Or even added their own records to OCLC which SUDOC disallows.
15:15 kados right
15:12 thd kados: Both are repeatable and could be filled with numbers from multiple systems.
15:11 thd kados: Although, I suspect 014 may be more recently specified than 035.
15:09 thd kados: sorry, you are right for the linkage number. 001 goes in 035.
15:07 thd or 035. There options.
15:07 kados thd: on the holdings page it says to preserve it in 014
15:06 thd kados: Cataloguers have no time for this now but that is the purpose and time would not be a factor in an automated system.
15:05 thd kados: Existing systems do not actually do this to my knowledge but a human can query the original system with the unique record number from that system.
15:03 thd kados: If you have the original number, then perhaps the system can automatically check for an update on the foreign system.
15:02 thd kados: This weekend certainly, but to answer you want to preserve numbers from a foreign system, usually in 035 for bibliographic records to be able to refer back to the original record for updating if the original foreign record is changed or enhanced in some manner.
14:59 kados please do
14:59 thd kados: It is all instantly relevant.
14:58 thd kados: I should immediately send you my draft email from months ago.
14:57 kados is that the reason we preserve the incoming 001?
14:57 kados we query oclc for the number in 014 (in their 001) to find if there is an updated record?
14:56 thd kados: why is there no way to order them?
14:56 kados then, say we want to check to see if that record is up to date
14:56 kados we grab their 001 and put it in 014
14:56 kados so we get a record from oclc
14:56 kados ok ... next question
14:56 kados so there is no way to order them
14:55 thd kados: 001 from the related record is used.
14:54 kados does their 004 field contain whatever is in the parent 001?
14:54 kados ie, first, second, third
14:54 kados and we need to 'order' the three children, right?
14:54 kados the parent record doesn't have a 004
14:54 kados and three children
14:53 kados ie, say we have a parent record
14:53 kados what is the normal form of that control number?
14:53 kados An organization receiving a separate holdings record may move the control number for the related bibliographic record of the distributing system from field 004 to one of the following 0XX control number fields and place its own related bibliographic record control number in field 004:
14:52 thd kados: The largest libraries with the best up to date library systems will have MARC holdings records.
14:51 thd kados: Do not expect libraries to start with MARC holdings records. Mostly they will have bibliographic records with holdings fields included.
14:50 kados so 004 is used for linking records
14:50 thd kados: remember this was designed in the mid sixties.
14:50 kados http://www.itsmarc.com/crs/hold0657.htm
14:49 thd kados: yes I lapsed a day or so ago I think and wrote 006 for 000/06 000/07.
14:49 kados that's absurd
14:49 kados or if an item is transfered to another address you need to update the address for that item?
14:49 kados so every time a library changes its address you need to update all the records?
14:48 kados that's really bad practice
14:48 kados yikes, they're putting addresses in the 852!
14:47 kados or serial
14:47 kados multi-part
14:47 kados whether single-part
14:47 kados the leader determines the type of record we're dealing with
14:47 thd kados: copies can be at whatever level the cataloguer wants to distinguish a copy.
14:46 kados OK ... right off the bat I can tell we're going to need leader management
14:46 kados I'm reading the introduction to holdings now
14:46 kados right :-)
14:45 thd kados: Machine readable can be difficult to program because human programmers have to parse it correctly first :)
14:44 thd kados: Records have an arbitrary level that is distinguished by information referring to other records which may be textual information that is difficult for a machine to parse or maybe more machine readable and difficult for humans to parse and program.
14:42 kados I understand koha's heirarchy, just not the MARC holdings one
14:42 kados well ... I'm not really sure what the difference between the three are in terms of MARC holdings
14:41 thd kados: Do you mean copy level vs. item level?
14:41 kados thd: should I read the cataloger's reference shelf?
14:41 thd kados: There are various linking points in MARC holdings records and various means for identifying the part/whole relationships.
14:41 kados I don't understand copy-level vs record-level
14:40 kados it's the first step that's hard :-)
14:40 kados which wouldn't be hard once we had the functionality built in
14:39 thd kados: Koha could integrate everything in your grand non-MARC design for a holdings record but then you need to be able to export into MARC.
14:39 kados how was that acomplished?
14:38 thd kados: Libraries that need to track every issue of a serial forever need multiple interlinked holdings records in MARC.
14:36 thd kados: Remember the problem about breaking the MARC size limit when there are too many items in one record.
14:35 thd kados: you can do anything with MARC and the frameworks allow you to create whatever you need except that they need better support for indicators, fixed fields, etc.
14:34 kados that shouhld be literally a 3 line change!
14:34 kados so Koha just needs to pay attention to certain item-level and copy-level fields before assigning item numbers
14:34 kados or do the frameworks in koha not support this?
14:33 kados with record-level data, copy-level data, and item-level data?
14:33 kados ie, can't we base our 9XX local use fields based on that model?
14:33 thd kados: yet if you export a record with fewer items and re-import with more items Koha should preserve the old item numbers and add item numbers for what needs them.
14:33 kados can't we simply store the id somewhere in the record?
14:33 kados is make sure copy-level and item-level import/export doesn't remove the item's id
14:32 kados so now all we need to do
14:32 kados ie, that paragraph I posted above
14:32 kados I think zebra can handle everything we need to do at the record level
14:30 kados :-)
14:30 kados item
14:30 kados biblioitem
14:30 kados biblio
14:30 kados looks a lot like
14:30 kados item
14:30 kados copy
14:30 kados record
14:30 kados so we now have
14:30 kados interesting
14:29 thd exactly
14:28 thd kados: MARC uses a copy number concept but there can be items at the sub-copy level. A serial title may have only one copy but many constituent items.
14:28 kados right?
14:28 kados same with items
14:28 kados ie, we don't want to delete a record every time we export it or import a new version
14:28 kados without affecting our management of them in Koha
14:28 kados we need to be able to export and import records and items
14:28 kados so what you're saying is:
14:27 kados so I don't think zebra's equipped to handle ids at the item level
14:27 kados right
14:26 thd kados: Also, it would seem advantageous to preserve item numbers between systems when migrating.
14:25 thd kados: some sort of itemnumber must work. There needs to be a means to protect against its automatic reassignment when exporting and re-importing records.
14:23 kados that will work right?
14:23 kados itemnumber then
14:23 kados hmmm
14:23 thd kados: Maybe but an item needs an ID before a barcode has been assigned or even in the absence of a barcode for material that is not tracked with barcodes.
14:21 kados yes
14:21 thd kados: Are you asking if barcodes would work as the persistent ID?
14:20 kados will barcode work?
14:20 kados I see
14:20 thd kados: you need a standard means of linking MARC holdings records with whatever the Koha DB is doing with holdings.
14:19 kados imports/exports ... hmmm
14:18 thd s/persistent/persistent across imports and exports/
14:18 kados (ie, why can't we just handle that with different statuses?)
14:17 kados what is a case scenerio where item ID needs to be persistent?
14:17 kados right not it's not?
14:17 kados right
14:17 thd kados: Koha also needs to manage items in such a way that item ID is persistent.
14:17 kados I"m looking at Biblio.pm right now :-)
14:15 thd kados: That is exactly what I was hoping. Now Koha needs to support that as well.
14:13 kados "the action option may be set to any of recordInsert (add a new record, failing if that record already exists), recordDelete (delete a record, failing if it is not in the database). recordReplace (replace a record, failing if an old version is not already present) or specialUpdate (add a record, replacing any existing version that may be present)."
14:13 kados this is what I thought you would like:
14:12 kados yea, one of my questions to koha-zebra :-)
14:12 thd "
14:12 thd I have no idea what this does.
14:12 thd kados: This option is nice "xmlupdate
14:12 kados I'm sure they will adopt it
14:12 kados but since Mike is on the committee ... and Seb is influential in Z3950 as well
14:11 kados 'official ZOOM that is'
14:11 kados :-)
14:11 kados currently, ZOOM is read-only
14:11 kados Mike is on the committee
14:11 kados right
14:10 thd kados: One of my questions for Mike was about "Extended services packages are not currently described in the ZOOM Abstract API at http://zoom.z3950.org/api/zoom-current.html They will be added in a forthcoming version, and will function much as those implemented in this module."
14:10 kados thd: I think that will answer your questions earlier
14:09 kados thd: check out the options for updating there
14:07 thd see you next week paul
14:07 kados thd: http://search.cpan.org/~mirk/Net-Z3950-ZOOM-1.01/lib/ZOOM.pod#ZOOM%3A%3APackage
14:07 kados have a nice weekend
14:07 kados bye paul
14:07 paul ok, this time, i really must leave ;-)
14:06 paul if I don't mind, yes.
14:06 thd paul: Does SUDOC maintain a proprietary interest in their UNIMARC records?
14:06 paul (they CAN be paid up to 30% of SMIC -the minimum income for anyone in france-)
14:06 paul same in France.
14:05 thd paul: In Anglophone countries interns are low paid or unpaid. They are there to obtain the experience.
14:04 paul yes, but that was before our president decided to go for professionnal army => no national service (since 1997 iirc)
14:04 thd paul: I have met French interns in the US who fulfil their national service requirement by working at a foreign branch of a French company.
14:03 thd paul: You could have an army of interns :)
14:02 thd paul: Google's scheme for scanning the pages of library books has interns doing most of the labour.
14:01 paul so I don't count him.
14:01 paul maybe 2+2 in the summer.
14:01 paul right thd, but the student will be here only for 2 months.
14:01 paul still here in fact.
13:59 thd paul_away: I will find you next week. Have a pleasant weekend.
13:57 thd paul_away: maybe I misread a #koha log. An intern is a student or recent graduate usually who works on different circumstance than a regular employee and usually for a limited time.
13:56 thd paul_away: sorry I had timed out without realising
13:56 kados thd: asking some questions I had about ZOOM::Package
13:56 kados thd: I wrote a mail to koha-zebra
13:49 paul now some week end ;-)
13:46 kados now ... some breakfast :-)
13:38 paul an intern ???
13:38 thd paul: You have an intern as well do you not?
13:37 paul so, no reason to be more ambitious than this ;-)
13:37 paul * Ineo want to work on this market, and also want me as a leader with them.
13:37 paul * I don't want to become larger (even with pills ;-) )
13:37 paul * I know the limit of my 2 men large company
13:36 paul it's just that :
13:36 paul and pierrick begins it's work in Ineo in 2 weeks. and it's 1st goal will be to write a "moulinette" to do things like this.
13:36 thd paul: you are not ambitious? :)
13:35 paul me probably not. But ineo, yes, for sure.
13:35 thd paul: Would you have the potential to acquire those customers if you had a conversion for their 906/907/908?
13:34 paul nope
13:34 thd paul: Do any of your customers catalogue with SUDOC now?
13:31 kados yep
13:31 thd kados: Better to ask than to find out later there is another preferred purpose or means for what you need.
13:30 kados perhaps I should ask the Index Data guys
13:30 thd kados: As well as the scenarios that I described above.
13:30 kados thd: right, I wonder if that's what they are intended for
13:29 thd kados: user supplied IDs would be useful to preserve the 001 for its intended use between systems when migrating to Koha.
13:27 kados thd: do you have any ideas for when we would use recordIdOpaque and when we would use recordIdNumber?
13:26 kados thd: won't in Koha 3.0
13:26 kados thd: right ... and they don't with Zebra either
13:26 kados it's the only reference that explains those IDs that I can find
13:25 thd kados: Also, item identification numbers do not change when importing and exporting the same record on standard systems.
13:25 kados search for 'recordIdOpaque' on that page
13:25 kados http://www.indexdata.dk/zebra/NEWS
13:25 kados thd: do you know when these would be used?
13:25 kados I can't find a case scenerio for the client-defined ID or the system ID
13:24 kados as well as zebra's ILL :-)
13:24 kados thd: the subroutine I'm building to handle extended services will support this feature
13:24 thd kados: Not if Koha does not support it.
13:23 kados as well as just pull the ID out of the MARC record
13:23 kados you can specify both a user/client-defined ID and a system ID
13:23 kados thd: it should be possible with ZOOM
13:23 thd kados: You can export a set of records and send them to OCLC or wherever for enhancement character set changes etc and then re-import them using the same record number. It would be better if all systems could do this internally but they do not presently.
13:21 kados thd: what is a practical use case for your desired behaviour?
13:21 kados thd: are you implying that when a record is edited or its status changed the record's ID increments?
13:20 kados thd: i don't understand the functionality ...
13:20 thd kados paul: Most library systems do this.
13:19 kados thd: or are you talking about something other than editing?
13:18 kados thd: so currently, everytime a record is edited its id changes?
13:18 paul nothing planned on this subject.
13:17 thd ?
13:17 thd paul: Impossible now but what about in 3.0
13:16 paul this is impossible in Koha for instance.
13:16 thd paul: I am interested in behaviour where a record can added to the system, removed from the system for external manipulation if ever needed, and then added back to the system all the while preserving the same number that the system uses to track the record. The system would not then increment a new number if it was an old record.
13:16 paul thd : you're right : SUDOC is something strange, private in fact.
13:15 paul back
12:59 thd paul: Let me know when you are back?
12:59 paul (yes)
12:58 thd paul: Are you still on phone?
12:54 thd dce: Thank you. Whenever I ask industry people who know the market as a whole they have told me that they are not allowed to say.
12:52 dce thd: nod price was US$. I'll ask about pricing compared to list and let you know
12:50 thd paul: OCLC behaves as though it were a greedy private company even though it is actually a non-profit or not for profit membership cooperative.
12:47 thd paul: SUDOC is totally private not a cooperative member organisation in theory?
12:46 kados thd: right
12:44 paul (on phone)
12:44 thd kados paul: The SUDOC approach is similar to how OCLC works except that OCLC is supposed to be a cooperative owned by the member libraries.
12:42 thd dce: I assume your answer was US$ for 0.26, was it not?
12:40 thd dce: I have wanted to know the answer to both the question you answered before and that one for a long time but had never asked the right person.
12:37 dce No clue. If you really want to know I can ask though.
12:35 thd dce: I would imagine that it is. What does that mean in relation to the publisher's list price?
12:34 dce htd: I have an answer to your question. Follett book pricing is pretty consistent with most distributors I'm told
12:34 thd hello dce
12:34 thd paul: It is identical in UNIMARC
12:32 thd paul: MARC 21 035 is a repeatable field for Original System Number
12:29 kados I'm not sure when these are different
12:29 paul yes, in unimarc also
12:29 kados is that why zebra distinguishes between recordIdOpaque and recordIdNumber?
12:28 thd paul there is a place already for the original system number.
12:27 paul but if you import biblios from an external source, you may want to let original 001 and put biblionumber anywhere else
12:27 paul I did it, so you can put biblionumber in 001 if you want.
12:27 paul what had to be done was removing biblionumber/biblioitemnumber in same MARC field constraint that existed previously
12:26 paul in fact that's what I did for IPT
12:26 thd kados: Furthermore it works very well with authorities
12:26 paul kados & thd : since Koha 2.2.3 (iirc), you can put biblionumber in 001 without harm
12:26 kados that sounds reasonable
12:25 thd all MARC
12:25 kados thd: for UNIMARC and USMARC?
12:25 thd yes
12:25 kados thd: (for MARC identifiers)
12:25 thd yes
12:25 kados thd: is that the standard ?
12:25 thd paul: should we not use 001 now finally?
12:25 kados paul: correct me if I'm wrong
12:24 kados I think we are currently just using the 090$c field in MARC21 $a in UNIMARC
12:24 kados hmmm
12:24 thd kados: do I understand correctly that the system is not now using a preset explicit record ID?
12:21 kados (maybe when we are using more than one record syntax?)
12:21 kados do you anticipate us ever using recordIdOpaque or recordIdNumber for future kohas?
12:21 kados right now, we use internal record ID to match
12:21 kados IDs are omitted internal record ID match is assumed
12:20 kados (sysno) and/or recordIdOpaque(user supplied record Id). If both
12:20 kados record, recordIdNumber
12:20 kados zebra allows updates to be performed with:
12:20 paul thd : no, no link
12:20 paul but sudoc refuses for instance.
12:20 paul in fact, ppl want now a tool to upload their biblios from their local ILS to sudoc.
12:20 kados paul: I have a quick question
12:20 kados ahh
12:20 paul * you must wait at least 1 day to see an item in your catalogue
12:19 paul * the tool to catalogate is quite outdated.
12:19 paul * the libraries are paid when they create a biblio, but paid when they just localize an item in an existing biblio. Everybody pays at the end.
12:19 kados ahh
12:19 paul except that the system has many critics :
12:18 kados paul: France only catalogs items ONCE
12:18 paul kados joking today ?
12:18 kados paul: wow ... that is very efficient!
12:16 thd paul: Do you have a link to the 906/907/908 standard that SUDOC uses?
12:16 paul .
12:16 paul no need to support 995 or even sudoc unimarc.
12:15 paul thus, every vendor has a "moulinette" to do SUDOC => local ILS
12:15 paul (except for books outside the sudoc, but there should be none)
12:15 paul NO cataloguing is done in local ILS
12:15 paul for integration into local ILS.
12:15 paul then, every night, the sudoc ftp the new biblios on the library server
12:14 paul it uses 906/907/908 iirc.
12:14 paul sudoc unimarc don't use 995 for items.
12:14 paul to catalogate theirs biblios in the sudoc centralized DB.
12:14 paul they use sudoc tool (a proprietary sofware)
12:13 paul (www.sudoc.abes.fr)
12:13 paul in France, all major libraries (including ALL universities) MUST use SUDOC
12:13 paul in fact, their market don't need reco 995. I explain
12:13 thd paul: All of them and do they all use Recommendation 995 for the software that they market there?
12:11 paul with the same name as in US I think
12:11 paul of course
12:11 thd paul: Do Sirsi/Dynix , Innovative Interfaces etc. have systems marketed in France?
12:10 paul ?
12:09 thd s/kados:/paul: kados/
12:08 thd kados: Had been curious about whether any large vendors known in the US market library systems in France.
12:07 paul (4pm in france)
12:07 paul yep
12:07 thd paul: are you still there?
12:05 thd paul: It is good that Yahoo is sharing so as not to be left behind by Google.
11:33 paul OK. will be here next week (monday 9PM for me)
11:27 kados to discuss katipo's plans for the new default templates
11:27 kados we need to have a meeting soon about template design
11:27 kados I think they could be very useful
11:26 kados I looked at them
11:26 paul kados : nothing to answer to my mail to koha-devel subject : "testing tool ?" and "yahoo tool" ?
11:25 kados hmmm
11:25 kados I see
11:24 paul maybe a package with some subs, each specialized, could be better.
11:23 paul thus i'm not sure having only 1 sub is a good solution.
11:22 kados createdb would have neither
11:21 kados for instance, a 'delete' would only have a biblionumber
11:21 kados I'm not sure every call has a biblionumber and a record
11:20 paul and only this.
11:20 paul thus, I would put in a hash all what you can't be sure you'll have at every call.
11:20 paul it usually makes the API simpler at 1st glance, but it's less clear.
11:20 paul I'm not strongly for putting everything in a hash in parameters.
11:19 kados paul: in fact, could 'biblionumber' and $record' be contained within $options?
11:06 kados OK ... great, I will add a new sub zebra_package
11:06 kados I'm still gun shy with my programming :-)
11:06 paul & i think it's a good suggestion.
11:05 paul yes, that does.
11:05 kados paul: does that make sense?
11:05 kados $biblionumber and $record are obvious :-)
11:05 kados (create, commit, createdb, etc.)
11:05 kados $operation is what we put in the $p->send($operation)
11:04 kados etc.
11:04 kados record => $xmlrecord,
11:04 kados action => "specialUpdate"
11:04 kados $options contains a hash like:
11:04 kados $Zconn contains the connection object
11:03 kados ;
11:03 kados my ($Zconn,$options,$operation,$biblionumber,$record)
11:03 kados sub zebra_package {
11:02 paul not a bad idea, but if mike did not write it, maybe it means it's not that useful ?
11:00 kados (because there are not very many of them)
11:00 kados two, a single ZOOM::Package method on Koha that we can pass options too for handling all extended services in zebra
11:00 kados one, connection management like dbh