2011-03-19 12 views
7

मैं वर्तमान में कक्षाओं की एक सूची प्राप्त करने के लिए SPARQL एंडपॉइंट के माध्यम से DBPedia's Infobox Onyology database क्वेरी करने का एक तरीका ढूंढ रहा हूं, किसी चयनित वर्ग के उप-वर्ग, और किसी दिए गए वर्ग के गुण। जहां तक ​​मैं खोजने में सक्षम हूं, आपको या तो उस संपत्ति को जानने की आवश्यकता है जिसे आप ढूंढ रहे हैं या कुछ विशिष्ट खोज रहे हैं - मुझे मिले सभी उदाहरण इस विचार पर आधारित हैं कि आप कुछ विशिष्ट खोजना चाहते हैं (एक निश्चित ऊंचाई, आदि के ऊपर शहरों की आबादी की तरह), जबकि मैं कुछ ऐसा बनाना चाहता हूं जहां मैं श्रेणियों को प्रभावी ढंग से "ब्राउज" कर सकूं। उदाहरण के लिए, 0 उल्पर "उल्लू: चीज" के उप-वर्गों की सूची से शुरू करना और उपयोगकर्ता को किसी चयनित उप-वर्ग के उप-वर्गों की सूची के साथ प्रस्तुत करना। मैपिंग विकी के माध्यम से ऐसा कुछ ब्राउज़ करना संभव लगता है, लेकिन SPARQL एंडपॉइंट से सीधे पूछना बेहतर होगा।डीबीपीडिया इन्फोबॉक्स श्रेणियां प्राप्त करना

क्या कोई साधारण SPARQL क्वेरी है जो उन वर्गों के उपलब्ध वर्गों और गुणों को वापस कर देगी?

अद्यतन: मैं एक तरह से के माध्यम से this query:

SELECT ?subject WHERE { 
    ?subject rdfs:subClassOf owl:Thing 
} 

कौन उल्लू का उपवर्गों की सूची लौटाता पुनरावृत्ति द्वारा वर्ग पदानुक्रम ऐसा लगता है, प्राप्त करने के लिए लेकर आए हैं: बात, और अगर मैं उल्लू को प्रतिस्थापित करें: उप-वर्गों में से किसी एक के साथ बात करते हुए, मुझे उप-वर्गों की सूची मिलती है, जब तक कोई उप-वर्ग नहीं होता है, उस बिंदु पर मैं उन सभी संसाधनों का चयन कर सकता हूं जिनके पास चयनित उप-वर्ग द्वारा दिया गया प्रकार है। मुझे अभी भी पूरा यकीन नहीं है कि उप-वर्ग में सभी गुणों को आम कैसे प्राप्त किया जाए, हालांकि।

अपडेट 2 अब करीब आना। वह भी एक ऐसे देश हैं, साथ ही उनके खिताब: इस क्वेरी मुझे सभी गुण (संपत्ति dbpedia के बच्चों): हो जाता है

SELECT DISTINCT ?prop ?title WHERE { 
    ?country ?prop ?value. 
    ?country a <http://dbpedia.org/ontology/Country>. 
    ?prop rdf:type rdf:Property. 
    ?prop rdfs:label ?title 
} 

वास्तव में है कौन सा सब मैं वास्तव में के लिए कहा। आखिरी चीज जो मैं अब करने की कोशिश कर रहा हूं वह उन पृष्ठों की संख्या से ऑर्डर करने का प्रयास करना है, जिनमें वे दिखाई देते हैं (संभवतः सबसे आम गुण सबसे ज्यादा रुचि वाले होंगे)।

select ?property where { 
    ?property rdfs:domain <http://dbpedia.org/ontology/SpaceMission> 
} 

इन गुणों सभी SpaceMission विषय के रूप में स्वीकार करते हैं:

उत्तर

7

ठीक है, इसलिए मैं वास्तव में समझ गए होंगे इसे कम करने के लिए बिल्कुल कम या कम, इसलिए मैं इसे सिर्फ एक संपादन के बजाय उत्तर के रूप में सबमिट कर रहा हूं।

