我有这样的本体论
<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>
Run Code Online (Sandbox Code Playgroud)
基本上它描述了一个人(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}
Run Code Online (Sandbox Code Playgroud)
对此有何帮助?
您的查询,
PREFIX my: <http://www.semanticweb.org/li/ontologies/159702/fcd#>
SELECT ?x
WHERE { my:W21 rdf:type ?x}
Run Code Online (Sandbox Code Playgroud)
要求rdf:type财产的价值.在您显示的数据中,只有其中一个,那就是owl:NamedIndividual.如果你想要所有属性的值,你可以使用类似的东西
PREFIX my: <http://www.semanticweb.org/li/ontologies/159702/fcd#>
SELECT ?p ?o
WHERE { my:W21 ?p ?o }
Run Code Online (Sandbox Code Playgroud)
现在,在问题标题中,您已经询问了数据属性,但我不确定您是否要求"作为属性对象的数据",或者您是否真的询问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 }
Run Code Online (Sandbox Code Playgroud)
获取实际声明为数据类型属性的所有属性值.但是,如果您没有属性声明,则可能只想要提供文字对象:
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) }
Run Code Online (Sandbox Code Playgroud)