Module: Mrdf_Repository
- Defined in:
- lib/ontomde-uml2/select.rb,
lib/ontomde-uml2/umlx.rb,
lib/ontomde-uml2/umlx.rb,
lib/ontomde-uml2/umlx.rb,
lib/ontomde-uml2/umlx.rb,
lib/ontomde-uml2/umlx.rb,
lib/ontomde-uml2/check.rb,
lib/ontomde-uml2/nocode.rb,
lib/ontomde-uml2/shortcut.rb,
lib/ontomde-uml2/component.rb,
lib/ontomde-uml2/dotDiagram.rb,
lib/ontomde-uml2/kb/protege.rb,
lib/ontomde-uml2/autoImplement.rb,
lib/ontomde-uml2/autoImplement.rb,
lib/ontomde-uml2/salvageErrors.rb,
lib/ontomde-uml2/versionSignature.rb,
lib/ontomde-uml2/multipleInheritance.rb
Overview
adds a version check interface signature
Constant Summary collapse
- UMLX_IGNORE_MODELS =
Model name to be ignored Typicaly containing metamodels
["UML2"]
- UMLX_RESERVED_MODEL_URI =
"http://xmda-reserved"
- PROJECT_FILE_SUFFIX =
""
- SOA_URI =
"#{NS_SOA_CLASS}#soa"
- DATAFILTER_URI =
"#{NS_SOA_CLASS}#dataFilter"
- DATAFILTERNAME_URI =
"#{NS_SOA_CLASS}#dataFilterName"
- SERVICE_URI =
"#{NS_SOA_CLASS}#service"
- ROOT_URI =
"#{NS_RDF_2000}rdf-schema#Resource"
- PREDEF_DATAFILTER_URI =
"#{NS_SOA_CLASS}#predefinedDataFilter"
- CUSTOM_DATAFILTER_URI =
"#{NS_SOA_CLASS}#customDataFilter"
- DATAFILTER_RULE_URI =
"#{NS_SOA_CLASS}#dataFilterRule"
- DATAFILTER_PROPERTY_RULE_URI =
"#{NS_SOA_CLASS}#dataPropertyFilterRule"
- DATAFILTER_PARAMETER_RULE_URI =
"#{NS_SOA_CLASS}#dataParameterFilterRule"
- TARGETDATAFILTER_URI =
"#{NS_SOA_CLASS}#useDataFilter"
- SOURCEDATAFILTER_URI =
"#{NS_SOA_CLASS}#sourceDataFilter"
- FILTERED_FIELD_URI =
"#{NS_SOA_CLASS}#filteredProperty"
- SOA_URI_SET =
list of SOA URI for use in exclusion list in rdfToJava
[ PREDEF_DATAFILTER_URI, CUSTOM_DATAFILTER_URI, DATAFILTER_RULE_URI, DATAFILTER_PROPERTY_RULE_URI, DATAFILTER_PARAMETER_RULE_URI, TARGETDATAFILTER_URI, SOURCEDATAFILTER_URI, FILTERED_FIELD_URI ]
- @@message_umlx_model_not_found_displayed =
flag used to display found multiple models message only once
false
Instance Method Summary collapse
-
#addPackageHierarchy(usedPackage, package) ⇒ Object
add package and its parent hierarchy.
-
#generateMetaEditor(targetFile) ⇒ Object
generates Meta editor project for protege 2000.
-
#generateProtegeKbProject(targetFile) ⇒ Object
generates protege 2000 knowledge base project file and RDF file.
-
#generateProtegeKbRDFS(targetFile) ⇒ Object
generates Protege 2000 RDFS file of a knowledge base project.
-
#generateRDFS(targetFile) ⇒ Object
generates protege 2000 knowledge base project files.
-
#kbRDFS_footer ⇒ Object
Protege 2000 RDFS knowledge base file footer.
-
#kbRDFS_header ⇒ Object
Protege 2000 RDFS knowledge base file header.
- #kbRDFS_writeComponents ⇒ Object
- #uml_addVersionSignature ⇒ Object
-
#uml_Class_all(ret = Set.new) ⇒ Object
search and returns every uml class contained in the current repository.
-
#uml_Component_all(ret = Set.new) ⇒ Object
search and returns every uml component contained in the current repository.
-
#uml_Enumeration_all(ret = Set.new) ⇒ Object
search and returns every uml Enumeration contained in the current repository.
-
#uml_Model_all ⇒ Object
search and returns every uml model contained in the repository.:w.
-
#umlx_autoCreateImplicitComponent! ⇒ Object
generate implicit components from methods defined on domain class.
- #umlx_autoImplementOperation! ⇒ Object
- #umlx_autoImplementProperty! ⇒ Object
- #umlx_checkAbstractAndInheritance ⇒ Object
- #umlx_classesWithMultipleInheritance(ret = Set.new) ⇒ Object
- #umlx_composition_dotDiagram ⇒ Object
-
#umlx_computeIsAnException ⇒ Object
TO BE DONE.
- #umlx_generateCompositonDotDiagram ⇒ Object
-
#umlx_makeCompositionNavigable! ⇒ Object
Modify every composition so navigability is enabled from composante to composite.
- #umlx_mapMultipleInheritanceToInterface! ⇒ Object
- #umlx_MarkAllAsbusinessMethod! ⇒ Object
-
#umlx_model ⇒ Object
return first uml model found in model.
-
#umlx_processShortcuts! ⇒ Object
Transform a set of UML models with links into a single model with uml_ownedMember.
-
#umlx_processUnrootedElements! ⇒ Object
attached unrooted elements to umlx_reserved_model This processing is necessery to handle properly incremental export for enterprise architect.
-
#umlx_pruneEmptyEnums! ⇒ Object
prune empty enumeration (without literal) with a dummy value this can be usefull to hide bug in third party sofware which do not support this.
- #umlx_removeNoCode! ⇒ Object
- #umlx_reserved_model ⇒ Object
-
#umlx_sanitizeAbstractsInHierarchy! ⇒ Object
A properly behaved model should not have inheritance from non abstract class.
-
#umlx_tryToSalvageErrors! ⇒ Object
Tries to fix a broken UML model.
Instance Method Details
#addPackageHierarchy(usedPackage, package) ⇒ Object
add package and its parent hierarchy
473 474 475 476 477 478 479 |
# File 'lib/ontomde-uml2/kb/protege.rb', line 473 def addPackageHierarchy(usedPackage,package) return unless package.kind_of?(Muml_Package) return if usedPackage.include?(package) return if package.prot_ignorePackage? usedPackage.add(package) addPackageHierarchy(usedPackage,package.umlx_owner_one) end |
#generateMetaEditor(targetFile) ⇒ Object
generates Meta editor project for protege 2000
410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 |
# File 'lib/ontomde-uml2/kb/protege.rb', line 410 def generateMetaEditor(targetFile) #log.debug "targetFile=#{targetFile}" s=UML2_RDFS_NT_FILE t="#{targetFile}_meta.rdfs.nt" FileUtils.copy(s,t) if File.exist?(targetFile+"_meta.rdfs") log.info "Overwriting existing file: #{targetFile}_meta.rdfs" end translateToXML(targetFile+"_meta.rdfs.nt",targetFile+"_meta.rdfs") if File.exist?(targetFile+"_meta.rdf") log.info "Using already existing file: #{targetFile}_meta.rdf" else translateToXML(targetFile.to_s,targetFile+"_meta.rdf") end if File.exist?(targetFile+"_meta.pprj") log.info "Using already existing file: #{targetFile}_meta.pprj" else ext="pprj" log.info "creating .#{ext}" mtk_writeSession(targetFile+"_meta.#{ext}") { File.open("#{File.dirname(__FILE__)}/MYMODEL_meta.#{ext}",'r') { |src| src.each {|line| x=line.gsub(/MYMODEL_meta/,"#{File.basename(targetFile)}_meta") write(x) } } } end end |
#generateProtegeKbProject(targetFile) ⇒ Object
generates protege 2000 knowledge base project file and RDF file. internal used
454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 |
# File 'lib/ontomde-uml2/kb/protege.rb', line 454 def generateProtegeKbProject(targetFile) ["pprj","rdf"].each { |ext| if File.exist?(targetFile+"#{PROJECT_FILE_SUFFIX}.#{ext}") log.debug { "Using already existing file: #{ext}" } next end log.info "creating .#{ext}" mtk_writeSession(targetFile+"#{PROJECT_FILE_SUFFIX}.#{ext}") { File.open("#{File.dirname(__FILE__)}/MYMODEL_kb.#{ext}",'r') { |src| src.each {|line| x=line.gsub(/MYMODEL_kb/,"#{File.basename(targetFile)}#{PROJECT_FILE_SUFFIX}") write(x) } } } } end |
#generateProtegeKbRDFS(targetFile) ⇒ Object
generates Protege 2000 RDFS file of a knowledge base project.
482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 |
# File 'lib/ontomde-uml2/kb/protege.rb', line 482 def generateProtegeKbRDFS(targetFile) targetFileRDFS=targetFile+"#{PROJECT_FILE_SUFFIX}.rdfs.nt" targetFileXML=targetFile+"#{PROJECT_FILE_SUFFIX}.rdfs" #mark temporary file for deletion mtk_addTempFileToDelete(targetFileRDFS) usedPackage=Set.new mtk_writeSession(targetFileRDFS) { write(kbRDFS_header) uml_Model_all.each { |m| m.uml_Class_all.each {|c| next if c.kind_of?(Muml_Enumeration) c.prot_writeNTriple addPackageHierarchy(usedPackage,c.umlx_owner_one) c.uml_ownedAttribute.each {|a| a.prot_writeNTriple } c.uml_ownedOperation.each {|a| (a.uml_ownedParameter+a.uml_returnResult).each {|param| # puts "--> param: #{param}" param.prot_writeNTriple_parameter(a) } } } m.uml_UseCase_all.each {|uc| addPackageHierarchy(usedPackage,uc.umlx_owner_one) uc.prot_writeNTriple } usedPackage.each { |p| p.prot_writePackage } } kbRDFS_writeComponents write() } translateToXML(targetFileRDFS.to_s,targetFileXML) end |
#generateRDFS(targetFile) ⇒ Object
generates protege 2000 knowledge base project files
444 445 446 447 448 |
# File 'lib/ontomde-uml2/kb/protege.rb', line 444 def generateRDFS(targetFile) #generateMetaEditor(targetFile) generateProtegeKbProject(targetFile) generateProtegeKbRDFS(targetFile) end |
#kbRDFS_footer ⇒ Object
Protege 2000 RDFS knowledge base file footer
525 526 527 |
# File 'lib/ontomde-uml2/kb/protege.rb', line 525 def return "# end\n" end |
#kbRDFS_header ⇒ Object
Protege 2000 RDFS knowledge base file header
556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 |
# File 'lib/ontomde-uml2/kb/protege.rb', line 556 def kbRDFS_header nt_top='# debut\n' ['UML_CLASS','UML_TEST_DATA_SET','UML_PACKAGE'].each {|c| nt_top=nt_top+<<END2 <#{NS_UML_CLASS}##{c}> <http://protege.stanford.edu/system#role> "abstract" . <#{NS_UML_CLASS}##{c}> <#{NS_RDF_2000}rdf-schema#label> "" . <#{NS_UML_CLASS}##{c}> <#{NS_RDF_2000}rdf-schema#subClassOf> <#{ROOT_URI}> . <#{NS_UML_CLASS}##{c}> <#{NS_RDF_2000}rdf-schema#comment> "Cette classe est la racine des classes de type UML. \\nFevrier 2006 - FTRD/BIZZ/CIL\\nStep#{""}hane Car#{""}rie". <#{NS_UML_CLASS}##{c}> <#{NS_RDF_1999}22-rdf-syntax-ns#type> <http://protege.stanford.edu/kb#UML_METACLASS> . END2 } nt_top=nt_top+<<END_SOA <#{SOA_URI}> <http://protege.stanford.edu/system#role> "abstract" . <#{SOA_URI}> <#{NS_RDF_2000}rdf-schema#label> "" . <#{SOA_URI}> <#{NS_RDF_2000}rdf-schema#subClassOf> <#{ROOT_URI}> . <#{SOA_URI}> <#{NS_RDF_2000}rdf-schema#comment> "SOA sub-model root element. \\nMay 2008 - FTRD/BIZZ/CIL\\nStep#{""}hane Car#{""}rie". <#{SOA_URI}> <#{NS_RDF_1999}22-rdf-syntax-ns#type> <http://protege.stanford.edu/kb#UML_METACLASS> . END_SOA nt_top=nt_top+<<END_SOA <#{DATAFILTER_URI}> <#{NS_RDF_2000}rdf-schema#label> "" . <#{DATAFILTER_URI}> <http://protege.stanford.edu/system#role> "abstract" . <#{DATAFILTER_URI}> <#{NS_RDF_2000}rdf-schema#subClassOf> <#{SOA_URI}> . <#{DATAFILTER_URI}> <#{NS_RDF_2000}rdf-schema#comment> "SOA data filter rule inventory. \\nMay 2008 - FTRD/BIZZ/CIL\\nStep#{""}hane Car#{""}rie". <#{DATAFILTER_URI}> <#{NS_RDF_1999}22-rdf-syntax-ns#type> <http://protege.stanford.edu/kb#UML_METACLASS> . <#{DATAFILTER_URI}> <#{NS_UML_CLASS}#UML_URI> "#{DATAFILTER_URI}" . <#{DATAFILTERNAME_URI}> <#{NS_RDF_1999}22-rdf-syntax-ns#type> <#{NS_RDF_1999}22-rdf-syntax-ns#Property> . <#{DATAFILTERNAME_URI}> <http://protege.stanford.edu/system#maxCardinality> "1" . <#{DATAFILTERNAME_URI}> <#{NS_RDF_2000}rdf-schema#label> "dataFilterName" . <#{DATAFILTERNAME_URI}> <#{NS_RDF_2000}rdf-schema#domain> <#{DATAFILTER_URI}> . <#{DATAFILTERNAME_URI}> <#{NS_RDF_2000}rdf-schema#range> <#{NS_RDF_2000}rdf-schema#Literal> . <#{DATAFILTERNAME_URI}> <#{NS_RDF_2000}rdf-schema#comment> "SOA dataFilter name\\nMay 2008 - FTRD/BIZZ/CIL\\nStep#{""}hane Pie#{""}rre Car#{""}rie" . <#{PREDEF_DATAFILTER_URI}> <#{NS_RDF_2000}rdf-schema#label> "" . <#{PREDEF_DATAFILTER_URI}> <#{NS_RDF_2000}rdf-schema#subClassOf> <#{DATAFILTER_URI}> . <#{PREDEF_DATAFILTER_URI}> <#{NS_RDF_2000}rdf-schema#comment> "SOA predefined data filter rule. \\nMay 2008 - FTRD/BIZZ/CIL\\nStep#{""}hane Car#{""}rie" . <#{PREDEF_DATAFILTER_URI}> <#{NS_RDF_1999}22-rdf-syntax-ns#type> <http://protege.stanford.edu/kb#UML_METACLASS> . <#{PREDEF_DATAFILTER_URI}> <#{NS_UML_CLASS}#UML_URI> "#{PREDEF_DATAFILTER_URI}" . <#{CUSTOM_DATAFILTER_URI}> <#{NS_RDF_2000}rdf-schema#label> "" . <#{CUSTOM_DATAFILTER_URI}> <#{NS_RDF_2000}rdf-schema#subClassOf> <#{DATAFILTER_URI}> . <#{CUSTOM_DATAFILTER_URI}> <#{NS_RDF_2000}rdf-schema#comment> "SOA custom data filter rule. \\nMay 2008 - FTRD/BIZZ/CIL\\nStep#{""}hane Car#{""}rie" . <#{CUSTOM_DATAFILTER_URI}> <#{NS_RDF_1999}22-rdf-syntax-ns#type> <http://protege.stanford.edu/kb#UML_METACLASS> . <#{CUSTOM_DATAFILTER_URI}> <#{NS_UML_CLASS}#UML_URI> "#{CUSTOM_DATAFILTER_URI}" . <#{DATAFILTER_RULE_URI}> <#{NS_RDF_2000}rdf-schema#label> "" . <#{DATAFILTER_RULE_URI}> <http://protege.stanford.edu/system#role> "abstract" . <#{DATAFILTER_RULE_URI}> <#{NS_RDF_2000}rdf-schema#subClassOf> <#{SOA_URI}> . <#{DATAFILTER_RULE_URI}> <#{NS_RDF_2000}rdf-schema#comment> "SOA data filter rule inventory. \\nMay 2008 - FTRD/BIZZ/CIL\\nStep#{""}hane Car#{""}rie". <#{DATAFILTER_RULE_URI}> <#{NS_RDF_1999}22-rdf-syntax-ns#type> <http://protege.stanford.edu/kb#UML_METACLASS> . <#{DATAFILTER_RULE_URI}> <#{NS_UML_CLASS}#UML_URI> "#{DATAFILTER_RULE_URI}" . <#{DATAFILTER_PROPERTY_RULE_URI}> <#{NS_RDF_2000}rdf-schema#label> "" . <#{DATAFILTER_PROPERTY_RULE_URI}> <#{NS_RDF_2000}rdf-schema#subClassOf> <#{DATAFILTER_RULE_URI}> . <#{DATAFILTER_PROPERTY_RULE_URI}> <#{NS_RDF_2000}rdf-schema#comment> "SOA data filter property rule. \\nMay 2008 - FTRD/BIZZ/CIL\\nStep#{""}hane Car#{""}rie". <#{DATAFILTER_PROPERTY_RULE_URI}> <#{NS_RDF_1999}22-rdf-syntax-ns#type> <http://protege.stanford.edu/kb#UML_METACLASS> . <#{DATAFILTER_PROPERTY_RULE_URI}> <#{NS_UML_CLASS}#UML_URI> "#{DATAFILTER_PROPERTY_RULE_URI}" . <#{SOURCEDATAFILTER_URI}> <#{NS_RDF_1999}22-rdf-syntax-ns#type> <#{NS_RDF_1999}22-rdf-syntax-ns#Property> . <#{SOURCEDATAFILTER_URI}> <http://protege.stanford.edu/system#maxCardinality> "1" . <#{SOURCEDATAFILTER_URI}> <#{NS_RDF_2000}rdf-schema#label> "sourceDataFilter" . <#{SOURCEDATAFILTER_URI}> <#{NS_RDF_2000}rdf-schema#domain> <#{DATAFILTER_RULE_URI}> . <#{SOURCEDATAFILTER_URI}> <#{NS_RDF_2000}rdf-schema#range> <#{DATAFILTER_URI}> . <#{SOURCEDATAFILTER_URI}> <#{NS_RDF_2000}rdf-schema#comment> "SOA sourceDataFilter name\\nMay 2008 - FTRD/BIZZ/CIL\\nStep#{""}hane Pie#{""}rre Car#{""}rie". <#{TARGETDATAFILTER_URI}> <#{NS_RDF_1999}22-rdf-syntax-ns#type> <#{NS_RDF_1999}22-rdf-syntax-ns#Property> . <#{TARGETDATAFILTER_URI}> <http://protege.stanford.edu/system#maxCardinality> "1" . <#{TARGETDATAFILTER_URI}> <#{NS_RDF_2000}rdf-schema#label> "targetDataFilter" . <#{TARGETDATAFILTER_URI}> <#{NS_RDF_2000}rdf-schema#domain> <#{DATAFILTER_RULE_URI}> . <#{TARGETDATAFILTER_URI}> <#{NS_RDF_2000}rdf-schema#range> <#{DATAFILTER_URI}> . <#{TARGETDATAFILTER_URI}> <#{NS_RDF_2000}rdf-schema#comment> "SOA sourceDataFilter name\\nMay 2008 - FTRD/BIZZ/CIL\\nStep#{""}hane Pie#{""}rre Car#{""}rie". <#{FILTERED_FIELD_URI}> <#{NS_RDF_1999}22-rdf-syntax-ns#type> <#{NS_RDF_1999}22-rdf-syntax-ns#Property> . <#{FILTERED_FIELD_URI}> <http://protege.stanford.edu/system#maxCardinality> "1" . <#{FILTERED_FIELD_URI}> <#{NS_RDF_2000}rdf-schema#label> "filteredProperty" . <#{FILTERED_FIELD_URI}> <#{NS_RDF_2000}rdf-schema#domain> <#{DATAFILTER_RULE_URI}> . <#{FILTERED_FIELD_URI}> <#{NS_RDF_2000}rdf-schema#range> <http://protege.stanford.edu/kb#UML_SLOT> . <#{FILTERED_FIELD_URI}> <#{NS_RDF_2000}rdf-schema#comment> "SOA sourceDataFilter name\\nMay 2008 - FTRD/BIZZ/CIL\\nStep#{""}hane Pie#{""}rre Car#{""}rie". <#{DATAFILTER_PARAMETER_RULE_URI}> <#{NS_RDF_2000}rdf-schema#label> "" . <#{DATAFILTER_PARAMETER_RULE_URI}> <#{NS_RDF_2000}rdf-schema#subClassOf> <#{DATAFILTER_RULE_URI}> . <#{DATAFILTER_PARAMETER_RULE_URI}> <#{NS_RDF_2000}rdf-schema#comment> "SOA data filter parameter rule. \\nMay 2008 - FTRD/BIZZ/CIL\\nStep#{""}hane Car#{""}rie". <#{DATAFILTER_PARAMETER_RULE_URI}> <#{NS_RDF_1999}22-rdf-syntax-ns#type> <http://protege.stanford.edu/kb#UML_METACLASS> . <#{DATAFILTER_PARAMETER_RULE_URI}> <#{NS_UML_CLASS}#UML_URI> "#{DATAFILTER_PARAMETER_RULE_URI}" . END_SOA nt_top=nt_top+<<END3 <#{NS_UML_CLASS}#UML_METACLASS> <#{NS_RDF_1999}22-rdf-syntax-ns#type> <#{NS_RDF_2000}rdf-schema#Class> . <#{NS_UML_CLASS}#UML_METACLASS> <#{NS_RDF_2000}rdf-schema#label> "UML_METACLASS" . <#{NS_UML_CLASS}#UML_METACLASS> <#{NS_RDF_2000}rdf-schema#subClassOf> <#{NS_RDF_2000}rdf-schema#Class> . <#{NS_UML_CLASS}#UML_METACLASS> <#{NS_RDF_2000}rdf-schema#comment> "Cette classe est la metaclasse des classes de type UML. \\nFevrier 2006 - FTRD/BIZZ/CIL\\nStep#{""}hane Pie#{""}rre Car#{""}rie". <http://protege.stanford.edu/kb#UML_SLOT> <#{NS_RDF_1999}22-rdf-syntax-ns#type> <#{NS_RDF_2000}rdf-schema#Class> . <http://protege.stanford.edu/kb#UML_SLOT> <#{NS_RDF_2000}rdf-schema#subClassOf> <#{NS_RDF_1999}22-rdf-syntax-ns#Property> . <#{NS_UML_CLASS}##{PROTEGE_INSTANCE_ALIAS_URI_SUFFIX}> <#{NS_RDF_1999}22-rdf-syntax-ns#type> <#{NS_RDF_1999}22-rdf-syntax-ns#Property> . <#{NS_UML_CLASS}##{PROTEGE_INSTANCE_ALIAS_URI_SUFFIX}> <http://protege.stanford.edu/system#maxCardinality> "1" . <#{NS_UML_CLASS}##{PROTEGE_INSTANCE_ALIAS_URI_SUFFIX}> <#{NS_RDF_2000}rdf-schema#label> "#{PROTEGE_INSTANCE_ALIAS_URI_SUFFIX}" . <#{NS_UML_CLASS}##{PROTEGE_INSTANCE_ALIAS_URI_SUFFIX}> <#{NS_RDF_2000}rdf-schema#domain> <http://protege.stanford.edu/kb#UML_CLASS> . <#{NS_UML_CLASS}##{PROTEGE_INSTANCE_ALIAS_URI_SUFFIX}> <#{NS_RDF_2000}rdf-schema#range> <#{NS_RDF_2000}rdf-schema#Literal> . <#{NS_UML_CLASS}##{PROTEGE_INSTANCE_ALIAS_URI_SUFFIX}> <#{NS_RDF_2000}rdf-schema#comment> "UML Alias used as key in other tools (xmda java junit, ...)\\n - FTRD/BIZZ/CIL\\nStep#{""}hane Pie#{""}rre Car#{""}rie". END3 nt_top=nt_top+<<END <#{NS_UML_CLASS}##{PROTEGE_USE_CASE_ENV_URI_SUFFIX}> <#{NS_RDF_1999}22-rdf-syntax-ns#type> <#{NS_RDF_1999}22-rdf-syntax-ns#Property> . <#{NS_UML_CLASS}##{PROTEGE_USE_CASE_ENV_URI_SUFFIX}> <http://protege.stanford.edu/system#maxCardinality> "1" . <#{NS_UML_CLASS}##{PROTEGE_USE_CASE_ENV_URI_SUFFIX}> <#{NS_RDF_2000}rdf-schema#label> "#{PROTEGE_USE_CASE_ENV_URI_SUFFIX}" . <#{NS_UML_CLASS}##{PROTEGE_USE_CASE_ENV_URI_SUFFIX}> <#{NS_RDF_2000}rdf-schema#domain> <http://protege.stanford.edu/kb#UML_TEST_DATA_SET> . <#{NS_UML_CLASS}##{PROTEGE_USE_CASE_ENV_URI_SUFFIX}> <#{NS_RDF_2000}rdf-schema#range> <#{NS_RDF_2000}rdf-schema#Literal> . <#{NS_UML_CLASS}##{PROTEGE_USE_CASE_ENV_URI_SUFFIX}> <#{NS_RDF_2000}rdf-schema#comment> "UML Alias used as key in other tools (xmda java junit, ...)\\n - FTRD/BIZZ/CIL\\nStep#{""}hane Pier#{""}re Car#{""}rie". END ['UML_LABEL', 'UML_URI'].each{ |k| nt_top=nt_top+<<END <#{NS_UML_CLASS}##{k}> <#{NS_RDF_1999}22-rdf-syntax-ns#type> <#{NS_RDF_1999}22-rdf-syntax-ns#Property> . <#{NS_UML_CLASS}##{k}> <http://protege.stanford.edu/system#maxCardinality> "1" . <#{NS_UML_CLASS}##{k}> <#{NS_RDF_2000}rdf-schema#label> "#{k}" . <#{NS_UML_CLASS}##{k}> <#{NS_RDF_2000}rdf-schema#domain> <http://protege.stanford.edu/kb#UML_METACLASS> . <#{NS_UML_CLASS}##{k}> <#{NS_RDF_2000}rdf-schema#domain> <http://protege.stanford.edu/kb#UML_SLOT> . <#{NS_UML_CLASS}##{k}> <#{NS_RDF_2000}rdf-schema#range> <#{NS_RDF_2000}rdf-schema#Literal> . END } #<#{NS_UML_CLASS}##{k}> <http://protege.stanford.edu/system#range> "cls" . #<#{NS_UML_CLASS}##{k}> <#{NS_RDF_2000}rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#Class> . #<#{NS_UML_CLASS}##{k}> <http://protege.stanford.edu/system#allowedParents> <#{NS_UML_CLASS}#UML_TEST_DATA_SET> . ['UML_REFERENCED_USE_CASE'].each{ |k| inv="UML_DATA" nt_top=nt_top+<<END <#{NS_UML_CLASS}##{k}> <#{NS_RDF_1999}22-rdf-syntax-ns#type> <#{NS_RDF_1999}22-rdf-syntax-ns#Property> . <#{NS_UML_CLASS}##{k}> <#{NS_RDF_2000}rdf-schema#label> "#{k}" . <#{NS_UML_CLASS}##{k}> <#{NS_RDF_2000}rdf-schema#range> <#{NS_UML_CLASS}#UML_TEST_DATA_SET> . <#{NS_UML_CLASS}##{k}> <#{NS_RDF_2000}rdf-schema#domain> <#{NS_UML_CLASS}#UML_PACKAGE> . <#{NS_UML_CLASS}##{k}> <http://protege.stanford.edu/system#inverseProperty> <#{NS_UML_CLASS}##{inv}> . <#{NS_UML_CLASS}##{inv}> <#{NS_RDF_1999}22-rdf-syntax-ns#type> <#{NS_RDF_1999}22-rdf-syntax-ns#Property> . <#{NS_UML_CLASS}##{inv}> <#{NS_RDF_2000}rdf-schema#label> "{k}" . <#{NS_UML_CLASS}##{inv}> <http://protege.stanford.edu/system#inverseProperty> <#{NS_UML_CLASS}##{k}> . <#{NS_UML_CLASS}##{inv}> <#{NS_RDF_2000}rdf-schema#range> <#{NS_UML_CLASS}#UML_PACKAGE> . <#{NS_UML_CLASS}##{inv}> <#{NS_RDF_2000}rdf-schema#domain> <#{NS_UML_CLASS}#UML_TEST_DATA_SET> . END } return nt_top end |
#kbRDFS_writeComponents ⇒ Object
707 708 709 710 711 |
# File 'lib/ontomde-uml2/kb/protege.rb', line 707 def kbRDFS_writeComponents uml_Component_all.each { |c| c.kb_writeComponent } end |
#uml_addVersionSignature ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 |
# File 'lib/ontomde-uml2/versionSignature.rb', line 5 def uml_addVersionSignature v=context[:versionSignature,nil] return if v.nil? i=nil uml_Class_all.each { |c| if i.nil? i=c.umlx_getOrCreateInterface("xmda.Version") i.uml_name="Version _ #{v.tr('.','_')}" i.umlx_external=RDF_FALSE end c.uml_addVersionSignature(i) } end |
#uml_Class_all(ret = Set.new) ⇒ Object
search and returns every uml class contained in the current repository.
17 18 19 20 21 22 23 |
# File 'lib/ontomde-uml2/select.rb', line 17 def uml_Class_all(ret=Set.new) #return @typeIndex[Muml_Class] uml_Model_all.each { |m| m.uml_Class_all(ret) } return ret end |
#uml_Component_all(ret = Set.new) ⇒ Object
search and returns every uml component contained in the current repository.
26 27 28 29 30 31 32 |
# File 'lib/ontomde-uml2/select.rb', line 26 def uml_Component_all(ret=Set.new) #return @typeIndex[Muml_Class] uml_Model_all.each { |m| m.uml_Component_all(ret) } return ret end |
#uml_Enumeration_all(ret = Set.new) ⇒ Object
search and returns every uml Enumeration contained in the current repository.
35 36 37 38 39 40 41 |
# File 'lib/ontomde-uml2/select.rb', line 35 def uml_Enumeration_all(ret=Set.new) #return @typeIndex[Muml_Class] uml_Model_all.each { |m| m.uml_Enumeration_all(ret) } return ret end |
#uml_Model_all ⇒ Object
search and returns every uml model contained in the repository.:w
5 6 7 8 9 10 11 12 13 14 |
# File 'lib/ontomde-uml2/select.rb', line 5 def uml_Model_all #Use index if index is available. return @typeIndex[Muml_Model] ret=Array.new each { |k,m| next unless m.kind_of?(Muml_Model) ret << m } return ret end |
#umlx_autoCreateImplicitComponent! ⇒ Object
generate implicit components from methods defined on domain class.
6 7 8 9 10 11 |
# File 'lib/ontomde-uml2/component.rb', line 6 def umlx_autoCreateImplicitComponent! uml_Class_all.each {|clazz| next unless clazz.kind_of?(Cuml_Class) clazz.umlx_autoCreateImplicitComponent! } end |
#umlx_autoImplementOperation! ⇒ Object
115 116 117 118 119 120 121 122 123 124 |
# File 'lib/ontomde-uml2/autoImplement.rb', line 115 def umlx_autoImplementOperation! uml_Class_all.each { |c| next unless c.kind_of?(Muml_Class) c.umlx_autoImplementOperation! } uml_Component_all.each { |c| #next unless c.kind_of?(Muml_Class) c.umlx_autoImplementOperation! } end |
#umlx_autoImplementProperty! ⇒ Object
7 8 9 10 11 12 |
# File 'lib/ontomde-uml2/autoImplement.rb', line 7 def umlx_autoImplementProperty! uml_Class_all.each {|c| next unless c.kind_of?(Muml_Class) c.umlx_autoImplementProperty! } end |
#umlx_checkAbstractAndInheritance ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/ontomde-uml2/check.rb', line 4 def umlx_checkAbstractAndInheritance() return unless context[:checkForAbstractAndInheritance,false] msg="" uml_Class_all.each { |c| next if c.kind_of?(Muml_Enumeration) next if c.kind_of?(Muml_Interface) next if c.umlx_external? next if c.uml_isAbstract? next if c.uml_general_inv.empty? msg=msg+"\n**** #{c.uml_name}" } return if msg.empty? log.error { %{ ******************* INCORRECT MODEL ******************* This model contains incorrect constructions. The following classe(s) has (have) been found guilty of being *not* abstract and having inheriting classes. Please, check your model and mark these classes abstract #{msg} ******************* INCORRECT MODEL ******************* }} #exit(1) end |
#umlx_classesWithMultipleInheritance(ret = Set.new) ⇒ Object
12 13 14 15 16 17 18 19 |
# File 'lib/ontomde-uml2/multipleInheritance.rb', line 12 def umlx_classesWithMultipleInheritance(ret=Set.new) uml_Class_all.each {|c| next if c.kind_of?(Muml_Interface) || c.kind_of?(Muml_Enumeration) next if c.uml_generalization.length <2 ret << c } return ret end |
#umlx_composition_dotDiagram ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/ontomde-uml2/dotDiagram.rb', line 12 def umlx_composition_dotDiagram write <<END digraph { rankdir=LR Node[shape=box,fontsize=10,color=darkolivegreen1] END uml_Class_all.each { |c| next if c.kind_of?(Muml_Enumeration) style="" ster="" if c.uml_isAbstract? style=",color=pink" elsif c.kind_of?(Muml_Interface) style=",color=khaki" ster="<<interface>>\\n" elsif ! (c.uml_general_inv.empty?) # incorrect class # not abstract with inheriting class style=",color=red,style=filled" else style=",color=red,style=filled" style=",style=filled" end write(%{#{c.dotId} [label="#{ster}#{c.uml_name}" #{style}]\n}) #Implements if c.kind_of?(Muml_Class) c.uml_implementation.each { |g| o=g.uml_supplier_one write( %{#{c.dotId} -> #{o.dotId} [arrowtail=none,arrowhead=onormal,style=dotted]\n} ) } end c.uml_generalization.each { |g| o=g.uml_general_one write( %{#{c.dotId} -> #{o.dotId} [arrowtail=none,arrowhead=onormal,color=indianred3]\n} ) } } #Composition each { |k,p| next unless p.kind_of?(Muml_Association) ce=nil #composante ci=nil #composite p.uml_memberEnd.each {|a| if a.uml_aggregation_one.isComposite? ci=a else ce=a end } next if ci.nil? || ce.nil? next if ci.uml_type_one.kind_of?(Muml_Stereotype) next if ce.uml_type_one.kind_of?(Muml_Stereotype) write( %{#{ce.uml_type_one.dotId} -> #{ci.uml_type_one.dotId} [arrowhead="none" arrowtail="diamond"]\n} ) } write("}\n") end |
#umlx_computeIsAnException ⇒ Object
TO BE DONE
193 194 |
# File 'lib/ontomde-uml2/umlx.rb', line 193 def umlx_computeIsAnException end |
#umlx_generateCompositonDotDiagram ⇒ Object
6 7 8 9 10 11 |
# File 'lib/ontomde-uml2/dotDiagram.rb', line 6 def umlx_generateCompositonDotDiagram return unless context[:generateCompositionDiagram,false] mtk_writeSession("#{context[:javaDir]}/composition.dot") { umlx_composition_dotDiagram } end |
#umlx_makeCompositionNavigable! ⇒ Object
Modify every composition so navigability is enabled from composante to composite. Composition between interface is not made navigable
503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 |
# File 'lib/ontomde-uml2/umlx.rb', line 503 def umlx_makeCompositionNavigable! return unless context[:makeCompositionBiNavigable,true] each { |k,p| next unless p.kind_of?(Muml_Association) ce=nil #composante ci=nil #composite p.uml_memberEnd.each {|a| if a.uml_aggregation_one.isComposite? ci=a else ce=a end } next if ci.nil? || ce.nil? next if ci.uml_type_one.kind_of?(Muml_Stereotype) next if ce.uml_type_one.kind_of?(Muml_Stereotype) #next if ce.uml_type_one.kind_of?(Muml_Interface) return if ce.umlx_isNavigable? #log.debug { "making composition bi-navigable #{p}"} if ce.uml_name.empty? #replace blank name with default name for composite. ce.uml_name=context[:defaultBiNavigableCompositionName,"owner"] end #ce.uml_ownedAttribute_inv=ci.uml_type #ce.uml_ownedAttribute_inv_one.uml_ownedAttribute_add(ce) ci.uml_type_one.uml_ownedAttribute_add(ce) } end |
#umlx_mapMultipleInheritanceToInterface! ⇒ Object
5 6 7 8 9 10 11 |
# File 'lib/ontomde-uml2/multipleInheritance.rb', line 5 def umlx_mapMultipleInheritanceToInterface! nl=Set.new umlx_classesWithMultipleInheritance.each {|c| c.umlx_mapMultipleInheritanceToInterface!(nl) } end |
#umlx_MarkAllAsbusinessMethod! ⇒ Object
16 17 18 19 20 21 22 23 |
# File 'lib/ontomde-uml2/umlx.rb', line 16 def umlx_MarkAllAsbusinessMethod! each { |k,m| next unless m.kind_of?(Muml_Operation) || m.kind_of?(Muml_Classifier) #do not force value if already set next unless m.umlx_businessMethod.empty? m.umlx_businessMethod=RDF_TRUE } end |
#umlx_model ⇒ Object
return first uml model found in model
268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 |
# File 'lib/ontomde-uml2/umlx.rb', line 268 def umlx_model ret=[] each { |k,c| #next unless c.kind_of?(Muml_Class) #p=c.umlx_model #next if p.kind_of?(Muml_Profile) #next if c.umlx_model.uml_name=="UML2" #return p next unless c.kind_of?(Muml_Model) next if c.kind_of?(Muml_Profile) next if UMLX_IGNORE_MODELS.include?(c.uml_name.to_s) ret<< c } if ret.empty? log.error { "umlx_model:no model found in rdf_Repository" } return nil elsif ret.length > 1 ms=""; ret.each { |m| ms=ms+m.uml_name.to_s+"," } if !@@message_umlx_model_not_found_displayed #log.debug { "umlx_model:found multiple models: #{ms}. Returning first one found.(#{ret[0]})" } @@message_umlx_model_not_found_displayed=true end end return ret[0] end |
#umlx_processShortcuts! ⇒ Object
Transform a set of UML models with links into a single model with uml_ownedMember.
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/ontomde-uml2/shortcut.rb', line 6 def umlx_processShortcuts! each_value { |s| next unless s.respond_to?(:umlx_shortcut) next if s.umlx_shortcut.nil? s.umlx_shortcut.each {|p| #remove link with package p.uml_ownedMember_inv.each { |m| m.uml_ownedMember.delete(p) } #replace shortcut with ownership s.uml_ownedMember_add(p) } } end |
#umlx_processUnrootedElements! ⇒ Object
attached unrooted elements to umlx_reserved_model This processing is necessery to handle properly incremental export for enterprise architect. For every XMI export, EA creates a fix uml model. This repository is the same for every export (top level or subs) OntoMDE import filter deletes UML model from EA export to solve this issues. This operation finishes the job by relinking when necessary. Sub exports are fine because object are already linked !
31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/ontomde-uml2/shortcut.rb', line 31 def umlx_processUnrootedElements! model=self model.umlx_reserved_model # create umlx_reserved_model model.each { |c,package| next unless package.kind_of?(Muml_Package) next unless package.umlx_owner_one.nil? next if package.kind_of?(Muml_Model) #puts "UNROOTED PACKAGE #{package}" model.umlx_reserved_model.uml_ownedMember_add(package) } end |
#umlx_pruneEmptyEnums! ⇒ Object
prune empty enumeration (without literal) with a dummy value this can be usefull to hide bug in third party sofware which do not support this. This is however usefull in a code generation context because an enum could have values in one configuration and not in another.
29 30 31 32 33 34 35 36 |
# File 'lib/ontomde-uml2/umlx.rb', line 29 def umlx_pruneEmptyEnums! uml_Enumeration_all.each { |enu| next if enu.uml_ownedLiteral.empty? puts "WARNING: empty enum found in model. (#{enu}). Because this may cause bugs in some software (hibernate spring), a dummy vaue has been added. You may disable this feature using appropriate command line option."; lit=enu.umlx_createAndAddLiteral("dummy") lit.umlx_createAndAddComment("#{lit.rdf_uri}-comment", "dummy literal value added by generator to avoid bugs in third party sofwares (hibernate spring)") } end |
#umlx_removeNoCode! ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/ontomde-uml2/nocode.rb', line 7 def umlx_removeNoCode! s=Set.new each { |k,v| next unless v.kind_of?(Muml_Element) next unless v.umlx_hasStereotype?('nocode') v.umlx_addDependencies(s) } s.each { |v| puts "cleaning nocode --> #{v.class} #{v}" puts "TODO: cleaning code not finalized" self.delete(v.rdf_uri) } end |
#umlx_reserved_model ⇒ Object
679 680 681 682 683 684 685 686 |
# File 'lib/ontomde-uml2/umlx.rb', line 679 def umlx_reserved_model r=self[UMLX_RESERVED_MODEL_URI] return r unless r.nil? r=self r=Cuml_Model.new(self,UMLX_RESERVED_MODEL_URI) #log.debug { "Creating reserved model (uri=#{r.uri})" } return r end |
#umlx_sanitizeAbstractsInHierarchy! ⇒ Object
A properly behaved model should not have inheritance from non abstract class. This transformation enforces that inheritance is always from an abstract class
490 491 492 493 494 495 496 497 498 499 |
# File 'lib/ontomde-uml2/umlx.rb', line 490 def umlx_sanitizeAbstractsInHierarchy! each { |k,gen| next unless gen.kind_of?(Muml_Generalization) g=gen.uml_general_one sp=gen.uml_specific_one next if g.uml_isAbstract? next unless g.kind_of?(Muml_Class) g.umlx_sanitizeAbstractsInHierarchy! } end |
#umlx_tryToSalvageErrors! ⇒ Object
Tries to fix a broken UML model. This feature is not meant for serious work and should only be used for quick demonstration.
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/ontomde-uml2/salvageErrors.rb', line 9 def umlx_tryToSalvageErrors! return unless context[:salvage,false] log.error { <<END ************ salvage mode is on *************** Salvage mode should only be used for quick demonstration purposes and never for any serious work. ************ salvage mode is on *************** END } each { |k,v| # fix untyped property if v.kind_of?(Muml_Property) v.uml_type=v.umlx_owner_one.umlx_dataType_string if v.uml_type.empty? # id is generated if persistence is enabled v.uml_name="business Id" if context[:db] && v.uml_name.to_s=="id" end #fix blank or missing names if v.kind_of?(Muml_NamedElement) v.uml_name="missing_name_in_model_"+v.rdf_uri if v.uml_name.empty? || v.uml_name.to_s=="" end } each { |k,v| #fix visibility (force to public) if v.respond_to?(:uml_visibility) v.uml_visibility=::Cuml_VisibilityKind::Public end # ejb service should not be abstract if v.kind_of?(Muml_Class) && v.umlx_hasStereotype?("Service") v.uml_isAbstract="false" end #no duplicate attribute (in one single class) if v.kind_of?(Muml_Class) names=Set.new i=1 v.uml_ownedAttribute.each { |a| n=a.uml_name.to_s if a.respond_to?(:java_Name) #in case java is loaded n=a.java_Name.to_s end if names.include?(n) i=i+1 a.uml_name="#{v.uml_name}_duplicate_#{i}" else names.add(n) end } end } end |