我正在研究一個使用RDF的新項目,只是學習它和SPARQL。我認爲這個查詢會比現在要容易的多。SPARQL - 完成集合所需的主題
鑑於此店(簡化了本體)
Person1 -Owns-> Part1
Person2 -Owns-> Part1
Person2 -Owns-> Part2
Part1 -PartOf-> Product1
Part2 -PartOf-> Product1
我試圖返回一個人需要完成產品的所有零件。
給定Person1,他需要Part2來完成Product1。 鑑於Person2,他不需要任何東西,因爲他擁有製作Product1的所有零件。
我想在1個查詢中返回每個產品的所有人員和所有需要的部件,但是認爲要開始更小,只是試圖找到特定人員需要的部件。真實的數據有多種產品和部件,可能在多種產品中(即螺絲在很多產品中)以及擁有屬於多種產品的部件的人員。一旦我可以獲得子集查詢的工作,我應該能夠擴展它。
select ?parts
where
{
?parts <PartOf> <Product1> .
minus {<Person1> <Owns> ?parts}
}
我的想法是讓所有的產品1的部分零件,然後消除PERSON1擁有的部分。但是我得到了Product1中的所有部分。我嘗試了很多其他查詢,但是在閱讀完教程和書籍之後,這對我來說是最符合邏輯的。有人可以指出我哪裏錯了嗎?
感謝您的時間。
非常感謝。我正在使用其中一個使用Jena訪問商店的RDFMS供應商實現RDF。我通過Jena將數據插入到DBMS中,並使用Fuseki在將它們放入Java之前處理SPARQL查詢。我檢查了案件和打字,看起來一切正常。我會再驗證一次,然後給我的供應商代表打個電話。也許他可以幫忙。在打電話給供應商之前,我總是認爲這是我的問題。 – 2013-03-19 16:50:32
我跟供應商談過。這是SPARQL 1.1支持中的一個限制。他們也不會給出這個限制的錯誤。你給了我很好的見解 - 總是試着對抗arq。非常感謝。 – 2013-03-21 14:23:55