All Projects → slub → urnlib

slub / urnlib

Licence: GPL-3.0 license
Java library for representing, parsing and encoding URNs as in RFC2141 and RFC8141

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to urnlib

kitodo-presentation
Kitodo.Presentation is a feature-rich framework for building a METS- or IIIF-based digital library. It is part of the Kitodo Digital Library Suite.
Stars: ✭ 33 (+37.5%)
Mutual labels:  code4lib
roadoi
Use Unpaywall with R
Stars: ✭ 60 (+150%)
Mutual labels:  code4lib
solrdump
Export SOLR documents efficiently with cursors.
Stars: ✭ 33 (+37.5%)
Mutual labels:  code4lib
Library-Search-Plugin-Public
The Library Search Plugin plugin allows users (students, researchers, etc.) to search your library's catalogue, Google Scholar, WorldCat, or PubMed, without having to navigate to the respective websites first! It also comes with a neat context menu that allows users to select text, right-click, and search!
Stars: ✭ 17 (-29.17%)
Mutual labels:  code4lib
kitodo-production
Kitodo.Production
Stars: ✭ 52 (+116.67%)
Mutual labels:  code4lib
iromlab
Loader software for automated imaging of optical media with Nimbie disc robot
Stars: ✭ 26 (+8.33%)
Mutual labels:  code4lib
cryptouri.rs
Rust implementation of CryptoURI: URN-like namespace for cryptographic objects with Bech32-based encoding
Stars: ✭ 33 (+37.5%)
Mutual labels:  urn
isolyzer
Verify size of ISO 9660 image against Volume Descriptor fields
Stars: ✭ 29 (+20.83%)
Mutual labels:  code4lib
videlibri
📚 Cross-platform library client to automate any OPAC and library catalog from your local device, e.g. for renewing of borrowed books or searching for books available in the library in automated scripts.
Stars: ✭ 18 (-25%)
Mutual labels:  code4lib
siskin
Tasks around metadata.
Stars: ✭ 20 (-16.67%)
Mutual labels:  code4lib
openrefine-client
The OpenRefine Python Client from Paul Makepeace provides a library for communicating with an OpenRefine server. This fork extends the command line interface (CLI) and is distributed as a convenient one-file-executable (Windows, Linux, Mac). It is also available via Docker Hub, PyPI and Binder.
Stars: ✭ 67 (+179.17%)
Mutual labels:  code4lib
openrefine-docker
OpenRefine is a free, open source power tool for working with messy data and improving it. This repository contains Dockerbuild files for automated builds.
Stars: ✭ 19 (-20.83%)
Mutual labels:  code4lib
annif
ANNotation Infrastructure using Finna: an automatic subject indexing tool using Finna as corpus
Stars: ✭ 14 (-41.67%)
Mutual labels:  code4lib
scholia
Wikidata-based scholarly profiles
Stars: ✭ 166 (+591.67%)
Mutual labels:  code4lib
librisxl
Libris XL
Stars: ✭ 50 (+108.33%)
Mutual labels:  code4lib
metis-framework
Metis, named after the Titaness of Wisdom, is our in-development data publication framework including both a client application and a number of data processing (micro)services
Stars: ✭ 15 (-37.5%)
Mutual labels:  code4lib
europeana-portal-collections
Europeana Collections portal as a Rails + Blacklight application.
Stars: ✭ 18 (-25%)
Mutual labels:  code4lib
CSharp MARC
C# class libraries and full featured editor for MARC Records
Stars: ✭ 51 (+112.5%)
Mutual labels:  code4lib
openrefine-batch
Shell script to run OpenRefine in batch mode (import, transform, export). It orchestrates OpenRefine (server) and a python client that communicates with the OpenRefine API.
Stars: ✭ 76 (+216.67%)
Mutual labels:  code4lib
metadata-qa-marc
QA catalogue – a metadata quality assessment tool for library catalogue records (MARC, PICA)
Stars: ✭ 59 (+145.83%)
Mutual labels:  code4lib

urnlib

Build Maven Central

Java library for representing, parsing and encoding URNs as specified in RFC 2141 and RFC 8141.

The initial URN RFC 2141 of May 1997 was superseeded by RFC 8141 in April 2017. RFC 8141 added support for path characters and optional request, query and fragment parts. While URNs look very similiar to URIs and are somewhat related, different equality rules apply for URNs in regard to URN character encoding rules. Also some synactic rules about case-insensitivity are actually to be defined by the implementing system handling the URNs.

This library provides classes for representing, parsing and constructing an Uniform Resource Name (URN) and its parts Namespace Identifier (NID), Namespace Specific String (NSS) and optional Resolution, Query and Fragment components (RQF). If you don't need RFC 2141 URNs explicitly, always use RFC 8141 URNs because that is the current valid specification and RFC 8141 is backward compatible to RFC 2141.

Further it defines and interface de.slub.urn.URNResolver for URN resolving implementations.

The library is compiled for Java 7.

Usage

import de.slub.urn.URN;
import de.slub.urn.URNSyntaxError;
import de.slub.urn.URN_8141;

import static de.slub.urn.RFC.RFC_8141;

class Demo {
    public void foo() throws URNSyntaxException {
        // Create a RFC 2141 compliant URN (not recommended)
        URN urn1 = URN.rfc2141().parse("urn:examle:1234");

        // Create a RFC 8141 compliant URN (recommended)
        URN urn2 = URN.rfc8141().parse("urn:examle:foo/1234?=cq=cz#bar");

        // Access fragment part of a supposedly RFC 8141 compliant URN
        if (urn2.supports(RFC_8141)) {
            String fragment = ((URN_8141) urn2).getRQFComponents().fragment();
        }
    }
}

Where to find releases?

The master branch of the repository contains the latest developments. Releases are tagged. There are two ways of getting releases of this library. Binaries are obtained through Maven dependencies. Sources via the GitHub Releases download section.

The recommended way is by declaring a dependency, for example in your projects POM file:

<dependency>
  <groupId>de.slub-dresden</groupId>
  <artifactId>urnlib</artifactId>
  <version>[2.0,2.1)</version>
</dependency>

Licensing

The source code is under GNU GENERAL PUBLIC LICENSE, Version 3 (or later) as stated in the source file headers. So if you want to use the source code or a changed version, the source code and the source code using it is automatically licensed under this license.

The binaries (JAR artifacts) however are licensed under The Apache License, Version 2.0 and can be used in commercial products without any licensing changes to that product.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].