<?xml version="1.0" encoding="ASCII"?>
<!-- <!DOCTYPE VersavantTMA SYSTEM "http://www.versavant.org/dtds/TMAConfigFile.dtd">-->
<!DOCTYPE VersavantTMA SYSTEM "../versavantTMA.dtd">

<!-- #####################################################################
     #####################################################################
     ## Copyright 2005 Steven R. Newcomb                                ##
     ##                                                                 ##
     ## This software is licensed under the Apache License, Version 2.0 ##
     ## (the "License"); you may not use this file except in compliance ##
     ## with the License.  Copies of the License are available at       ##
     ##        http://www.apache.org/licenses/LICENSE-2.0               ##
     ##                                                                 ##
     ## Unless required by applicable law or agreed to in writing,      ##
     ## software distributed under the License is distributed on an "AS ##
     ## IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either ##
     ## express or implied.  See the License for the specific language  ##
     ## governing permissions and limitations under the License.        ##
     ##                                                                 ##
     ## Copies of the source code and the license are available at      ##
     ##        http://www.versavant.org                                 ##
     #####################################################################
     ##################################################################### 


####################################
cvsRevision = "$Revision: 1.4 $" ##
####################################

-->


<VersavantTMA
VersavantTMADTDVersion="1"

  ><Desc>'TMA1' in the demonstration program 'demo.py'.</Desc


  ><ValueType ValueTypeName="string"
    ><Desc>General-purpose string value type.</Desc
    ><ValueIsNotOfType__
      functionModuleFilePath="${VSVEXECDIR}/Lib/VTstring.py"
      functionName="ValueIsNotOfType_string_"
    /><InstanceOf__ValueTypeToXMLContentString
      functionModuleFilePath="${VSVEXECDIR}/Lib/VTstring.py"
      functionName="InstanceOf_string_ValueTypeToXMLContentString"
    /><XMLContentStringToInstanceOf__ValueType
      functionModuleFilePath="${VSVEXECDIR}/Lib/VTstring.py"
      functionName="XMLContentStringToInstanceOf_string_ValueType"
  /></ValueType

  ><ValueType ValueTypeName="stringList"
    ><Desc>General-purpose list-of-strings value type.</Desc
    ><ValueIsNotOfType__
      functionModuleFilePath="${VSVEXECDIR}/Lib/VTstringList.py"
      functionName="ValueIsNotOfType_stringList_"
    /><InstanceOf__ValueTypeToXMLContentString
      functionModuleFilePath="${VSVEXECDIR}/Lib/VTstringList.py"
      functionName="InstanceOf_stringList_ValueTypeToXMLContentString"
    /><XMLContentStringToInstanceOf__ValueType
      functionModuleFilePath="${VSVEXECDIR}/Lib/VTstringList.py"
      functionName="XMLContentStringToInstanceOf_stringList_ValueType"
  /></ValueType

  ><ValueType ValueTypeName="proxyIdSet"
    ><Desc>General-purpose list-of-subject-proxies value type.</Desc
    ><ValueIsNotOfType__
      functionModuleFilePath="${VSVEXECDIR}/Lib/VTproxyIdList.py"
      functionName="ValueIsNotOfType_proxyIdList_"
      functionExtraArgsString="propertyClassName = propertyClass.propertyClassName"
    /><InstanceOf__ValueTypeToXMLContentString
      functionModuleFilePath="${VSVEXECDIR}/Lib/VTproxyIdList.py"
      functionName="InstanceOf_proxyIdList_ValueTypeToXMLContentString"
    /><XMLContentStringToInstanceOf__ValueType
      functionModuleFilePath="${VSVEXECDIR}/Lib/VTproxyIdList.py"
      functionName="XMLContentStringToInstanceOf_proxyIdList_ValueType"
  /></ValueType


  ><PropertyClass PropertyClassName="Book" ValueType="string"
    ><Desc>Subject is book identified by string "[title] by [author name]".</Desc
    ><Add__PropToOverheadDict
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstring.py"
      functionName="Add_string_PropToOverheadDict"
    /><Remove__PropFromOverheadDict
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstring.py"
      functionName="Remove_string_PropFromOverheadDict"
    /><Merge__PropertyValues
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstring.py"
      functionName="Merge_string_PropertyValues"
    /><ValuesOf__PropertyInstancesAreSignificantlyDifferent
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstring.py"
      functionName="ValuesOf_string_PropertyInstancesAreSignificantlyDifferent"
    /><MergeProxiesBecause__PropertyInstancesSpecifySameSubject
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstring.py"
      functionName="MergeProxiesBecause_string_PropertyInstancesSpecifySameSubject"
    /><ProxiesWith__ValueNotSignificantlyDifferentFrom
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstring.py"
      functionName="ProxiesOfSubjectIdentifiedBy_string_Value"
  /></PropertyClass

  ><PropertyClass PropertyClassName="PersonOrOrganization" ValueType="string"
    ><Desc>Subject is human being or organization identified by his/her/its name.</Desc
    ><Add__PropToOverheadDict
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstring.py"
      functionName="Add_string_PropToOverheadDict"
    /><Remove__PropFromOverheadDict
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstring.py"
      functionName="Remove_string_PropFromOverheadDict"
    /><Merge__PropertyValues
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstring.py"
      functionName="Merge_string_PropertyValues"
    /><ValuesOf__PropertyInstancesAreSignificantlyDifferent
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstring.py"
      functionName="ValuesOf_string_PropertyInstancesAreSignificantlyDifferent"
    /><MergeProxiesBecause__PropertyInstancesSpecifySameSubject
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstring.py"
      functionName="MergeProxiesBecause_string_PropertyInstancesSpecifySameSubject"
    /><ProxiesWith__ValueNotSignificantlyDifferentFrom
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstring.py"
      functionName="ProxiesOfSubjectIdentifiedBy_string_Value"
  /></PropertyClass

  ><PropertyClass PropertyClassName="BookPublisherName" ValueType="string"
    ><Desc>Appearing in a proxy for a book, the name of its publisher.</Desc
    ><Add__PropToOverheadDict
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstring.py"
      functionName="Add_string_PropToOverheadDict"
    /><Remove__PropFromOverheadDict
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstring.py"
      functionName="Remove_string_PropFromOverheadDict"
    /><Merge__PropertyValues
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstring.py"
      functionName="Merge_string_PropertyValues"
    /><ValuesOf__PropertyInstancesAreSignificantlyDifferent
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstring.py"
      functionName="ValuesOf_string_PropertyInstancesAreSignificantlyDifferent"
    /><ContextOf__PropertyIsInvalid
      functionModuleFilePath="${VSVEXECDIR}/Lib/proxyLacksFellowProperty.py"
      functionName="ContextOf__PropertyIsInvalid"
      functionExtraArgsString="'Book'"
    /><ProxiesWith__ValueNotSignificantlyDifferentFrom
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstring.py"
      functionName="ProxiesOfSubjectIdentifiedBy_string_Value"
  /></PropertyClass

  ><PropertyClass PropertyClassName="BookTitle" ValueType="string"
    ><Desc>Appearing in a proxy for a book, the name of its publisher.</Desc
    ><Add__PropToOverheadDict
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstring.py"
      functionName="Add_string_PropToOverheadDict"
    /><Remove__PropFromOverheadDict
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstring.py"
      functionName="Remove_string_PropFromOverheadDict"
    /><Merge__PropertyValues
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstring.py"
      functionName="Merge_string_PropertyValues"
    /><ValuesOf__PropertyInstancesAreSignificantlyDifferent
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstring.py"
      functionName="ValuesOf_string_PropertyInstancesAreSignificantlyDifferent"
    /><ContextOf__PropertyIsInvalid
      functionModuleFilePath="${VSVEXECDIR}/Lib/proxyLacksFellowProperty.py"
      functionName="ContextOf__PropertyIsInvalid"
      functionExtraArgsString="'Book'"
    /><ProxiesWith__ValueNotSignificantlyDifferentFrom
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstring.py"
      functionName="ProxiesOfSubjectIdentifiedBy_string_Value"
  /></PropertyClass

  ><PropertyClass PropertyClassName="BookPublisher" ValueType="proxyIdSet"
    ><Desc>Appearing in a proxy for a book, the proxy(ies) whose subject is its publisher.</Desc
    ><Add__PropToOverheadDict
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"
      functionName="Add_proxyIdSet_PropToOverheadDict"
    /><Remove__PropFromOverheadDict
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"
      functionName="Remove_proxyIdSet_PropFromOverheadDict"
    /><Merge__PropertyValues
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"
      functionName="Merge_proxyIdSet_PropertyValues"
    /><ValuesOf__PropertyInstancesAreSignificantlyDifferent
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"
      functionName="ValuesOf_proxyIdSet_PropertyInstancesAreSignificantlyDifferent"
    /><ContextOf__PropertyIsInvalid
      functionModuleFilePath="${VSVEXECDIR}/Lib/proxyLacksFellowProperty.py"
      functionName="ContextOf__PropertyIsInvalid"
      functionExtraArgsString="'Book'"
    /><ProxiesWith__ValueNotSignificantlyDifferentFrom
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"
      functionName="ProxiesOfSubjectIdentifiedBy_proxyIdSet_Value"
    /><UpdateProxyReferencesIn__Value
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"
      functionName="UpdateProxyReferencesIn_proxyIdSet_Value"
  /></PropertyClass

  ><PropertyClass PropertyClassName="BookAuthorNames" ValueType="stringList"
    ><Desc>Appearing in a proxy for a book, a list of the names of its authors.</Desc
    ><Add__PropToOverheadDict
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstringList.py"
      functionName="Add_stringList_PropToOverheadDict"
    /><Remove__PropFromOverheadDict
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstringList.py"
      functionName="Remove_stringList_PropFromOverheadDict"
    /><Merge__PropertyValues
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstringList.py"
      functionName="Merge_stringList_PropertyValues"
    /><ValuesOf__PropertyInstancesAreSignificantlyDifferent
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstringList.py"
      functionName="ValuesOf_stringList_PropertyInstancesAreSignificantlyDifferent"
    /><ContextOf__PropertyIsInvalid
      functionModuleFilePath="${VSVEXECDIR}/Lib/proxyLacksFellowProperty.py"
      functionName="ContextOf__PropertyIsInvalid"
      functionExtraArgsString="'Book'"
    /><ProxiesWith__ValueNotSignificantlyDifferentFrom
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCstringList.py"
      functionName="ProxiesOfSubjectIdentifiedBy_stringList_Value"
  /></PropertyClass

  ><PropertyClass PropertyClassName="BookAuthors" ValueType="proxyIdSet"
    ><Desc>Appearing in a proxy for a book, proxy(ies) whose subjects is/are its author(s).</Desc
    ><Add__PropToOverheadDict
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"
      functionName="Add_proxyIdSet_PropToOverheadDict"
    /><Remove__PropFromOverheadDict
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"
      functionName="Remove_proxyIdSet_PropFromOverheadDict"
    /><Merge__PropertyValues
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"
      functionName="Merge_proxyIdSet_PropertyValues"
    /><ValuesOf__PropertyInstancesAreSignificantlyDifferent
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"
      functionName="ValuesOf_proxyIdSet_PropertyInstancesAreSignificantlyDifferent"
    /><ContextOf__PropertyIsInvalid
      functionModuleFilePath="${VSVEXECDIR}/Lib/proxyLacksFellowProperty.py"
      functionName="ContextOf__PropertyIsInvalid"
      functionExtraArgsString="'Book'"
    /><ProxiesWith__ValueNotSignificantlyDifferentFrom
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"
      functionName="ProxiesOfSubjectIdentifiedBy_proxyIdSet_Value"
    /><UpdateProxyReferencesIn__Value
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"
      functionName="UpdateProxyReferencesIn_proxyIdSet_Value"
  /></PropertyClass

  ><PropertyClass PropertyClassName="BooksAuthored" ValueType="proxyIdSet"
    ><Desc>Proxy(ies) whose subjects is/are the book(s) authored by the person or organiztion.</Desc
    ><Add__PropToOverheadDict
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"
      functionName="Add_proxyIdSet_PropToOverheadDict"
    /><Remove__PropFromOverheadDict
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"
      functionName="Remove_proxyIdSet_PropFromOverheadDict"
    /><Merge__PropertyValues
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"
      functionName="Merge_proxyIdSet_PropertyValues"
    /><ValuesOf__PropertyInstancesAreSignificantlyDifferent
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"
      functionName="ValuesOf_proxyIdSet_PropertyInstancesAreSignificantlyDifferent"
    /><ContextOf__PropertyIsInvalid
      functionModuleFilePath="${VSVEXECDIR}/Lib/proxyLacksFellowProperty.py"
      functionName="ContextOf__PropertyIsInvalid"
      functionExtraArgsString="'PersonOrOrganization'"
    /><ProxiesWith__ValueNotSignificantlyDifferentFrom
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"
      functionName="ProxiesOfSubjectIdentifiedBy_proxyIdSet_Value"
    /><UpdateProxyReferencesIn__Value
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"
      functionName="UpdateProxyReferencesIn_proxyIdSet_Value"
  /></PropertyClass

  ><PropertyClass PropertyClassName="BooksPublished" ValueType="proxyIdSet"
    ><Desc>Proxy(ies) whose subjects is/are the book(s) published by the person or organization.</Desc
    ><Add__PropToOverheadDict
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"
      functionName="Add_proxyIdSet_PropToOverheadDict"
    /><Remove__PropFromOverheadDict
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"
      functionName="Remove_proxyIdSet_PropFromOverheadDict"
    /><Merge__PropertyValues
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"
      functionName="Merge_proxyIdSet_PropertyValues"
    /><ValuesOf__PropertyInstancesAreSignificantlyDifferent
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"
      functionName="ValuesOf_proxyIdSet_PropertyInstancesAreSignificantlyDifferent"
    /><ContextOf__PropertyIsInvalid
      functionModuleFilePath="${VSVEXECDIR}/Lib/proxyLacksFellowProperty.py"
      functionName="ContextOf__PropertyIsInvalid"
      functionExtraArgsString="'PersonOrOrganization'"
    /><ProxiesWith__ValueNotSignificantlyDifferentFrom
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"
      functionName="ProxiesOfSubjectIdentifiedBy_proxyIdSet_Value"
    /><UpdateProxyReferencesIn__Value
      functionModuleFilePath="${VSVEXECDIR}/Lib/PCproxyIdSet.py"
      functionName="UpdateProxyReferencesIn_proxyIdSet_Value"
  /></PropertyClass



  ><ConferralRule ConferralRuleName="inferFromBookProperties"
      functionModuleFilePath="inferFromBookProperties.py"
      functionName="inferFromBookProperties"
      functionExtraArgsString=""
    ><Desc>From BookId property, confers PublisherName, AuthorNames, Authors, Publisher, PersonNameSIP, BooksAuthored, Relationships, and PublisherNameSIP properties.</Desc
  ></ConferralRule

></VersavantTMA>


