我試圖使用SPARQL爲大學提取校友名單。dbpedia上的機構的所有人的SPARQL查詢
我已經確定的本體,我需要:
- http://mappings.dbpedia.org/server/ontology/classes/University
- http://mappings.dbpedia.org/server/ontology/classes/Person
我嘗試這個查詢,其中you can examine here:
SELECT * WHERE {
?University dbpedia2:alumni ?Person .
}
這似乎是有道理的,除了這返回計數而不是人e,正如本體論所說的財產所包含的那樣。
我發現this query某處似乎找到了更好的工作找到大學,但是非常緩慢。
SELECT * WHERE {
{ <http://dbpedia.org/ontology/University> ?property ?hasValue }
UNION
{ ?isValueOf ?property <http://dbpedia.org/ontology/University> }
}
我也試着走另一條路,開始對所有的人,並尋找他們almae matres,in this form:
SELECT * WHERE {
?person dbpedia2:almaMater ?University
}
但這是慢得多,這可能是因爲通過別人空間,搜索太費力。這確實有效,但它在應用程序中返回了一組不同的結果---即所有擁有列出母校的人,而不是所有被大學列爲校友的人。我更喜歡讓我成爲校友的語法。
我怎麼能說出這句話來返回大學所有的校友?
這很酷很有意義,但看起來有些事情可以成爲校友,而不是大學 - 比如高中或軍校; almaMater屬性需要一個educationalInstitution對象。對不起,我對SPARQL很陌生,但是如何在上面的表單中對此進行子集化,以便將其限制爲僅限有效的?大學對象? – Mittenchops
我已經更新了我的答案,以顯示如何將'almaMater'限制爲具有'dbpedia-owl:University'類型的東西。 –