Ejemplo OWL con grafo RDF

Ilustremos el uso del vocabulario OWL con una ontología de ejemplo (inspirada en OWL Pizzas): "Pizza tiene PizzaBase como base; Pizza es disjunta de PizzaBase; NonVegetarianPizza es exactamente Pizza que no es VegetarianPizza; isIngredientOf es una propiedad transitiva; isIngredientOf es la inversa de hasIngredient". El ejemplo expresado en la sintaxis de lógica de descripción se muestra a continuación:

owl pizza

El mismo ejemplo expresado usando la sintaxis abstracta de OWL formula la misma información usando notación tipo LISP y, además, utiliza URI para identificar todas las clases y propiedades:

      Namespace(p = <http://example.com/pizzas.owl#>)
      Ontology( <http://example.com/pizzas.owl#>
        Class(p:Pizza partial
          restriction(p:hasBase someValuesFrom(p:PizzaBase)))
        DisjointClasses(p:Pizza p:PizzaBase)
        Class(p:NonVegetarianPizza complete
          intersectionOf(p:Pizza complementOf(p:VegetarianPizza)))
        ObjectProperty(p:isIngredientOf Transitive
          inverseOf(p:hasIngredient))
      )

Al incrustar la ontología OWL de ejemplo en RDF, cada declaración debe convertirse en tripletas; véase la figura siguiente. Por ejemplo, la restricción ∃R.C se forma mediante un recurso anónimo de tipo owl:Restriction. Este recurso anónimo (blank node) es sujeto de dos propiedades, owl:onProperty y owl:someValuesFrom, que relacionan la relación de restricción (propiedad) y el concepto (clase). El recurso anónimo se usa luego para relacionarse con la clase restringida (mediante rdfs:subClassOf en nuestro caso). El ejemplo expresado en tripletas y serializado en N3 es el siguiente:

pizza owl rdf graph

Ontología OWL de pizza expresada en tripletas RDF

      @prefix :     <http://example.com/pizzas.owl#> .
      @prefix rdf:  <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
      @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
      @prefix owl:  <http://www.w3.org/2002/07/owl#> .
      
      :Pizza rdfs:subClassOf
              [ a owl:Restriction ;
                owl:onProperty :hasBase ;
                owl:someValuesFrom :PizzaBase ] ;
             owl:disjointWith :PizzaBase .
      
      :NonVegetarianPizza  owl:equivalentClass
              [  owl:intersectionOf
                  (  [owl:complementOf :VegetarianPizza]
                     :Pizza  )  ] .
      
      :isIngredientOf
            a owl:TransitiveProperty , owl:ObjectProperty ;
            owl:inverseOf :hasIngredient .

OWL DL utiliza todas las características de SHOIN(D). La visión general de las posibles descripciones, rangos de datos, propiedades, individuos y valores de datos se muestra en la tabla de la página anterior. La descripción en DL de la semántica fue introducida en una de las secciones anteriores. El dominio de los individuos en el modelo es ΔI, y el dominio de los valores de datos ΔID se añadió para especificar la semántica de los rangos de datos.

La ontología está formada por restricciones sobre un modelo. Los axiomas que pueden usarse para restringir un modelo se resumen en la tabla de la página anterior.

Además de las características estándar de las lógicas de descripción, se añaden las llamadas annotation properties. Además de las annotation properties de RDFS (como rdfs:comment y rdfs:label), existen propiedades que permiten, por ejemplo, indicar información de versión, compatibilidad o incompatibilidad entre ontologías. También existe un constructo owl:imports que permite afirmar que una ontología importa otra ontología.