buda-base / owl-schema

BDRC Ontology Schema
11 stars 2 forks source link

new roles #103

Closed eroux closed 5 years ago

eroux commented 5 years ago

DILA has another property that can't really be migrated now, they have a "category" associated with persons, and the values can be for instance translator, commentator, meditation master, etc. (I don't have the English translation for the others yet). We would have a different way of recording the first two (using :creatorTranslator, and :creatorMainAuthor for a book of genre commentary), but recording it this way seems reasonable, especially since we can encode other aspects (like meditation master). An obvious way of encoding that would be to use :Roles. I think the Wikidata term for that is occupation, but we could broaden the meaning of role to encompass that. Does it seem reasonable?

xristy commented 5 years ago

I think :Role is quite useful in different contexts and there are gradations of usage. Just asserting:

bdr:P1583 :role bdr:RoleMeditationMaster .

could be interpreted as saying that Longchenpa was broadly known as a meditation master; however,

bdr:P1583 :role bdr:RoleRevealer .

does not perhaps carry sufficient specificity such as associating Longchenpa as the bdr:RoleRevealer of bdr:W12827_0264 vs bdr:RoleMainAuthor of bdr:W12827_0188.

Here's some experiments (partially fictional), exercising some ideas from #102 and this issue. For example, the Khandro Yangthig commentary:

bdr:W12827_0188 
    :workGenre bdr:T132 ;
    :hasCreator 
      [ a :AgentInRole ; :agent bdr:P1583 ; :role bdr:RoleMainAuthor ;
        :note [ :noteText "Longchenpa wrote this text as a commentary on bdr:W12827_0264"@en ] .

and here for the terma Khandro Nyingthig tracing the lineage leading up to text :

bdr:W12827_0264 
    :workGenre bdr:T476 ;
    :hasCreator
    [ a :Creators (
        [ a :AgentInRole ; :agent bdr:P10718 ; :role bdr:Originator ]
        [ a :AgentInRole ; :agent bdr:P4956 ; :role bdr:Transmitter ; 
          :lineageReceived [ :agent bdr: P10718 ; receivedHow bdr:MindTransmission ] ]
        [ a :AgentInRole ; :agent bdr:P2JM172 ; :role bdr:Transmitter ; 
           :lineageReceived [ :agent bdr:P4956 ; receivedHow bdr:MindTransmission ] ]
        [ a :AgentInRole ; :agent bdr:P7628 ; :role bdr:RoleRevealer ; 
           :lineageReceived [ :agent bdr:P2JM172 ; :receivedHow bdr:EarthTerma ]
        [ a :AgentInRole ; :agent bdr:P7625 ; :role bdr:RoleHolder ; 
           :lineageReceived [ :agent bdr: P7628 ; :receivedHow bdr:Teaching ]
        [ a :AgentInRole ; :agent bdr:P1583 ; :role bdr:RoleRevealer , bdr:RoleCompiler ; 
           :lineageReceived [ :agent bdr: P7625 ; :receivedHow bdr:Incarnation ] , 
                                         [ :agent bdr:P7628 ; :receivedHow bdr:Teaching ] ]
       ) ;
      :note [ a :Note ;
              :noteText "the general lineage leading to the written form is chronicled in Dudjom Jigdral Yeshe Dorjee's History of the Nyingma School"@en ;
              :noteWork bdr:W10160 ;
              :noteLocationStatement "various pp."@en ] ,
            [ a :Note ;
              :noteText "the general lineage leading to the written form is chronicled in Nyoshul Khenpo's The Marvelous Garland of Rare Gems"@en ;
              :noteWork bdr:W23682 ;
              :noteLocationStatement "various pp."@en ] .

Here's how might use roles and agents for :teacherOf:

bdr:P2349 :teacherOf [ a :AgentInRole ; :agent bdr:P1583 ; :role bdr:RoleMeditationMaster ] .
eroux commented 5 years ago

Hmmm interesting perspective indeed... It seems we agree on adding some new roles, I'll do that for the various types of workcreator and the ones needed by DILA, maybe we can keep the change in the structure for a second step. This leaves two questions:

xristy commented 5 years ago

Yes, I think it will be a very helpful extension to the current ontology to consider the roles an agent plays in various contexts.

It will not work to use eXide to add something like <person:role/> for DILA to the tbrc.org XML dataset - it will break users of the DLMS Editor if they try to edit a modified doc. We need to add to the docs in the git repos or build a back up routine that retrieves changed graphs from fuseki and commits them to the repo - which can be private on buda1 for the time being.

I think it is best to figure out what would work as a basic agent-in-role-in-context construct and use that for the DILA metadata. The simplest construct would be like:

bdr:P1583 :role bdr:RoleMeditationMaster .

in which the context is viewed as either anonymous or unspecified or something like bdr:AnyContext meaning that in any context it is valid to consider Longchenpa as a meditation-master among whatever other roles may be relevant.

If the DILA metadata asserts:

bdr:P1583 :role bdr:RoleCommentator

then we can have that with an interpretation like:

There is at least one :Work which is a commentary on something and that :Work was authored by Longchenpa.

That is clearly less information than we currently have in many cases for which a more detailed set of assertions is warranted. We can infer that it is warranted to assert that Longchenpa is a commentator by seeing if there are any works authored by Longchenpa that are commentaries and then one could add a threshold or somehow measure the relevance of the works - how many references are made to the work by other works and so on.

In order to not lose the information we can replace the current property hierarchy for :workCreator (I'm using :creatorbelow to distinguish from the current property), which is folding the role and context into the various sub-properties, with a form such as:

bdr:W12827_0188 :creator 
    [ a :AgentInRole ; :agent bdr:P1583 ; :role bdr:RoleMainAuthor ;
      :note [ :noteText "Longchenpa wrote this text as a commentary on bdr:W12827_0264"@en ] 
    ] .

So properties with [] rdfs:range :AgentInRole can easily allow for :note and such and the context is captured by [ a :Work ] :creator.

We should also limit the rdfs:range of a property such as :creator to a subset of possible roles via sub-classing or other.

eroux commented 5 years ago

oh I just wanted to use exide to add the various role individuals, like R0ER0001, etc. without using them anywhere for now... would that work?

I agree with the rest of your comments yes

xristy commented 5 years ago

Yes you could add a bunch of roles via eXide. It might be easier to add a step in xmltold... that just takes a csv with maybe 3 columns: rid, en, bo-ewts. There's only a few triples per each role: rdf:type; status; 1 or 2 skos:prefLabels; and an adm:logEntry, w/ 3 triples. If you'd rather not do it in xmltold..., I could do something like that in XQuery if you produce the csv.

eroux commented 5 years ago

I finally got to the bottom of this issue, turns out the categories used in the DILA database are the categories used in two biographical collections: 1 and 2. I'm not really sure how to encode that but at least the context is clear...

eroux commented 5 years ago

I cleaned up my sheet on https://docs.google.com/spreadsheets/d/113QN6mMV_W1l0jLI_3im6k3hUDRIfoVRz4GIoQqa8FI/edit#gid=1436329661 I think these are ready to be added