[英]Realizing and Retrieving information from a producer-consumer OWL model
我在 OWL 中建模了以下场景:
Producer
----producesResource--->
Resource
<------consumesResource ----
Consumer
Producer
、 Resource
和Consumer
是 OWL 类, producesResource
和consumesResource
是 object 属性。 该场景非常直观,因为每个生产者生产一个或多个资源,由一个或多个消费者消耗。 相反,每个消费者可以消耗一个或多个资源。 本体相应地填充有实例/个体。
我想检查是否存在不是由生产者生产的消费者消费的资源。 什么是通过以下方式获取此信息的优雅方式:
在 SPARQL 中可以使用 NOT BOUND 过滤器进行否定,或者在 SPARQL 1.1 中使用 MINUS 更容易:
SELECT ?resource WHERE
{
?resource a :Resource.
?consumer a :Consumer;
?consumer :consumesResource ?resource.
MINUS {?producer a :Producer; :producesResource ?resource.}
}
您还可以使用ASK
获得 boolean 结果,但SELECT
允许更轻松地调试以验证您的查询是否正常工作。
由于 SHACL 允许集成 SPARQL 查询,这也回答了您的第二个问题,但在这种情况下,单独使用 SPARQL 查询会更容易。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.