--- tags: TypeDB --- # Modelado de datos de difusión del ash'arismo en el occidente islámico ## Schema.tql (Definition of concepts) ```#tql= define #ATTRIBUTES title sub attribute, value string; reference sub attribute, value string; part_title sub attribute, value string; part_reference sub attribute, value string; theme_description sub attribute, value string; Hijri sub attribute, value string, regex "^[0-9]{4}(-[0-9]{2}(-[0-9]{2}){0,1}){0,1}$"; CE sub attribute, value string, regex "^[0-9]{4}(-[0-9]{2}(-[0-9]{2}){0,1}){0,1}$"; ar_name sub attribute, value string; lat_name sub attribute, value string; sentiment sub attribute, value string, regex "^(criticism|approval|neuter|unknown)$"; #ENTITIES #texts and similar text sub entity, owns title, owns reference, plays is_part_of:main, plays is_part_of:part, plays authorship:text, plays is_attested_by:source, plays teaching:object_of_study plays copy:text, plays quoting:quoted, plays quoting:quoting; text_part sub entity, owns part_title, owns part_reference, plays is_part_of:part, plays authorship:text, plays is_attested_by:source, plays teaching:object_of_study, plays copy:text, plays quoting:quoted, plays quoting:quoting; textual_set sub entity, owns theme_description, plays is_part_of:main, plays authorship:text, plays is_attested_by:source, plays teaching:object_of_study; manuscript sub entity, owns reference plays copy:manuscript, plays ownership:owned, plays is_attested_by:source; #date and place absolute_date sub entity, owns Hijri, owns CE, plays dating:date, plays relative_date:after_value, plays relative_date:before_value; place sub entity, abstract, plays locating:place, owns ar_name, owns lat_name; locality sub place, plays is_part_of:part, plays geolocalization:place; region sub place, plays is_part_of:main, plays is_part_of:part; country sub place, plays is_part_of:main; coordinates sub entity, owns lat, owns lon, plays geolocalization:coordinates; # persons person sub entity, owns ar_name, owns lat_name, plays authorship:author, plays birth:person, plays death:person, plays stay:person, plays teaching:profesor, plays teaching:student, plays copying:copyist, plays ownership:owner, plays is_attested_by:source, plays reading:read, plays reading:reader; #RELATIONS is_attested_by sub relation, relates statement, relates source; is_part_of sub relation, relates main, relates part; authorship sub relation, relates text, relates author, plays locating:event, plays dating:event, plays is_attested_by:statement; dating sub relation, relates event, relates date, plays is_attested_by:statement; locating sub relation relates event, relates place, plays is_attested_by:statement; relative_date sub relation, relates after_value, relates before_value, plays dating:date; geolocalization sub relation, relates place, relates coordinates; birth sub relation, relates person, plays dating:event, plays locating:event, plays is_attested_by:statement; death sub relation, relates person, plays dating:event, plays locating:event, plays is_attested_by:statement; stay sub relation, relates person, plays dating:event, plays locating:event, plays is_attested_by:statement; teaching sub relation, relates profesor, relates student, relates object_of_study, plays dating:event, plays locating:event, plays is_attested_by:statement; copy sub relation, relates manuscript, relates text; copying sub relation, relates copy, relates copyist, plays dating:event, plays locating:event, plays stay:person, plays is_attested_by:event; ownership sub relation, relates owned, relates owner, plays is_attested_by:event; quoting sub relation, relates quoted, relates quoting, owns sentiment; reading sub relation, relates read, relates reader; #RULES rule transitive-authorship: when { (text: $text1, author: $author) isa authorship; ((main: $text1, part: $text2) isa is_part_of) or ((main: $text2, part: $text1) isa is_part_of); } then { (text: $text2, author: $author) isa authorship; }; rule transitive-ispartof: when { (main: $x, part: $y) isa is_part_of; (main: $z, part: $x) isa is_part_of; } then { (main: $z, part: $y) isa is_part_of; }; rule transitive-dating-fortextparts: when { (event:$text, date:$d) isa dating; $text isa text; $part isa text_part; (main:$text, part:$part) isa is_part_of; } then { (event:$part, date:$d) isa dating; }; rule transitive-source: when { (statement:$st, source:$subtext) isa is_attested_by; (main:$text, part:$subtext) isa is_part_of; } then { (statement:$st, source:$text) isa is_attested_by; }; ``` ## Interface components ### Logic ```flow st=>start: What operation do you wish to do? cond_add=>condition: Do you want to add registry? cond_remodif=>condition: Do you want to remove or modify registry? ADD=>operation: Add which type of registry? REMOVE=>operation: Remove which type of registry? MODIFY=>operation: Modify which type of registry? cond_text=> condition: TEXT and MANUSCRIPT? cond_person=>condition: PERSON? cond_place=>condition: PLACE? e=>end: SEE in shell if there is no error st->cond_add cond_add(yes@Add)->ADD cond_add(no@No)->cond_remodif cond_remodif(yes@Remove)->REMOVE cond_remodif(no@Modify)->MODIFY ```