मेरे पास अलग-अलग दस्तावेज़ों के हिस्से के रूप में संग्रहीत अप्रबंधित ट्रिपल हैं जिन्हें मैं अपनी सामग्री डीबी में संग्रहीत कर रहा हूं। अनिवार्य रूप से प्रत्येक दस्तावेज़ एक व्यक्ति का प्रतिनिधित्व करता है, और परिभाषित ट्रिपल व्यक्ति के प्रबंधक के लिए दस्तावेज़ यूआरआई निर्दिष्ट करता है। मैं पाराचार में उनके नीचे एक प्रबंधक और उनके नीचे के सभी लोगों के बीच पथ की लंबाई निर्धारित करने के लिए SPARQL का उपयोग करने की कोशिश कर रहा हूं।क्या SPARQL क्वेरीज़ को अनुकूलित करने का कोई तरीका है?
दस्तावेज़ में ट्रिपल तरह
<sem:triple xmlns:sem="http://marklogic.com/semantics">
<sem:subject>http://rdf.abbvienet.com/infrastructure/person/10740024</sem:subject>
<sem:predicate>http://schemas.abbvienet.com/ontologies/infrastructure.owl#manager</sem:predicate>
<sem:object>http://rdf.abbvienet.com/infrastructure/person/10206242</sem:object>
</sem:triple>
मैं पदानुक्रम में निम्नलिखित SPARQL क्वेरी, जो एक प्रबंधक वापस जाने के लिए इस्तेमाल किया जा सकता, उन्हें नीचे aperson पाया है देखो, और नोड्स की संख्या दूर वे कर रहे हैं ।
select ?manager ?leaf (count(?mid) as ?distance) {
BIND(<http://rdf.abbvienet.com/infrastructure/person/10025613> as ?manager)
?leaf <http://schemas.abbvienet.com/ontologies/infrastructure.owl#manager>* ?mid .
?mid <http://schemas.abbvienet.com/ontologies/infrastructure.owl#manager>+ ?manager .
}
group by ?manager ?leaf
order by ?manager ?leaf
यह काम करता है, लेकिन बहुत धीमी है, यहां तक कि इस मामले में जहां पदानुक्रम पेड़ मैं देख रहा हूँ एक या दो स्तर नीचे है में, चारों ओर 15s। मेरे पास 63,139 डीबी में इस प्रकार के प्रबंधक ट्रिपल हैं।
यह 'पत्थर' द्वारा नहीं होना चाहिए क्योंकि आपके पास 'प्रबंधक' के लिए केवल एक बाध्यकारी है। – scotthenninger