SPARQL Select 特定数据

SPARQL Select specific data

我的 fuseki 服务器中有以下数据集:

<http://person/Mark-John>  <http://purl.org/dc/elements/1.1/name>
                "Mark John" ;
        <http://purl.org/dc/elements/1.1/nationality>
                "American" .

<http://person/Elizabeth-Mary>
        <http://purl.org/dc/elements/1.1/name>
                "Elizabeth Mary" ;
        <http://purl.org/dc/elements/1.1/nationality>
                "American" .

如何只获取 name = "Mark John" 条目的数据?

这是我试过的:

public static void main(String[] argv) throws IOException {
    execSelectAndPrint(
            "http://localhost:3030/Date/query",
            "PREFIX dc: <http://purl.org/dc/elements/1.1/> " + "SELECT * WHERE { ?name dc:name 'Mark John' }"
            );
}

但是 returns 这个:

名字
http://person/Mark-John

而不是 Mark JohnAmerican

基本上,我想输出一个人的所有可用数据...在我的例子中,namenationality

您的查询 returns 与查询中的三重模式完全匹配。您正在请求名称为 "Mark John" 的资源,而 RDF 资源由 URI 表示。实际上,您的变量名称令人困惑,因为该名称将位于三元组的对象位置...

如果你想再次拥有这个名字,你必须使用一个变量:

PREFIX dc: <http://purl.org/dc/elements/1.1/> 
SELECT ?name WHERE { 
 VALUES ?name {"Mark John"}
 ?s dc:name ?name .
}

而且您没有select查询中的国籍。你怎么期望这会被退回?

PREFIX dc: <http://purl.org/dc/elements/1.1/> 
SELECT ?name ?ǹationality WHERE { 
 VALUES ?name {"Mark John"}
 ?s dc:name ?name ;
    dc:nationality ?nationality .
}