SELECT ?class ?label WHERE { 
    ?class rdfs:subClassOf owl:Thing. 
    ?class rdfs:label ?label. 
    FILTER(lang(?label) = "en") 
} 

क्वेरी में दूध पिलाने की चयनित परिणाम उल्लू के स्थान पर:: क्या लगता मुझे देने के लिए मैं वास्तव में क्या देख रहा हूँ पदानुक्रम this query का उपयोग कर वर्ग के माध्यम से पुनरावृत्ति से शुरू करने के लिए है बात हर बार।

एक बार जब उपयोगकर्ता सबसे कम स्तर के वर्ग है कि वे चाहते हैं, संपत्तियों की एक सूची प्रदर्शित करने के प्रविष्टियों की संख्या जिसमें वे प्रकट अवरोही क्रम में, का चयन किया है, मैं this query का उपयोग करें:

SELECT ?prop ?title WHERE { 
    ?country ?prop []. 
    ?country a <http://dbpedia.org/ontology/Country>. 
    ?prop rdf:type rdf:Property. 
    ?prop rdfs:label ?title 
} ORDER BY DESC(COUNT(DISTINCT ?country)) 

बेशक, यदि आप वास्तव में उन परिणामों को देखते हैं, तो वहां कुछ मज़ेदार गुण हैं जिनके पास बहुत वर्णनात्मक लेबल नहीं हैं ("एस"? क्या?), लेकिन कम से कम जो मैं पहली जगह में खोज रहा था।

2

यह आपको गुण जिसका rdfs:domain के सभी मिल जाएगा SpaceMission रों है।

ध्यान दें कि आरडीएफ (एस) में, प्रत्येक संपत्ति के लिए एक स्पष्ट rdfs:domain कथन की आवश्यकता नहीं है, क्योंकि rdfs:domain एस संपत्ति के उपयोग से निहित किया जा सकता है। इसलिए हो सकता है कि इस क्वेरी आप सभी गुण है कि किया गया है की एक सूची दे देंगे SpaceMission की एक डोमेन के साथ परिभाषित लेकिन आप सभी गुण है कि वास्तव में SpaceMission के उदाहरण के सभी के साथ उपयोग किया जाता है की एक सूची नहीं देंगे ।

+0

के लिए जो भी कारण है कि काम करने के लिए जब आप SpaceMission के बजाय देश का चयन प्रतीत नहीं होता। यह सब लौटता है "जुड़वां देश"। इसके अलावा, यह केवल उन चीजों को वापस करने लगता है जो डीबीपीडिया में हैं: ऑटोलॉजी, डीबीपीडिया नहीं: संपत्ति। मैंने मुख्य पोस्ट को अपडेट किया है जो मेरे मूल प्रश्न का उत्तर है। – Paul

3

(1) सभी मौजूदा कक्षाओं के लिए क्वेरी: क्लास सी के किसी भी मामले में इस्तेमाल सभी गुण के लिए

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
SELECT DISTINCT ?class 
WHERE { 
    ?s rdf:type ?class . 
} 

(2) प्रश्न:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
SELECT DISTINCT ?property 
WHERE { 
    ?s rdf:type <C> . 
    ?s ?property ?o 
} 
1

यह काफी संभव है कि गुण के कुछ वास्तव में परिभाषित नहीं कर रहे हैं के साथ जैसे:

?p a rdf:Property .

लेकिन बीच की स्थिति में किसी भी पद के एक संपत्ति परिभाषा से है। तो अगर आप के साथ और अधिक परिणाम प्राप्त हो सकता है:

 
SELECT ?prop ?title WHERE { 
    ?country a <http://dbpedia.org/ontology/Country>. 
    ?country ?prop [] . 
    ?prop rdfs:label ?title . 
} 
ORDER BY DESC(COUNT(DISTINCT ?country)) 

(थोड़ा पुनर्क्रमित, चयनात्मक जा रहा है शुरू में प्रदर्शन में सुधार कर सकते हैं)

संबंधित मुद्दे