This is before FR Enhancements. See FR Implementation for the newest version
- Introduction
- OWLIM Rules and Reasoning Dialect
- Weaving for Production
- Modularity and Naming
- Prefixes
- Transitive Properties
- Inverse Properties
- Symmetric Properties
- No Reflexive Closure
- FR Notes
- Fundamental Concepts
- Fundamental Relations
- FR Summary (Short Variant)
- FR Summary (Long Variant)
- Thing-Place
- Thing refers to or is about Place- FR67_refers_to_or_is_about
- Thing is referred to at Place- WONTDO
- Thing from Place- FR7_from_place
- Thing used at Place- WONTDO
- Thing created at Place- WONTDO
- Thing found or acquired at Place- WONTDO
- Thing is/was located in Place- FR53_is_was_located_in
- Thing-Thing
- Thing has met Thing- WONTDO
- Thing refers to or is about Thing- WONTDO
- Thing is referred to by Thing- WONTDO
- Thing from Thing- WONTDO
- Thing is part of Thing- WONTDO
- Thing was made from Thing- WONTDO
- Thing has part Thing- WONTDO
- Thing is similar or same with Thing- WONTDO
- Thing-Actor
- Thing has met Actor- FR12_has_met
- Thing is referred to by Actor- WONTDO
- Thing refers to or is about Actor- TODO
- Thing by Actor- FR14_by
- Thing-Event
- Thing refers to or is about Event- FR67_about_event
- Thing is referred to at Event- WONTDO
- Thing has met Event- FR12_was_present_at
- Thing-Concept
Introduction
TODO:
- copy more from my email to Martin
- consider checking types as early as possible to eliminate useless inferences
- Define FRs and sub-FRs usign SPARQL Property Paths
OWLIM Rules and Reasoning Dialect
RS3.1 FRs were implemented using reasoning dialect "OWL RL (optimized)", i.e. builtin_owl2-rl.pie.
We used constructs owl:PropertyChainAxiom, owl:TransitiveProperty, owl:ReflexiveProperty, and rdfs:subPropertyOf (which amounts to disjunction).
But as described in OWLIM Rules vs OWL RL#Less Expressive, OWL RL is less expressive than OWLIM Rules, since one cannot define a property by conjunction.
We are pretty sure the full FR set will require conjunction, so we'll go with OWLIM Rules. See OWLIM Rules documentation.
We'll use the RDFS reasoning dialect as a basis, by weaving our rules into builtin_RdfsRules.pie. That file is part of the OWLIM distribution, in my case
c:\my\Onto\proj\OWLIM\software\owlim-se-4.2.3924\builtin_RdfsRules.pie
Weaving for Production
This page is used to generate OWLIM artefacts for production. We "weave" them from {code} blocks in the page, following Literate Programming. We weave several files based on code block titles:
Title | Weaved into |
---|---|
Turtle | ![]() |
Prefices | builtin_RdfsRules.pie, at the beginning of section Prefices (after the opening brace) |
Axioms | builtin_RdfsRules.pie, at the beginning of section Axioms (after the opening brace) |
Rule | builtin_RdfsRules.pie, at end of file (before the closing brace) |
Rules | same place, but these are shorthand rules (see below) |
- the weaver automatically generates rule identifiers in the form "Id: fr$n" where $n is a counter
- "Rule" includes one rule per code block in the OWLIM notation, eg:
- "Rules" includes one rule per line in a shorthand notation, eg:
The shortcut notation is translated to the OWLIM notation. This shortcut form is very useful for shorter rules
Modularity and Naming
A very important aspect of our implementation is modularity: we define appropriate sub-FRs and use them when defining FRs.
We use the Erlangen CRM (ECRM) naming variant (underscores instead of dots), and the following naming conventions:
- crm: Enn_entity_name, crm: Pnn_property_name: CRM entities and properties
- rso:FRnn_name: property representing an FR
- rso stands for "RS ontology"
- nn is a number that we try to keep the same as a related CRM property number (eg FR7_thing_from_place is numbered after P7_took_place_at)
- rso:FRXnn_name: property representing a sub-FR
- if the sub-FR is a disjunction of several CRM properties, we mention all numbers
FRX_62_67 := P62_depicts or P67_refers_to
- if the sub-FR is a disjunction of several CRM properties, we mention all numbers
- rso:FRTnn_name: transitive closure of crm: Pnn_name
- we denote this as FRTnn_name := Pnn_name+
- rso:FRSTnn_name: symmetric-transitive closure of crm: Pnn_name
- we denote this as FRSTnn_name := (Pnn_name or Pnni_inverse_name)+
- rso:FCnn_name: Fundamental Concept or another class used in defining FRs
Prefixes
This adds prefixes to FR.ttl:
This adds prefixes to the rules file (it already has: rdf rdfs owl xsd):
Transitive Properties
ECRM declares appropriate CRM properties as owl:TransitiveProperty.
For some reason it doesn't declare P9,P46 transitive, though it does it for other "part of" properties, eg P106,P148. I posted a bug to CRM SIG and fix it here:
The full list of transitive properties is:
- P9_consists_of, P9i_forms_part_of (ADDED)
- P10_falls_within, P10i_contains
- P46_is_composed_of, P46i_forms_part_of (ADDED)
- P86_falls_within, P86i_contains
- P88_consists_of, P88i_forms_part_of
- P89_falls_within, P89i_contains
- P106_is_composed_of, P106i_forms_part_of
- P114_is_equal_in_time_to
- P115_finishes, P115i_is_finished_by
- P116_starts, P116i_is_started_by
- P117_occurs_during, P117i_includes
- P120_occurs_before, P120i_occurs_after
- P127_has_broader_term, P127i_has_narrower_term
- P148_has_component, P148i_is_component_of
Inverse Properties
Most CRM properties have an inverse, eg P110i_was_augmented_by is inverse of P110_augmented (Symmetric properties are their own inverse). ECRM declares all inverse properties as owl:inverseOf.
We use the RDFS reasoning dialect as a basis, which implements rdfs:subClassOf and rdfs:subPropertyOf reasoning.
But it's very useful in FR definitions to rely on general Transitive and Inverse reasoning, which frees you from dependencies on how exactly data is asserted.
So we copy the relevant rules from builtin_owl2-rl.pie:
Symmetric Properties
ECRM declares all CRM symmetric properties as owl:SymmetricProperty. ECRM always declares them as owl:inverseOf itself, so we don't need to treat them separately. Eg:
The full list of symmetric properties is:
- P69_is_associated_with
- P114_is_equal_in_time_to
- P121_overlaps_with
- P122_borders_with
- P132_overlaps_with
- P133_is_separated_from
No Reflexive Closure
FR definitions are full of reflexive-transitive sub-FRs. In FRThing.docx they are denoted (Pnnn)(0,n), and below we denote them as Pnn*. Eg
- x from z := x P74 y AND y P89* z
But I think it's bad style to use reflexive closure in the implementation since it generates lots of trivial facts (self-loops) in the semantic repository. Instead of reflexive closure, we use disjunction: the iterated property is applied 0 times in the first disjunct, and n times in the second, eg:
- x from z := x P74 z OR (x P74 y AND y P89+ z)
FR Notes
FR design in the following sections is based on FRThing.docx by M.Doerr and K.Tzompanaki, after clarifications and corrections by V.Alexiev.
- We don't implement FRs:
- for which there is no data in neither Rembrandt nor BM collections
- that are interesting for history/archaeology but not museum collections (eg Destroyed at)
- that use the CRM Digital (CRMdig) extensions
- We omit composite FR such as "Was created/produced by person from" since they are treated separately
- In many cases we don't check types, since these are implied by the domain/range of a property. Eg in:
- E24.Physical_Man-Made_Thing – P128F.carries -> E73.Information_Object
the property P128 implies that the source and target have the indicated types
- E24.Physical_Man-Made_Thing – P128F.carries -> E73.Information_Object
Fundamental Concepts
Thing
FC70_Thing in General
"Thing" is defined as the following (was called C1.Object):
- FC70_Thing := E70_Thing NOT E21_Person NOT E55_Type NOT E30_Right NOT E41_Appellation
The concept of "NOT subclass" is not expressible with OWLIM rules:
- OWLIM rules can check != class, but not subclasses
- <owl:complementOf> and <owl:disjointWith> are used only for consistency checking (to infer a contradiction), not to define classes
TODO: says who? Prove this
I tried enumerating negative classes:
But that doesn't work (even if I enumerate all negative subclasses), since an E21_Person (negative) is also an E19_Physical_Object (positive), and we want E19.
Enumerating positive classes doesn't work either, for the same reason.
So FC70 would need to be implemented in SPARQL, eg
FC70_Thing for RS
In RS we search only for Man-Made Objects so the rule is simpler.
- RKD data includes sub-objects (eg related/n is a related work, part/n is a frame that is part of a painting) that we can't display, so we introduced an extension sub-class rso:E22_Museum_Object
- BM data uses crm:E22_Man-Made_Object, and we use an additional criterion "the current keeper or owner is the BM". (Objects which have been loaned to the BM have a different owner)
Fundamental Relations
FR Summary (Short Variant)
The following table shows currently implemented FRs (from Meta-Thesaurus and FR Names#FR Names Table), with extra info:
- which CRM properties make up each FR
- critical comments
- some additional proposed FR in italic
- All "ranges" represent thesaurus terms (except "literal")
FR | range | properties (transitively closed) | description | Critique |
about | Place | 62 67 53 (46 89i 106 128 130 130i 148) | Thing depicts or refers to a place or feature located in place, or is similar in features or composed of or carries an information object that depicts or refers to a place | |
from | Place | 7 14 24i 25i 53 54 74 92i (9i 10 46i 89 106i 107i 148i) | Thing has former, current or permanent location at place, or was created at place, or was created by someone born at place, or part of a group having residence at place, or moved to/from, or acquired at place | |
was/is located in | Place | 53 (46i 89 106i 148i) | Thing has former or current location at place | |
met | Actor | 12i 12 (9i 10 46i 106i 148i) | Thing (or another thing it is part of) has met actor in the same event (or event that is part of it) | Thing is not considered to be present at its acquisition, so Owner (acquirer) & Keeper (curator) are not matched |
by | Actor | 14 16 22 24i 31 39 (9i 10 46 106 107i 148) | Thing (or part thereof) was created, measured, modified, acquired or used for activity performed by actor (or group it is member of) | The mix is too eclectic. Found by not yet matched. Current & former Owners matched, but Keepers are not. Influencers not matched (see next) |
owner | Actor | 52 50 | Thing is owned by actor | Can search by BM but cannot search by BM department, since Keeper is not included |
influenced/motivated | Actor | 15 17 (etcetera) | Thing's production is Influenced (eg Manner/Style of) or Motivated (eg Ruler/Issuer/Governor) by actor | How about Acquisition Motivated By (In Honor/Memory of)? |
about | Period | 62 67 (46 106 128 130 130i 148) | Thing depicts or refers to event/period, or carries information object that is about event, or bears similarity with a thing that is about event | |
present at | Period | 12i (9i 10 46i 106i 148i) | Thing was present at (has met, is from) event/period | |
made of | Material | 45 92i 126 (9i 10 46 106 148) | Thing (or part thereof) consists of material | |
is/has/about | Type | 2 67 (46 106 127 128 148) | Thing is of Type, or has Shape, is of Kind, or is about a type (eg IconClass), etc | |
used | Technique | 32 92i (9i 10 46 106 148) | The production of Thing (or part thereof) used general technique | |
identified by | literal | 1 3 (46 106 148) | Thing (or part thereof) has Identifier (exact-match string) | |
date interval | literal | 108i 4 82 | Thing was created at some time within the given interval or year | |
keyword | literal | The full text of the thing's description (including thesaurus terms and textual descriptions) matches the given keyword |
FR Summary (Long Variant)
FR | range | properties (transitively closed) | description | Critique |
about | Place | P62_depicts P67_refers_to P53_has_former_or_current_location (P46_is_composed_of P89i_contains P106_is_composed_of P128_carries P130_shows_features_of P130i_features_are_also_found_on P148_has_component) | Thing depicts or refers to a place or feature located in place, or is similar in features or composed of or carries an information object that depicts or refers to a place | |
from | Place | P7_took_place_at P14_carried_out_by P24i_changed_ownership_through P25i_moved_by P53_has_former_or_current_location P54_has_current_permanent_location P74_has_current_or_former_residence P92i_was_brought_into_existence_by (P9i_forms_part_of P10_falls_within P46i_forms_part_of P89_falls_within P106i_forms_part_of P107i_is_current_or_former_member_of P148i_is_component_of) | Thing has former, current or permanent location at place, or was created at place, or was created by someone born at place, or part of a group having residence at place, or moved to/from, or acquired at place | |
was/is located in | Place | P53_has_former_or_current_location (P46i_forms_part_of P89_falls_within P106i_forms_part_of P148i_is_component_of) | Thing has former or current location at place | |
met | Actor | P12i_was_present_at P12_occurred_in_the_presence_of (P9i_forms_part_of P10_falls_within P46i_forms_part_of P106i_forms_part_of P148i_is_component_of) | Thing (or another thing it is part of) has met actor in the same event (or event that is part of it) | Thing is not considered to be present at its acquisition, so Owner (acquirer) & Keeper (curator) are not matched |
by | Actor | P14_carried_out_by P16_used_specific_object P22_transferred_title_to P24i_changed_ownership_through P31_has_modified P39_measured (P9i_forms_part_of P10_falls_within P46_is_composed_of P106_is_composed_of P107i_is_current_or_former_member_of P148_has_component) | Thing (or part thereof) was created, measured, modified, acquired or used for activity performed by actor (or group it is member of) | The mix is too eclectic. Found by not yet matched. Current & former Owners matched, but Keepers are not. Influencers not matched (see next) |
owner | Actor | P52_has_current_owner P50_has_current_keeper | Thing is owned by actor | Can search by BM but cannot search by BM department, since Keeper is not included |
influenced/motivated | Actor | P15_was_influenced_by P17_was_motivated_by (etcetera) | Thing's production is Influenced (eg Manner/Style of) or Motivated (eg Ruler/Issuer/Governor) by actor | How about Acquisition Motivated By (In Honor/Memory of)? |
about | Period | P62_depicts P67_refers_to (P46_is_composed_of P106_is_composed_of P128_carries P130_shows_features_of P130i_features_are_also_found_on P148_has_component) | Thing depicts or refers to event/period, or carries information object that is about event, or bears similarity with a thing that is about event | |
present at | Period | P12i_was_present_at (P9i_forms_part_of P10_falls_within P46i_forms_part_of P106i_forms_part_of P148i_is_component_of) | Thing was present at (has met, is from) event/period | |
made of | Material | P45_consists_of P92i_was_brought_into_existence_by P126_employed (P9i_forms_part_of P10_falls_within P46_is_composed_of P106_is_composed_of P148_has_component) | Thing (or part thereof) consists of material | |
is/has/about | Type | P2_has_type P67_refers_to (P46_is_composed_of P106_is_composed_of P127_has_broader_term P128_carries P148_has_component) | Thing is of Type, or has Shape, is of Kind, or is about a type (eg IconClass), etc | |
used | Technique | P32_used_general_technique P92i_was_brought_into_existence_by (P9i_forms_part_of P10_falls_within P46_is_composed_of P106_is_composed_of P148_has_component) | The production of Thing (or part thereof) used general technique | |
identified by | literal | P1_is_identified_by P3_has_note (P46_is_composed_of P106_is_composed_of P148_has_component) | Thing (or part thereof) has Identifier (exact-match string) | |
date interval | literal | P108i_was_produced_by P4_has_time-span P82_at_some_time_within | Thing was created at some time within the given interval or year | |
keyword | literal | The full text of the thing's description (including thesaurus terms and textual descriptions) matches the given keyword |
Thing-Place
Thing refers to or is about Place- FR67_refers_to_or_is_about
Thing depicts or refers to a place or feature located in place, or is similar in features or composed of or carries an information object that depicts or refers to a place
As defined in FRThing.docx: |
Corrected definition: |
Fixes:
- At beginning: does not allow paths of mixed properties (eg P130-P130i, P106-P148),
or with P46,P106,P148 preceding P130,P130i- Resolved: we mix all these properties freely: any path of the indicated properties, in any order, of any length
- At E73: does not allow P106_is_composed_of, P148_has_component which are legitimate for E73 (being a subclass of both E89_Propositional_Object and E90_Symbolic_Object)
- Resolved: we add P128 into the mix.
Did we mix it up too much? I think it's ok: not all allowed paths are correct, but all correct and relevant paths are allowed
- Resolved: we add P128 into the mix.
- At E26: does not allow P130,P130i,P46
- Resolved by adding the mix at E26 too
- At end: is it really appropriate to use part-transitivity for this FR? If a thing is about Knossos, is it also about every little village, house and room in Knossos?
It was established this FR is not co-variant (not appropriate to loop using P89*)PENDING: but is it contra-variant (appropriate to loop using P89i*)?
Implementation
- FRT_46_106_148 := (P46|P106|P148)+
RulesAxioms
- FRT_46_106_148_128 := (FRT_46_106_148|P128)+
RulesAxioms
- FRT_46_106_148_128_130 := (FRT_46_106_148_128|P130|P130i)+
RulesAxioms
- FRX_62_67 := P62_depicts or P67_refers_to
Rules
- FRX_62_67_E26 := FRX_62_67 and check type E26
Rules
- FRX67_refers_to_or_is_about := paths from FC70 to E53, with no loops nor type check at start & end
Rules
- FRT67_refers_to_or_is_about := add loops at start & end
(Note: ECRM defines P89i_contains as transitive)Rules
- FR67_refers_to_or_is_about := add type check at start & end
Rules
Thing is referred to at Place- WONTDO
Thing from Place- FR7_from_place
Thing has former, current or permanent location at place, or was created at place, or was created by someone born at place, or part of a group having residence at place, or moved to/from, or acquired at place
As defined in FRThing.docx (without C2.Finding which is undefined): |
Corrected definition: |
Fixed problems:
- At beginning: does not allow paths of mixed properties (eg P46i,P106i)
- Resolved by "mixing" as FRT_46i_106i_148i
- At E9: does not allow a loop P9i* (Move forms part of a bigger event)
- Resolved by merging all Event nodes (E8, E9, second E63) and allowing P9i*
- Allowed P10_falls_within in addition to P9i_forms_part_of
- Note that P26,P27 are subproperties of P7, so we don't need to use them
- (We could even merge both E63, but then we'd have a back-link and before traversing P14 must check that the event is the production/creation of a Thing: E12, E65, E81)
Implementation:
- FRT_46i_106i_148i := (P46i or P106i or P148i)+
RulesAxioms
- FRX_53_54_current_location := P53 or P54
Rules
- FRT9i_10 := (P9i_forms_part_of | P10_falls_within)+
RulesAxioms
- FRT92i_9i := P92i / (P9i|P10)*
Rules
- FRT107i_member_of := P107i+
RulesAxioms
- FRX_P92i_P14_P107i := FRT92i_9i then P14 then P107i*
Rules
- FRX_FC70_key_event := paths from FC70 to E8,E9,E63 (a "key event")
Rules
- FRT_FC70_key_event_P9i_10 := FRX_FC70_key_event / P9i_10*
Rules
- FRX7_from_place := paths from FC70 to E53, with no loops nor type check at start & end
Rules
- FRT7_from_place := add loops at start & end
Rules
- FR7_from_place := add type check at start
- TODO: do this check earlier, so as not to generate unneeded sub-FR triples
- (No need to check at end since all relations are to E53_Place)
Rules
Thing used at Place- WONTDO
No such in BM data
Thing created at Place- WONTDO
This is very similar to "from", which in addition has a part "created by person born at".
But RKD Person thesaurus doesn't have birth details, and I don't know whether BM Person exported to SKOS has such details.
Thing found or acquired at Place- WONTDO
C2.Finding is not defined
Thing is/was located in Place- FR53_is_was_located_in
Thing has former or current location at place.
This is a very simple subset of Thing from Place- FR7_from_place
Implementation:
- FRT53_is_was_located_in := FRT_46i_106i_148i* then P53 then P89*
Rules
- FR53_is_was_located_in := add type check at start
(No need to check at end since the relation is to E53_Place)Rules
Thing-Thing
We don't have any info about top-level Thing-Thing relations in Rembrandt nor BM data.
- In Rembrandt there is part composition info, but we don't display other than top-level objects
- In one case "<painting> P130i_features_are_also_found_on <sketch>", but these relate to sub-objects, eg
Thing has met Thing- WONTDO
Thing refers to or is about Thing- WONTDO
Thing is referred to by Thing- WONTDO
Thing from Thing- WONTDO
Thing is part of Thing- WONTDO
Thing was made from Thing- WONTDO
Thing has part Thing- WONTDO
Thing is similar or same with Thing- WONTDO
Thing-Actor
Thing has met Actor- FR12_has_met
Thing (or another thing it is part of) has met actor in the same event (or event that is part of it)
As defined in FRThing.docx: |
Corrected definition: |
Fixed Problems:
- At beginning: why consider part composition only of E18_Physical_Thing (P46i) but not of Symbolic/Propositional Objects (P106i,P148i)?
Note: P12 is applicable to any E77_Persistent_Item- Resolved by adding P106i,P148i: do you agree
- Resolved by adding P106i,P148i: do you agree
Further discussion:
- We consider carefully the directions of the "part" relations. Here's an example where we have 3 levels of nested Things, Events and Actors and the relation is made at level2:
- Jewel1 is part of Necklace2 is part of Treasure3
- AuctionLot1 is part of Auction2 is part of AuctionSeries3
- Dealer1 is part of JewelSellers2 is part of Corp3
- Necklace2 was sold at Auction2 by JewelSellers2
- I think we can infer these relations:
- (Jewel1,Necklace2) was sold at (Auction2,AuctionSeries3) by (JewelSellers2,Corp3)
- However, FRThing.docx dismisses the "Actor member of Group" inference because "it is not so probable that the Group has also been in the same event as the Actors".
- Ok, agreed
Implementation:
We reuse Thing has met Event- FR12_was_present_at as the initial sub-FR from FC70 to E5.
- FR12_has_met := FR12_was_present_at / P12 / E39
Rules
Thing is referred to by Actor- WONTDO
A related example in RKD data is: <Gertruidenberg> (Place) P67i_is_referred_to_by <Bathing Susana> which is created by <Rembrandt>,
which would map to <Gertruidenberg> "is referred to by" <Rembrandt>, except that Place is not a Thing.
Thing refers to or is about Actor- TODO
Thing by Actor- FR14_by
Thing (or part thereof) was created, measured, modified, acquired or used for activity performed by actor (or group it is member of)
As defined in FRThing.docx: |
Corrected definition: |
Fixed Problems:
- At beginning: allow paths of mixed properties
- At E8: allow a hierarchy of Acquisition events (not that it'll happen often)
- Note: we don't need to check the types E7, E8 since the properties P24i, P14, P22 ensure them.
Implementation:
- FRX_92_16_39_31_24i := P92i_was_brought_into_existence_by | P16i_was_used_for | P39i_was_measured_by | P31i_was_modified_by | P24i_changed_ownership_through
Rules
- FRX_14_22 := P14_carried_out_by | P22_transferred_title_to
Rules
- FRX_46_106_148_92_16_39_31_24i := FRT_46_106_148* / FRX_92_16_39_31_24i
Rules
- FRX14_by := FRX_46_106_148_92_16_39_31_24i / (P9i|P10)*
Rules
- FR14_by := FRX14_by / FRX_14_22 / P107i*
Rules
Thing-Event
Thing refers to or is about Event- FR67_about_event
Thing depicts or refers to event, or carries information object that is about event, or bears similarity with a thing that is about event
- The beginning is the same as Thing refers to or is about Place- FR67_refers_to_or_is_about so we reuse properties FRT_46_106_148_128_130 and FRX_62_67. TODO: optimize this reuse, by carefully thinking where to put the type check
- The ending is way simpler.
- TODO: harmonize FR names (this says "_event" but "about Place" doesn't say "_place")
As defined in FRThing.docx: |
Corrected definition: |
Fixed Problems:
- At beginning: does not allow paths of mixed properties
- At E73: does not allow P106,P148. Resolved by adding P128 into the mix
Implementation:
We reuse a lot of properties from above, so we don't need to define any auxiliary sub-FRs here
- FR67_about_event := (FC70) / FRT_46_106_148_128_130* / FRX_62_67 / (E5)
Rules
Thing is referred to at Event- WONTDO
Thing has met Event- FR12_was_present_at
Thing was present at (has met, is from) event.
- (FRThing.docx refers to this variously as "has met" or "from", but we use FR12_has_met for Actor.
So we use FR12_was_present_at for this. The name is derived from the name of the key constituent CRM property.)
As defined in FRThing.docx:
FC70_Thing -- FR12_was_present_at -> E5_Event := FC70_Thing -- (P46i_forms_part_of* | P106i_forms_part_of* | P148i_is_component_of*) -> FC70_Thing: FC70_Thing -- P12i_was_present_at -> E5_Event: E5_Event -- P9i_forms_part_of* -> E5_Event
Graphical form (slightly modified: allows mixed paths of P46i, P106i, P148i):
BUG
The FR "Thing from Event" has a serious bug that goes like this:
- An acquisition is a E79_Part_Addition event (amongst other event types, see below for details)
- Assume Thing1 and Thing2 are part of the BM_collection.
THEN
Thing2(E22_Man-Made_Object) -- P46i_forms_part_of -> BM_Collection (E78_Collection). # given Thing1_Acquisition(E79_Part_Addition) -- P110_augmented -> BM_Collection. # given BM_Collection -- P12i_was_present_at -> Thing1_Acquisition. # P110i is sub-property of P12 Thing2 -- FR12_was_present_at -> Thing1_Acquisition. # by the FR definition
This causes all BM objects to be present at all Acquisition events of each other, which is wrong:
- If Thing2 was added to BM after Thing1, it's causally impossible for Thing2 to be present at the acquisition of Thing1
- If Thing2 was added to BM before Thing1, you could say that while sitting in BM, it quietly observed the addition of Thing1, but that is silly and not useful.
This also causes quadratic growth of the repository, and seemingly exponential growth of load times.
Details of Representation of Acquisitions
(These details are not relevant to the bug described above, but are given as background information).
An acquisition by the BM is modeled as an event having all these classes:
- E8_Acquisition: change of ownership
- E10_Transfer_of_Custody: in most cases but not always
- E80_Part_Removal: optional, if we know which collection it came from
- E79_Part_Addition: thing is added to the BM collection
The following entities are present at an acquisition; linked by properties appropriate for the indicated event classes:
- the thing itself: E8, E10, E80, E79
- the seller: E8, E10
- the seller's collection: E80
- the buyer: E8, E10
- the buyer's collection: E79
How to fix it?
Following the partOf hierarchy is a fundamental feature of FRs. If a Thing is part of Another, it's (often?) useful to conclude that Thing was present at each Event of Another.
- Except if Thing was added to Another after the Event
- And except that when Another is a collection, we hit this nasty bug
If you're thinking of fixing it by adding "Another is not E78_Collection", consider this:
- Class negation causes much higher inferencing complexity in OWL
- I'm sure there are other twisted cases, eg "each part of a building observed all modifications that added other parts to that building"
We had some discussions about following partOf:
- for some FRs it's appropriate to follow the other direction P46 ("contravariant" not "covariant" FRs)
- for some FRs it's appropriate to follow neither P46i, nor P46 (eg for Thing about Entity)
But this is none of these cases, and I don't know how to fix it cleanly.
Implementation
For now I'll just remove P46i, P106i, P148i from the FR (BM doesn't have parts of objects, so there's no loss)
- FR12_was_present_at := FC70 /
FRT_46i_106i_148i*/ P12i / (P9i|P10)*RulesREMOVED
Thing-Concept
Thing is made of Material- FR45_is_made_of
Thing (or part thereof) consists of material
As defined in FRThing.docx: |
Corrected definition: |
Implementation
- FRX45_is_made_of := P45 | (FRT92i_9i / P126)
Rules
- FR45_is_made_of := (FC70) / FRT_46_106_148* / FRX45_is_made_of
Rules
Thing is/has Type- FR2_has_type
Thing has Type (or has shape, is of kind, is about subject, etc)
(FRThing.docx calls this "has type" but I think "is/has" matches the general usage "is Weapon", "has shape Vertical Rectangle", etc)
Corrected definition: |
Fixes:
- added P67 (E55_Type), since some types are attached using P67_refers_to (or P129_is_about),
eg these RS extension properties: rso:P129_has_iconclass, rso:P129_has_keyword - added P128_carries (E73_Information_Object) to move from physical to conceptual, eg
- added "P127_has_broader_term" to search by type hierarchy
Implementation:
- FRX2_has_type := (P2|P67) / (E55_Type)
Rules
- FR2_has_type := (FC70) / FRT_46_106_148_128* / FRX2_has_type / P127_has_broader_term*
Rules
Notes:
- Martin also adds here FR45_is_made_of. This would be easy to add with this clause:
but our search UI currently has a restriction that the many-to-many relation "FRs-thesauri" should split both FRs and thesauri into equivalence classes.
Thing used technique- FR32_used_technique
The production of Thing (or part thereof) used general technique
Extension defined by me:
(I think P32_used_general_technique is more useful than P33_used_specific_technique, see Thing is made of Material- FR45_is_made_of above)
Implementation:
- FR32_used_technique := (FC70) / FRT_46_106_148* / FRT92i_9i / P32
Rules
Thing identified by Identifier- FR1_identified_by
Thing (or part thereof) has Identifier (exact-match string).
Extension defined by me:
- FR1_identified_by := (FC70) / FRT_46_106_148* / P1 / P3 | rdfs:label
Rules
Notes:
- TODO: it may be better to stop at P1 so the identifier type can also be examined
- we add rdfs:label since that's what BM uses for identifier values (not P3_has_note)
RS-1408
- Using an intermediate relation like
FRX_label := P3 | rdfs:label
is very stupid, since it will double the number of label triples & literals in the KBSTUPID
2 Comments
comments.show.hideOct 13, 2012
dominic.oldman
I am not sure that the 'from' FR is quite right in terms of balancing recall and precision. In partiuclar that it returns objects from people born at a place together with where a thing was created. Rembrandt was born in Leiden and therefore if you say give me objects from leiden you get all of rembrandts works which seems wrong. We need to tease this FR out to have one specifically for objects created by someone from x . It may be that sojme FRs are not as aggregated as others (if at all) but should be orientated towards what users would expect..
Nov 21, 2012
Vladimir Alexiev
Sure, we can split FRs any way you like. Just give me the requirements.