sparql:如何获取个人的所有数据属性断言

时间:2014-05-01 07:19:21

标签: rdf sparql

我有像这样的本体

<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>

基本上它描述了一个人(W21)有数据属性断言(dm,den,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}

对此有何帮助?

2 个答案:

答案 0 :(得分: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 }

现在,在问题标题中,您已经询问了数据属性,但我不确定您是否要求提供&#34;数据是属性的对象&#34;,或者如果您实际上询问的是具有文字而非资源的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) }

答案 1 :(得分:-1)

我不知道我是否正确理解了这个问题,但是:

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