Tue Jul 2 19:20:39 MDT 2002
Update of /var/lib/cvs/fugalh/gdmxml In directory andreas:/tmp/cvs-serv425 Modified Files: gdmxml.rnc gdmxml.rng Log Message: Ok, I've gone through and entered the schema for the entire GDM. Think of it as a first pass, there's a LOT of revising to do but it's a framework. I converted all the 'text' IDs to the correct form (<data type="ID">) commit by: fugalh I'm frequently appalled by the low regard you Earthmen have for life. -- Spock, "The Galileo Seven", stardate 2822.3 diffs: Index: fugalh/gdmxml/gdmxml.rnc diff -u fugalh/gdmxml/gdmxml.rnc:1.2 fugalh/gdmxml/gdmxml.rnc:1.3 --- fugalh/gdmxml/gdmxml.rnc:1.2 Mon Jul 1 21:22:07 2002 +++ fugalh/gdmxml/gdmxml.rnc Tue Jul 2 19:20:39 2002 @@ -1,11 +1,13 @@ # gdmxml - an XML schema for the GENTECH Genealogical Data Model # Copyright 2002 Hans Fugal -# ACTIVITY +# rng compatibility for ID/IDREF(S) +datatypes c = "http://relaxng.org/ns/compatibility/datatypes/1.0" +## ACTIVITY activity = element activity { - attribute id { text }, - attribute researcher_id { text }, + attribute id { c:ID }, + attribute researcher_id { c:IDREF }, attribute type { "administrative_task" | "search" }, attribute status { text }, attribute priority { text }, @@ -14,25 +16,17 @@ element comments { text } } -# PERSONA -persona = element persona { - attribute id { text }, - \persona_name, - element description_comments { text } -} -persona_name = element persona_name { text } - -# ADMINISTRATIVE-TASK +## ADMINISTRATIVE-TASK administrative_task = element administrative_task { - attribute activity_id { text } + attribute activity_id { c:IDREF } } -# ASSERTION +## ASSERTION assertion = element assertion { - attribute id { text }, - attribute surety_scheme_part_id { text }, - attribute researcher_id { text }, - attribute source_id { text }, + attribute id { c:ID }, + attribute surety_scheme_part_id { c:IDREF }, + attribute researcher_id { c:IDREF }, + attribute source_id { c:IDREF }, \assertion_subject, \assertion_subject, @@ -41,9 +35,259 @@ element disproved { empty }? } assertion_subject = element assertion_subject { - attribute id { text }, + attribute id { c:ID }, attribute type { "persona" | "event" | "characteristic" | "group" } } -# $Id: gdmxml.rnc,v 1.2 2002/07/02 03:22:07 fugalh Exp $ +## ASSERTION-ASSERTION +assertion_assertion = element assertion_assertion { + attribute assertion_id_low { text }, + attribute assertion_id_hight { text }, + attribute sequence_number { text } +} + +## CHARACTERISTIC +characteristic = element characteristic { + attribute id { c:ID }, + attribute place_id { c:IDREF }, + \characteristic_date, + element sort_order { "ascending" | "descending" | "none" }? +} +characteristic_date = element characteristic_date { \gen_date } + +## CHARACTERISTIC-PART +characteristic_part = element characteristic_part { + attribute id { c:ID }, + attribute characteristic_id { c:IDREF }, + attribute characteristic_part_type_id { c:IDREF }, + element name { text }, + attribute sequence_number { text } +} + +## CHARACTERISTIC-PART-TYPE +characteristic_part_type = element characteristic_part_type { + attribute id { c:ID }, + element name { text } +} + +## CITATION-PART +citation_part = element citation_part { + attribute source_id { c:IDREF }, + attribute citation_part_type_id { c:IDREF }, + element value { text } +} + +## CITATION-PART-TYPE +citation_part_type = element citation_part_type { + attribute id { c:ID }, + element name { text } +} + +## EVENT +event = element event { + attribute id { c:ID }, + attribute event_type_id { c:IDREF }, + attribute place_id { c:IDREF }, + element name { text }, + element date { \gen_date } +} + +## EVENT-TYPE +event_type = element event_type { + attribute id { c:ID }, + element name { text } +} + +## EVENT-TYPE-ROLE +event_type_role = element event_type_role { + attribute id { c:ID }, + attribute event_type_id { c:IDREF }, + element name { text } +} + +## GROUP +group = element group { + attribute id { c:ID }, + attribute group_type_id { c:IDREF }, + attribute place_id { c:IDREF }, + element name { text }, + element date { \gen_date }, + element criteria { text } +} + +## GROUP-TYPE +group_type = element group_type { + attribute id { c:ID }, + element name { text }, + element sort_order { "ascending" | "descending" | "none" }? +} + +## GROUP-TYPE-ROLE +group_type_role = element group_type_role { + attribute id { c:ID }, + attribute group_type_id { c:IDREF }, + element name { text }, + element sequence_number { text } +} + +## PERSONA +persona = element persona { + attribute id { c:ID }, + \persona_name, + element description_comments { text } +} +persona_name = element persona_name { text } + +## PLACE +place = element place { + attribute id { c:ID }, + element existence_date { \gen_date }, + element sort_order { "ascending" | "descending" | "none" }? +} + +## PLACE-PART +place_part = element place_part { + attribute place_part_type_id { c:IDREF }, + attribute place_id { c:IDREF }, + element name { text }, + element sequence_number { text } +} + +## PLACE-PART-TYPE +place_part_type = element place_part_type { + attribute id { c:ID }, + element name { text } +} + +## PROJECT +project = element project { + attribute id { c:ID }, + element name { text }, + element description { text }, + element client_data { text }? +} + +## REPOSITORY +repository = element repository { + attribute id { c:ID }, + attribute place_id { c:IDREF}, + element name { text }, + element address { text }?, + element phone { text }?, + element hours { text }?, + element comments { text }? +} + +## REPOSITORY-SOURCE +repository_source = element repository_source { + attribute repository_id { c:IDREF }, + attribute source_id { c:IDREF }, + attribute activity_id { c:IDREF }, + element call_number { text }, + element description { text } +} + +## REPRESENTATION +representation = element representation { + attribute source_id { c:IDREF }, + # mime-type here? + attribute representation_type_id { c:IDREF }, + # href? + element physical-file-code { text }, + # mime-type? perhaps for electronic but what about paper, tombstone, etc.? + element medium { text }, + # allow inline content that isn't text? + element content { text }, + element comments { text } +} + +## REPRESENTATION-TYPE +representation_type = element representation_type { + # it seems a mime-type might suffice for this... + # "Contains a list of the types of representations of evidence, such as text, + # a TIF bitmap, a GIF bitmap, a WAV file, or other forms." + attribute id { c:ID }, + element name { text } +} + +## RESEARCH-OBJECTIVE +research_objective = element research_objective { + attribute id { c:ID }, + attribute project_id { c:IDREF }, + element name { text }, + element description { text }, + element sequence_number { text }, + element priority { text }, + element status { text } +} + +## RESEARCH-OBJECTIVE-ACTIVITY +research_objective_activity = element research_objective_activity { + attribute research_objective_id { c:IDREF }, + attribute activity_id { c:IDREF } +} + +## RESEARCHER +researcher = element researcher { + attribute id { c:ID }, + element name { text }, + element address { text }, + element comments { text }? +} + +## RESEARCHER-PROJECT +researcher_project = element researcher_project { + attribute researcher_id { c:IDREF }, + attribute project_id { c:IDREF }, + element role { text }? +} + +## SEARCH +search = element search { + attribute activity_id { c:IDREF }, + attribute source_id { c:IDREF }, + attribute repository_id { c:IDREF }, + element searched_for { text } +} + +## SOURCE +source = element source { + attribute id { c:ID }, + attribute higher_source_id { c:IDREF }, + attribute subject_place_id { c:IDREF }, + attribute jurisdiction_place_id { c:IDREF }, + attribute researcher_id { c:IDREF }, + element subject_date { \gen_date }, + element comments { text } +} + +## SOURCE-GROUP +source_group = element source_group { + attribute id { c:ID }, + element name { text } +} + +## SOURCE-GROUP-SOURCE +source_group_source = element source_group_source { + attribute id { c:ID }, + attribute source_group_id { c:IDREF } +} + +## SURETY-SCHEME +surety_scheme = element surety_scheme { + attribute id { c:ID }, + element name { text }, + element description { text } +} + +## SURETY-SCHEME-PART +surety_scheme_part = element surety_scheme_part { + attribute id { c:ID }, + attribute surety_scheme_id { c:IDREF }, + element name { text }, + element description { text }, + element sequence_number { text } +} + +# $Id: gdmxml.rnc,v 1.3 2002/07/03 01:20:39 fugalh Exp $ # vim: shiftwidth=2 expandtab softtabstop=2 Index: fugalh/gdmxml/gdmxml.rng diff -u fugalh/gdmxml/gdmxml.rng:1.3 fugalh/gdmxml/gdmxml.rng:1.4 --- fugalh/gdmxml/gdmxml.rng:1.3 Mon Jul 1 21:22:07 2002 +++ fugalh/gdmxml/gdmxml.rng Tue Jul 2 19:20:39 2002 @@ -1,14 +1,19 @@ <?xml version="1.0" encoding="UTF-8"?> -<grammar xmlns="http://relaxng.org/ns/structure/1.0"> - <!-- - gdmxml - an XML schema for the GENTECH Genealogical Data Model - Copyright 2002 Hans Fugal - --> - <!-- ACTIVITY --> +<!-- + gdmxml - an XML schema for the GENTECH Genealogical Data Model + Copyright 2002 Hans Fugal +--> +<!-- rng compatibility for ID/IDREF(S) --> +<grammar xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" +xmlns="http://relaxng.org/ns/structure/1.0" +datatypeLibrary="http://relaxng.org/ns/compatibility/datatypes/1.0"> <define name="activity"> + <a:documentation>ACTIVITY</a:documentation> <element name="activity"> - <attribute name="id"/> - <attribute name="researcher_id"/> + <attribute name="id"> + <data type="ID"/> + </attribute> + <attribute name="researcher_id"> + <data type="IDREF"/> + </attribute> <attribute name="type"> <choice> <value>administrative_task</value> @@ -30,34 +35,29 @@ </element> </element> </define> - <!-- PERSONA --> - <define name="persona"> - <element name="persona"> - <attribute name="id"/> - <ref name="persona_name"/> - <element name="description_comments"> - <text/> - </element> - </element> - </define> - <define name="persona_name"> - <element name="persona_name"> - <text/> - </element> - </define> - <!-- ADMINISTRATIVE-TASK --> <define name="administrative_task"> + <a:documentation>ADMINISTRATIVE-TASK</a:documentation> <element name="administrative_task"> - <attribute name="activity_id"/> + <attribute name="activity_id"> + <data type="IDREF"/> + </attribute> </element> </define> - <!-- ASSERTION --> <define name="assertion"> + <a:documentation>ASSERTION</a:documentation> <element name="assertion"> - <attribute name="id"/> - <attribute name="surety_scheme_part_id"/> - <attribute name="researcher_id"/> - <attribute name="source_id"/> + <attribute name="id"> + <data type="ID"/> + </attribute> + <attribute name="surety_scheme_part_id"> + <data type="IDREF"/> + </attribute> + <attribute name="researcher_id"> + <data type="IDREF"/> + </attribute> + <attribute name="source_id"> + <data type="IDREF"/> + </attribute> <ref name="assertion_subject"/> <ref name="assertion_subject"/> <choice> @@ -80,7 +80,9 @@ </define> <define name="assertion_subject"> <element name="assertion_subject"> - <attribute name="id"/> + <attribute name="id"> + <data type="ID"/> + </attribute> <attribute name="type"> <choice> <value>persona</value> @@ -91,8 +93,553 @@ </attribute> </element> </define> + <define name="assertion_assertion"> + <a:documentation>ASSERTION-ASSERTION</a:documentation> + <element name="assertion_assertion"> + <attribute name="assertion_id_low"/> + <attribute name="assertion_id_hight"/> + <attribute name="sequence_number"/> + </element> + </define> + <define name="characteristic"> + <a:documentation>CHARACTERISTIC</a:documentation> + <element name="characteristic"> + <attribute name="id"> + <data type="ID"/> + </attribute> + <attribute name="place_id"> + <data type="IDREF"/> + </attribute> + <ref name="characteristic_date"/> + <optional> + <element name="sort_order"> + <choice> + <value>ascending</value> + <value>descending</value> + <value>none</value> + </choice> + </element> + </optional> + </element> + </define> + <define name="characteristic_date"> + <element name="characteristic_date"> + <ref name="gen_date"/> + </element> + </define> + <define name="characteristic_part"> + <a:documentation>CHARACTERISTIC-PART</a:documentation> + <element name="characteristic_part"> + <attribute name="id"> + <data type="ID"/> + </attribute> + <attribute name="characteristic_id"> + <data type="IDREF"/> + </attribute> + <attribute name="characteristic_part_type_id"> + <data type="IDREF"/> + </attribute> + <element name="name"> + <text/> + </element> + <attribute name="sequence_number"/> + </element> + </define> + <define name="characteristic_part_type"> + <a:documentation>CHARACTERISTIC-PART-TYPE</a:documentation> + <element name="characteristic_part_type"> + <attribute name="id"> + <data type="ID"/> + </attribute> + <element name="name"> + <text/> + </element> + </element> + </define> + <define name="citation_part"> + <a:documentation>CITATION-PART</a:documentation> + <element name="citation_part"> + <attribute name="source_id"> + <data type="IDREF"/> + </attribute> + <attribute name="citation_part_type_id"> + <data type="IDREF"/> + </attribute> + <element name="value"> + <text/> + </element> + </element> + </define> + <define name="citation_part_type"> + <a:documentation>CITATION-PART-TYPE</a:documentation> + <element name="citation_part_type"> + <attribute name="id"> + <data type="ID"/> + </attribute> + <element name="name"> + <text/> + </element> + </element> + </define> + <define name="event"> + <a:documentation>EVENT</a:documentation> + <element name="event"> + <attribute name="id"> + <data type="ID"/> + </attribute> + <attribute name="event_type_id"> + <data type="IDREF"/> + </attribute> + <attribute name="place_id"> + <data type="IDREF"/> + </attribute> + <element name="name"> + <text/> + </element> + <element name="date"> + <ref name="gen_date"/> + </element> + </element> + </define> + <define name="event_type"> + <a:documentation>EVENT-TYPE</a:documentation> + <element name="event_type"> + <attribute name="id"> + <data type="ID"/> + </attribute> + <element name="name"> + <text/> + </element> + </element> + </define> + <define name="event_type_role"> + <a:documentation>EVENT-TYPE-ROLE</a:documentation> + <element name="event_type_role"> + <attribute name="id"> + <data type="ID"/> + </attribute> + <attribute name="event_type_id"> + <data type="IDREF"/> + </attribute> + <element name="name"> + <text/> + </element> + </element> + </define> + <define name="group"> + <a:documentation>GROUP</a:documentation> + <element name="group"> + <attribute name="id"> + <data type="ID"/> + </attribute> + <attribute name="group_type_id"> + <data type="IDREF"/> + </attribute> + <attribute name="place_id"> + <data type="IDREF"/> + </attribute> + <element name="name"> + <text/> + </element> + <element name="date"> + <ref name="gen_date"/> + </element> + <element name="criteria"> + <text/> + </element> + </element> + </define> + <define name="group_type"> + <a:documentation>GROUP-TYPE</a:documentation> + <element name="group_type"> + <attribute name="id"> + <data type="ID"/> + </attribute> + <element name="name"> + <text/> + </element> + <optional> + <element name="sort_order"> + <choice> + <value>ascending</value> + <value>descending</value> + <value>none</value> + </choice> + </element> + </optional> + </element> + </define> + <define name="group_type_role"> + <a:documentation>GROUP-TYPE-ROLE</a:documentation> + <element name="group_type_role"> + <attribute name="id"> + <data type="ID"/> + </attribute> + <attribute name="group_type_id"> + <data type="IDREF"/> + </attribute> + <element name="name"> + <text/> + </element> + <element name="sequence_number"> + <text/> + </element> + </element> + </define> + <define name="persona"> + <a:documentation>PERSONA</a:documentation> + <element name="persona"> + <attribute name="id"> + <data type="ID"/> + </attribute> + <ref name="persona_name"/> + <element name="description_comments"> + <text/> + </element> + </element> + </define> + <define name="persona_name"> + <element name="persona_name"> + <text/> + </element> + </define> + <define name="place"> + <a:documentation>PLACE</a:documentation> + <element name="place"> + <attribute name="id"> + <data type="ID"/> + </attribute> + <element name="existence_date"> + <ref name="gen_date"/> + </element> + <optional> + <element name="sort_order"> + <choice> + <value>ascending</value> + <value>descending</value> + <value>none</value> + </choice> + </element> + </optional> + </element> + </define> + <define name="place_part"> + <a:documentation>PLACE-PART</a:documentation> + <element name="place_part"> + <attribute name="place_part_type_id"> + <data type="IDREF"/> + </attribute> + <attribute name="place_id"> + <data type="IDREF"/> + </attribute> + <element name="name"> + <text/> + </element> + <element name="sequence_number"> + <text/> + </element> + </element> + </define> + <define name="place_part_type"> + <a:documentation>PLACE-PART-TYPE</a:documentation> + <element name="place_part_type"> + <attribute name="id"> + <data type="ID"/> + </attribute> + <element name="name"> + <text/> + </element> + </element> + </define> + <define name="project"> + <a:documentation>PROJECT</a:documentation> + <element name="project"> + <attribute name="id"> + <data type="ID"/> + </attribute> + <element name="name"> + <text/> + </element> + <element name="description"> + <text/> + </element> + <optional> + <element name="client_data"> + <text/> + </element> + </optional> + </element> + </define> + <define name="repository"> + <a:documentation>REPOSITORY</a:documentation> + <element name="repository"> + <attribute name="id"> + <data type="ID"/> + </attribute> + <attribute name="place_id"> + <data type="IDREF"/> + </attribute> + <element name="name"> + <text/> + </element> + <optional> + <element name="address"> + <text/> + </element> + </optional> + <optional> + <element name="phone"> + <text/> + </element> + </optional> + <optional> + <element name="hours"> + <text/> + </element> + </optional> + <optional> + <element name="comments"> + <text/> + </element> + </optional> + </element> + </define> + <define name="repository_source"> + <a:documentation>REPOSITORY-SOURCE</a:documentation> + <element name="repository_source"> + <attribute name="repository_id"> + <data type="IDREF"/> + </attribute> + <attribute name="source_id"> + <data type="IDREF"/> + </attribute> + <attribute name="activity_id"> + <data type="IDREF"/> + </attribute> + <element name="call_number"> + <text/> + </element> + <element name="description"> + <text/> + </element> + </element> + </define> + <define name="representation"> + <a:documentation>REPRESENTATION </a:documentation> + <element name="representation"> + <attribute name="source_id"> + <data type="IDREF"/> + </attribute> + <!-- mime-type here? --> + <attribute name="representation_type_id"> + <data type="IDREF"/> + </attribute> + <!-- href? --> + <element name="physical-file-code"> + <text/> + </element> + <!-- mime-type? perhaps for electronic but what about paper, tombstone, etc.? +--> + <element name="medium"> + <text/> + </element> + <!-- allow inline content that isn't text? --> + <element name="content"> + <text/> + </element> + <element name="comments"> + <text/> + </element> + </element> + </define> + <define name="representation_type"> + <a:documentation>REPRESENTATION-TYPE</a:documentation> + <element name="representation_type"> + <!-- + it seems a mime-type might suffice for this... + "Contains a list of the types of representations of evidence, such as text, + a TIF bitmap, a GIF bitmap, a WAV file, or other forms." + --> + <attribute name="id"> + <data type="ID"/> + </attribute> + <element name="name"> + <text/> + </element> + </element> + </define> + <define name="research_objective"> + <a:documentation>RESEARCH-OBJECTIVE</a:documentation> + <element name="research_objective"> + <attribute name="id"> + <data type="ID"/> + </attribute> + <attribute name="project_id"> + <data type="IDREF"/> + </attribute> + <element name="name"> + <text/> + </element> + <element name="description"> + <text/> + </element> + <element name="sequence_number"> + <text/> + </element> + <element name="priority"> + <text/> + </element> + <element name="status"> + <text/> + </element> + </element> + </define> + <define name="research_objective_activity"> + <a:documentation>RESEARCH-OBJECTIVE-ACTIVITY</a:documentation> + <element name="research_objective_activity"> + <attribute name="research_objective_id"> + <data type="IDREF"/> + </attribute> + <attribute name="activity_id"> + <data type="IDREF"/> + </attribute> + </element> + </define> + <define name="researcher"> + <a:documentation>RESEARCHER</a:documentation> + <element name="researcher"> + <attribute name="id"> + <data type="ID"/> + </attribute> + <element name="name"> + <text/> + </element> + <element name="address"> + <text/> + </element> + <optional> + <element name="comments"> + <text/> + </element> + </optional> + </element> + </define> + <define name="researcher_project"> + <a:documentation>RESEARCHER-PROJECT</a:documentation> + <element name="researcher_project"> + <attribute name="researcher_id"> + <data type="IDREF"/> + </attribute> + <attribute name="project_id"> + <data type="IDREF"/> + </attribute> + <optional> + <element name="role"> + <text/> + </element> + </optional> + </element> + </define> + <define name="search"> + <a:documentation>SEARCH</a:documentation> + <element name="search"> + <attribute name="activity_id"> + <data type="IDREF"/> + </attribute> + <attribute name="source_id"> + <data type="IDREF"/> + </attribute> + <attribute name="repository_id"> + <data type="IDREF"/> + </attribute> + <element name="searched_for"> + <text/> + </element> + </element> + </define> + <define name="source"> + <a:documentation>SOURCE</a:documentation> + <element name="source"> + <attribute name="id"> + <data type="ID"/> + </attribute> + <attribute name="higher_source_id"> + <data type="IDREF"/> + </attribute> + <attribute name="subject_place_id"> + <data type="IDREF"/> + </attribute> + <attribute name="jurisdiction_place_id"> + <data type="IDREF"/> + </attribute> + <attribute name="researcher_id"> + <data type="IDREF"/> + </attribute> + <element name="subject_date"> + <ref name="gen_date"/> + </element> + <element name="comments"> + <text/> + </element> + </element> + </define> + <define name="source_group"> + <a:documentation>SOURCE-GROUP</a:documentation> + <element name="source_group"> + <attribute name="id"> + <data type="ID"/> + </attribute> + <element name="name"> + <text/> + </element> + </element> + </define> + <define name="source_group_source"> + <a:documentation>SOURCE-GROUP-SOURCE</a:documentation> + <element name="source_group_source"> + <attribute name="id"> + <data type="ID"/> + </attribute> + <attribute name="source_group_id"> + <data type="IDREF"/> + </attribute> + </element> + </define> + <define name="surety_scheme"> + <a:documentation>SURETY-SCHEME</a:documentation> + <element name="surety_scheme"> + <attribute name="id"> + <data type="ID"/> + </attribute> + <element name="name"> + <text/> + </element> + <element name="description"> + <text/> + </element> + </element> + </define> + <define name="surety_scheme_part"> + <a:documentation>SURETY-SCHEME-PART</a:documentation> + <element name="surety_scheme_part"> + <attribute name="id"> + <data type="ID"/> + </attribute> + <attribute name="surety_scheme_id"> + <data type="IDREF"/> + </attribute> + <element name="name"> + <text/> + </element> + <element name="description"> + <text/> + </element> + <element name="sequence_number"> + <text/> + </element> + </element> + </define> </grammar> <!-- - $Id: gdmxml.rng,v 1.3 2002/07/02 03:22:07 fugalh Exp $ + $Id: gdmxml.rng,v 1.4 2002/07/03 01:20:39 fugalh Exp $ vim: shiftwidth=2 expandtab softtabstop=2 --> _______________________________________________ gdmxml mailing list [EMAIL PROTECTED] http://fugal.net/cgi-bin/mailman/listinfo/gdmxml