Using CAM Editor version 3.2 we are working on converting to CAM the XSDs from FBI EBTS, NIST ITL-1 and NIEM. These are all linked to biometrics domain.
Unfortunately we are not able to do the conversion.
We saw other discussions regarding the necessary changes in XSD in order to create NIEM dictionaries.
Is NIEM biometrics domain in work? Are there hopes to get the corresponding dictionaries?
Thank you.
Cristian
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Thanks for the post. We are working separately on XSD export for Oracle SOA suite / JAXB processing. I have been full time on a project course this week - so will be next week when I have time to complete that coding.
For your request - I'm assuming you want NIEM 3+ for Biometrics. The process for creating the dictionaries can be done by importing the base NIEM schema. The caveat is that you need to flag indirectly recursive components. These are not documented so its a manual process inserting xsd:annotation markers on these items. I can provide documentation on the procedure to use.
On converting the existing EBTS schema - what is the issue? Is the same thing? That when you attempt to import the XSD the process runs - then crashes when loops?
If so - the same procedure will work there too - marking the recursive components - so the import knows where to stop and move to the next set of components.
If this is all making sense - then I can point you to the procedure needed to handle recursive schema components next.
Thanks, David
p.s. Very much interested in getting you to successful outcomes on this. This has been on the "to do" list for a while.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
We continued the work on this and we were able to successfully import the XSD from ANSI/NIST-ITL.
Now we are focusing on EBTS schema (which imports ITL schema) but here we have another issue. Even if EBTS schema contains a lot of definitions, the root element for the XML data files is still one taken from ITL schema (namely NISTBiometricInformationExchangePackage).
When we try to create the CAM from EBTS schema, no matter what root element we choose, the ITL definitions are not present in the CAM. What should we do?
Is there a way to merge the CAM for ITL with the CAM for EBTS?
Thank you.
Cristian
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Cristian, good progress. Couple of things to try. First - pick the * option for "all" (its at the bottom of the drop down list) instead of a particular root element. Sounds like your schema is a collection of types. If you pick a type as a root element - nothing is imported. Another option is to create an element declaration that references the type you want imported. Between these two you should be able to collect what you need.
David
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Cristian, thought of a 3rd thing to check here - make sure the xsd:import / xsd:includes are working correctly between the collections of schema.
You can check this in the console log window in CAM. Scroll back up to the top - if you see any error file not found reports - then need to resolve the relative paths.
To do this - make sure you have chosen the right Schema Root Directory - it may not be the directory where the exchange schema is located, but back up the folder structure - to make the relative path offsets all work; paths like ../../../imports/here and such can be tricky.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
We weren't able to make it work, yet. Anyway, we made a subset of the schema files (with a lot of definition taken out). See the attachment. It contains 3 XSD files: biom, itl (which imports biom) and fbi_ebts (which imports biom and itl). The tricky stuff here is that in fbi_ebts there is a substitution (via substitutionGroup) for biom:TransactionCategoryCode using the new ebts:TransactionCategoryCode.
Here are the issues:
1. When we try to create CAM template from fbi_ebts, the imported definitions do not appear at all.
2. When we are doing dictionary for fbi_ebts, the element TOTCode (and its type TOTCodeType) appear in the xml file. When loading the dictionary in CAMEditor, the element and the type are not present.
3. When merging dictionary of itl with the dictionary from fbi_ebts, biom:TransactionCategoryCode is not replaced with the new ebts:TransactionCategoryCode.
Can you give us some directions for the above issues?
Thank You.
Cristian
I was able to import TransactionCategoryCode with no issues - attached template.
Also please see attached diagram from Oxygen of definition of TransactionCategoryCode.
Sadly this is nothing more than a "shopping list" with triple nested recursive substitutions. XSD syntax allows this but it really is not useful. Software simply cannot guess what people might want to do - so CAM import errs on side of caution - and goes with the only real concrete definitions. If you want more codelist values - you can add those enumeration sets to the base definition. In the CAM template it is MUCH clearly what is going on - you have concrete restrictValues or lookup functions that you can attach conditional rules to (BTW the editor lets you convert restrictValues to lookup if you need). So this allows you to pick the correct codelist based on who sent you the particular message.
Dictionary merging - the namespaces are significant - it may be prudent to simply keep them as separate entities - and have them in a dictionary collection.
Loading dictionaries - I know we made changes to how dictionary components are generated for the State Department. My guess is that they are orphans - they are not actually referenced by anything directly and that is why the Java object that views the dictionary is not showing them. You can check that by looking at the dictionary property for context="{xpath/item}" and seeing if anything actually references those.
Once again I appreciate your patiences. Actually creating real canonical components from NIEM schema - much of which is ephemeral XSD syntax fragments, is challenging. But I sense you are making progress toward what you really want - reusable components based on your business exchange requirements.
Thanks, David
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I was able to import TransactionCategoryCode with no issues - attached template.
Also please see attached diagram from Oxygen of definition of TransactionCategoryCode.
Sadly this is nothing more than a "shopping list" with triple nested recursive substitutions. XSD syntax allows this but it really is not useful. Software simply cannot guess what people might want to do - so CAM import errs on side of caution - and goes with the only real concrete definitions. If you want more codelist values - you can add those enumeration sets to the base definition. In the CAM template it is MUCH clearly what is going on - you have concrete restrictValues or lookup functions that you can attach conditional rules to (BTW the editor lets you convert restrictValues to lookup if you need). So this allows you to pick the correct codelist based on who sent you the particular message.
Dictionary merging - the namespaces are significant - it may be prudent to simply keep them as separate entities - and have them in a dictionary collection.
Loading dictionaries - I know we made changes to how dictionary components are generated for the State Department. My guess is that they are orphans - they are not actually referenced by anything directly and that is why the Java object that views the dictionary is not showing them. You can check that by looking at the dictionary property for context="{xpath/item}" and seeing if anything actually references those.
Once again I appreciate your patiences. Actually creating real canonical components from NIEM schema - much of which is ephemeral XSD syntax fragments, is challenging. But I sense you are making progress toward what you really want - reusable components based on your business exchange requirements.
Regarding the item 2 from your previous response, if those orphans do not show in the Dictionaries window, how can we add them in a CAM file?
Is there another way to copy elements definitions from a CAM file to another?
Thank you.
Cristian
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi,
Using CAM Editor version 3.2 we are working on converting to CAM the XSDs from FBI EBTS, NIST ITL-1 and NIEM. These are all linked to biometrics domain.
Unfortunately we are not able to do the conversion.
We saw other discussions regarding the necessary changes in XSD in order to create NIEM dictionaries.
Is NIEM biometrics domain in work? Are there hopes to get the corresponding dictionaries?
Thank you.
Cristian
Cristian,
Thanks for the post. We are working separately on XSD export for Oracle SOA suite / JAXB processing. I have been full time on a project course this week - so will be next week when I have time to complete that coding.
For your request - I'm assuming you want NIEM 3+ for Biometrics. The process for creating the dictionaries can be done by importing the base NIEM schema. The caveat is that you need to flag indirectly recursive components. These are not documented so its a manual process inserting xsd:annotation markers on these items. I can provide documentation on the procedure to use.
On converting the existing EBTS schema - what is the issue? Is the same thing? That when you attempt to import the XSD the process runs - then crashes when loops?
If so - the same procedure will work there too - marking the recursive components - so the import knows where to stop and move to the next set of components.
If this is all making sense - then I can point you to the procedure needed to handle recursive schema components next.
Thanks, David
p.s. Very much interested in getting you to successful outcomes on this. This has been on the "to do" list for a while.
Hi,
We continued the work on this and we were able to successfully import the XSD from ANSI/NIST-ITL.
Now we are focusing on EBTS schema (which imports ITL schema) but here we have another issue. Even if EBTS schema contains a lot of definitions, the root element for the XML data files is still one taken from ITL schema (namely NISTBiometricInformationExchangePackage).
When we try to create the CAM from EBTS schema, no matter what root element we choose, the ITL definitions are not present in the CAM. What should we do?
Is there a way to merge the CAM for ITL with the CAM for EBTS?
Thank you.
Cristian
Cristian, good progress. Couple of things to try. First - pick the * option for "all" (its at the bottom of the drop down list) instead of a particular root element. Sounds like your schema is a collection of types. If you pick a type as a root element - nothing is imported. Another option is to create an element declaration that references the type you want imported. Between these two you should be able to collect what you need.
David
Cristian, thought of a 3rd thing to check here - make sure the xsd:import / xsd:includes are working correctly between the collections of schema.
You can check this in the console log window in CAM. Scroll back up to the top - if you see any error file not found reports - then need to resolve the relative paths.
To do this - make sure you have chosen the right Schema Root Directory - it may not be the directory where the exchange schema is located, but back up the folder structure - to make the relative path offsets all work; paths like ../../../imports/here and such can be tricky.
Hi,
We weren't able to make it work, yet. Anyway, we made a subset of the schema files (with a lot of definition taken out). See the attachment. It contains 3 XSD files: biom, itl (which imports biom) and fbi_ebts (which imports biom and itl). The tricky stuff here is that in fbi_ebts there is a substitution (via substitutionGroup) for biom:TransactionCategoryCode using the new ebts:TransactionCategoryCode.
Here are the issues:
1. When we try to create CAM template from fbi_ebts, the imported definitions do not appear at all.
2. When we are doing dictionary for fbi_ebts, the element TOTCode (and its type TOTCodeType) appear in the xml file. When loading the dictionary in CAMEditor, the element and the type are not present.
3. When merging dictionary of itl with the dictionary from fbi_ebts, biom:TransactionCategoryCode is not replaced with the new ebts:TransactionCategoryCode.
Can you give us some directions for the above issues?
Thank You.
Cristian
Cristian, thank you have providing the example. I will check into the items you have raised and report back shortly.
David
Cristian, OK I can see what is happening here.
I was able to import TransactionCategoryCode with no issues - attached template.
Also please see attached diagram from Oxygen of definition of TransactionCategoryCode.
Sadly this is nothing more than a "shopping list" with triple nested recursive substitutions. XSD syntax allows this but it really is not useful. Software simply cannot guess what people might want to do - so CAM import errs on side of caution - and goes with the only real concrete definitions. If you want more codelist values - you can add those enumeration sets to the base definition. In the CAM template it is MUCH clearly what is going on - you have concrete restrictValues or lookup functions that you can attach conditional rules to (BTW the editor lets you convert restrictValues to lookup if you need). So this allows you to pick the correct codelist based on who sent you the particular message.
Dictionary merging - the namespaces are significant - it may be prudent to simply keep them as separate entities - and have them in a dictionary collection.
Loading dictionaries - I know we made changes to how dictionary components are generated for the State Department. My guess is that they are orphans - they are not actually referenced by anything directly and that is why the Java object that views the dictionary is not showing them. You can check that by looking at the dictionary property for context="{xpath/item}" and seeing if anything actually references those.
Once again I appreciate your patiences. Actually creating real canonical components from NIEM schema - much of which is ephemeral XSD syntax fragments, is challenging. But I sense you are making progress toward what you really want - reusable components based on your business exchange requirements.
Thanks, David
Cristian, OK I can see what is happening here.
I was able to import TransactionCategoryCode with no issues - attached template.
Also please see attached diagram from Oxygen of definition of TransactionCategoryCode.
Sadly this is nothing more than a "shopping list" with triple nested recursive substitutions. XSD syntax allows this but it really is not useful. Software simply cannot guess what people might want to do - so CAM import errs on side of caution - and goes with the only real concrete definitions. If you want more codelist values - you can add those enumeration sets to the base definition. In the CAM template it is MUCH clearly what is going on - you have concrete restrictValues or lookup functions that you can attach conditional rules to (BTW the editor lets you convert restrictValues to lookup if you need). So this allows you to pick the correct codelist based on who sent you the particular message.
Dictionary merging - the namespaces are significant - it may be prudent to simply keep them as separate entities - and have them in a dictionary collection.
Loading dictionaries - I know we made changes to how dictionary components are generated for the State Department. My guess is that they are orphans - they are not actually referenced by anything directly and that is why the Java object that views the dictionary is not showing them. You can check that by looking at the dictionary property for context="{xpath/item}" and seeing if anything actually references those.
Once again I appreciate your patiences. Actually creating real canonical components from NIEM schema - much of which is ephemeral XSD syntax fragments, is challenging. But I sense you are making progress toward what you really want - reusable components based on your business exchange requirements.
Thanks, David
Hi,
Regarding the item 2 from your previous response, if those orphans do not show in the Dictionaries window, how can we add them in a CAM file?
Is there another way to copy elements definitions from a CAM file to another?
Thank you.
Cristian