[英]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.