On Wed, Jul 23, 2014 at 12:59 AM, Shlomo Sanders < [log in to unmask]> wrote: > 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 HasKey: scheme, value In the second case: 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 Class: Classification SubClassOf: value exactly 1 xsd:string, scheme exactly 1 xsd:string HasKey: 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