Re: [CODE4LIB] Expressing negatives and similar in RDF
Isn't the issue here that it is very hard to break from the object/property model into an RDF/assertion model [1]? It seems to me that the rare book cataloger's assertion: "This book does not have a title" only looks like it should translate to example:book1 dc:title someOntology:nil because of our familiarity with object oriented programming: BibliographicResource bib = new BibliographicResource(); bib.getTitleStatement().getTitle(); // returns null However, does this incorrectly assign the predicate and object of the triple? Shouldn't it be: Subject: This book Predicate: does not have a Object: title and therefore look more like: example:book1 someOntology:lacksProperty dc:title The statement cannot be about the value of a book's title if it does not have one. But the rare book cataloger is not making an assertion about the book's title, but an assertion about the book's metadata. We seem to be mislead into thinking that null is a value because most programming languages use equivalence syntax as shorthand for determining if an object's property is set. That is, this: object.getTitle == "Semantic Web" looks a lot like this object.getTitle == null But it might be better to understand this problem in terms of a set of key/value pairs in a Hash or Map: object.hasKey("title") -sm [1] "It is difficult to get a man to understand something, when his salary depends upon his not understanding it!" On Wed, Sep 18, 2013 at 10:58 AM, Karen Coyle wrote: > On 9/18/13 6:25 AM, aj...@virginia.edu wrote: > >> -BEGIN PGP SIGNED MESSAGE >> >> and without disagreeing with you, I would point out that if you say that >> a given type of resource can have at most one dct:title (which is easy to >> declare using OWL), and then apply that ontology to an instance that >> features a resource of that type with two dct:titles, you're going to get >> back useful information from the operation of your reasoner. An >> inconsistency in your claims about the world will become apparent. I now >> realize I should have been using the word "consistency" and not "validity". >> >> I suppose what I really want to know, if you're willing to keep "playing >> reporter" on the workshop you attended, is whether there was an >> understanding present that people are using OWL in this way, and that it's >> useful in this way (far more useful than writing and maintaining lots and >> lots and lots of SPARQL) and that this is a use case for ontology languages. >> > > The workshop was expressly on validation of data. No one reported using > "reasoners" to do validation, and one speaker talked about relying on OWL > for their validation rules (but admitted that it was all in their closed > world and was a bit apologetic about it). I don't have experience with > reasoners, but one of the issues for validation using SPARQL is getting > back specific information about what precise part of the query returned > "false". I suspect that reasoners aren't good at returning such > information, since that is not their purpose. I don't believe that they > operate on a T/F basis, but now I'll start looking into them. > > One thing to remember about OWL is that it affects the semantics of your > classes and properties in the open world. OWL intends to describe truths > about a world of your design. It should affect not only your use of your > data, but EVERYONE's use of your data in the cloud. Yet even you may have > more than one application operating on the data, and those applications may > have different requirements. Also, remember that the graph grows, so > something that may be true at the moment of cataloging, for example, may > not be true when your graph combines with other graphs. So you may say that > there is one and only one main author to a work title, but that means one > and only one URI. If your data combines with data from another source, and > that source has used a different author URI, then what should happen? Each > OWL rule makes a statement about a supposed reality, yet you may not have > much control over that reality. Fewer rules ("least ontological > commitment") means more possibilities for re-use and re-combining of your > data; more rules makes it very hard for your data to play well in the world > graph. > > There are cases where OWL *increases* the utility of your properties and > classes, in particular declaring sub-class/sub-property relations. If we > say that RDA:titleProper is a subproperty of dct:title then anyone who > "knows" dct:title can make use of RDA:titleProper. But OWL as a way to > *restrict* the definition of the world should be used with caution. > > I would like to see a discussion of what kinds of inferences we would like > to make (or see made) of our data in the open world, and then those > inferences should inform how we would use OWL. Do we want to infer that > every resource has a title? Obviously not, from how this discussion > started. How about that every resource has a known creato
Re: [CODE4LIB] separate list for jobs
There is another benefit in addition to, "skills should I cultivate." There is a follow-the-money factor. Declaring I'm for Linked Data is one thing. Putting Linked Data in a job title is something far more significant. Since code4lib is not always boast4lib-ish, it would be too great a loss to not see the evidence of financial investment by institutions for things like the Hydra stack (Solr, Fedora, Blacklight...) over the last few years. When your HR department says you are building an RDF-based triple store, I am pretty certain you will be doing it. On Tue, May 6, 2014 at 1:01 PM, Kyle Banerjee wrote: > On Tue, May 6, 2014 at 9:59 AM, Richard Sarvas < > richard.sar...@lib.uconn.edu > > wrote: > > > Not to be a jerk about this, but why is the answer always "No"? There > seem > > to be more posts on this list relating to job openings than there are > > relating to code discussions. Are job postings a part why this list was > > originally created? If so, I'll stop now. > > > > Fragmentation dilutes the community and creates an unnecessary barrier by > requiring people to know one more thing. Email filters take no time at all > to set up so anyone who considers them noise doesn't need to be exposed to > them. > > kyle >
Re: [CODE4LIB] ruby-marc: how to sort fields after append?
Since the fields property of a MARC::Record is a MARC::FieldMap, which is a subclass of Array, I use the Array.sort_by! method: record.fields.sort_by! {|f| f.tag} On Fri, Sep 12, 2014 at 12:28 AM, Jason Stirnaman wrote: > Ruby-marc sages, > What's the best way to re-sequence fields in a record after appending to > it? This seems to work ok, but feels wrong. > > > for record in reader > # Return a record with new field appended. > newrecord = add_control_number(record) > > ### Re-sort fields by tag and copy them to a new record. ### > sortedrecord = MARC::Record.new > sortedrecord.leader = newrecord.leader > newrecord.sort_by{|f| f.tag}.each {|tag| sortedrecord.append(tag)} > > writer.write(sortedrecord) > end > > > Thanks, > Jason > > Jason Stirnaman > Lead, Library Technology Services > University of Kansas Medical Center > jstirna...@kumc.edu > 913-588-7319 >
Re: [CODE4LIB] Examples of Web Service APIs in Academic & Public Libraries
We are also using our ILS's APIs to do things like display checked out items and library fines or initiate ILL requests in systems that are not our ILS. It is also worth noting that Solr and Fedora, two stalwarts of the 21st century discovery and repository systems are pretty much user interface-less. Interaction with these two pieces of software, which are underpinning a lot of modern catalogs and digital collections infrastructure, is almost exclusively negotiated through their APIs. -Steve On 10/11/11 12:01 PM, Walker, David wrote: We use a number of web services provided by our (often vendor-supplied) library systems. Those include: Metalib, SFX, bX, and Voyager. We've also worked with Ebsco, Summon, Primo/Primo Central, and Worldcat APIs. --Dave - David Walker Library Web Services Manager California State University -Original Message- From: Code for Libraries [mailto:CODE4LIB@LISTSERV.ND.EDU] On Behalf Of Michel, Jason Paul Sent: Saturday, October 08, 2011 10:34 AM To: CODE4LIB@LISTSERV.ND.EDU Subject: [CODE4LIB] Examples of Web Service APIs in Academic& Public Libraries Hello all, I'm a lurker on this listserv and am interested in gaining some insight into your experiences of utilizing web service APIs in either an academic library or public library setting. I'm writing a book for ALA Editions on the use of Web Service APIs in libraries. Each chapter covers a specific API by delineating the technicalities of the API, discussing potential uses of the API in library settings, and step-by-step tutorials. I'm already including examples of how my library (Miami University in Oxford, Ohio) are utilizing these APIs but would like to give the reader more examples from a variety of settings. APIs covered in the book: Flickr, Vimeo, Google Charts, Twitter, Open Library, LibraryThing, Goodreads, OCLC. So, what are you folks doing with APIs? Thanks for any insight! Kind regards, Jason -- Jason Paul Michel User Experience Librarian Miami University Libraries Oxford, Ohio 45044 twitter:jpmichel -- Stephen Meyer Library Application Developer UW-Madison Libraries 436 Memorial Library 728 State St. Madison, WI 53706 sme...@library.wisc.edu 608-265-2844 (ph) "Just don't let the human factor fail to be a factor at all." - Andrew Bird, "Tables and Chairs"
Re: [CODE4LIB] Best way to process large XML files
It is also worth noting that you can usually do SAX-style parsing in most XML parsing libraries that are normally associated with DOM style parsing and conveniences like XPath selectors. For example, Nokogiri does SAX and it is *very* fast: http://nokogiri.org/Nokogiri/XML/SAX/Document.html As a related question, when folks do SAX-style parsing and need to select highly conditional and deeply nested elements (think getting MODS title data only when a parent element's attribute matches a condition and it is all nested in a big METS wrapper), how are you keeping track of those nesting and conditional rules? I have relied on using a few booleans that get set and unset to track state, but it often feels sloppy. -steve On Fri, Jun 8, 2012 at 2:41 PM, Ethan Gruber wrote: > but I have gotten noticeably better > performance from Saxon/XSLT2 than PHP with DOMDocument or SimpleXML or > nokogiri and hpricot in Ruby.
Re: [CODE4LIB] OCLC Classify API - sfa vs. nsfa
For the Classify service at OCLC, when it is LCC we use a regular expression: "^[a-zA-Z]{1,3}[1-9].*$". For DDC we filter out the truncation symbols, spaces, quotes, etc. -Steve On Wed, Jun 20, 2012 at 8:54 AM, Arash.Joorabchi wrote: > Hi all, > > I am using the OCLC Classify API. As show in the sample response snippet > below the two attributes "sfa" and "nsfa" could hold different values. > > According to > "http://oclc.org/developer/documentation/classify/response-details": > > sfa - classification number from the subfield $a of 082/092 or 050/090, > or 060/096 > > nsfa - normalized classification number from the subfield $a of 082/092 > or 050/090, or 060/096 > > However,I would like to know how this normalization is done. > > Thanks, > Arash > > > > > http://chart.apis.google.com/chart?cht=p&chs=350x200&chd= > t:100.0&chtt=All+Editions&chdl=Classified (100.00%) > > > http://chart.apis.google.com/chart?cht=p&chs=475x175&chd= > t:100.0,16.68,16.68,16.68&chl=Functional programming > (Computer science)|Lambda calculus|Modality (Logic)|Type theory| > > Functional programming > (Computer science) > Lambda > calculus > Modality > (Logic) > Type theory > > > > > > > http://chart.apis.google.com/chart?cht=p&chs=350x200&chd= > t:100.0&chtt=DDC&chdl=510.7808 > >
[CODE4LIB] brew_crews_quitter += 1
I will not be attending the Brews Cruise. My spot has opened up on the wiki. -Steve
[CODE4LIB] Job Posting: Library Systems Administrator, UW-Madison Libraries
Sending this position on behalf of of our sysadmin team here at UW-Madison. -Steve Working title: Library Systems Administrator Official title: INFORM PROCESS CONSLT(S44DN) or ASSOC INF PROC CONSLT(S44FN) Degree and area of specialization: Bachelor's degree required, preferably in Computer Science or related field Minimum number of years and type of relevant work experience: -A minimum of 1 year work experience in Computer Operations, Information Center, Info Lab, or Help Desk -Experience with Windows networking, system administration and implementation -Demonstrated oral, written and interpersonal communication skills with experience in a large scale automated library system preferred. Principal duties: This position will be part of the GLS Library Technology Group (LTG) Help Desk Team under the general direction of the Associate Director for Technology. LTG supports over 40 libraries on Campus including the GLS and professional school libraries of Health Science, Law and Engineering with a workstation base of approximately 1000. The workstation/server environment consists of Windows 2008 servers with XP on the desktop. Of the installed PCs, roughly 500 are deployed for public access within supported libraries running on the campus network. For the internal library operations, the GLS uses the ExLibris Voyager system running on a Sun Solaris platform. This is closely integrated into the Electronic Library (EL) services. Desired qualifications -Experience with Linux administration and an Apache, Mysql, PHP environment -Experience with VMWare and/or other server, client or application virtualization technologies -Experience in customer service and documentation preparation -Experience in coordination of server/client hardware purchasing, installation, repairs -Consulting experience on a wide variety of library instructional technologies including imaging and multimedia The consultant will be part of the LTG Help Desk Netadmin team and will work closely with all levels of library staff and users including faculty, researchers, students and the general public. There will also be frequent interaction with the Division of Information Technology (DoIT) staff as well as Campus/College/Departments technical staff. The consultant will be expected to participate actively in library and campus-wide committees. As one of the Netadmin team, the consultant will develop new or revised client functions within the EL system; provide implementation and system support for the EL computer platforms; be responsible for troubleshooting and support of the EL system (online public catalog, Voyager, Windows network); work closely with other LTG staff members to provide training and ensure a high level of quality support for library users; provide consulting and recommendations for instructional electronic technologies to library staff. A criminal background check will be conducted prior to hiring. A period of evaluation will be required * Appointment type: Academic Staff Department(s): LIBR/LIBR TECH GROUP Full time salary rate: Minimum $37,140 ANNUAL (12 months) Depending on Qualifications Term: This is a renewable appointment. Appointment percent: 100% Anticipated begin date: SEPTEMBER 01, 2011 Number of positions: 1 TO ENSURE CONSIDERATION Application must be received by: JULY 29, 2011 HOW TO APPLY: A letter of application, resume, three names of references (including addresses, phone numbers and email) should be sent to Nancy Graff Schultz, ngraffshu...@library.wisc.edu Unless another application procedure has been specified above, please send resume and cover letter referring to Position Vacancy Listing #71002 to Nancy Graff Schultz Phone: 608-262-0076 728 State St Fax: N/A Room 369 Email: ngraffschu...@library.wisc.edu Madison, WI 53706-1418 Relay Access (WTRS): 7-1-1 (out-of-state: TTY: 800.947.3529, STS: 800.833.7637) and above Phone number (See RELAY_SERVICE for further information. ) NOTE: Unless confidentiality is requested in writing, information regarding the names of applicants must be released upon request. Finalists cannot be gu aranteed confidentiality. UW-Madison is an equal opportunity/affirmative action employer. We promote excellence through diversity and encourage all qualified individuals to apply. -- Stephen Meyer Library Application Developer UW-Madison Libraries 436 Memorial Library 728 State St. Madison, WI 53706 sme...@library.wisc.edu 608-265-2844 (ph) "Just don't let the human factor fail to be a factor at all." - Andrew Bird, "Tables and Chairs"
[CODE4LIB] Job Announcement: Library Application Developer position at UW-Madison Libraries
Position Vacancy Listing: http://www.ohr.wisc.edu/pvl/pv_071438.html Working title: Library Application Developer Official title: INFORM PROCESS CONSLT(S44DN) or ASSOC INF PROC CONSLT(S44FN) Degree and area of specialization: Bachelors Degree required; Computer Science or related field preferred. Minimum number of years and type of relevant work experience: Required: minimum 1 year work experience in web and database programming; experience with SQL and database design; experience with application development across its life cycle; experience working in a Unix or Linux web server environment; experience with the web standards technologies (HTML, CSS and Javascript); excellent oral, written, and interpersonal communication skills. Desired: strong understanding of code frameworks, such as Ruby-on-Rails, Django, or Spring, etc. for web applications, or ActiveRecord, Hibernate, etc., for Object Relational Mapping (ORM) database persistence; strong experience with relational database management systems such as MySQL, Postgres, or Oracle; experience with Java, Ruby, or Python or other modern programming language in common use in the development of web applications; knowledge of metadata standards in common use in libraries such as MARC or XML formats such as MODS, METS, or EAD; experience developing form-driven web applications; strong understanding of object-oriented design; knowledge of integrated library systems such as Ex Libris' Voyager; experience with indexing software such as Apache Solr; experience with digital repository software such as Fedora. Principal duties: The position will be part of the GLS Shared Development Group (SDG) team under the general direction of the Associate Director for Technology. SDG is the development shop for the UW-Madison Libraries and is responsible for providing development of original code and web application deployment in support of the teaching, research and outreach mission of the UW-Madison community. The group is responsible for web applications and back-end processing that supports the Libraries' website, including the development of a local resource discovery system (UW Forward). The consultant will be responsible for working on improvements to the Forward resource discovery system, including staying current with the broader developments to its codebase, Blacklight which is developed by colleagues at our peer institutions at the University of Virginia, Stanford University and Johns Hopkins University. This position will expand the current capabilities of the Forward resource discovery system in order to provide data services to researchers and instructors on campus in the form of data visualization tools and integration of locally curated collections into campus instructional settings. The successful candidate will be able to work closely with faculty, researchers and instructional staff on campus to ingest research data and original digital content into the UW Libraries digital collections platform for archiving, preservation, access and reuse in all areas of the academic environment from the classroom to the scholarly publishing process. The consultant will be responsible for new or revised computer programming within the UW Madison library system; develop, deploy and help support new and existing web applications; and assist in the design of infrastructure for the Libraries' online services. S/he will be expected to produce stable, accessible and usable applications that are well documented. The consultant must be able to provide consultation and recommendations about digital library technologies to library staff by demonstrating the ability to think critically about the new directions and trends for web technologies outside the library and academic sphere and how they might be employed to support the teaching, research and outreach mission of the University. The successful candidate must be able to respond to the changing nature of online services in a large university environment and have the ability to guide early-stage concepts through the necessary steps and processes to create production quality services. The consultant will be expected to participate actively in library and campus-wide committees. A criminal background check will be conducted prior to hiring. A period of evaluation will be required * Appointment type: Academic Staff Department(s): LIBR/LIBR TECH GROUP Full time salary rate: Minimum $50,000 ANNUAL (12 months) Depending on Qualifications Term: This is a renewable appointment. Appointment percent: 100% Anticipated begin date: OCTOBER 04, 2011 Number of positions: 1 TO ENSURE CONSIDERATION Application must be received by: SEPTEMBER 29, 2011 HOW TO APPLY: Unless another application procedure has been specified above, please send resume and cover letter referring to Position Vacancy Listing #71438 to Nancy Graff Schultz 728 State St R
Re: [CODE4LIB] creating call number browse
one counter argument that i would make to this is that we consistently hear from faculty that they absolutely adore browsing the stacks--there is something that they have learned to love about the experience regardless of whether they understand that it is made possible by the work of catalogers assigning call numbers and then using them for ordering the stacks. at uw-madison we have a faculty lecture series where we invite professors to talk about their use of library materials and their research and one historian said outright, the one thing that is missing in the online environment is the experience of browsing the stacks. he seemed to understand that with all the mass digitization efforts, we could be on the edge of accomplishing it. that said, i agree that we should do what you say also, just that we should not throw the baby out w/ the bath water. if faculty somehow understand that browsing the stacks is a good experience then we can use it as a metaphor in the online environment. in an unofficial project i have experimented w/ primitive interface tests using both subject heading 'more like this' and a link to a stack browse based on a call number sort: http://j2ee-dev.library.wisc.edu/sanecat/item.html?resourceId=951506 (please, ignore the sloppy import problems, i just didn't care that much for the interface test) as for the original question, this has about a million records and 900,000 w/ item numbers and a simple btree index in the database sorts at an acceptable speed for a development test. -sm Walker, David wrote: a decent UI is probably going to be a bigger job I've always felt that the call number browse was a really useful option, but the most disastrously implemented feature in most ILS catalog interfaces. I think the problem is that we're focusing on the task -- browsing the shelf -- as opposed to the *goal*, which is, I think, simply to show users books that are related to the one they are looking at. If you treat it like that (here are books that are related to this book) and dispense with the notion of call numbers and shelves in the interface (even if what you're doing behind the scenes is in fact a call number browse) then I think you can arrive at a much simpler and straight-forward UI for users. I would treat it little different than Amazon's recommendations feature, for example. --Dave == David Walker Library Web Services Manager California State University http://xerxes.calstate.edu From: Code for Libraries [EMAIL PROTECTED] On Behalf Of Stephens, Owen [EMAIL PROTECTED] Sent: Wednesday, September 17, 2008 9:17 AM To: CODE4LIB@LISTSERV.ND.EDU Subject: Re: [CODE4LIB] creating call number browse I'm not sure, but my guess would be that the example you give isn't really a 'browse index' function, but rather creates a search result set and presents it in a specific way (i.e. via cover images) sorted by call number (by the look of it, it has an ID of the bib record as input, and it displays this book and 10 before it, and 10 after it, in call number order. Whether this is how bibliocommons achieves it or not is perhaps besides the point - this is how I think I would approach it. I'm winging it here, but if I was doing some quick and very dirty here: A simple db table with fields: Database ID (numeric counter auto-increment) Bib record ID URIs to book covers (or more likely the relevant information to create the URIs such as ISBN) Call number To start, get a report from your ILS with this info in it, sorted by Call Number. To populate the table, import your data (sorted in Call Number order). The Database ID will be created on import, automatically in call number order (there are other, almost certainly better, ways of handling this, but this is simple I think) To create your shelf browse given a Bib ID select that record and get the database ID. Then requery selecting all records which have database IDs +-10 of the one you have just retrieved. Output results in appropriate format (e.g. html) using book cover URIs to display the images. Obviously with this approach, you'd need to recreate your data table regularly to keep it up to date (resetting your Database ID if you want). Well - just how I'd do it if I wanted something up and running quickly. As Andy notes, a decent UI is probably going to be a bigger job ;) Owen Owen Stephens Assistant Director: eStrategy and Information Resources Central Library Imperial College London South Kensington Campus London SW7 2AZ t: +44 (0)20 7594 8829 e: [EMAIL PROTECTED] -Original Message- From: Code for Libraries [mailto:[EMAIL PROTECTED] On Behalf Of Emily Lynema Sent: 17 September 2008 16:46 To: CODE4LIB@LISTSERV.ND.EDU Subject: [CODE4LIB] creating call number browse Hey all, I would love to tackle the issue of creating a really cool call number browse tool that utilizes book covers, etc. However, I'd like to do this