Я прочитал руководство по Правилам вывода и рассуждениям для Virtuoso. В примере 16.14.9 упоминалось следующее:
SQL>ttlp ('
<john1> a <person> .
<john2> a <person> .
<mary> a <person> .
<mike> a <person> .
<john1> <name> "John" .
<john2> <name> "John" .
<john1> <address> "101 A street" .
<john2> <address> "102 B street" .
<john2> <knows> <mike> .
<john1> <http://www.w3.org/2002/07/owl#sameAs> <john2> .
<mary> <knows> "John" .
<mike> <knows> <john1> .
<mike> <knows> <john2> .
<john1> <name> "Tarzan" .
<mike> <nam> "Tarzan" .
', '', 'ifps');
SQL>ttlp ('
<name> a <http://www.w3.org/2002/07/owl#InverseFunctionalProperty> .
<name> <http://www.openlinksw.com/schemas/virtrdf#nullIFPValue> "Tarzan" .
', '', 'ifp_list');
SQL>rdfs_rule_set ('ifps', 'ifp_list');
SQL>SPARQL define input:inference "ifps" SELECT * FROM <ifps> WHERE {<john1> ?p ?o};
p o
VARCHAR VARCHAR
_______________________________________________________________________________
address 101 A street
name John
http://www.w3.org/2002/07/owl#sameAs john2
http://www.w3.org/1999/02/22-rdf-syntax-ns#type person
name Tarzan
name John
knows mike
http://www.w3.org/1999/02/22-rdf-syntax-ns#type person
address 102 B street
Как мы видим, owl:InverseFunctionalProperty используется свойством типа данных <name>
, означает ли это, что полное рассуждение OWL можно использовать в Virtuoso? В этом Вопросе первым ответом была проблема используя OWL Полное рассуждение со свойством типа данных.