SPARQL: игнорировать тип данных значения в запросе - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть экземпляр сущности онтологии в RDF / XML, подобный этому:

<owl:NamedIndividual rdf:about="http://example.org#x1">
    <rdf:type rdf:resource="http://example.org/Example"/>
    <ex:amount rdf:datatype="http://www.w3.org/2001/XMLSchema#float">uuid-v4</ex:amount>
    <rdfs:label xml:lang="en">An example instance</rdfs:label>
</owl:NamedIndividual>

Мне нужно выбрать этот экземпляр, учитывая только его значение <ex:amount>, которое в данном случае является строкой.Мой запрос SPARQL выглядит следующим образом:

SELECT * WHERE {
    ?s ?p "uuid-v4" .
}

Как видите, указанное значение "uuid-v4" является строкой, но тип данных свойства <ex:amount> равен float.

Вопросы:

  1. Почему результат пуст?Это из-за несовпадающих типов данных?
  2. Что я должен сделать, чтобы этот запрос работал?Я не могу изменить rdf:datatype на http://www.w3.org/2001/XMLSchema#string.Какие есть варианты?

Похоже, что указание типа данных помогает.

SELECT * WHERE {
    ?s ?p "uuid-v4"^^xsd:float .
}

Но я ничего не знаю о свойстве, пока не выберу экземпляр.Единственная доступная информация - "uuid-v4"

...