2016-06-21 68 views
1

我有一個查詢獲取一些對象和屬性。 例如從DBpedia使用SPARQL獲取屬性名稱

PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#> 
SELECT DISTINCT * { 
?company a <http://dbpedia.org/ontology/Company> . 
OPTIONAL { 
?company <http://dbpedia.org/ontology/industry> ?industry . 
} 
OPTIONAL { 
?company <http://dbpedia.org/ontology/revenue> ?revenue_ . 
} 
OPTIONAL { 
?company <http://dbpedia.org/ontology/homepage> ?homepage_ . 
} 
OPTIONAL { 
?company <http://dbpedia.org/ontology/industry> ?industry_ . 
} 
OPTIONAL { 
?company <http://dbpedia.org/ontology/location> ?location_ . 
} 
}LIMIT 200 

我得到一些成果,例如 SPARQL Result table

但是其實我要的是屬性的簡單字符串。類似於

company   industry   revenue   homepage   location 
Argonon   Digital media 5.0E7       United Kingdom 

如何創建一個查詢以獲取屬性的名稱?

+0

據我從你的榜樣明白你想要的值(三元的對象)的「名字」,而不是性能。如果我理解正確,你可以通過'/rdfs:label'得到它們,但如果有些沒有標籤,你會在結果中錯過它們。 –

+0

謝謝@IvoVelitchkov,這正是我想要的。如果您將其作爲答案發布,我可以對其進行投票並接受它,如果沒有人發佈更好的答案。 – Josef

回答

2

聽起來好像你只想得到其中一些值的rdfs:標籤。您可以通過關注該屬性,然後rdfs:標籤與屬性路徑。您可能還想根據標籤的語言進行過濾。您的查詢的另一個問題是首頁屬性實際上應該是dbp:屬性,而不是dbo:屬性。一旦你這樣做,你結束了這個查詢:

PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#> 
SELECT DISTINCT * { 
?company a <http://dbpedia.org/ontology/Company> . 
OPTIONAL { 
?company <http://dbpedia.org/ontology/industry>/rdfs:label ?industry . 
filter langMatches(lang(?industry),"en") 
} 
OPTIONAL { 
?company <http://dbpedia.org/ontology/revenue> ?revenue_ . 
} 
OPTIONAL { 
?company <http://dbpedia.org/property/homepage> ?homepage_ . 
} 
OPTIONAL { 
?company <http://dbpedia.org/ontology/industry>/rdfs:label ?industry_ . 
filter langMatches(lang(?industry_),"en") 
} 
OPTIONAL { 
?company <http://dbpedia.org/ontology/location>/rdfs:label ?location_ . 
filter langMatches(lang(?location_),"en") 
} 
}LIMIT 200 

SPARQL results