【问题标题】:Sparql queries with two variables带有两个变量的 Sparql 查询
【发布时间】:2013-04-03 14:10:59
【问题描述】:

如何使用 2 个变量进行 sparql 查询? 让我解释一下: 我有历史地图的本体。我的实体是:HistoricalMapLanguageColor 连接它们的对象属性是:hasLanguagehasColor(hist.map 有语言和颜色)。 如果我进行查询:

SELECT ?HistoricalMap ?Language ?Color
        WHERE { ?HistoricalMap p1:hasLanguage ?Language.
                       ?HistoricalMap p1:hasColor ?Color.
}

我得到了所有有颜色和语言的地图。

我如何索要hasColor "Red" AND hasLanguage French 的地图?

【问题讨论】:

    标签: sparql


    【解决方案1】:

    因为你想要“AND”,所以你可以在模式中使用常量。

    SELECT ?HistoricalMap
            WHERE { ?HistoricalMap p1:hasLanguage "French".
                           ?HistoricalMap p1:hasColor "Red" .
    }
    

    如果您还想返回变量,请使用FILTER

    SELECT ?HistoricalMap ?Language ?Color
            WHERE { ?HistoricalMap p1:hasLanguage ?Language.
                           ?HistoricalMap p1:hasColor ?Color.
                    FILTER(?Language = "French" && ?Color = "Red")
    }
    

    【讨论】:

    • :我尝试了建议的模式,但即使存在匹配项,它也会返回“找不到匹配项”。“法语”和“红色”在我的本体(Protege)中表示为实例。单词“ French" 和 "Red" 是实例的名称,它们也作为标签存储在这些实例中。也许这是某种问题?
    • 这是一个没有完整、最小示例的猜谜游戏。请出示数据;请说明您使用哪个系统进行查询。尝试 "Red"^^xsd:string 和 "French"^^xsd:string,因为 Protege 通常将字符串存储为数据类型文字。
    • 谢谢!我使用 Protege 3,Racer 推理机。我尝试了“^^xsd:string 没有结果。最后它以这种方式工作(法语和红色作为我实例的 url):SELECT ?HistoricalMap ?Material ?Color WHERE { ?HistoricalMap p1:hasLanguage owl-ontologies.com/Ontology1284104147.owl#French> .?HistoricalMap p1:hasColor owl-ontologies.com/Ontology1284104147.owl#Red> . }
    【解决方案2】:

    您需要了解法语红色在数据中的表示方式。

    在执行您提到的查询时,看看它们是如何返回的就足够了。

    查询 dbpedia,例如:

    SELECT ?entity
    WHERE {
      ?entity dbpedia-owl:colour <http://dbpedia.org/resource/Red> .
      ?entity dbpedia-owl:language <http://dbpedia.org/resource/French_language> .
    }
    

    【讨论】:

    • “French”和“red”在我的本体(Protege)中被表示为实例。“French”和“Red”是实例的名称,它们也作为标签存储在这些实例中实例。也许这是某种问题?
    • 使用 instance 的 url。 (参见 dbpedia 上的 url 示例)。
    • 感谢您的回答。它似乎接受了查询,但它返回空白行作为答案......即使有两个真正的答案......
    • 空白行或 0 个结果?您可以检查:(a) 大小写正确:url 区分大小写和 (b) 检查 select *?
    • 成功!这是a)。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2020-03-21
    • 2011-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-14
    • 2016-07-31
    • 1970-01-01
    相关资源
    最近更新 更多