Print

Print


Some remarks:

1. *Bibframe is stated to already be an OWL Ontology* .

The webpage at the vocabulary namespace <http://bibframe.org/vocab/> states
that all views of the vocabulary are  "derived from the master rdf file (
http://bibframe.org/vocab.rdf)".

The file located at <http://bibframe.org/vocab.rdf> is in RDF/XML format.

The second line of this file asserts that  <http://bibframe.org/vocab/> is
an instance of owl:Ontology.


Note that this does not mean that Bibframe is a good OWL ontology, or even
a valid one. I will come back to this later.


*2. Ranges in RDFS.*

RDFS allow multiple Statements to be made about the Range of a property.
All of these statements must be satisfied;  we can thus consider the
effective range of bf:subject to be (bf:Work and bf:Authority). Any value
of subject must be instance of both types.


It is simple to specify an "OR"  range in rdfs that can be satisfied by
instances bf:Work or bf:Authority .

To do so, one creates a class that is a superclass of all the desired
possible types for that range. One can then use this class to specify the
range of the property.

In this case, we could say:

bf:Work      rdfs:subclassOf _:subjectRange .

bf:Authority rdfs:subclassOf _:subjectRange .

bf:subject   rdfs:range      _:subjectRange .


If RDFS did not allow for multiple ranges, we could get the same (wrong)
result as we have currently by creating a class for the range that is a
subtype of both Work and Authority.

_:subjectRange2 rdfs:subclassOf bf:Work .

_:subjectRange2 rdfs:subclassOf bf:Authority .
bf:subject      rdfs:range      _:subjectRange2 .


*3. "OR" ranges in OWL.*

Specifying an "OR" range in OWL is even simpler.

In Manchester Syntax, we would write:

ObjectProperty: subject
     Range: Work or Authority

*4.  Bibframe is not a correct RDFS schema .   *

As we see, multiple  statements for the same property are used incorrectly.

There are also many cases where incorrect ranges are used.

For example, <http://bibframe.org/vocab/classificationNumberUri> has a
range of
rdfs:Resource , but is described as being the "Classification number
represented as a URI."
If it is a representation *as a *URI, then should be a Literal rather than
an Object.  The most specific standard datatype would be xsd:anyURI.

The ranges used for data properties are given as Literal, rather than as
xsd:string or some other more appropriate type;  that does not make the
schema incorrect- it just makes it not good.

5. *Bibframe is not a usable OWL ontology. *

OWL ontologies are specified according to an Abstract Syntax model.
Rules are given for converting any OWL ontology into RDF, and for reading
any OWL-DL ontology from RDF.

All properties in OWL must be Data Properties (whose value is a literal),
Object Properties (whose property is another object), or
AnnotationProperties (whose values can be either, but which are intended
for use as metadata about the ontology rather than being about the ontology
itself).

OWL Full ontologies can have properties that are of more than one type, and
do not need to declare them. Using OWL Full comes with certain costs;
a) there are no rules defined for parsing  OWL Full ontology out of  RDF
b) there are no OWL full reasoners.

The properties given in the Bibframe Ontology do not have any owl  property
type associated with them.  The OWLAPI has a non-strict parsing mode that
has a variety of ugly hacks to  recover from invalid OWL rdf.
These almost work for Bibframe . A few property types are not being picked
up that should be; I've marked this as a bug.
One is caused by a reference to a non-existent super property, which I am
classing as a  bibframe error.

Bibframe makes no use of any OWL Full features;  there seems to be no valid
reason for the decision to use OWL Full.

*6. You Fail FRBR Forever
<http://tvtropes.org/pmwiki/pmwiki.php/Main/ArtisticLicense?from=Main.YouFailIndexesForever>.*


ObjectProperty: expressionOf

    Annotations:
        rdfs:label "Expression of",
        dcterms:modified "2014-04-10 (Updated subproperty)",
        rdfs:comment "Expression has a related work. For use to connect
Works under FRBR/RDA rules."

    SubPropertyOf:
        relatedTo

    Domain:
        Work

    Range:
        Work


Simon