Ontology Patterns e Ontology Pattern Languages Ricardo de Almeida Falbo Ontologias para Engenharia de Software Departamento de Informática Universidade Federal do Espírito Santo
Agenda Ontology Patterns (OPs) Motivação Definição Tipos Aplicabilidade Ontology Pattern Languages (OPLs) Motivação Definição SP-OPL Aplicação da SP-OPL
Ontology Patterns - Motivação Construir ontologias é uma tarefa difícil e demorada. Reutilização é apontada como uma abordagem promissora para melhorar a qualidade e a produtividade no desenvolvimento de ontologias. Entretanto, reusar ontologias inteiras pode ser difícil e desnecessário. De maneira análoga à Engenharia de Software, na qual patterns de vários tipos são propostos e reutilizados em larga escala (design patterns, padrões de arquitetura, padrões de análise etc.), a Engenharia de Ontologias pode se beneficiar com uma abordagem orientada a patterns.
Ontology Patterns - Definição An Ontology Pattern (OP) describes a particular recurring modeling problem that arises in specific ontology development contexts and presents a well-proven solution for the problem. (Falbo et al., 2013a).
Ontology Patterns - Tipos São extraídos de ontologias de fundamentação ou de ontologias de referência de domínio. (Falbo et al., 2013a)
Ontology Patterns - Tipos Descrevem como estruturar uma ontologia em termos de módulos (ou sub-ontologias). (Falbo et al., 2013a)
Ontology Patterns - Tipos Tratam de problemas que ocorrem na fase de design detalhado de ontologias (p.ex., problemas de expressividade). (Falbo et al., 2013a)
Ontology Patterns - Tipos Descrevem soluções para problemas de design em uma linguagem específica (p.ex., OWL). (Falbo et al., 2013a)
Ontology Patterns - Aplicabilidade (Falbo et al., 2013a)
Patterns Patterns, em geral, são fortemente relacionados a outros patterns. A noção de catálogo de patterns não é capaz de capturar os vários tipos de relacionamentos que podem existir entre patterns. É necessário prover diretrizes para o uso combinado de patterns para prover uma solução para problemas maiores.
Pattern Language A pattern language, in a Software Engineering view, is a network of interrelated patterns that defines a process for systematically solving coarse-grained software development problems (Buschmann et al., 2007).
Ontology Pattern Language (OPL) An OPL pattern language is a network of interrelated domain-related ontology patterns that provides holistic support for solving ontology development problems for a specific domain (Falbo et al., 2013b). An OPL contains a set of interrelated domain-related ontology patterns, plus a process providing explicit guidance on what problems can arise in that domain, informing the order to address these problems, and suggesting one or more patterns to solve each specific problem (Falbo et al., 2013b).
Ontology Pattern Language (OPL) OPLs são especialmente úteis para representar core ontologies. Core ontologies provide a precise definition of structural knowledge in a specific field that spans across different application domains in this field (Scherp et al., 2011).
SP-OPL Software Process OPL: baseada em uma ontologia bem fundamentada de processos de software (Bringuente et al., 2011)
SP-OPL: Processo
SP-OPL: Patterns Standard Process Definition SPS HRD RTD Standard Process Structure Standard Activity Human Role Definition Standard Activity Resource Type Definition Represents how a standard software process is defined in terms of standard sub-processes and activities Defines the human roles responsible for performing a standard activity in the projects that instantiate it Defines the types of resources (hardware and software) required for performing a standard activity WPD Standard Activity Work Product Definition Defines the types of work products required (input) and produced (output) when performing a standard activity PD Standard Activity Procedure Definition Defines the procedures (methods, techniques, guidelines etc.) to be applied when performing a standard activity
SP-OPL: Processo
SP-OPL: Patterns Project Process Definition and Scheduling SPP Software Process Planning Represents how a software process is planned in terms of subprocesses and activities PSCH Process Scheduling Defines the time boundary for project processes and activities HRP Human Role Planning Defines the human roles responsible for performing a project activity RP Resource Planning Defines the types of resources (hardware and software) required for performing a project activity WPP Work Product Planning Defines the types of work products required (input) and produced (output) when performing a project activity PRP Procedure Planning Defines the procedures (methods, techniques, guidelines etc.) to be applied when performing a project activity
SP-OPL: Processo
SP-OPL: Patterns Resource Allocation PTD Project Team Definition Defines the human resources that are member of a project team TDHRA Team-dependent Resource Allocation Human Allocates human resources to project activities, considering team allocation constraints TIHRA Team-independent Resource Allocation Human Allocates human resources to project activities, when there is not a project team formally defined RAL Resource Allocation Allocates resources (hardware equipments and software tools) to project activities
SP-OPL: Processo
SP-OPL: Patterns Software Process Execution PAE Process and Activity Execution Register the occurrences of processes and activities. HRPA RPA WPPA Human Resource Participation Resource Participation Work Product Participation Registers the participation of Human Resources in an activity occurrence Registers the participation of Resources (hardware equipment or software tool) in an activity occurrence Register the participation of Work Products (as input or output) in an activity occurrence. PRPA Procedure Participation Register the adoption of procedures by an activity occurrence
Aplicação da SP-OPL Desenvolvimento de uma ontologia de referência sobre o domínio de teste de software: ROoST.
PAE Pattern
PAE Pattern em ROoST
WPPA Pattern
WPPA Pattern em ROoST
PRPA Pattern
PRPA Pattern em ROoST
Referências Bringuente, A. C. O., Falbo, R. A., Guizzardi, G.: Using a Foundational Ontology for Reengineering a Software Process Ontology. Journal of Information and Data Management, vol. 2, n. 3, pp. 511-526, 2011. Buschmann, F., Henney, K., Schmidt, D.C.: Pattern-Oriented Software Architecture, Volume 5: On Patterns and Pattern Languages, John Wiley & Sons Ltd, 2007. Falbo, R. A., Guizzardi, G., Gangemi, A., Presutti, V., Ontology Patterns: Clarifying Concepts and Terminology, Proceedings of the 4th Workshop on Ontology and Semantic Web Patterns, co-located with 12th International Semantic Web Conference (ISWC 2013), Sydney, Australia, 2013a. Falbo, R. A., Barcellos, M.P., Nardi, J.C., Guizzardi, G. Organizing Ontology Design Patterns as Ontology Pattern Languages, 10th Extended Semantic Web Conference, Montpellier, France, 2013b. Scherp, A., Saathoff, C., Franz, T., Staab, S.: Designing core ontologies. Applied Ontology, vol. 6, n. 3, pp. 177-221, IOS Press, 2011. Souza, E.F., Falbo, R.A., Vijaykumar, N.L., Using Ontology Patterns for Building a Reference Sofware Testing Ontology, The 8th International Workshop on Vocabularies, Ontologies and Rules for the Enterprise (VORTE 2013), Vancouver, Canada, 2013.