rdf sparql owl ontology foaf

rdf - ¿Cuál es la diferencia entre DatatypeProperty, ObjectProperty y FunctionalProperty, y cuándo debo usarlos?



sparql owl (1)

Al escribir una ontología, hay varios tipos muy utilizados, entre ellos:

  • DatatypeProperty
  • ObjectProperty
  • Propiedad funcional
  • InverseFunctionalProperty

Los tres primeros parecen que se usarían en un conjunto particular de formas, pero encuentro mi idea de que están siendo cuestionados por la forma en que los he visto usar en FOAF.

¿Cuándo se debe usar o no cada uno de ellos?


Los dos primeros de estos, DatatypeProperty y ObjectProperty, describen qué tipo de valores debe tener un triple con la propiedad. Las propiedades del tipo de datos relacionan a los individuos con datos literales (por ejemplo, cadenas, números, tipos de datos, etc.), mientras que las propiedades de los objetos relacionan a los individuos con otros individuos. Algo como hasAge normalmente sería una propiedad de tipo de datos, ya que una edad es un número, pero hasMother sería una propiedad de objeto, ya que una madre es otra persona.

Los dos últimos de estos, FunctionalProperty y InverseFunctionalProperty, se utilizan para poner algunas restricciones en los valores de las propiedades de las personas. Que algo sea una propiedad funcional significa que un individuo determinado puede tener a lo sumo un valor por ello. Lógicamente, esto significa que si p es una propiedad funcional, entonces

∀ x, y, z. ([P (x, y) ∧ p (x, z)] → y = z)

Dado que OWL no hace el supuesto de nombre único, un IRI diferente puede referirse al mismo individuo, por lo que si hasMother es una propiedad funcional, podemos inferir de

:John :hasMother :Margaret . :John :hasMother :Peggy .

ese

:Margaret owl:sameAs :Peggy

Por supuesto, esto también puede usarse para proporcionar alguna "inferencia negativa". Si sabemos que Susan es una persona diferente a Peggy, podemos inferir que Susan no es la madre de John. Es decir, de

:John :hasMother :Peggy . :Susan owl:differentFrom :Peggy .

que es falso que

:John :hasMother :Susan .

Para las propiedades de tipo de datos, esto funciona de la misma manera, pero hay mucha más información incorporada sobre qué literales son diferentes. Por ejemplo, un razonador debe saber que "1"^^xsd:int es diferente de "2"^^xsd:int .

Las propiedades funcionales inversas son similares, pero en la dirección inversa. Si una propiedad p es una propiedad funcional inversa, entonces para un individuo y determinado, debe haber como máximo una x tal que p (x, y).

Sin embargo, hay una ligera advertencia aquí. OWL 2 DL solo admite propiedades de objetos funcionales inversos, no propiedades de tipos de datos funcionales inversos. Si bien podemos describir la semántica que tendría una propiedad de tipo de datos funcional inversa como ∀x, y, z ([p (x, z) ∧ p (y, z)] → x = y), no podemos tener la equivalencia entre condiciones que

p es una propiedad funcional inversa

y eso

p -1 es una propiedad funcional

Porque las propiedades del tipo de datos no pueden tener inversos. Esto se debe al hecho de que RDF (al menos en las versiones actuales; he escuchado que se habla de cambiar esto, aunque no sé si el cambio se extendería a OWL) no permite valores literales como temas. de triples. Si las propiedades del tipo de datos tuvieran inversos, tendríamos esta situación:

:hasName owl:inverseOf :nameOf . :john :hasName "John"@en .

e inferiríamos

"John"@en :nameOf :john . # Not legal.

Esto significa que una propiedad funcional inversa debe ser una propiedad de objeto.

(En OWL Full, un razonador podría usar la aseveración lógica y hacer las inferencias apropiadas allí, supongo, con base en la representación lógica. Alternativamente, algunos razonadores, por ejemplo, los razonadores basados ​​en reglas de jena ) eliminan los "no literales permitidos como sujetos "restricción de sus representaciones internas, y luego filtrar los resultados en la salida para asegurarse de que ilegal-RDF no se escape.)

Ahora, veamos los casos que mencionaste:

género (funcional y tipo de datos)

Esto es funcional, porque esperamos que cada individuo tenga a lo sumo un valor para la propiedad de género. Es una propiedad de tipo de datos porque los diseñadores de FOAF esperaban que los valores fueran algo así como "male" o "female" . Si hubieran definido algunas constantes simbólicas, por ejemplo, <http://.../MALE> y <http://.../FEMALE> , esto podría haber sido una propiedad del objeto.

mbox (inverso funcional y objeto)

mbox es una propiedad de objeto, probablemente porque sus valores son IRI de la forma <mailto:[email protected]> . Es una propiedad funcional inversa porque para un buzón dado, esperaríamos que una persona tenga ese buzón. (Por supuesto, algunas personas pueden compartir un buzón, por lo que esto no es correcto todo el tiempo, pero bueno.) Sin embargo, no es una propiedad funcional, porque una persona puede tener múltiples buzones fácilmente.

mbox_sha1sum (funcional inverso y tipo de datos)

Como recuerdo, esta propiedad se relaciona de forma individual con el sha1sum de su buzón. El uso de esta propiedad significa que las personas no necesariamente tienen que compartir su dirección de correo electrónico real. Es una propiedad funcional inversa por la misma razón que mbox; esperamos que cada mbox_sha1sum pertenezca como máximo a un individuo. De manera similar, no es una propiedad funcional, porque una persona puede tener más de un buzón, y por lo tanto más de una sha1sum.

Este es el caso problemático, porque se trata de una propiedad de tipo de datos y una propiedad funcional inversa, y eso no debería suceder (como se describió anteriormente). Sin embargo, un razonador completo de OWL aún podría permitirte inferir que si x y y tienen el mismo mbox1_shasum, entonces x = y.

Referencias

Puede leer las definiciones formales en OWL 2 Web Ontology Language Direct Semantics (Segunda edición) . Estaría interesado en 2.3.2 Axiomas de expresión de propiedad de objeto y 2.3.3 Axioma de expresión de propiedad de datos .