Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Properties 连接资源的属性(如果SPARQL中存在)_Properties_Sparql - Fatal编程技术网

Properties 连接资源的属性(如果SPARQL中存在)

Properties 连接资源的属性(如果SPARQL中存在),properties,sparql,Properties,Sparql,假设我有三重存储,其中一些资源以这种方式表示人员: <http://natarchives.com.mt/person/person8755> a foaf:Person ; foaf:family_name "Calleja"@mt , "Calleya"@la ; foaf:firstName "Nardus" . <http://natarchives.com.mt/person/person3939>

假设我有三重存储,其中一些资源以这种方式表示人员:

<http://natarchives.com.mt/person/person8755>
    a                 foaf:Person ;
    foaf:family_name  "Calleja"@mt , "Calleya"@la ;
    foaf:firstName    "Nardus" .

<http://natarchives.com.mt/person/person3939>
        a               foaf:Person ;
        foaf:firstName  "Martinj" .
SELECT DISTINCT ?firstName 


             ?family_name
                ?name 
WHERE
  {            ?person  a                 foaf:Person  ;
                        foaf:firstName    ?firstName   .
    OPTIONAL { ?person  foaf:family_name  ?family_name . } 
    bind ( COALESCE(?firstName, "") As ?firstName1).
    bind ( COALESCE(?family_name, "") As ?family_name1).
    bind (concat(str(?firstName1),str(?family_name1)) as ?name).
  }

对。这里没有查询,因此很难调整。基本原理是这样的--


--您可以在URIBurner.com(和)上通过Virtuoso看到它的实时运行。

非常感谢您……但是如果我也想在全名列中显示Martinj呢?您测试过我的查询了吗?也许你应该。它应该通过在
?全名
列中显示
Martinj
来回答您的后续问题。是的,我显示了,不幸的是,当只提供了名字时,它不显示Martinj。它是空的您作为SPARQL查询处理器和/或RDF数据存储(a/k/a四元存储或三元存储)运行的是什么软件?请注意,对于您的各种问题,这已经被问了好几次了——因为这个细节对于说“您遇到了一个bug”或“这是该软件的一个已知限制”之类的话很重要。我正在添加一个链接,指向正在运行的查询演示。不要添加问题的解决方案…1)添加一个专用答案,2)“接受”您自己的答案。请注意,您的“对未来的修复”不会在两个字段之间留有空格,因此您将从示例数据中获得
NardusCalleja
NardusCalleya
Martinj
。使用
BIND
是一个选项,但任何完全符合SPARQL 1.1标准的引擎都不需要。此外,我还忽略了一些带有lang标记的字符串,这可能会导致输出超出预期。这并没有影响到这个问题的大部分内容,但我认为这是值得一提的。解决这些问题的方法多种多样;哪个是合适的在很大程度上取决于数据的总体特征(是否所有的
foaf:firstName
字符串都没有标记?是否应该
foaf:firstName
与相同的lang
foaf:family_name
?等匹配),所以我在这里不做更多的详细说明。
SELECT DISTINCT ?firstName 
                ?family_name
                ( CONCAT ( ?firstName, " ", ?family_name ) AS ?fullname ) 
WHERE
  {            ?person  a                 foaf:Person  ;
                        foaf:firstName    ?firstName   .
    OPTIONAL { ?person  foaf:family_name  ?family_name . } 
  }