Print

Print


I'm largely in agreement about the un-desireablitlity of blank nodes. I do want to point out that there are at least two ways to reduce their numbers. One, don't make them to begin with. {grin} Two, reconcile them out. What I mean by that is perhaps best shown in a quick example. Let's take Karen Coyle's triples:

<http://bibframe.org/resources/cYO1404049290/3033010> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://bibframe.org/vocab/Work> .
<http://bibframe.org/resources/cYO1404049290/3033010> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://bibframe.org/vocab/Text> .
_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://bibframe.org/vocab/Provider> .
_:genid2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://bibframe.org/vocab/Organization> .
_:genid2 <http://bibframe.org/vocab/label> "University of Michigan Press" .
_:genid1 <http://bibframe.org/vocab/providerName> _:genid2 .
_:genid3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://bibframe.org/vocab/Place> .
_:genid3 <http://bibframe.org/vocab/label> "Ann Arbor" .
_:genid1 <http://bibframe.org/vocab/providerPlace> _:genid3 .
_:genid1 <http://bibframe.org/vocab/providerDate> "1995" .
<http://bibframe.org/resources/cYO1404049290/3033010> <http://bibframe.org/vocab/publication> _:genid1 .

This is the output of marc2bibframe, and it is indeed chock-full of blank nodes. Let's assume (just for the sake of the example) that we are going to use Geonames and DBpedia. (And I'm going to start using prefixes in the RDF, just for readability.) We might make a move like:

<http://bibframe.org/resources/cYO1404049290/3033010> rdf:type bf:Work .
<http://bibframe.org/resources/cYO1404049290/3033010> rdf:type bf:Text .
<http://bibframe.org/resources/cYO1404049290/3033010> bf:publication _:genid1 .
_:genid1 rdf:type bf:Provider .
 dbpedia:University_of_Michigan_Press rdf:type bf:Organization .
 dbpedia:University_of_Michigan_Press bf:label "University of Michigan Press" .
_:genid1 bf:providerName dbpedia:University_of_Michigan_Press .
geonames:4984247 rdf:type bibframe:Place .
geonames:4984247 bf:label "Ann Arbor" .
_:genid1 bf:providerPlace geonames:4984247 .
_:genid1 bf:providerDate "1995" .

(As per an earlier thread on this list, many folks would use local identifiers with a store of co-reference. I haven't shown that because it's not to my particular point, but I'm in no way arguing against it.)

That killed two blank nodes, but not the third. The claim I'm making is that it's not the absolute number of blank nodes coming out of an automated transform that should bother us. It's the number that are more-or-less inherent in the model, and we cannot gauge _that_ number over unreconciled data. We can predict it to some limited extent directly from the model, but we are going to produce different volumes of blank nodes by exercising Bibframe over different bodies of data, with different regimes of co-reference management, with different schemes of reconciliation, and so forth.

---
A. Soroka
The University of Virginia Library

On Jul 31, 2014, at 9:02 PM, Karen Coyle <[log in to unmask]> wrote:

> On 7/31/14, 3:30 PM, Ford, Kevin wrote:
>>> Of course, these have the "blank-node-+-label" problem again (still?).
>> _:xx and _:yy do not need to be blank nodes.  We've been using a lot of blank nodes in examples, but they do not need to be.
>> 
> 
> Kevin,
> 
> You are absolutely right, they do not need to be blank nodes. However, my discovery of the issue with "bf:label" and blank nodes was on MARC records that I ran through the BIBFRAME tool [1], not in hand-coded examples. Obviously, BIBFRAME is not "done" so that tool is an approximation of what BIBFRAME could be, but there is an unfortunate reliance on blank nodes in its current state. This fact is somewhat hidden by the use of rdf/xml, and ditto the email examples in turtle, since blank nodes basically disappear in these notations. The proof of the pudding is in the triples. Here is a segment of real BIBFRAME instance data (as transformed from MARC by the BF tool, then converted to turtle and triples using rapper):
> 
> **RDFXML:
> 
> <bf:publication>
>  <bf:Provider>
>    <bf:providerName>
>      <bf:Organization>
>        <bf:label>University of Michigan Press</bf:label>
>      </bf:Organization>
>    </bf:providerName>
>    <bf:providerPlace>
>      <bf:Place>
>        <bf:label>Ann Arbor</bf:label>
>      </bf:Place>
>    </bf:providerPlace>
>    <bf:providerDate>1995</bf:providerDate>
>  </bf:Provider>
> </bf:publication>
> </rdf>
> 
> **turtle:
> 
>    bf:publication [
>        bf:providerDate "1995" ;
>        bf:providerName [
>            bf:label "University of Michigan Press" ;
>            a bf:Organization
>        ] ;
>        bf:providerPlace [
>            bf:label "Ann Arbor" ;
>            a bf:Place
>        ] ;
>        a bf:Provider
>    ] ;
> 
> ** triples
> 
> <http://bibframe.org/resources/cYO1404049290/3033010> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://bibframe.org/vocab/Work> .
> <http://bibframe.org/resources/cYO1404049290/3033010> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://bibframe.org/vocab/Text> .
> _:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://bibframe.org/vocab/Provider> .
> _:genid2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://bibframe.org/vocab/Organization> .
> _:genid2 <http://bibframe.org/vocab/label> "University of Michigan Press" .
> _:genid1 <http://bibframe.org/vocab/providerName> _:genid2 .
> _:genid3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://bibframe.org/vocab/Place> .
> _:genid3 <http://bibframe.org/vocab/label> "Ann Arbor" .
> _:genid1 <http://bibframe.org/vocab/providerPlace> _:genid3 .
> _:genid1 <http://bibframe.org/vocab/providerDate> "1995" .
> <http://bibframe.org/resources/cYO1404049290/3033010> <http://bibframe.org/vocab/publication> _:genid1 .
> 
> The blank nodes become much more visible.
> 
> Many of the examples that we've seen on these recent threads don't actually represent "running code," or at least I couldn't transform any of them using tools that I have. I know this is a discussion, not a coding session, but I think it would be helpful to do a sanity check regarding what we are discussing by creating some working examples. It'll provide a more realistic basis for discussion.
> 
> Personally, I'd like to see BIBFRAME move away from the use of blank nodes wherever possible, and so I'd like to see examples that don't use them.
> 
> kc
> [1] http://bibframe.org/tools/transform/start
> 
> -- 
> Karen Coyle
> [log in to unmask] http://kcoyle.net
> m: 1-510-435-8234
> skype: kcoylenet