A linguagem OWL foi projetada para atender às necessidades de aplicações para a Web Semântica: criar ontologias e explicitar fatos sobre um determinado domínio [31]. A OWL é uma linguagem semântica de anotação, com o objetivo de publicar e partilhar ontologias na Web. A linguagem OWL é composta pela extensão do vocabulário RDF, juntamente com a linguagem DAML+OIL, representado na Figura 2.10. Sucintamente a OWL atribui significado a determinadas triplas do RDF.
Igualmente à linguagem DAML+OIL, a OWL representa os conceitos e seus relaciona- mentos, constituída de:
<daml:Class rdf:about="http://www.lcc.ufu.br/ser_vivo.daml#Mamifero"> <rdfs:label>Mamifero</rdfs:label>
<rdfs:comment>Animal que tem mamas e se alimenta de leite></rdfs:comment> <rdfs:subClassOf> <daml:Class rdf:about="http://www.lcc.ufu.br/ser_vivo.daml#Animal"/> </rdfs:subClassOf> </daml:Class> <daml:Class rdf:about="http://www.lcc.ufu.br/ser_vivo.daml#Animal"> <rdfs:label>Animal</rdfs:label>
<rdfs:comment>Ser dotado de sensibilidade e movimentos próprios</rdfs:comment> <rdfs:subClassOf> <daml:Class rdf:about="http://www.lcc.ufu.br/ser_vivo.daml#Ser_vivo"/> </rdfs:subClassOf> </daml:Class> <daml:Class rdf:about="http://www.lcc.ufu.br/ser_vivo.daml#Humano"> <rdfs:label>Humano</rdfs:label>
<rdfs:comment>Que pertence ou se refere ao homem></rdfs:comment> <rdfs:subClassOf>
<daml:Class rdf:about="http://www.lcc.ufu.br/ser_vivo.daml#Mamifero"/> </rdfs:subClassOf>
<rdfs:subClassOf> <daml:Restriction>
<daml:onProperty rdf:resource=” come"/> <daml:hasClass> <daml:Class rdf:about="http://www.lcc.ufu.br/ser_vivo.daml#Aves"/> </daml:hasClass> </daml:Restriction> </rdfs:subClassOf> </daml:Class>
<Humano rdf:about=” Ricardo">
<rdfs:label>Ricardo Soares Bôaventura</rdfs:label>
<come rdf:resource=” Galinha"/>
<come rdf:resource=” Pintado"/>
<idade> <xsd:integer xsd:value="27"/> </idade> <nro_patas> <xsd:integer xsd:value="2"/> </nro_patas> </Humano> http://www.lcc.ufu.br/ser_vivo.daml# <rdfs:subClassOf> <daml:Restriction> <daml:onProperty rdf:resource=”http://www.lcc.ufu.br/ser_vivo.daml#come"/> <daml:hasClass> <daml:Class rdf:about="http://www.lcc.ufu.br/ser_vivo.daml#Peixe"/> </daml:hasClass> </daml:Restriction> </rdfs:subClassOf> http://www.lcc.ufu.br/ser_vivo.daml# http://www.lcc.ufu.br/ser_vivo.daml# http://www.lcc.ufu.br/ser_vivo.daml# <habitat> <xsd:string xsd:value="urbano"/> </habitat>
Figura 2.7: Código do domínio de objetos
• espaços de nome, que serão utilizados durante a construção da ontologia;
• cabeçalho, que possui informações como comentários, controle de versões e inclusão de outras ontologias definidos através do elemento <owl:Ontology>;
• classes e subclasses, que são definidas por elementos owl:Class e rdfs:subClassOf ; • propriedades das classes e subclasses do elemento owl:Property em que utiliza os ele-
mentos rdfs:domain para especificar a qual classe a propriedade está sendo atribuída e owl:range para especificar a qual classe ela será aplicada;
• restrições das propriedades, que podem ser expressas pelos elementos owl:Restric- tion, owl:cardinality, owl:minCardinality, owl:maxCardinality, owl:InverseOf entre
<daml:ObjectProperty rdf:about=” e_comido_por"> <rdfs:label>é comido por</rdfs:label>
<rdfs:comment>y é comido por y</rdfs:comment>
<daml:inverseOf rdf:resource=” come"/> <rdfs:range>
<daml:Class rdf:about="http://www.lcc.ufu.br/ser_vivo.daml#Animal"/> </rdfs:range>
</daml:ObjectProperty>
<daml:DatatypeProperty rdf:about=” _patas"> <rdfs:label>número de patas</rdfs:label> <rdfs:domain> <daml:Class rdf:about="http://www.lcc.ufu.br/ser_vivo.daml#Animal"/> </rdfs:domain> <rdfs:range> <xsd:integer/> </rdfs:range> </daml:DatatypeProperty>
<daml:DatatypeProperty rdf:about=” idade"> <rdfs:label>idade</rdfs:label>
<rdf:type rdf:resource=”www.w3.org/2001/10/daml+oil#UniqueProperty”/> <rdf:range rdf:resource=”www.w3.org/2000/10/XMLSchema#nonNegativeInteger”/> </daml:DatatypeProperty>
<daml:ObjectProperty rdf:about=” come"> <rdfs:label>come</rdfs:label>
<rdfs:comment>x come y></rdfs:comment>
<daml:inverseOf rdf:resource=” e_comido_por"/> <rdfs:domain> <daml:Class rdf:about="http://www.lcc.ufu.br/ser_vivo.daml#Animal"/> </rdfs:domain> </daml:ObjectProperty> http://www.lcc.ufu.br/ser_vivo.daml# http://www.lcc.ufu.br/ser_vivo.daml# http://www.lcc.ufu.br/ser_vivo.daml#nro http://www.lcc.ufu.br/ser_vivo.daml# http://www.lcc.ufu.br/ser_vivo.daml# http://www.lcc.ufu.br/ser_vivo.daml#
Figura 2.8: Código do domínio do tipo de dados
DAML OIL DAML
+OIL OWL
RDF
Figura 2.9: A composição da linguagem OWL
outros, os quais permitem determinar as restrições, cardinalidades, cardinalidade mínima, cardinalidade máxima, relação inversa entre outras propriedades;
• instâncias que são os membros de uma determinada classe.
Utilizando o mesmo exemplo de ontologia (seres_vivos.owl) apresentado na Seção 2.3.2, a Figura 2.10 representa os namespace, cabeçalho, algumas classes, algumas pro- priedades, restrições e instâncias da ontologia utilizando a linguagem OWL, sendo que:
<rdf:RDF xmlns:ser="http://www.lcc.ufu.br/ser_vivo.owl" xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" > <owl:Ontology rdf:about=""/>
<rdf:comment> Uma ontologia que possui relacionamentos entre os vários tipos de reino de animais e planta </rdf:comment>
<owl:Class rdf:about="http://www.lcc.ufu.br/ser_vivo. #A ">
<rdfs:comment>Ser dotado de sensibilidade e movimentos próprios</rdfs:comment> <rdfs:subClassOf rdf:about="http://www.lcc.ufu.br/ser_vivo.owl#Ser_vivo"/> </owl:Class>
<owl:Class rdf:about="http://www.lcc.ufu.br/ser_vivo. #Mamifero">
<rdfs:comment>Animal que tem mamas e se alimenta de leite</rdfs:comment> <rdfs:subClassOf rdf:about="http://www.lcc.ufu.br/ser_vivo.owl#Animal"/> </owl:Class>
<owl:Class rdf:about="http://www.lcc.ufu.br/ser_vivo.owl#Humano"> <rdfs:comment>Que pertence ou se refere ao homem></rdfs:comment>
<rdfs:subClassOf rdf:about="http://www.lcc.ufu.br/ser_vivo.owl#Mamifero"/> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:about="http://www.lcc.ufu.br/ser_vivo.owl#come"/> <owl:someValuesFrom> <owl:Class> <owl:unionOf rdf:parseType="Collection"> <owl:Class rdf:about="http://www.lcc.ufu.br/ser_vivo.owl#Aves"/> <owl:Class rdf:about="http://www.lcc.ufu.br/ser_vivo.owl#Peixes"/> </owl:unionOf> </owl:Class> </owl:someValuesFrom> </owl:Restriction> </rdfs:subClassOf> </owl:Class> ....
<owl:ObjectProperty rdf:about="http://www.lcc.ufu.br/ser_vivo. #come"> <rdfs:domain rdf:resource=”http://www.lcc.ufu.br/ser_vivo. #Animal"/> <owl:inverseOf rdf:resource=”http://www.lcc.ufu.br/ser_vivo. #e_comido_por"/> </owl:ObjectProperty>
<owl:DatatypeProperty rdf:a =”http://www.lcc.ufu.br/ser_vivo. #idade"> <rdfs:range rdf:resource="&xsd;int"/>
</owl:DatatypeProperty>
<owl:DatatypeProperty rdf:a =”http://www.lcc.ufu.br/ser_vivo. # "> <rdfs:domain rdf:resource=”http://www.lcc.ufu.br/ser_vivo. #Animal"/> <rdfs:range rdf:resource="&xsd;string"/> </owl:DatatypeProperty> ... <Humano rdf:about=”http://www.lcc.ufu.br/ser_vivo.owl#Ricardo”> </Humano> ... </rdf:RDF> <owl:priorVersion rdf:resource=”http://www.w3.org/2001/sw/WebOnto/guide-src-112102.owl”/> </owl:Ontology> owl nimal owl owl owl owl bout owl
bout owl nro_patas
owl
<rdfs:label>Ricardo Soares Bôaventura</rdfs:label>
<come rdf:resource=”http://www.lcc.ufu.br/ser_vivo.daml#Galinha"/> <come rdf:resource=”http://www.lcc.ufu.br/ser_vivo.daml#Pintado"/> <idade rdf:datatype=”&xsd;int”>27</idade> <nro_patas rdf:datatype=”&xsd;int”>2</nro_patas> <habitat rdf:datatype=”&xsd;string”>urbano</habitat> Inst ā ncia s Propri edade s Classes Cabe alho ç Namespace
Figura 2.10: Estrutura da linguagem OWL
• o cabeçalho contém: comentário (comment); controle de versão (priorVersion); e a re-utilização de outras ontologias (imports);
• Animal, Mamífero e Humanosão classes representadas porowl:Class, e a classeHumano
é subclasse (rdfs:subClassOf) da classeMamiferoque é subclasse (rdfs:subClassOf)
da classe Animal;
• nacionalidade é uma propriedade definida pelo tipo owl:ObjectProperty que será
aplicada a todas as instâncias da classe Humano e outras;
• a instância da classeHumano tem como identificadorRicardo possui “2” patas (pés), sua idade é “27” anos, habitat é “urbano” e come “Galinha e Pintado”.
Um usuário pode desenvolver uma ontologia em OWL, porém pode implementá-la em uma das três tipos de linguagens [31]:
• OWL-Lite: suporta a criação de hierarquias simplificadas de classificação e suas restrições mais simples como cardinalidade;
• OWL-DL: baseada na lógica de descrição;
• OWL-Full: fornece a expressividade de OWL e a liberdade de usar RDF, inclusive permitindo novas metaclasses; o seu uso é mais complexo e portando não existe a garantia de computabilidade.