從@ AKSW的評論雨後春筍......
一種選擇,沒有限制對skos:broader
路徑長度長,這將超過對公衆DBpedia的端點資源消耗的限制,但它可以在一個私人的實例上運行( in the cloud或地方),在那裏你可以放鬆這些限制 -
PREFIX dbr: <http://dbpedia.org/resource/>
PREFIX dct: <http://purl.org/dc/terms/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
SELECT DISTINCT ?cat
WHERE
{ <http://dbpedia.org/resource/Apple_Inc.>
dct:subject/skos:broader* ?cat .
dbr:IPhone
dct:subject/skos:broader* ?cat . }
簡潔的選項,使用特定的Virtuoso語法(基於SPARQL房產路徑的早期草案),以限制路徑的長度(這裏至少需要1 skos:broader
並允許最多3) -
PREFIX dbr: <http://dbpedia.org/resource/>
PREFIX dct: <http://purl.org/dc/terms/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
SELECT DISTINCT ?cat
WHERE
{ ?cat
^skos:broader{1,3}/^dct:subject
<http://dbpedia.org/resource/Apple_Inc.> ,
dbr:IPhone
}
另一種簡潔的選擇,此時使用標準SPARQL Property Paths syntax限制路徑的長度 -
PREFIX dbr: <http://dbpedia.org/resource/>
PREFIX dct: <http://purl.org/dc/terms/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
SELECT DISTINCT ?cat
WHERE
{ ?cat
^skos:broader/^skos:broader?/^skos:broader?/^dct:subject
<http://dbpedia.org/resource/Apple_Inc.> ,
dbr:IPhone
}
您也可以使用2個語句在where子句中的原樣路徑,首先在Virtuoso-具體形式 -
{ <http://dbpedia.org/resource/Apple_Inc.>
dct:subject/skos:broader{1,3} ?cat .
dbr:IPhone
dct:subject/skos:broader{1,3} ?cat .
}
- 然後在標準SPARQL -
{ <http://dbpedia.org/resource/Apple_Inc.>
dct:subject/skos:broader/skos:broader?/skos:broader? ?cat .
dbr:IPhone
dct:subject/skos:broader/skos:broader?/skos:broader? ?cat .
}
'選擇不同的貓{ DCT <?http://dbpedia.org/resource/Apple_Inc>:主體/ SKOS:更寬*貓。 dbr:IPhone dct:subject/skos:更廣泛*?貓。 }'但是可以肯定的,你可能會得到一個超時,因爲這可以成爲相當昂貴 – AKSW
在炫技,你也可以嘗試在路徑的長度增加一個限制:'選擇不同的貓{ dct:subject/skos:範圍更廣{1,3}?cat。 dbr:IPhone dct:subject/skos:更寬{1,3}?貓。 }' –
AKSW
更緊湊版本:'選擇不同貓{ 貓^ SKOS:更寬{1,3}?/^DCT:受試者,DBR:IPhone }' –
AKSW