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
与相同的langfoaf: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 . }
}