我有像这样的本体
<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}
对此有何帮助?
答案 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 }