2017-06-19 2 views
1

数値データ型を扱うときにSPARQLに問題があります。 http://cabas.ugr.es:8890/sparqlSPARQLによって文字列として返される数値プロパティ

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

IはSPARQLエンドポイントのVirtuosoに取り付けられた:

私は特定の性別である学生の数を表すプロパティの組を定義しているオントロジー(http://cabas.ugr.es/ontology/ugr)を有しますthis linkで対応することになる

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 
} 

()

:)、ここで私は、たとえば次のクエリを入力します。

すべてのレコードを返しますが、フィールド「hombres」「mujeres」は数値の代わりに文字列であるかのように返します。たとえば、FILTER (?hombres > 500)のようなフィルタを適用することはできません。私が間違っているものは何か考えていますか?ところで

、オントロジーと値を持つリソースは、これらのリンクからアクセスできます:

+1

プロパティの範囲を定義するだけでは不十分です。 ':x:hombres" 352 "' - > ':x:hombres" 352 "^^ xsd:nonNegativeInteger' – AKSW

答えて

5

、あなたはそのように定義する必要があります。

は今、あなたは、文字列としてそれらを定義します。

<http://cabas.ugr.es/resources/MatriculasGrado1516#21> 
    ns0:hombres "91" ; 
    ns0:mujeres "68" . 

は整数としてそれらを定義するには、あなたがxsd:integerに自分のタイプを設定する必要があります。

<http://cabas.ugr.es/resources/MatriculasGrado1516#21> 
    ns0:hombres "91"^^xsd:integer ; 
    ns0:mujeres "68"^^xsd:integer . 

文字列もクエリで整数にキャストすることができ 、 必要に応じて。例:

FILTER(xsd:integer(?hombres) > 500) 
+0

それはすべて私が追加する必要があったそれを機能させる。ありがとう! – germaaan

関連する問題