Print

Print


On 11/9/14 1:42 AM, [log in to unmask] wrote:
>
> If someone write an explicit bf:Instance, there is exactness, no 
> inference needed:
>
> <http://id.loc.gov/resources/bibs/15798171>
>     a bf:Instance ;
>     bf:title [
>         a bf:Title ;
>         rdf:value "Heart of Midlothian"
>     ].
>
> But if someone writes
>
> <http://id.loc.gov/resources/bibs/15798171>
>     bf:title [
>         a bf:Title ;
>         rdf:value "Heart of Midlothian"
>     ].
>
> more than one rdf:type can be inferred, and the interpretation is 
> "this can be a bf:Instance or a bf:Work", which is perfectly valid. 
>  (The result can be useful or not, librarians would doubt the 
> usefulness, programmers might ask for more restrictions for exacter 
> inference)

I believe that in the first case your subject is explicitly a 
bf:Instance and in the second your subject is not typed at all.

My concern is that where typing is not explicit and that should someone 
apply reasoning, the results should be meaningful. And in the wild there 
is no way to force people to use explicit typing (and with all of the 
complaints that we get about "bad" MARC data, even within our supposedly 
controlled data world we can't count on it), then you want to design 
your data such that applications can work with data that does not have 
explicit typing. In an environment where there is massive data sharing, 
basing your design on an assumption of perfect data is pretty dangerous.
>
> Someone could also write
>
> <http://id.loc.gov/resources/bibs/15798171>
>     bf:title [
>         a bf:InstanceTitle ;
>         rdf:value "Heart of Midlothian"
>     ].
>
> I invented "bf:InstanceTitle" here as a Bibframe class (it does not 
> exist).
>
> <http://id.loc.gov/resources/bibs/15798171> could be inferenced to a 
> bf:Instance type if a rule is given that only bf:Instance classes can 
> hold a bf:InstanceTitle in a bf:title property.
>
> Like in these OWL 2 rule
>
> [] a owl:AllDisjointClass;
>      owl:members ( bf:Work bf:Instance ).
> bf:Work a owl:Class.
> bf:Instance a owl:Class.
>
> bf:Work rdfs:subClassOf [
>     a owl:Restriction;
>     owl:onProperty bf:title ;
>     owl:someValuesFrom [
>         a owl:Class;
>         owl:unionOf ( bf:Title bf:WorkTitle )
>     ]
> ].
>
> bf:Instance rdfs:subClassOf [
>     a owl:Restriction;
>     owl:onProperty bf:title ;
>     owl:someValuesFrom [
>         a owl:Class;
>         owl:unionOf ( bf:Title bf:InstanceTitle )
>     ]
> ].
>
> What I want to show is, that properties, like "bf:instanceTitle" / 
> "bf:workTitle", which are sub-properties of "bf:title", can be 
> replaced by their counterpart classes that use sub-classing, like 
> "bf:InstanceTitle" or "bf:WorkTitle", without losing any ability of 
> inferencing.

Well, if it requires using OWL and disjoint classes, I can't see that as 
an improvement! This is what FRBRer has done and the disjoint classes, 
should someone doing reasoning across data, makes it very hard to mingle 
data using that ontology and any other data that does not. (There's an 
article coming out from Tom Baker, Sean Petiya and I that gives 
examples, any minute now, so it may be best to wait for that than 
explain it all here.)

>
> I think that it is much more convenient for the evolvement of Bibframe 
> into a reusable data framework to sub-class new Bibframe classes than 
> inflating properties by sub-properties.
>
> For example, libraries could share their resources better, while one 
> is working on bf:Work classes, another could catalog bf:Instance 
> classes, and connect them later to union catalogs, by simply 
> overlaying their triples to a single triple set. This has to be proven 
> yet, though.

This is what I was suggesting, although I used the term "copy 
cataloging" which led to a fork in the discussion. But yes, the idea 
behind using classes, IMO, is to be able to individuate those "views" of 
the bibliographic record that you wish to use in some way. Personally, I 
would support more views than those supplied by the BF classes, since I 
wouldn't want to limit the entire functionality of the bibliographic 
universe to those two choices. For example, the A-V people have 
requested some variation on Bf work and instance, which RDFs supports by 
allowing any resource to be an instance of more than one class. Baking a 
single semantic into the ontology is going to limit its utility. [This 
is a whole 'nother discussion, however.]

I believe, however, that this is orthogonal to the question of classes 
vs. sub-properties, since I think it could be implemented either way. 
However, since those programming RDF/RDFS data have a strong preferences 
for classes, that obviously matters. Again, ideally we would be able to 
test a variety of scenarios before making that decision. I would like 
those tests to not be limited to a highly controlled closed-world 
application. If nothing else, we should test using some variants, like 
RDA, DCterms (all that OAI-PMH data), BIBO data (if any exists), FRBRer 
(I don't think any "real data" exists), schema.org.... in a mocked-up 
"open world" to see how well these play together and if any adjustments 
are needed to BF or others.

kc
>
> Best,
>
> Jörg
>
>
>
> On Wed, Nov 5, 2014 at 8:25 PM, Karen Coyle <[log in to unmask] 
> <mailto:[log in to unmask]>> wrote:
>
>     After a diversion relating to library systems expectations, I
>     would like to get back to the question of how to handle types, in
>     re titles.
>
>     There are significant differences between the functionality of
>     properties (and sub-properties) vs. that of classes (sub-classes).
>     Right now, bf:workTitle is a property with a domain of bf:Work.
>     Therefore, any resource described with a bf:workTitle property can
>     be inferred to be a bf:Work. bf:instanceTitle is a property with
>     domain of bf:Instance, so ditto.
>
>     Therefore, in these examples:
>
>     1. <http://id.loc.gov/resources/bibs/15798171> ;
>         bf:workTitle[  a bf:Title  ;
>                 bf:titleValue"Heart of Midlothian"  ]  .
>
>
>     2. <http://id.loc.gov/resources/bibs/15798171> ;
>         bf:instanceTitle[  a bf:Title  ;
>                 bf:titleValue"The heart of Midlothian"  ]  .
>
>
>     ... you can infer the class of your bib resource from the
>     bf:xTitle property used. If all titles become subclasses of
>     bf:Title, then I believe you lose this ability to infer bf:Work
>     and bf:Instance from these properties. *IF* the work and instance
>     titles are good indications of the nature of the resource being
>     described, it would be a shame to lose this ability. There are
>     other properties with bf:Work and bf:Instance as domains, such as
>     bf:creator and bf:publicationDate, but my non-cataloger gut
>     feeling is that these two title properties are key *deciders* of
>     the nature of the entity being described.
>
>     There are other title properties that may be less significant for
>     this inference function: keyTitle; originPlace; originDate. Not to
>     mention that may of the title properties refer to parts of a title
>     (which I find a bit confusing in terms of how they would be bound
>     "correctly" in an RDF graph, but a few examples might clear that up).
>
>     All that to say that I see some problems with re-casting all types
>     as sub-classes, at least for some key properties where I see some
>     useful inferencing possibilities. However, I do not see anything
>     in the BIBFRAME documentation about intended inferencing, so do
>     not know if my inferencing assumptions are shared.
>
>     kc
>
>     On 10/27/14 12:17 PM, Robert Sanderson wrote:
>
>
>         Hi Ray, all,
>
>         Regarding the Titles and Types issues, I think there's another
>         option as well, Type as Class. Or, if I may, Type as Type :)
>
>         For example:
>
>         _:x a bf:Work ;
>            bf:title _:y .
>         _:y a bf:KeyTitle ;
>            rdf:value "..." .
>
>
>         I believe this is desirable for the following reasons:
>
>         * Type as String Value just isn't good linked data. The type
>         should be uniquely distinguishable, and clearly duplicate
>         strings could be used by multiple communities independently.
>         This includes all the *Scheme predicates.
>
>         * Type as URI Value is better, but seems pointless when the
>         URI could be more efficiently used as a class.  All of the
>         bf:*Type predicates and bf:*Scheme predicates can just be
>         rdf:type instead.
>
>         * It makes it easier to express domain and range.
>
>         * It's more readable in the RDF/XML serialization and makes
>         any object mapping significantly easier.
>
>         * It reduces the number of properties, thereby making it
>         easier to see what's going on in the model.  The subclasses
>         are there below the main class for when they're needed rather
>         than cluttering up the top level.
>
>         * It's easy to create new types without needing to worry about
>         domain and range of properties, just by subClassing the main
>         class.  Otherwise, if you want to have additional predicates
>         associated with your new instance, the domain has to be the
>         main class rather than a subClass, which is very poor modeling.
>
>         * It simplifies many other the predicates as the main class
>         isn't necessary in the predicate name, that's just the class
>         of the object that the predicate is being used with.  If the
>         predicate should have its value constrained then it shouldn't
>         have Literal as its range.  For example no need for
>         identifierValue, instead it can be just value.
>
>         * It prevents the possible inconsistency of using a predicate
>         that implies one type on its object, but the object has a
>         different one (eg Work issn x ; x scheme "doi").
>
>
>         So I think Example 2 is the closest, but a proposed Example 5:
>
>         <http://example.com/xyz//Work1>
>             bf:identifier  [
>                 a bf:IssnIdentifier ;
>                 rdf:value "12345678" .
>             ] .
>
>         Where bf:IssnIdentifier is rdfs:subClassOf bf:Identifier,
>         which is the range of bf:identifier.
>
>         The same pattern holds for all of the classes/predicates under
>         consideration.
>
>         For titles:
>         <http://example.com/xyz//Work1>
>             bf:title  [
>                 a bf:KeyTitle ;
>                 rdf:value "Lord of the Rings" .
>             ] .
>
>         For notes:
>         <http://example.com/xyz//Work1>
>             bf:note  [
>                 a bf:AdminHistNote ;
>                 rdf:value "Administrative history note" .
>             ] .
>
>         For classifications:
>         <http://example.com/xyz//Work1>
>             bf:classification  [
>                 a bf:DdcClassification ;
>                 rdf:value "234.5" .
>             ] .
>
>         For categories:
>         <http://example.com/xyz//Work1>
>             bf:category  [
>                 a bf:MediaCategory ;
>                 rdf:value "something" .
>             ] .
>
>         For shelfmarks:
>         <http://example.com/xyz//Work1>
>             bf:shelfmark  [
>                 a bf:DdcShelfmark ;
>                 rdf:value "12345678" .
>             ] .
>
>         Relators aren't needed as objects, and relationships between
>         Works and Instances are just relationships and thus don't need
>         fixing.
>
>         Roles are not types, and thus Provider doesn't fit any of the
>         patterns proposed.  Roles are closer to relationships, and
>         thus providerRole should be dropped. If the role is printing,
>         then Work printer Provider, just like Work creator Person.  If
>         the role is associated with the Provider object, then it ties
>         it exclusively to that Work so it could never be reused.
>
>         And thus to answer the three questions:
>
>         1.  Please don't do this at all :)  The model should not allow
>         multiple, incompatible ways to say the same thing at the same
>         time.
>         2.  Punning properties that can be either literal or a URI
>         break tools and make many things, such as JSON-LD, much
>         harder. Please don't do that either.
>         3.  Good documentation, with contributions from the community
>         accepted in a timely fashion, plus encouragement in the
>         specification to be an active participant in the work.
>
>         Hope that helps,
>
>         Rob
>
>         --
>         Rob Sanderson
>         Technology Collaboration Facilitator
>         Digital Library Systems and Services
>         Stanford, CA 94305
>
>
>     -- 
>     Karen Coyle
>     [log in to unmask] <mailto:[log in to unmask]> http://kcoyle.net
>     m: +1-510-435-8234 <tel:%2B1-510-435-8234>
>     skype: kcoylenet/+1-510-984-3600 <tel:%2B1-510-984-3600>
>
>

-- 
Karen Coyle
[log in to unmask] http://kcoyle.net
m: +1-510-435-8234
skype: kcoylenet/+1-510-984-3600