आपके डेटा को RDF में data.n3
. के रूप में दर्शाया जा सकता है :
@prefix : <http://example.org/> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
:Network rdfs:subClassOf :Main .
:ATM rdfs:subClassOf :Network .
:ARPANET rdfs:subClassOf :Network .
:Software rdfs:subClassOf :Main .
:Linux rdfs:subClassOf :Software .
:Windows rdfs:subClassOf :Software .
:XP rdfs:subClassOf :Windows .
:Win7 rdfs:subClassOf :Windows .
:Win8 rdfs:subClassOf :Windows .
यहां से, आप केवल एक SPARQL क्वेरी चाहते हैं जो rdfs:subClassOf
के पथ (खाली पथ सहित) द्वारा किसी विशेष वर्ग से जुड़ी सभी चीजों को ढूंढती है गुण।
prefix : <http://example.org/>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
select ?superclass where {
:Win7 rdfs:subClassOf* ?superclass
}
--------------
| superclass |
==============
| :Win7 |
| :Windows |
| :Software |
| :Main |
--------------
उस क्वेरी के परिणाम पथ में उनकी स्थिति के अनुसार आवश्यक रूप से आदेशित नहीं होते हैं (हालांकि इस मामले में वे होते हैं)। यदि आपको क्रम में उनकी आवश्यकता है, तो आप यह कर सकते हैं (जो स्थिति की गणना के बारे में इस उत्तर पर आधारित है RDF सूची में तत्वों का ):
prefix : <http://example.org/>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
select ?class where {
:Win7 rdfs:subClassOf* ?mid .
?mid rdfs:subClassOf* ?class .
}
group by ?class
order by count(?mid)
यह प्रत्येक पूर्वज को ?class
पाता है का :Win7
साथ ही प्रत्येक ?mid
मध्यवर्ती पूर्वज। पूर्वजों के लिए ?class
, दूरी की गणना बीच में मध्यवर्ती संबंधों की संख्या के रूप में की जाती है (count(?mid)
) यह उस दूरी के आधार पर परिणामों का आदेश देता है, इसलिए :Win7
निकटतम पूर्वज है, :Windows
उसके बाद, और इसी तरह।
आप अपनी पसंद की कुछ फैंसी फॉर्मेटिंग भी इस तरह कर सकते हैं:
prefix : <http://example.org/>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
select (group_concat( ?name ; separator="--" ) as ?path) where {
{
select ?name where {
:Win7 rdfs:subClassOf* ?mid .
?mid rdfs:subClassOf* ?class .
bind( strAfter( str(?class), "http://example.org/") as ?name )
}
group by ?class ?name
order by count(?mid)
}
}
-----------------------------------
| path |
===================================
| "Win7--Windows--Software--Main" |
-----------------------------------
यह हो सकता है कुछ कट्टर स्ट्रिंग प्रसंस्करण करना और मल्टीलाइन स्ट्रिंग प्राप्त करना संभव हो। आप इस उत्तर के बाद के भाग को देख सकते हैं जहां विचारों के लिए एक अच्छी तरह से संरेखित मैट्रिक्स के लिए कुछ फैंसी स्वरूपण है।