Prévia do material em texto
ENGENHARIA DE CONHECIMENTO OBJETIVOS DE APRENDIZAGEM > Descrever ontologias para sistemas de informação. > Identificar a relevância da aplicação de ontologias no desenvolvimento de sistemas. > Discutir a aplicabilidade de Ontology Web Language (OWL). Introdução O uso de uma ontologia durante o estágio de desenvolvimento de um software permite que os membros da equipe pratiquem um nível mais alto de reutilização de conhecimento do que geralmente acontece na engenharia de software. O uso de um vocabulário comum permite o reaproveitamento e o compartilhamento do conhecimento do domínio da aplicação. Além disso, uma ontologia também pode ser usada para apoiar a integração de informações e a comunicação entre agentes. Neste capítulo, você estudará as ontologias no contexto de sistemas de in- formação e como elas são compostas. Também verá a importância do uso de ontologias no desenvolvimento de sistemas de conhecimento. Por fim, conhecerá a linguagem de ontologias OWL e como ela funciona. Conceitos básicos A representação do conhecimento e os sistemas de organização são consi- derados processos extremamente importantes em meio ao aumento da pro- dução de informação (FOGL, 1979). Taxonomias e ontologias são ferramentas que têm sido bastante utilizadas como base para desenvolver esses tipos de sistemas. Enquanto uma taxonomia permite organizar informações e/ou Ontologias Nicolli Souza Rios Alves conhecimentos em relacionamentos hierárquicos entre termos (ADAMS, 2000), uma ontologia consiste numa representação de vocabulário frequentemente especializada em algum domínio ou assunto (CHANDRASEKARAN; JOSEPHSON; BENJAMINS, 1999). Dessa forma, apoia atividades de captura, representação, busca, armazenamento e padronização do conhecimento, descrevendo um vocabulário consistente, completo e não ambíguo (GUARINO, 1998). Uma ontologia consiste numa especificação formal e explícita de uma conceitualização compartilhada. Além disso, pode assumir uma variedade de formas, mas inclui essencialmente um vocabulário de termos e algumas espe- cificações de seu significado, tudo isso contendo definições e uma indicação de como os conceitos estão relacionados entre si. Isso impõe de forma coletiva uma estrutura no domínio e restringe as possíveis interpretações dos termos. Gruber (1995) define uma ontologia como a especificação de concei- tualizações, usada para ajudar programas e pessoas a compartilhar conhecimento. Essa conceitualização é o ajustamento do conhecimento sobre o mundo em termos de entidades (as coisas, as relações que elas mantêm e as restrições entre si). Já o termo especificação refere-se à representação dessa conceitualização de forma concreta, em que podemos ter a codificação da conceitualização em uma linguagem de representação do conhecimento como um passo nessa especificação. Atualmente, há diferentes formalismos de representação de conhecimento e suas linguagens para a formação/implementação de ontologias. Cada um desses formalismos fornece diferentes componentes, mas compartilham o seguinte conjunto mínimo de componentes (CORCHO; FERNANDEZ-LOPEZ; GOMEZ-PEREZ, 2007): � Classes — representam conceitos que possuem sentido mais amplo. No domínio de viagens, por exemplo, os conceitos podem ser: localizações (cidades e povoados), alojamentos (hotéis, hostel e camping) e meios de transporte (aviões, automóveis, motos e navios). � Atributos — geralmente se distinguem dos relacionamentos porque seu alcance é um tipo de dados, como string, número e assim por diante, enquanto o relacionamento se trata de um conceito. � Relacionamentos — representam um tipo de associação entre conceitos do domínio. Normalmente, um relacionamento é de um tipo específico (ou classe) que especifica em que sentido o objeto está relacionado a outro objeto na ontologia. Ontologias2 � Axiomas formais — têm como função modelar sentenças que são sempre verdadeiras. Normalmente são usados para representar co- nhecimentos que não podem ser definidos formalmente por outros componentes. São muito úteis para inferir novos conhecimentos. � Instâncias — usadas para representar elementos ou indivíduos em uma ontologia. A pesquisa na área de ontologias está se tornando cada vez mais difundida no campo da ciência da computação. Embora esse termo advenha original- mente da filosofia, ganhou um papel específico e importante em áreas em crescimento como inteligência artificial, engenharia de software, redes de computadores, linguística computacional e teoria de bancos de dados. A im- portância e o reconhecimento da ontologia têm aumentado consideravelmente em um vasto leque de áreas de pesquisa, como engenharia do conhecimento, representação do conhecimento, modelagem qualitativa, engenharia da linguagem, design de banco de dados, modelagem de informação, integração de informação, análise orientada a objetos, organização e gerenciamento do conhecimento, entre outros tantos. Sem falar em áreas não relacionadas à computação, como tradução de linguagem natural, engenharias e sistemas de informações geográficas, jurídicas e biológicas. As ontologias são divididas de acordo com seu nível de generalidade, podendo ser classificadas em quatro tipos, como mostra a Figura 1. Figura 1. Tipos de ontologias. Fonte: Adaptada de Guarino (1998). Ontologias 3 � Ontologia de nível superior ou de fundamentação — descreve elementos genéricos, como espaço, tempo, matéria, objeto, evento e ação, que não dependem de um determinado problema ou domínio. � Ontologia de domínio e ontologia de tarefa — descrevem, respecti- vamente, o vocabulário relacionado a um domínio genérico (como medicina ou automóveis) e uma tarefa ou atividade genérica (como diagnosticar ou vender), ao especializar os termos introduzidos na ontologia de nível superior. � Ontologia de aplicação — descrevem conceitos que pertencem simul- taneamente a um domínio e a uma tarefa, por meio da especialização dos conceitos de uma ontologia de domínio e uma ontologia de tarefa. Por sua vez, Calero e colaboradores (2006) propõem uma dicotomia de ontologias, levando em consideração o nível de detalhamento de sua estrutura interna: ontologias lightweight e ontologias heavyweight. O primeiro tipo envolve basicamente os conceitos, suas propriedades e as relações entre si. Já o segundo tipo define o conhecimento de forma mais profunda, além de adicionar axiomas e restrições com o intuito de esclarecer o significado dos termos. Ontologias no desenvolvimento de sistemas A área de desenvolvimento de sistemas se concentra ou na criação de sistemas completamente novos ou na modificação daqueles que já existem. O desen- volvimento de sistemas dentro do orçamento e do cronograma estipulados é uma dificuldade antiga e árdua, cujos problemas relacionados não foram totalmente resolvidos até o momento. Desenvolver sistemas é uma atividade complexa, uma vez que envolve diversas tarefas, como entender o contexto de uso e as mudanças necessárias, elicitar e determinar requisitos funcionais e não funcionais, escolher o design mais adequado, assegurar a cobertura de interação humana e aspectos de seguranças de TI, estabelecer a integração dos sistemas no contexto de uso, entre outras. Dessa forma, o processo de desenvolvimento envolve várias competências de diferentes domínios do conhecimento e requer que os representantes desses domínios contribuam, incluindo os representantes dos usuários. Ontologias4 Nesse contexto, temos um desafio para que essa contribuição seja efi- ciente: há problemas no entendimento e respeito em outras disciplinas, já que um mesmo conceito pode ser usado com significados diferentes para os mesmos fenômenos. Tudo isso pode causar mal-entendidos, interpretações errôneas e desgastes ao longo do processo de desenvolvimento de sistemas. Dessa forma, é necessário definir uma ontologia como uma especificação explícita de uma conceitualização, usada para definir conceitose suas relações, organizando assim os conceitos de interesse de uma determinada área. Desse modo, com uma ontologia é possível estabelecer e comunicar o significado dos termos comuns da área para que fiquem claros e não haja problemas no entendimento entre os envolvidos. Vale lembrar que uma ontologia deve ser coerente, ou seja, o conjunto definido de conceitos deve ser consistente. Além disso, deve ser extensível, já que as partes interessadas precisam ser capazes de definir e incluir novos termos e conceitos. Esse item é extremamente im- portante no desenvolvimento de sistemas, uma vez que a terminologia tende a crescer de forma muito rápida e às vezes se tornar imensa. Dado um certo domínio, a ontologia será a base de qualquer sistema de representação do conhecimento para ele. Sem ontologias ou conceitualizações que baseiam o conhecimento, não pode haver um vocabulário para representar o conhecimento (DWIVEDI et al., 2013). Assim, o primeiro passo para criar um sistema eficaz de representação do conhecimento é realizar uma análise ontológica eficaz da área ou domínio. Vale ressaltar que análises fracas tendem a levar a incoerências nas bases de conhecimento, enquanto boas análises permitem que a ontologia funcione num raciocínio coerente e coeso. Por todos os sistemas de informação fluem conhecimentos, e para que sejam úteis devem se basear em um modelo do mundo relevante — entidades, pro- priedades e relações nesse mundo (CHANDRASEKARAN; JOSEPHSON; BENJAMINS, 1999). Além disso, sistemas de recuperação de informação, bibliotecas digitais, integração de diferentes fontes de informação e até mesmo os motores de busca da internet precisam de ontologias de domínio para organizar as informações e direcionar os processos de busca. Dessa forma, à medida que os sistemas de informação modelam grandes domínios de conhecimento, as ontologias de domínio se tornam ainda mais importantes em sistemas de software. O desenvolvimento de ontologias de domínio não é uma tarefa simples, pois, como qualquer outra atividade de modelagem conceitual, deve ser apoiada por práticas de engenharia de software (ALVES et al., 2014). Hoje em dia, há diversas abordagens para construir ontologias, como o Systematic Approach for Building Ontologies (SABiO). Essa abordagem sistemática tem sido bastante utilizado para apoiar a definição de diferentes ontologias, considerando basicamente as seguintes atividades (FALBO; MENEZES; ROCHA, 1998; ALVES et al., 2014): Ontologias 5 � Identificação da finalidade e especificação de requisitos — definição clara da finalidade e do uso pretendido da ontologia, ou seja, sua competência. � Captura de ontologia — a etapa mais importante no desenvolvimento da ontologia. Seu objetivo é capturar o conceito de domínio com base na competência da ontologia. Além disso, deve utilizar um modelo em linguagem gráfica com dicionário de termos para facilitar a comunicação com especialistas do domínio. � Formalização da ontologia — adoção de um formalismo para repre- sentar a ontologia. � Integração de ontologias existentes — durante os processos de captura e/ou formalização, pode ser necessário integrar a ontologia atual com as existentes para aproveitar os conceitos já estabelecidos anteriormente. � Avaliação da ontologia — a ontologia deve ser avaliada para determinar se a especificação satisfaz seus requisitos. Além disso, também pode ser avaliada em relação a alguns critérios de qualidade de projeto. � Documentação da ontologia — todo o desenvolvimento da ontologia deve ser documentado, incluindo objetivos, requisitos e cenários mo- tivadores, descrições textuais da conceitualização, ontologia formal e critérios de design adotados. Cabe ressaltar que todo esse processo deve ser visto como iterativo, e não em etapas sequenciais. A etapa de captura da ontologia, por exemplo, pode apontar a novos requisitos, ou durante a avaliação pode-se perceber que os termos identificados não são suficientes para concluir a ontologia (ALVES et al., 2014). Outro ponto interessante é que as ontologias permitem o compartilhamento do conhecimento. Ontologias compartilhadas possibilitam a criação de bases de conhecimento específicas que descrevem situações específicas. Dessa forma, é possível utilizar vocabulário e sintaxe comuns de uma determinada área para a construção de catálogos que descrevam seus produtos, por exemplo. Em seguida, quando pesquisadores e/ou profissionais da área compartilharem os catálogos e os usarem em seus projetos, isso aumentará em muito o potencial de reutilização do conhecimento (HALLBERG; JUNGERT; PILEMALM, 2014). Por outro lado, mesmo que a ontologia seja um mecanismo poderoso para representar o conhecimento, é difícil para não especialistas em mecanismos de representação do conhecimento entendê-la e manipulá-la. Isso ainda se Ontologias6 torna mais crítico quando esse conhecimento precisa ser compartilhado com um público de médio a grande, como vemos nas equipes de desenvolvimento de sistemas de informação. Dessa forma, o compartilhamento e a evolução desse conhecimento precisam ser estimulados de forma que pesquisadores e profissionais tenham acesso a ele e possam utilizá-lo em suas atividades diárias. Nesse sentido, é preciso pensar numa forma de apoiar o compartilhamento e a evolução colaborativa do conhecimento mediante o uso de técnicas de visualização (ALVES; ARAUJO; SPINOLA, 2015). Além de promover a dissemi- nação efetiva do conhecimento de uma determinada área, com o intuito de estimular seu uso efetivo pelos profissionais, pode-se também permitir a evolução colaborativa do conhecimento organizado. São diversas as motivações para utilizar ontologias no desenvolvimento de sistemas de conhecimento/especialistas. Dentre elas, a seguir listamos algumas das mais destacadas (NOY; MCGUINNESS, 2001). � Compartilhar um entendimento comum da estrutura da informação entre pessoas ou agentes de software é um dos objetivos mais comuns no desenvolvimento de ontologias. Suponhamos que diversos sites contenham informações médicas ou forneçam serviços médicos. Caso esses sites compartilhem e publiquem uma mesma ontologia de termos, os agentes de computador podem fazer a extração e agregação de informações desses diferentes sites. � Permitir a reutilização do conhecimento de domínio, que inclusive foi um dos pontos-chave por trás do grande aumento na pesquisas de ontolo- gias. Imagine que temos uma ontologia para determinada área; em vez de desenvolver uma nova ontologia, outros pesquisadores podem sim- plesmente reutilizá-la em seus domínios. Além disso, podemos integrar várias ontologias existentes que descrevem partes do grande domínio. � Tornar explícitas as suposições de domínio permite alterar essas su- posições facilmente, se nosso conhecimento sobre o domínio mudar. Suposições sobre o mundo embutidas em código de linguagem de programação tornam essas suposições não apenas difíceis de encontrar e entender, mas também de mudar, em particular para alguém sem experiência em programação. Outro aspecto é que especificações explícitas de conhecimento de domínio são úteis para novos usuários que precisam aprender o que significam os termos do domínio. Ontologias 7 � Separar o conhecimento de domínio do conhecimento operacional é outro uso comum das ontologias. Podemos descrever a tarefa de con- figurar um produto a partir de seus componentes de acordo com uma especificação necessária e implementar um programa que faça essa configuração independentemente dos próprios produtos e componentes. � Analisar o conhecimento do domínio é possível uma vez que uma especificação declarativa dos termos esteja disponível. A análise for- mal de termos é extremamente valiosa ao tentar reutilizar ontologias existentes e estendê-las. Ontology Web Language A web semântica é um movimento inovador da web, em que as informações recebem um significado explícito, tornando mais fácil para as máquinasprocessar e integrar automaticamente as informações disponíveis na web. A web semântica se baseia na capacidade do Extensible Markup Language (XML) definir esquemas de marcação personalizados e na abordagem flexível do Resource Description Framework (RDF) para representar dados. O RDF é um modelo de dados para objetos (“recursos”) e relações entre eles, fornecendo uma semântica simples e sendo representado em uma sintaxe XML. Já o RDF Schema (RDF-S) é um vocabulário para descrever propriedades e classes de recursos RDF, com uma semântica para hierarquias de generalização de tais propriedades e classes. O primeiro nível acima do RDF necessário para a web semântica é uma linguagem de ontologia que pode descrever formalmente o significado da terminologia usada em documentos da web. A Ontology Web Language (OWL) é uma linguagem da web semântica que foi projetada para representação de um conhecimento rico e complexo sobre coisas, seus grupos e os relacionamentos entre si (MCGUINNESS; HARMELEN, 2004). É utilizada por aplicações que precisam processar o conteúdo das informações, em vez de apenas apresentar as informações a humanos. Essa linguagem é baseada em lógica computacional, de forma que o conhecimento expresso em OWL pode ser explorado por programas de computador para, por exemplo, verificar a consistência desse conhecimento ou para transformar conhecimento implícito em explícito. A OWL adiciona mais vocabulário para descrever propriedades e classes: relações entre classes (como disjunção), cardinalidade (como "exatamente um"), igualdade, tipificação mais rica de propriedades, características de proprieda- Ontologias8 des (como simetria), classes enumeradas, entre outros. Os documentos OWL podem fazer referência ou ser referenciados a partir de outras ontologias OWL. Além disso, a linguagem OWL faz parte do conjunto do World Wide Web Consortium (W3C), que inclui RDF, RDF-S, SPARQL, entre outros. Ela também possui três sublinguagens cada vez mais expressivas, sendo que cada uma delas é voltada para o cumprimento de diferentes aspectos (ANTONIOU; HARMELEN, 2004): � OWL Full — esta sublinguagem utiliza todas as primitivas de linguagens OWL. Também permite combinar essas primitivas com RDF e RDF-S de forma eventual. Inclui a possibilidade de alterar o significado das primitivas pré-definidas (RDF ou OWL), aplicando as primitivas de linguagem entre si. ■ Vantagem: possui total compatibilidade com o RDF, tanto sintática quanto semanticamente. ■ Desvantagem: essa sublinguagem ficou tão poderosa que se tor- nou indecidível, acabando com qualquer esperança de suporte de raciocínio completo (quanto mais eficiente). � OWL Description Logic (DL) — com o intuito de recuperar a eficiência computacional, a OWL DL é uma sublinguagem de OWL Full que restringe a forma como os construtores de OWL e RDF podem ser usados. De modo geral, isso corresponde à proibição de aplicar o construtor OWL entre si e, dessa forma, assegurar que a linguagem corresponda a uma lógica de descrição bem estudada. ■ Vantagem: permite um suporte de raciocínio eficiente. ■ Desvantagem: perde-se a compatibilidade total com RDF. � OWL Lite — uma restrição cada vez maior restringe a OWL DL a um subconjunto de construtores de linguagem. Ela fornece apenas cons- trutores simples para descrever domínios (restrições de cardinalidade, propriedades opcionais ou obrigatórias, etc.). ■ Vantagem: é a linguagem mais fácil de entender (para usuários) e mais fácil de implementar (para criadores de ferramentas). ■ Desvantagem: é uma expressividade restrita. Os desenvolvedores de ontologias que adotam as OWLs precisam levar em consideração quais delas atendem às suas necessidades, ponderando as particularidades de cada sublinguagem. Ontologias 9 Sintaxe da linguagem OWL A Figura 2 oferece uma visão geral da linguagem OWL 2, mostrando seus principais blocos de construção e como eles se relacionam entre si. A forma no centro da fi gura representa a noção abstrata de uma ontologia, que pode ser pensada como um gráfi co RDF. No topo da fi gura, estão várias sintaxes concretas que podem ser usadas para serializar e trocar ontologias. Já na sua parte inferior, podemos observar em verde as duas especifi cações semânticas que defi nem o signifi cado das ontologias OWL 2. Figura 2. Estrutura da linguagem OWL 2. Fonte: Adaptada de Isotani e Bittencourt (2015). Na prática, uma sintaxe concreta é necessária para fazer o armazenamento de ontologias OWL e trocá-las entre ferramentas e aplicações. Embora o RDF/ XML forneça interoperabilidade entre ferramentas OWL 2, outras sintaxes concretas também podem ser usadas, incluindo serializações RDF alternativas, como Turtle, uma serialização XML, e uma sintaxe mais “legível”, chamada Manchester Syntax, que é usada em várias ferramentas de edição de ontolo- gias. Por fim, a sintaxe funcional também pode ser usada para serialização, embora tenha como foco principal a especificação da estrutura da linguagem. O Quadro 1 mostra os formatos de serialização OWL. Ontologias10 Quadro 1. Formatos de serialização OWL e seus propósitos Serialização Status Propósito RDF/XML Obrigatório Formato obrigatório, podendo ser reconhecido por qualquer software OWL OWL/XML Opcional Processamento simples com ferramentas XML Sintaxe Funcional Opcional Visualização simples da estrutura formal da OWL Sintaxe Manchester Opcional Leitura/escrita simples em lógica de descrição Turtle Opcional Leitura/escrita simples de triplas RDF Fonte: Adaptado de Isotani e Bittencourt (2015). Embora tenhamos cinco formatos, apenas um deles é obrigatório. Dessa forma, os demais devem ser utilizados somente com base na necessidade de quem vai consumir a ontologia. Vale lembrar que, independentemente do formato, a OWL 2 possui uma estrutura conceitual muito bem definida que é convertida para os diferentes formatos. A modelagem de conhecimento em OWL considera basicamente três as- pectos (HITZLER et al., 2012): � axiomas — as declarações básicas que uma ontologia OWL expressa; � entidades — elementos usados para se referir a objetos do mundo real; � expressões — combinações de entidades para formar descrições com- plexas a partir das descrições básicas. Vamos conhecer agora um pouco sobre a modelagem da OWL. Basica- mente, em uma ontologia OWL temos classes (owl:Class), propriedades (owl:ObjectProperty e owl:DataProperty) e indivíduos ou instâncias (owl:Individual), como mostra o exemplo a seguir: Class ( :Pessoa ) NamedIndividual ( :Nick ) NamedIndividual ( :Iago ) ClassAssertion ( :Pessoa :Nick) Ontologias 11 ClassAssertion ( :Pessoa :Iago) ObjectProperty ( :temEsposa ) ObjectPropertyAssertion ( :temEsposa :Iago :Nick ) Analisando esse exemplo, temos os seguintes elementos: � , como descrição de uma classe; � e como duas instâncias de ; � como uma propriedade; � como um relacionamento. Ainda nesse exemplos, poderíamos adicionar hierarquias definidas com base na especificação dos axiomas subclasses (owl:SubClassOf) e também subpropriedades (owl:SubObjectPropertyOf e owl:SubDataPropertyOf) como: SubClassOf ( :Mulher :Pessoa ) SubPropertyOf ( :temEsposa :temEsposo ) Também podemos descrever conceitos equivalentes, como dizer que a classe equivale a classe , como mostra o exemplo a seguir, lem- brando que podemos usar a equivalência para prioridades de objetos (Equi- valentObjectProperties) e de dados (EquivalentDataProperties). EquivalentClasses ( ontA:Pessoa ontB:Humano ) Nesse exemplo, podemos observar que foi utilizado os namespaces ontA e ontB, pois é muito comum usar a equivalência na hora de integrar e reusar ontologias existentes. Além disso, também podemos ter duas instâncias diferentes, mas que representam o mesmo indivíduo, como: SameIndividual ( :Xuxa :MariadaGracaXuxaMeneghel ) Dessa forma, na nossa ontologiatudo que estiver relacionado com Maria da Graça, também estará relacionado com Xuxa. Vale lembrar que esses tipos de axiomas não existem no RDF-S. Além de estabelecer que um mesmo indi- víduo pode ser instanciado em diferentes classes, como foi o caso, também é possível estabelecer que os indivíduos não podem pertencer a uma mesma classe. Assim, temos as chamadas classes disjuntas (owl:DisjointClasses): DisjointClasses ( :Homem :Mulher ) O Quadro 2 apresenta outros elementos básicos de modelagem que não estão presentes no RDF-S. Ontologias12 Quadro 2. Exemplos de outros elementos presentes na OWL 2 Elemento Propósito Utilização DifferentIn- dividuals Especifica diferentes instâncias DifferentIndividuals ( :John :Mary ) ObjectInter- sectionOf Especifica nova classe a partir da interseção de outras EquivalentClasses ( :Mother ObjectIntersectio- nOf ( :Woman :Parent ) ) ObjectComple- mentOf Especifica nova classe a partir da diferença entre duas classes EquivalentClasses ( :ChildlessPerson ObjectIntersectio- nOf ( :Person :ObjectComplemen- tOf ( :Parent ) ) ) ObjectSomeVa- luesFrom Quantificador existencial — descreve que, para todos os indivíduos de uma classe, há pelo menos um indivíduo de outra classe relacionada por determinadas propriedade EquivalentClasses ( :Parent ObjectSomeValuesFrom ( :hasChild :Person ) ) ReflexiveOb- jectProperty Descreve que determinada classe se relaciona por meio de determinada propriedade com ela mesma ReflexiveObjectPro- perty ( :hasRelative ) FunctionalOb- jectProperty Descreve que determinado indivíduo contém apenas uma instância de determinada classe em uma relação FunctionalObjectPro- perty ( :hasHusband ) HasKey Restrição que especifica uma chave para determinada instância de uma classe HasKey ( :Person () ( :hasSSN) ) (Continua) Ontologias 13 Elemento Propósito Utilização ObjectAllVa- luesFrom Quantificador universal — des- creve uma classe de indivíduos na qual todos os indivíduos relacionados devem ser de uma determinada classe EquivalentClasses ( :HappyPerson ObjectAllValuesFrom ( :hasChild :Ha- ppyPerson ) ) ObjectHasVa- lue Restrição que especifica que uma classe de indivíduos se relaciona com um indivíduo particular EquivalentClasses :JohnsChildren ObjectHasValues ( :hasParent :John ) ) ObjectHasSelf Restrição que especifica que um indivíduo se relaciona com ele mesmo EquivalentClasses :NarcisisticPerson ObjectHasSelf ( :loves ) ) ObjectMax- Cardinality Restrição que descreve o número máximo de indivíduos de determinada relação ClassAssertion ( ObjectMaxCardinality ( 32 : hasTeams :Team ) :FIFAWorldCup ) ObjectMinCar- dinality Restrição que descreve o número mínimo de indivíduos de determinada relação ClassAssertion ( ObjectMinCardinality ( 1 : hasHostCountry :Country ) :FIFAWorldCup ) ObjectExact- Cardinality Restrição que descreve o número exato de indivíduos de determinada relação ClassAssertion ( ObjectExactCardi- nality ( 2 : hasTeams :Team ) :FIFAWorldCupGame ) (Continua) (Continuação) Ontologias14 Elemento Propósito Utilização ObjectOneOf Descreve uma classe com todas as suas instâncias EquivalentClasses ( :WorldCupGroupA ObjectOneOf ( :Brazil :Croatia :Mexico :Ca- maroon ) ) InverseObjec- tProperties Descreve que, se a classe A está relacionada com B por propriedade X, implica que a classe B está relacionada com A por propriedade Y InverseObjectProper- ties ( :hasParent :has- Child ) SymmetricOb- jectProperty Descreve que, se a classe A está relacionada com B por propriedade X, implica que a classe B está relacionada com A da mesma forma SymmetricObjectPro- perty ( :hasSpouse ) Fonte: Adaptado de Isatani e Bittencourt (2015). Sendo assim, fica claro que uma ontologia pode muito bem ser usada para facilitar os processos de desenvolvimento de software e principal- mente desempenhar um papel importante em suas fases iniciais, bem como na definição, uso e reutilização de componentes de software e como base para sua integração. Além disso, usando uma ontologia que pré-define os conceitos utilizados, é possível reduzir o número de interpretações erradas dentro dos projetos. Referências ADAMS, K. C. Immersed in structure: the meaning a function of taxonomies. Interne- tworking, n. 3, 2000. ALVES, N. S. R. et al. Towards an Ontology of Terms on Technical Debt. 2014 Sixth In- ternational Workshop on Managing Technical Debt. In: INTERNATIONAL WORKSHOP ON MANAGING TECHNICAL DEBT, 6., 2014. Victoria, BC, 2014, p. 1-7. Disponível em: https:// ieeexplore.ieee.org/document/6974882. Acesso em: 2 dez. 2020. ALVES, N; ARAUJO, R.; SPINOLA, R. A Collaborative Computational Infrastructure for Supporting Technical Debt Knowledge Sharing and Evolution. In: AMERICAS CONFERENCE ON INFORMATION SYSTEMS, 21., Puerto Rico, 2015. p. 1-14. Disponível em: https://aisel. aisnet.org/cgi/viewcontent.cgi?referer=https://www.google.com/&httpsredir=1&arti cle=1375&context=amcis2015. Acesso em: 2 dez. 2020. (Continuação) Ontologias 15 ANTONIOU, G.; HARMELEN, F. Web Ontology Language: OWL. In: STAAB, S; STUDER, R. (org.). Handbook on Ontologies. Berlin: Springer, 2004. p. 91-110. CALERO, C; RUIZ, F.; PIATTINI, M. (ed.). Ontologies for software engineering and software technology. Berlin: Springer Science & Business Media, 2006. CORCHO, O; FERNANDEZ-LOPEZ, M; GOMEZ-PEREZ, A. Ontological engineering: what are ontologies and how can we build them? In: CARDOSO, J. Semantic web services: Theory, tools and applications. Pensilvânia, EUA: IGI Global, 2007. p. 44-70. CHANDRASEKARAN, B.; JOSEPHSON, J. R.; BENJAMINS, V. Richard. What are ontologies, and why do we need them? IEEE Intelligent Systems and their applications, v. 14, n. 1, p. 20-26, 1999. DWIVEDI, Y. K. et al. IS/IT project failures: a review of the extant literature for deriving a taxonomy of failure factors. In: INTERNATIONAL WORKING CONFERENCE ON TRANSFER AND DIFFUSION OF IT. Berlin: Springer, 2013, p. 73-88. FALBO, R; MENEZES, C. S; ROCHA, A. C. A systematic approach for building ontologies. In: IBERO-AMERICAN CONFERENCE ON ARTIFICIAL INTELLIGENCE. Berlin: Springer, 1998. p. 349-360. FOGL, J. Relations of the concept’s 'information' and 'knowledge'. The Hague, v. 4, n. 1, p. 21-24, 1979. GOMEZ-PEREZ, A; FERNÁNDEZ-LÓPEZ, M.; CORCHO, O. Ontological Engineering: with examples from the areas of Knowledge Management, e-Commerce and the Semantic Web. Berlin: Springer Science & Business Media, 2006. GRUBER, T. R. Toward principles for the design of ontologies used for knowledge sha- ring?. International journal of human-computer studies, v. 43, n. 5-6, p. 907-928, 1995. GUARINO, N. (ed.). Formal ontology in information systems. In: International conference (FOIS'98), 1., 1998, Trento, IT. Proceedings […]. Trento, IT: IOS press, 1998. HALLBERG, N.; JUNGERT, E.; PILEMALM, S. Ontology for Systems Development. Inter- national Journal of Software Engineering and Knowledge Engineering, v. 24, n. 3, p. 329–345, 2014. HITZLER, P. et al. OWL 2 web ontology language primer. W3C recommendation, 11 dec. 2012. Disponível em: https://www.w3.org/2012/pdf/REC-owl2-primer-20121211.pdf. Acesso em: 2 dez. 2020. ISOTANI, S.; BITTENCOURT, I. I. Dados Abertos Conectados: Em busca da Web do Conhe- cimento. São Paulo: Novatec, 2012. Disponível em: http://www.pgcl.uenf.br/arquivos/ dadosabertosconectados_011120181613.pdf. Acesso em: 2 dez. 2020. MCGUINNESS, D. L.; HARMELEN, F. OWL web ontology language overview. W3C recom- mendation, 10 feb. 2004. Disponível em: https://www.w3.org/TR/owl-features/. Acesso em: 2 dez. 2020. NOY, N. F.; MCGUINNESS, D. L. Ontology development 101: A guide to creating your first ontology. [S. l.: s. n, 2001]. Disponível em: https://protege.stanford.edu/publications/ ontology_development/ontology101.pdf. Acesso em: 2 dez. 2020. Ontologias16 Leituras recomendadasARP, R.; SMITH, B.; SPEAR, A. D. Building ontologies with basic formal ontology. Cam- bridge, MA: Mit Press, 2015. DIETZ, J. L. G. What is Enterprise Ontology? Berlin: Springer, 2006. EUZENAT, J. et al. Ontology matching. Berlin: Springer, 2007. OWL WORKING GROUP. OWL 2 Web Ontology Language Document Overview: W3C Re- commendation 27 oct. 2009. Disponível em: https://www.w3.org/2012/pdf/REC-owl2- -overview-20121211.pdf. Acesso em: 2 dez. 2020. POLI, R.; HEALY, M.; KAMEAS, A. (eds.). Theory and Applications of Ontology: Computer Applications. Dordrecht: Springer, 2010. TANIAR, D. (ed.). Web Semantics & Ontology. Pensilvânia, EUA: Igi Global, 2006. WELTY, C. et al. OWL web ontology language guide. W3C recommendation, 10 feb. 2014. Disponível em: http://www.w3.org/TR/2004/REC-owl-guide-20040210. Acesso em: 2 dez. 2020. Os links para sites da web fornecidos neste capítulo foram todos testados, e seu funcionamento foi comprovado no momento da publicação do material. No entanto, a rede é extremamente dinâmica; suas páginas estão constantemente mudando de local e conteúdo. Assim, os editores declaram não ter qualquer responsabilidade sobre qualidade, precisão ou integralidade das informações referidas em tais links. Ontologias 17