Re: [CODE4LIB] Expressing negatives and similar in RDF

2013-09-22 Thread Steve Meyer
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

2014-05-06 Thread Steve Meyer
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?

2014-09-12 Thread Steve Meyer
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

2011-10-11 Thread Steve Meyer
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

2012-06-08 Thread Steve Meyer
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

2012-06-21 Thread Steve Meyer
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

2010-02-23 Thread Steve Meyer

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

2011-07-12 Thread Steve Meyer

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

2011-09-02 Thread Steve Meyer

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

2008-09-29 Thread Steve Meyer
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