SPARQL以字符串形式返回的数值属性
我在处理数字数据类型时遇到了SPARQL问题 我有一个ontology(),我在其中定义了一对属性,表示特定性别的学生人数:SPARQL以字符串形式返回的数值属性,sparql,rdf,semantic-web,ontology,linked-data,Sparql,Rdf,Semantic Web,Ontology,Linked Data,我在处理数字数据类型时遇到了SPARQL问题 我有一个ontology(),我在其中定义了一对属性,表示特定性别的学生人数: <http://cabas.ugr.es/ontology/ugr#hombres> a owl:DatatypeProperty, owl:FunctionalProperty, rdf:Property ; rdfs:label "hombres"@es, "men"@en ; rdfs:c
<http://cabas.ugr.es/ontology/ugr#hombres>
a owl:DatatypeProperty, owl:FunctionalProperty, rdf:Property ;
rdfs:label
"hombres"@es,
"men"@en ;
rdfs:comment
"Número de estudiantes hombres."@es,
"Number of male students."@en ;
rdfs:range xsd:nonNegativeInteger ;
rdfs:isDefinedBy <http://cabas.ugr.es/ontology/ugr#> ;
owl:sameAs <http://cabas.ugr.es/ontology/ugr#hombres> ;
owl:inverseOf <http://cabas.ugr.es/ontology/ugr#mujeres> ;
ns1:term_status "stable" .
<http://cabas.ugr.es/ontology/ugr#mujeres>
a owl:DatatypeProperty, owl:FunctionalProperty, rdf:Property ;
rdfs:label
"mujeres"@es,
"women"@en ;
rdfs:comment
"Número de estudiantes mujeres."@es,
"Number of female students."@en ;
rdfs:range xsd:nonNegativeInteger ;
rdfs:isDefinedBy <http://cabas.ugr.es/ontology/ugr#> ;
owl:sameAs <http://cabas.ugr.es/ontology/ugr#mujeres> ;
owl:inverseOf <http://cabas.ugr.es/ontology/ugr#hombres> ;
ns1:term_status "stable" .
owl:DatatypeProperty,owl:FunctionalProperty,rdf:Property;
rdfs:标签
“hombres”@es,
“男人”@en;
rdfs:评论
“我们的学生都很好。”@es,
“男生人数。”@en;
rdfs:range xsd:nonNegativeInteger;
rdfs:isDefinedBy;
猫头鹰:萨摩亚;
猫头鹰:倒数;
ns1:术语_状态“稳定”。
owl:DatatypeProperty,owl:FunctionalProperty,rdf:Property;
rdfs:标签
“mujeres”@es,
"女人"恩,;
rdfs:评论
“我们的学生都很好。”@es,
“女生人数。”@en;
rdfs:range xsd:nonNegativeInteger;
rdfs:isDefinedBy;
猫头鹰:萨摩亚;
猫头鹰:倒数;
ns1:术语_状态“稳定”。
我在Virtuoso()上安装了一个SPARQL端点,我在其中输入以下查询:
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX ugr: <http://cabas.ugr.es/ontology/ugr#>
SELECT ?X ?titulacion ?rama ?hombres ?mujeres
WHERE {
?X ugr:Titulación ?titulacion .
?X ugr:RamaConocimiento ?rama .
?X ugr:hombres ?hombres .
?X ugr:mujeres ?mujeres
}
前缀rdfs:
前缀ugr:
选择?X?提特拉西翁?拉玛?霍姆布雷斯?穆杰雷斯
在哪里{
?X ugr:Titulación?titulacion。
?X ugr:RamaConocimiento?rama。
?X ugr:hombres?hombres。
?X ugr:mujeres?mujeres
}
(与之相对应)
它返回所有记录,但是字段“hombres”和“mujeres”将它们返回给我,就像它是一个字符串而不是一个数值一样,因此,例如,不可能应用类似过滤器(?hombres>500)
的过滤器。知道我错在哪里吗
顺便说一下,可以通过以下链接访问本体和具有值的资源:
- 本体:
- 海龟格式:
- RDF/XML格式:
- 海龟格式:
- 资源:
- 海龟格式:
- RDF/XML格式:
- 海龟格式:
<http://cabas.ugr.es/resources/MatriculasGrado1516#21>
ns0:hombres "91" ;
ns0:mujeres "68" .
如果需要,字符串也可以在查询中转换为整数。例如:
FILTER(xsd:integer(?hombres) > 500)
为了将数字视为数字,您需要将它们定义为数字 现在将它们定义为字符串:
<http://cabas.ugr.es/resources/MatriculasGrado1516#21>
ns0:hombres "91" ;
ns0:mujeres "68" .
如果需要,字符串也可以在查询中转换为整数。例如:
FILTER(xsd:integer(?hombres) > 500)
仅定义属性的范围是不够的。这也必须通过向每个文本添加数据类型来反映在实例数据中:
:x:hombres“352”
->:x:hombres“352”^^xsd:nonNegativeInteger
定义属性的范围是不够的。这也必须通过向每个文本添加数据类型来反映在实例数据中::x:hombres“352”
->:x:hombres“352”^^xsd:nonNegativeInteger