2017-09-19 78 views
0
連接的entites

我從文本中提取的實體,大部分時間我得到多個entites的,例如<http://dbpedia.org/resource/NASA><http://dbpedia.org/resource/IPhone><http://dbpedia.org/resource/Apple_Inc.>發現,在DBpedia中與SPARQL

這兩個entites的科目,不共享相同的dct:subject有沒有一種方法來查詢路徑來獲取連接我的實體的主題列表?

我的目標是創建一種「頁面排名」,以找到給定實體最相關的主題。

最好用計數器在它們之間有多少步。

我試圖蠻力它,開始一個實體,讓所有的科目,然後讓所有的entites爲主題等,但查詢開始變得巨大。

+1

'選擇不同的貓{ DCT <?http://dbpedia.org/resource/Apple_Inc>:主體/ SKOS:更寬*貓。 dbr:IPhone dct:subject/skos:更廣泛*?貓。 }'但是可以肯定的,你可能會得到一個超時,因爲這可以成爲相當昂貴 – AKSW

+1

在炫技,你也可以嘗試在路徑的長度增加一個限制:'選擇不同的貓{ dct:subject/skos:範圍更廣{1,3}?cat。 dbr:IPhone dct:subject/skos:更寬{1,3}?貓。 }' – AKSW

+1

更緊湊版本:'選擇不同貓{ 貓^ SKOS:更寬{1,3}?/^DCT:受試者,DBR:IPhone }' – AKSW

回答

2

從@ 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 . 
    }