gtadigital / transurbicide-app

0 stars 0 forks source link

Archival Collections | Double listing of Archival Collections with Actors with Honorar name #33

Closed thomashaensli closed 3 years ago

thomashaensli commented 3 years ago

Dear Matteo, coming back to the old Problem

https://transurbicide.gta.arch.ethz.ch/resource/?uri=https%3A%2F%2Fresource.swissartresearch.net%2Farchivalobject%2F656188 shows up twice in the Archival Collections List at https://transurbicide.gta.arch.ethz.ch/resource/:LandingPageCollection because is has A Stanicic als Author (who has a honorary name: "Dr.").

Apart from the fact., that here the use of Honorary Title is wrong (and I can fix it in the source data), I think it would be better to fix it in the modelling.

-I think name and honorary name should be modelled differently (using p2_has_type?)

What do you think?

thomashaensli commented 3 years ago

Hi Matteo,

I just realise it is likely a display problem:

matteoLorenzini commented 3 years ago

Problem description Taking as example this resource The collection creator has two instances:

  1. Suffix (i.e. Dr.)
  2. Name (Staničić, Aleksandar)

The same goes for the column Actor in the tabular view of the landing page of Collection where the same collection appears two times due to the two actor name (Dr. and Staničić, Aleksandar).

1st consideration The error comes from the Actor Name and not from Honorific name . By running the following SPARQL query

PREFIX  skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX  rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX  org:  <http://example.com/org/>
PREFIX  wd:   <http://www.wikidata.org/entity/>
PREFIX  wdt:  <http://www.wikidata.org/prop/direct/>

SELECT DISTINCT ?creator  ?value
WHERE
  { <https://resource.swissartresearch.net/archivalobject/656188>
              <http://www.cidoc-crm.org/cidoc-crm/P108i_was_produced_by>  ?production .
    ?production  a                  <http://www.cidoc-crm.org/cidoc-crm/E12_Production> ;
              <http://www.cidoc-crm.org/cidoc-crm/P14_carried_out_by>  ?creator .
    ?creator  a                     ?object ;
              <http://www.cidoc-crm.org/cidoc-crm/P1_is_identified_by>  ?name_identifier .
    ?name_identifier
              a                     <http://www.cidoc-crm.org/cidoc-crm/E41_Appellation> ;
              rdfs:label            ?value
    FILTER EXISTS { ?creator  <http://www.cidoc-crm.org/cidoc-crm/P2_has_type>  <https://resource.swissartresearch.net/actor%20creator/actor%20creator> }
  }

As result we have

creator                                                                                                                                | value

https://resource.swissartresearch.net/person/5dd45411-4afa-494f-9bd9-f84d07282fee | Dr (rdf:langString)
https://resource.swissartresearch.net/person/5dd45411-4afa-494f-9bd9-f84d07282fee | Staničić, Aleksandar (rdf:langString)

As from the table to the same collection creator correspond two names (value).

2nd consideration If the problem had been related to the Honorific Name of the collection creator: The honorific name has already been defined by using a dedicated type.

Here the snap of the mapping schema

<range>
    <source_node>act_nc_honname</source_node>
    <target_node>
        <entity>
            <type>crm:E41_Appellation</type>
            <instance_generator name="personAppellationUri">
                <arg name="person_id"
                     type="xpath">../_uuid/text()</arg>
                <arg name="appellation_id"
                     type="xpath">text()</arg>
            </instance_generator>
            <label_generator name="Literal">
                <arg name="text"
                     type="xpath">text()</arg>
                <arg name="language"
                     type="xpath">../act_nc_honname_lang_akronym/text()</arg>
            </label_generator>
            <additional>
                <relationship>crm:P2_has_type</relationship>
                <entity>
                    <type>crm:E55_Type</type>
                    <instance_info>
                        <constant/>
                    </instance_info>
                    <instance_generator name="URIwithTypeAndId_hashed">
                        <arg name="type"
                             type="constant">types</arg>
                        <arg name="id"
                             type="constant">Honorific Name</arg>
                    </instance_generator>
                    <label_generator name="Literal">
                        <arg name="text"
                             type="constant">Honorific Name</arg>
                    </label_generator>
                </entity>
            </additional>
        </entity>
    </target_node>
</range>

Solution

I have added to the relative SPARQL query (Facet definition, Field and Landing page) the P2_has_type relation to address the query via the https://resource.swissartresearch.net/types/Preferred%20Name which was already specified into the mapping schema.

By running the resulting SPARQL query

PREFIX  org:  <http://example.com/org/>
PREFIX  wdt:  <http://www.wikidata.org/prop/direct/>
PREFIX  skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX  rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX  wd:   <http://www.wikidata.org/entity/>
PREFIX  crm:  <http://www.cidoc-crm.org/cidoc-crm/>

SELECT DISTINCT  ?creator ?value
WHERE
  { <https://resource.swissartresearch.net/archivalobject/656188>
              crm:P108i_was_produced_by  ?production .
    ?production  a                  crm:E12_Production ;
              crm:P14_carried_out_by  ?creator .
    ?creator  a                     ?object ;
              crm:P1_is_identified_by  ?name_identifier .
    ?name_identifier
              a                     crm:E41_Appellation ;
              crm:P2_has_type       <https://resource.swissartresearch.net/types/Preferred%20Name> ;
              rdfs:label            ?value
    FILTER EXISTS { ?creator  crm:P2_has_type  <https://resource.swissartresearch.net/actor%20creator/actor%20creator> }
  }

we have now the correct representation of the resource

creator                                                                                                                                | value
https://resource.swissartresearch.net/person/5dd45411-4afa-494f-9bd9-f84d07282fee | Staničić, Aleksandar (rdf:langString)