Print

Print


Hi Adrian:

Thank you! Your interpretation may be closer to the intended usage than my
initial take. I'm going to examine this further and make some suggestions,
but I might be missing something very obvious, and if so, I welcome
enlightenment from the BIBFRAME community!

The supplementary instructions at
http://www.loc.gov/bibframe/docs/pdf/bf2-identifiers-march2017.pdf state
"Along with the identifier value itself, the identifier type must be
conveyed" and that where there is no specific BIBFRAME class for the
identifier, and there is no external class for the identifier, a bf:source
must be supplied. All three examples show an identifier with an rdf:value
of a string literal, but without an example of a URI, it's unclear if the
intention was for all identifier values to be string literals.

Rebecca Younes noted on this list back on 2016-06-22 in the (long!)
"rdf:value" thread: "The range of rdf:value is rdfs:Resource, so the object
can be any type of resource: a URI resource, a blank node, or a literal."
In a linked data context, I think that forcing a URI to be represented as a
literal (with a blank node as a bonus), instead of as the URI it is, is an
anti-pattern.

However, even if we accept that the value of rdf:value can be a URI
resource rather than a literal, we still need to specify the identifier
type. We've already established that there is no existing BIBFRAME
identifier class for URI. So that currently takes us to option #2 or #3 in
the document.

Option #2 is using an external class for the identifier. RDF and RDF Schema
don't seem to define a class for URI/IRI, perhaps because URIs are so core
to RDF / linked data that they just exist and are used directly to identify
things.

A popular external vocabulary that does specify a type of URI as a literal
is http://schema.org/URL. I say "as a literal" because it is a subclass of
http://schema.org/Text, but schema.org tends to err on the side of being
permissive to encourage structured markup of any kind. Indeed, some of the
examples in the schema.org documentation for schema:URL lead to generating
either URIs or literals depending on which serialization (RDFa or JSON-LD)
you choose.

If we do adopt a http://schema.org/URL approach, that would suggest
something like:

@prefix bf: <http://id.loc.gov/ontologies/bibframe/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix schema: <http://schema.org/> .

<http://example.org/2335409#Work> a bf:Text, bf:Work ;
    bf:identifiedBy [ a schema:URL ;
      rdf:value <http://worldcat.org/entity/work/id/638612>
] .

If we're not comfortable with adopting http://schema.org/URL or some other
external class, then we're down to #3 -- basically what you suggested, plus
a bf:source [ ] statement, with an uncontrolled string value identifying
URI (oh the irony!):

@prefix bf: <http://id.loc.gov/ontologies/bibframe/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix schema: <http://schema.org/> .

<http://example.org/2335409#Work> a bf:Text, bf:Work ;
    bf:identifiedBy [
      bf:source [ rdfs:label "URI"@en ];
      rdf:value <http://worldcat.org/entity/work/id/638612>
] .

A few suggestions coming out of this:

1. Given that the identifier type must be conveyed, and URI will hopefully
be a very common identifier type in the linked data environment we're
aiming for, BIBFRAME should either define a bf:URI subclass of
bf:Identifier OR document the recommendation of a common external class
(something like http://schema.org/URL, although that might not be the best
choice).
2. If BIBFRAME wants strings for identifiers, then per Simon Spero's
recommendation in the same 2016-06-22 thread, consider declaring a pair of
new properties that replace rdf:value and rdfs:label with more specific
ranges -- Simon suggested bf:text and bf:res -- and replace throughout the
examples/documentation. That will reduce ambiguity.

Best,
Dan


On Mon, 18 Feb 2019 at 02:56, Adrian Pohl <[log in to unmask]> wrote:

> Hello Dan,
>
> I think we should use a URI in quotes (i.e. as string) when talking
> about itself and not about the thing it identifies:
> <http://worldcat.org/entity/work/id/638612> is a bf:Work while
> 'http://worldcat.org/entity/work/id/638612' is an identifier/URI.
>
> It is similar when we are talking about words (metalanguage) instead of
> just using them: 'long' has four letters.
>
> Regqarding the example case, this would mean to just record the URI as
> if it was a non-URI identifier:
>
>
> @prefix bf: <http://id.loc.gov/ontologies/bibframe/> .
>
> <http://example.org/2335409#Work> a bf:Text, bf:Work ;
>     bf:identifiedBy [ a bf:Identifier ;
>       rdfs:value "http://worldcat.org/entity/work/id/638612"
> ] .
>
> -Adrian
>
>
> Am 16.02.19 um 01:44 schrieb Dan Scott:
> > While the description for bf:Identifier
> > (http://id.loc.gov/ontologies/bibframe.html#c_Identifier) is "Token or
> > name that is associated with a resource, such as a URI or an ISBN", its
> > subclasses include bf:Isbn but not bf:Uri[1].
> >
> > For now I've interpreted this as "just use bf:Identifier if you have a
> > URI," but if that interpretation is correct, it might make sense to
> > clarify the description.
> >
> > Example:
> >
> > @prefix bf: <http://id.loc.gov/ontologies/bibframe/> .
> >
> > <http://example.org/2335409#Work> a bf:Text, bf:Work ;
> >     bf:identifiedBy <http://worldcat.org/entity/work/id/638612>.
> >
> > <http://worldcat.org/entity/work/id/638612> a bf:Identifier .
> >
>