compared with
Key
This line was removed.
This word was removed. This word was added.
This line was added.

Changes (49)

View Page History

h1. Introduction
TODO:
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|http://www.w3.org/TR/sparql11-property-paths/#path-language]

h2. OWLIM Rules and Reasoning Dialect
So we copy the relevant rules from builtin_owl2-rl.pie:
{code:title=Rules}
p <rdf:type> <owl:TransitiveProperty>; x p y; y p z [Cut] => x p z
p1 <owl:inverseOf> p2; x p1 y => y p2 x
p1 <owl:inverseOf> p2; x p2 y => y p1 x
- FC70_Thing := E70_Thing NOT E21_Person NOT E55_Type NOT E30_Right NOT E41_Appellation

Here we enumerate all subclasses of the negative classes, since neither OWL nor OWLIM can express "NOT subclass" (<owl:disjointWith> is used to infer a contradiction, not to define a class).
(x) TODO: This below is wrong, we must enumerate the positive subclasses
{code:title=Rule-COMMENTED OUT}
x <rdf:type> t [Constraint t!=<crm:E70_Thing>, t!=<rso:FC70_Thing>, t!=<crm:E21_Person>, t!=<crm:E55_Type>, t!=<crm:E56_Language>, t!=<crm:E57_Material>, t!=<crm:E58_Measurement_Unit>, t!=<crm:E30_Right>, t!=<crm:E41_Appellation>, t!=<crm:E35_Title>, t!=<crm:E42_Identifier>, t!=<crm:E44_Place_Appellation>, t!=<crm:E45_Address>, t!=<crm:E46_Section_Definition>, t!=<crm:E47_Spatial_Coordinates>, t!=<crm:E48_Place_Name>, t!=<crm:E49_Time_Appellation>, t!=<crm:E50_Date>, t!=<crm:E51_Contact_Point>, t!=<crm:E75_Conceptual_Object_Appellation>, t!=<crm:E82_Actor_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:
{code:title=Rule-WRONG}
x <rdf:type> t [Constraint t!=<crm:E21_Person>, t!=<crm:E55_Type>, t!=<crm:E30_Right>, t!=<crm:E41_Appellation>]
t <rdfs:subClassOf> <crm:E70_Thing>
--------------------
x <rdf:type> <rso:FC70_Thing>
{code}
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
{code:sql|title=SPARQL}
?x rdf:type crm:E70_Thing.
NOT (?x rdf:type crm:E21_Person, etc)
{code}

h3. FC70_Thing for RS

In RS we search only for top-level things (eg a Painting, but not a Frame that makes part of a painting). These have type E22_Museum_Object, Man-Made Objects (MMO) so the rule is much simpler:
{code:title=Axioms}
<rso:FC70_Thing> <rdfs:subClassOf> <rso:E22_Museum_Object> <crm:E22_Man-Made_Object>
<rso:E22_Museum_Object> <crm:E22_Man-Made_Object> <rdfs:subClassOf> <rso:FC70_Thing>
{code}
TODO: in BM data, MMO are only top-level (eg Print, Painting).
But in Rembrandt data there are sub-object MMO (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 a special sub-type rso:E22_Museum_Object.

h1. Fundamental Relations
h2. Thing-Place

h3. Thing "refers to or is about" Place: FR67_refers_to_or_is_about
{section}{column}
As defined in FRThing.docx:
!FR67_refers_to_or_is_about.png!
{column}{column}
Corrected definition:
!FR67_refers_to_or_is_about-fixed.png!
{column}{section}

Problems:
Fixed problems:
# At beginning: does not allow paths of mixed properties (eg P130-P130i, P106-P148),
or with P46,P106,P148 preceding P130,P130i
#- 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|http://en.wikipedia.org/wiki/Covariance_and_contravariance_(computer_science)] (not appropriate to loop using P89*), but is it contra-variant (appropriate to loop using P89i*)?
#- (?) PENDING
#- (?) PENDING: but is it contra-variant (appropriate to loop using P89i*)?

Corrected definition:
!FR67_refers_to_or_is_about-fixed.png!

Implementation
- FRT_130_46_106_148_128 := (P130 or P130i or P46 or P106 or P148 or P128)+
- FRT_46_106_148 := (P46 or P106 or P148)+
{code:title=Rules}
x <crm:P130_shows_features_of> y => x <rso:FRT_130_46_106_148_128> y
x <crm:P130i_features_are_also_found_on> y => x <rso:FRT_130_46_106_148_128> y
x <crm:P46_is_composed_of> y => x <rso:FRT_130_46_106_148_128> <rso:FRT_46_106_148> y
x <crm:P106_is_composed_of> y => x <rso:FRT_130_46_106_148_128> <rso:FRT_46_106_148> y
x <crm:P148_has_component> y => x <rso:FRT_130_46_106_148_128> <rso:FRT_46_106_148> y
x <crm:P128_carries> y => x <rso:FRT_130_46_106_148_128> y
{code}
{code:title=Axioms}
<rso:FRT_130_46_106_148_128> <rso:FRT_46_106_148> <rdf:type> <owl:TransitiveProperty>
{code}

- FRT_46_106_148_128_130 := (FRT_46_106_148 or P128 or P130 or P130i)+
{code:title=Rules}
x <rso:FRT_46_106_148> y => x <rso:FRT_46_106_148_128_130> y
x <crm:P128_carries> y => x <rso:FRT_46_106_148_128_130> y
x <crm:P130_shows_features_of> y => x <rso:FRT_46_106_148_128_130> y
x <crm:P130i_features_are_also_found_on> y => x <rso:FRT_46_106_148_128_130> y
{code}
{code:title=Axioms}
<rso:FRT_46_106_148_128_130> <rdf:type> <owl:TransitiveProperty>
{code}

- FRX_62_67 := P62_depicts or P67_refers_to
{code:title=Rules}
x <rso:FRX_62_67> y => x <rso:FRX67_refers_to_or_is_about> y
x <rso:FRX_62_67_E26> y; y <crm:P53_has_former_or_current_location> z => x <rso:FRX67_refers_to_or_is_about> z
x <rso:FRX_62_67_E26> y; y <rso:FRT_130_46_106_148_128> <rso:FRT_46_106_148_128_130> z; z <crm:P53_has_former_or_current_location> t => x <rso:FRX67_refers_to_or_is_about> t
{code}

{code:title=Rules}
x <rso:FRX67_refers_to_or_is_about> y => x <rso:FRT67_refers_to_or_is_about> y
x <rso:FRT_130_46_106_148_128> <rso:FRT_46_106_148_128_130> y; y <rso:FRT67_refers_to_or_is_about> z => x <rso:FRT67_refers_to_or_is_about> z
x <rso:FRT67_refers_to_or_is_about> y; y <crm:P89i_contains> z => x <rso:FRT67_refers_to_or_is_about> z
{code}
{code}

h3. Thing "is referred to at" Place: WONTDO

h3. Thing "from" Place
h3. Thing "from" Place: FR7_from_place
{section}{column}
As defined in FRThing.docx (without C2.Finding which is undefined):
!FR7_from_place.png!
{column}{column}
Corrected definition:
!FR7_from_place-fixed.png!
{column}{section}

Problems:
Fixed problems:
# At beginning: does not allow paths of mixed properties (eg P46i,P106i)
#- Resolved by "mixing" as FRT_46i_106i_148i
#- (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)

!FR7_from_place-fixed.png! Implementation:

- FRT_46i_106i_148i := (P46i or P106i or P148i)+
{code:title=Rules}
{code}

- FRT92i_9i := P92i then / P9i*
{code:title=Rules}
x <crm:P92i_was_brought_into_existence_by> y => x <rso:FRT92i_9i> y
{code}

h3. Thing "used at" Place: WONTDO
h3. Thing "created at" Place
h3. Thing "found or acquired at" Place
h3. Thing "is/was located at" Place
No such in BM data

h3. 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.

h3. Thing "found or acquired at" Place: WONTDO
C2.Finding is not defined

h3. Thing "is/was located in" Place: FR53_is_was_located_in
This is a very simple subset of FR7_from_place ([#Thing "from" Place])
!FR53_is_was_located_in.png!

Implementation:
- FRT53_is_was_located_in := FRT_46i_106i_148i* then P53 then P89*
{code:title=Rules}
x <crm:P53_has_former_or_current_location> y => x <rso:FRT53_is_was_located_in> y
x <rso:FRT_46i_106i_148i> y; y <crm:P53_has_former_or_current_location> z => x <rso:FRT53_is_was_located_in> z
x <crm:P53_has_former_or_current_location> y; y <crm:P89_falls_within> z => x <rso:FRT53_is_was_located_in> z
{code}

- FR53_is_was_located_in := add type check at start
(No need to check at end since the relation is to E53_Place)
{code:title=Rules}
x <rdf:type> <rso:FC70_Thing>; x <rso:FRT53_is_was_located_in> y => x <rso:FR53_is_was_located_in> y
{code}

h2. 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
{code}<obj/2926> crm:P130i_features_are_also_found_on <obj/2926/related/1>{code}

h3. Thing "has met" Thing: WONTDO
h3. Thing "refers to or is about" Thing: WONTDO
h3. Thing "is referred to by" Thing: WONTDO
h3. Thing "from" Thing: WONTDO
h3. Thing "is part of" Thing: WONTDO
h3. Thing "was made from" Thing: WONTDO
h3. Thing "has part" Thing: WONTDO
h3. Thing "is similar or same with" Thing: WONTDO

h2. Thing-Actor

h3. Thing "has met" Actor: FR12_has_met
{section}{column}
As defined in FRThing.docx:
!FR12_has_met.png!
{column}{column}
Corrected definition:
!FR12_has_met-fixed.png!
{column}{section}

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 (?)

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
{code:title=Rules}
x <rso:FR12_was_present_at> y; y <crm:P12_occurred_in_the_presence_of> z; z <rdf:type> <crm:E39_Actor> => x <rso:FR12_has_met> z
{code}

h3. 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.

h3. Thing "refers to or is about" Actor: TODO

h3. Thing "by" Actor: FR14_by
Thing was created, modified, measured, found, acquired by actor; or was used for an activity performed by actor
{section}{column}
As defined in FRThing.docx:
!FR14_by.png!
{column}{column}
Corrected definition:
!FR14_by_fixed.png!
{column}{section}

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
{code:title=Rules}
x <crm:P92i_was_brought_into_existence_by> y => x <rso:FRX_92_16_39_31_24i> y
x <crm:P16i_was_used_for> y => x <rso:FRX_92_16_39_31_24i> y
x <crm:P39i_was_measured_by> y => x <rso:FRX_92_16_39_31_24i> y
x <crm:P31i_was_modified_by> y => x <rso:FRX_92_16_39_31_24i> y
x <crm:P24i_changed_ownership_through> y => x <rso:FRX_92_16_39_31_24i> y
{code}

- FRX_14_22 := P14_carried_out_by | P22_transferred_title_to
{code:title=Rules}
x <crm:P14_carried_out_by> y => x <rso:FRX_14_22> y
x <crm:P22_transferred_title_to> y => x <rso:FRX_14_22> y
{code}

- FRX_46_106_148_92_16_39_31_24i := FRT_46_106_148* / FRX_92_16_39_31_24i
{code:title=Rules}
x <rdf:type> <rso:FC70_Thing>; x <rso:FRX_92_16_39_31_24i> y => x <rso:FRX_46_106_148_92_16_39_31_24i> y
x <rdf:type> <rso:FC70_Thing>; x <rso:FRT_46_106_148> y; y <rso:FRX_92_16_39_31_24i> z => x <rso:FRX_46_106_148_92_16_39_31_24i> z
{code}

- FRX14_by := FRX_46_106_148_92_16_39_31_24i / P9i*
{code:title=Rules}
x <rso:FRX_46_106_148_92_16_39_31_24i> y => x <rso:FRX14_by> y
x <rso:FRX_46_106_148_92_16_39_31_24i> y; y <crm:P9i_forms_part_of> z => x <rso:FRX14_by> z
{code}

- FR14_by := FRX14_by / FRX_14_22 / P107i*
{code:title=Rules}
x <rso:FRX14_by> y; y <rso:FRX_14_22> z => x <rso:FR14_by> z
x <rso:FRX14_by> y; y <rso:FRX_14_22> z; z <crm:P107i_is_current_or_former_member_of> t => x <rso:FR14_by> t
{code}

h2. Thing-Event

h3. 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")

{section}{column}
As defined in FRThing.docx:
!FR67_about_event.png!
{column}{column}
Corrected definition:
!FR67_about_event-fixed.png!
{column}{section}

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:
(i) 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
{code:title=Rules}
x <rdf:type> <rso:FC70_Thing>; x <rso:FRX_62_67> y => x <rso:FR67_about_event> y
x <rdf:type> <rso:FC70_Thing>; x <rso:FRT_46_106_148_128_130> y; y <rso:FRX_62_67> z => x <rso:FR67_about_event> z
{code}

h3. Thing "is referred to at" Event: WONTDO

h3. Thing "has met" Event: FR12_was_present_at
Thing was present (has metm, is from) Event.
(FRThing.docx refers to this variously as "has met" or "from", but we use FR12_has_met for Actor, so for this we use FR12_was_present_at which is derived from the key CRM property name)
{section}{column}
As defined in FRThing.docx:
!FR12_was_present_at.png!
{column}{section}

Implementation:
- FR12_was_present_at := FC70 / FRT_46i_106i_148i* / P12i / P9i*
{code:title=Rules}
x <rdf:type> <rso:FC70_Thing>; x <crm:P12i_was_present_at> y => x <rso:FR12_was_present_at> y
x <rdf:type> <rso:FC70_Thing>; x <rso:FRT_46i_106i_148i> y; y <crm:P12i_was_present_at> z => x <rso:FR12_was_present_at> z
x <rdf:type> <rso:FC70_Thing>; x <crm:P12i_was_present_at> y; y <rso:P9i_forms_part_of> z => x <rso:FR12_was_present_at> z
x <rdf:type> <rso:FC70_Thing>; x <rso:FRT_46i_106i_148i> y; y <crm:P12i_was_present_at> z; z <rso:P9i_forms_part_of> t => x <rso:FR12_was_present_at> t
{code}

h2. Thing-Concept

h3. Thing "is made of" Material: FR45_is_made_of
Thing (or its part) consists of Material.

{section}{column}
As defined in FRThing.docx:
Includes P33_used_specific_technique/P68_foresees_use_of, but I think that is far-fetched: P33 should refer to an explicitly defined procedure, and if P68 then it stands to reason the material was actually P126_employed!
{column}{column}
Corrected definition:
!FR45_is_made_of-fixed.png!
{column}{section}

Implementation
- FRX45_is_made_of := P45 | (FRT92i_9i / P126)
{code:title=Rules}
x <crm:P45_consists_of> y => x <rso:FRX45_is_made_of> y
x <rso:FRT92i_9i> y; y <crm:P126_employed> z => x <rso:FRX45_is_made_of> z
{code}

- FR45_is_made_of := (FC70) / FRT_46_106_148* / FRX45_is_made_of
{code:title=Rules}
x <rdf:type> <rso:FC70_Thing>; x <rso:FRX45_is_made_of> y => x <rso:FR45_is_made_of> y
x <rdf:type> <rso:FC70_Thing>; x <rso:FRT_46_106_148> y; y <rso:FRX45_is_made_of> y => x <rso:FR45_is_made_of> z
{code}

h3. Thing "is/has" Type: FR2_has_type
Thing has Type (or has shape, is of kind, uses material, etc)
(FRThing.docx calls this "has type" but I think "is/has" matches the general usage "is Weapon", "has shape Vertical Rectangle", etc)

This is an extension of [#Thing "is made of" Material: FR45_is_made_of]:
{section}{column}
{column}{column}
Corrected definition:
!FR2_has_type-fixed.png!
{column}{section}

Implementation:
- FR2_has_type := ((FC70) / FRT_46_106_148* / P2_has_type) | FR45_is_made_of
{code:title=Rules}
x <rdf:type> <rso:FC70_Thing>; x <crm:P2_has_type> y => x <rso:FR2_has_type> y
x <rdf:type> <rso:FC70_Thing>; x <rso:FRT_46_106_148> y; y <crm:P2_has_type> z => x <rso:FR2_has_type> z
x <rso:FR45_is_made_of> y => x <rso:FR2_has_type> y
{code}

h3. Thing "used technique": FR32_used_technique
The production of Thing (or its part) used general Technique.

{section}{column}
{column}{column}
Extension defined by me:
!FR32_used_technique-fixed.png!
{column}{section}
(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
{code:title=Rules}
x <rdf:type> <rso:FC70_Thing>; x <rso:FRT92i_9i> y; y <crm:P32_used_general_technique> z => x <rso:FR32_used_technique> y
x <rdf:type> <rso:FC70_Thing>; x <rso:FRT_46_106_148> y; y <rso:FRT92i_9i> z; z <crm:P32_used_general_technique> t => x <rso:FR32_used_technique> t
{code}

h3. Thing "identified by" Identifier: FR1_identified_by
Thing (or its part) has Identifier (exact-match string).
{section}{column}
{column}{column}
Extension defined by me:
!FR32_used_technique-fixed.png!
{column}{section}

Implementation:
- FR1_identified_by := (FC70) / FRT_46_106_148* / P1 / P3
{code:title=Rules}
x <rdf:type> <rso:FC70_Thing>; x <crm:P1_is_identified_by> y; y <crm:P3_has_note> z => x <rso:FR1_identified_by> z
x <rdf:type> <rso:FC70_Thing>; x <rso:FRT_46_106_148> y; y <crm:P1_is_identified_by> z; z <crm:P3_has_note> t => x <rso:FR1_identified_by> t
{code}
TODO: it may be better to stop at P1 so the identifier type can also be examined