```On Wed, Jul 23, 2014 at 12:59 AM, Shlomo Sanders <

>  Many institutions have a local adaptation of so e big classification
> scheme and by your definition are weird. Don't these need to be able to
> function efficiently?
>

Some brief notes (tl; dr - Use IRI to name classification-codes.  At the
very  least add Key and cardinality restrictions. )

1.  If classification codes are assigned to individuals  using unlabeled
blank nodes - e.g.

[ a bf:Classification ; bf:scheme "local" ; bf:value "something" ]

or

[ a cornell:LocalClassification ; bf:value "something else" ]

then there is **nothing** in the Bibframe ontology that says that a second
occurrence of (e.g.)

[ a bf:Classification ; bf:scheme "local" ; bf:value "something" ]

refers to the same classification code.  There is also nothing that says
that they are different.

We can add such axioms - in the first case:

Class: Classification
SubClassOf:
value exactly 1 xsd:string,
scheme exactly 1 xsd:string
scheme,
value

In the second case:

Class: cornell:LocalClassification
SubClassOf:
UnspecfiedClassification,
value exactly 1 xsd:string
value

In the first case,  checking for a match requires two string comparisons;
in the second case only one.

2.   If classification codes are assigned to individuals using IRIs,
checking for a match may just require matching the IRI (usually an integer
comparison in triplestores).  This will be the case if IRIs are synthesized
in some locally canonical fashion.

3. The two approaches are not incompatible:  If we define

Class: Classification
SubClassOf:
value exactly 1 xsd:string,
scheme exactly 1 xsd:string
scheme,
value

Class: LocalClassification
EquivalentTo:
Classification
and (scheme only {"cornell:local"})

Then given three "individuals"

Individual: a
Types:
LocalClassification
Facts:
value  "11"^^xsd:string

Individual: b
Types:
Classification
Facts:
value  "11"^^xsd:string,
scheme "cornell:local"^^xsd:string

Individual: c
Types:
LocalClassification
Facts:
value  "12"^^xsd:string

We can infer:

:a :scheme "cornell:local"^^xsd:string .
:c :scheme "cornell:local"^^xsd:string .
:b a :LocalClassification
:a owl:sameAs :b .

:c owl:differentFrom :a .

:c owl:differentFrom :b .

Note that this approach does not allow for classification schemes to be
defined as  subclasses of other classification schemes.

Simon

```