2014-05-01 65 views
-1

所有數據屬性斷言我有這樣SPARQL:如何獲得的anindividual

<rdf:Description rdf:about="http://www.semanticweb.org/li/ontologies/159702/fcd#W21"> 
    <prop:dm rdf:datatype="http://www.w3.org/2001/XMLSchema#double">99.87</prop:dm> 
    <prop:den rdf:datatype="http://www.w3.org/2001/XMLSchema#double">0.86</prop:den> 
    <prop:p rdf:datatype="http://www.w3.org/2001/XMLSchema#double">20.0</prop:p> 
    <prop:glus rdf:datatype="http://www.w3.org/2001/XMLSchema#double">1.1</prop:glus> 
    <prop:k rdf:datatype="http://www.w3.org/2001/XMLSchema#double">300.0</prop:k> 
    <rdf:type rdf:resource="http://www.semanticweb.org/li/ontologies/159702/fcd#Food"/> 
    <prop:enerc_kcal rdf:datatype="http://www.w3.org/2001/XMLSchema#double">398.24</prop:enerc_kcal> 
<rdf> 

本體基本上它discribe個人(W21)的數據屬性斷言(DM,書房,P,glus,k和enerc_kcal)。

如何返回個人使用sparql的所有數據屬性。 查詢我建剛返回一串「NamedIndividual」

PREFIX my: <http://www.semanticweb.org/li/ontologies/159702/fcd#> 
SELECT ?x 
WHERE { my:W21 rdf:type ?x} 

對此有什麼幫助?

回答

5

您的查詢,

PREFIX my: <http://www.semanticweb.org/li/ontologies/159702/fcd#> 
SELECT ?x 
WHERE { my:W21 rdf:type ?x} 

要求提供rdf:type屬性的值。在你顯示的數據中,只有一個,那就是owl:NamedIndividual。如果你希望所有屬性的值,你會使用類似

PREFIX my: <http://www.semanticweb.org/li/ontologies/159702/fcd#> 
SELECT ?p ?o 
WHERE { my:W21 ?p ?o } 

現在,在問題的標題,你問的數據屬性,但我不知道是否你問對於「屬性對象的數據」,或者實際上是詢問OWL DatatypeProperties是否具有文字而不是資源作爲值。如果這就是你想要的,你可以使用:

PREFIX my: <http://www.semanticweb.org/li/ontologies/159702/fcd#> 
PREFIX owl:  <http://www.w3.org/2002/07/owl#> 
SELECT ?p ?o 
WHERE { my:W21 ?p ?o . ?p a owl:DatatypeProperty } 

獲取所有實際聲明爲數據類型屬性的屬性值。如果你沒有財產聲明,但是,你可能只想要求文字對象:

PREFIX my: <http://www.semanticweb.org/li/ontologies/159702/fcd#> 
PREFIX owl:  <http://www.w3.org/2002/07/owl#> 
SELECT ?p ?o 
WHERE { my:W21 ?p ?o . filter isLiteral(?o) } 
+0

謝謝約書亞,最後兩個是我想要的 –

-1

我不知道,如果我理解正確的問題,而是怎麼樣:

SELECT DISTINCT * WHERE { ?s ?p ?o }