Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

SPARQL क्वेरी एक नोड के सभी जनक प्राप्त करने के लिए

आपके डेटा को 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" |
-----------------------------------

यह हो सकता है कुछ कट्टर स्ट्रिंग प्रसंस्करण करना और मल्टीलाइन स्ट्रिंग प्राप्त करना संभव हो। आप इस उत्तर के बाद के भाग को देख सकते हैं जहां विचारों के लिए एक अच्छी तरह से संरेखित मैट्रिक्स के लिए कुछ फैंसी स्वरूपण है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. डुप्लीकेट कुंजी अद्यतन के साथ MySQL लोड डेटा इनफाइल

  2. ऑफ़लाइन काम करने वाले php mysql एप्लिकेशन का निर्माण कैसे करें

  3. मैं किसी दिए गए MySQL तालिका से कॉलम नाम कैसे प्राप्त करूं?

  4. MySQL में गलत स्ट्रिंग मान को कैसे ठीक करें

  5. PHP और MySQL सबसे छोटी और सबसे बड़ी संभावित तिथि