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.)
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:
value exactly 1 xsd:string,
scheme exactly 1 xsd:string
Class: cornell:LocalClassification
SubClassOf:
UnspecfiedClassification,
value exactly 1 xsd:string
HasKey:
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
value exactly 1 xsd:string,
scheme exactly 1 xsd:string
Class: LocalClassification
EquivalentTo:
Classification
and (scheme only {"cornell:local"})
Then given three "individuals"
Individual: a
Types:
LocalClassification
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.