从 sparql 查询中检索到多个个体

Multiple individuals retrieved from sparql query

我有一个 owl 文件 classes 和个人在同一个文件中。 投诉和用户 (classes)。 我创建用户的投诉作为个人。 投诉 class 具有 dataProperties(id、阅读次数、标题、标签、内容等) 我在 eclipse swing 项目上用 jena 写了一个 sparql 查询;

String queryRetrieveAll = "SELECT * WHERE \n { "
+ "?Complaint skyt:numOfRead ?Num . "
+ " FILTER (?Num >= 1) " 
+ ".}\n";

并在我的 owl 文件中检索所有投诉。例如;

-------------------------------
| Complaint            | Num |
===============================
| skyt:apple           | 484  |
| skyt:toshiba         | 202  |
| skyt:niluferturizm   | 43   |
| skyt:kamilkoc        | 42   |
| skyt:eceElektronik   | 254  |
| skyt:celebi          | 112  |

没关系,但是。我也想从查询中检索投诉的所有者。我在上面添加了一个行查询。

String queryRetrieveAll = "SELECT * WHERE \n { "
+ "?Complaint skyt:numOfRead ?Num . "
+ " FILTER (?Num >= 1) " 
+ "?Complaint skyt:Owner ?owner . "// or "?Complaint skyt:sId ?ID . "
+ ".}\n";

本次查询结果,个人重复检索,

 ----------------------------------------------- 
| Complaint            | Num | Owner
 =============================================== 
| skyt:apple           | 484  | skyt:huseyinG | 
| skyt:apple           | 484  | skyt:kaanY   | 
| skyt:apple           | 484  | skyt:ramazanÇ | 
| skyt:apple           | 484  | skyt:mertM    | 
| skyt:apple           | 484  | skyt:burakÇ  |
| skyt:apple           | 484  | skyt:merveE   | 
| skyt:apple           | 484  | skyt:ertuncE  | 
| skyt:toshiba         | 202  | skyt:sahinT  |
| skyt:niluferturizm   | 43   | skyt:yasinT   | 
| skyt:kamilkoc        | 42   | skyt:hanifeC  | 
| skyt:kamilkoc        | 42   | skyt:HasanH   |
| skyt:kamilkoc        | 42   | skyt:semihA   | 
| skyt:eceElektronik   | 254  | skyt:sonerD   | 
| skyt:celebi          | 112  | skyt:gayeB   | 
| skyt:polypadSarj     | 265  | skyt:serefG   | 
| skyt:polypadSarj     | 265  | skyt:metinY   | 
| skyt:polypadSarj     | 265  | skyt:simayS  
| skyt:apple           | 871  | skyt:huseyinG | 
| skyt:apple           | 871  | skyt:kaanY    | 
| skyt:apple           | 871  | skyt:ramazanÇ | 
| skyt:apple           | 871  | skyt:mertM    | 
| skyt:apple           | 871  | skyt:burakÇ   | 
| skyt:apple           | 871  | skyt:merveE  |
| skyt:apple           | 871  | skyt:ertuncE  |

我该如何解决?我想检索所有者、id、numOfread 与

的所有投诉

我解决了问题。 在 owl 文件中,由于我的错误,一些人的名字相同。比如投诉苹果,我给这个人起的名字是"apple"。出于这个原因,他们有时会检索多个。我给所有个人起不同的名字并在下面更改我的查询。然后就可以了。 :)

String queryExtractAll = 
"SELECT DISTINCT ?Num ?Owner ?Title ?Content WHERE \n { " 
+ "?Complaint skyt:numofRead ?Num;" 
+ "skyt:owner ?Owner;" 
+ "skyt:title ?Title;" 
+ "skyt:content ?Content"
+ " FILTER (?Num >= 1) " + ".}\n"
+ " ORDER BY DESC (?Num) ";