嗨我有这样的查询:
SELECT ?a ?b
WHERE
{
?c property:name "myThing"@en
?c property:firstValue ?b
?c property:secondValue ?a
}
Run Code Online (Sandbox Code Playgroud)
我如何划分第一个nuber和第二个?想要这样的事情:
SELECT ?a/?b
WHERE
{
?c property:name "myThing"@en
?c property:firstValue ?b
?c property:secondValue ?a
}
Run Code Online (Sandbox Code Playgroud)
谢谢
如何检索两个节点之间的路径长度?例如,给定组织层次结构,如何确定父组织和后代组织分离的距离?请考虑以下方案:
OrgA -hasSubOrganization-> OrgB, OrgC
这是一个非常简单的情况,我希望得到一个实体的所有直接子组织.因此路径长度为1.
OrgA -> OrgB -> OrgC
或一般情况
OrgA -> OrgB - - - - - - - - OrgZ
Run Code Online (Sandbox Code Playgroud)我想以递归方式遍历图表,并通过该hasSubOrganization属性查找属于另一个组织的每个组织.为了让所有子组织递归,我可以使用属性路径,例如+运算符:
OrgA hasSubOrganization+ ?subOrg
Run Code Online (Sandbox Code Playgroud)
这将为我提供所有子组织,直到叶节点.但我的最终目标是构建组织层次结构,但有关"节点/步骤/级别/跳过子组织的数量"的信息将丢失.这意味着我无法为可视化重新创建组织结构.
除了子组织的名称之外,我如何捕获"节点数"信息?
是否有一个库,它能够像CriteriaBuilderJPA 一样以编程方式构建SPARQL查询,或者像PreparedStatementfor SQL 一样构建查询?
类似(对于SQL):在Java中构建SQL字符串的最简洁方法
指定图形的典型SPARQL查询可能如下所示:
SELECT ?b ?c WHERE { GRAPH <http://AliceIRI> {
<http://local.virt/foo> ?b ?c}}
Run Code Online (Sandbox Code Playgroud)
这将告诉我AliceIRI的所有三元组,其中"foo"是一个主题.如果我想查看两个不同的图表,我唯一的选择是做一个UNION:
SELECT ?b ?c WHERE {{ GRAPH <http://AliceIRI> {
<http://local.virt/foo> ?b ?c}}
UNION
{ GRAPH <http://BobIRI> {
<http://local.virt/foo> ?b ?c}}}
Run Code Online (Sandbox Code Playgroud)
或者是否有一些速记可以让我更方便地写这个,如下所示:
SELECT ?b ?c WHERE { GRAPH <http://AliceIRI> + <http://BobIRI> {
<http://local.virt/foo> ?b ?c}
Run Code Online (Sandbox Code Playgroud)
顺便说一下,我在Virtuoso 6.01.3127上.
更新1
为了澄清,我真的希望能够运行:
SELECT ?b ?c WHERE { GRAPH <http://AliceIRI> + <http://BobIRI> {
<http://local.virt/foo> ?b ?c .
<http://local.virt/bar> ?b ?c}}
Run Code Online (Sandbox Code Playgroud)
并有这场比赛?b,并?c使得<http://local.virt/foo> ?b ?c在<http://AliceIRI>和<http://local.virt/bar> ?b …
我需要对DBpedia执行查询:
SELECT DISTINCT ?poi ?lat ?long ?photos ?template ?type ?label WHERE {
?poi <http://www.w3.org/2000/01/rdf-schema#label> ?label .
?poi <http://www.w3.org/2003/01/geo/wgs84_pos#lat> ?lat .
?poi <http://www.w3.org/2003/01/geo/wgs84_pos#long> ?long .
?poi <http://dbpedia.org/property/hasPhotoCollection> ?photos .
OPTIONAL {?poi <http://dbpedia.org/property/wikiPageUsesTemplate> ?template } .
OPTIONAL {?poi <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?type } .
FILTER ( ?lat > x && ?lat < y &&
?long > z && ?long < ? &&
langMatches( lang(?label), "EN" ))
}
Run Code Online (Sandbox Code Playgroud)
我猜这些信息分散在不同的转储(.nt)文件中,不知怎的,SPARQL端点为我们提供了结果集.我需要在本地下载这些不同的.nt文件(不是所有的DBpedia),只执行一次查询并在本地存储结果(我不想使用SPARQL端点).
我从这篇文章中读到有点困惑:
因此,您可以将整个DBPedia数据加载到磁盘上的单个TDB位置(即单个目录).这样,您就可以对它运行SPARQL查询.
如果我们有三个.nt DBpedia文件,如何以Jena术语将DBpedia加载到单个TDB位置?我们如何在这些.nt文件上应用上述查询?(任何代码都会有所帮助.)
例如,这是错的吗?
String tdbDirectory = "C:\\TDB";
String dbdump1 = "C:\\Users\\dump1_en.nt"; …Run Code Online (Sandbox Code Playgroud) 计算两个SPARQL xsd:dateTime之间差异的函数是什么?
我找到了对datediff的引用,但这不起作用.SPARQL中是否存在这样的内置函数,就像大多数其他查询语言一样?
我目前正在使用rdflib在Python中创建和管理RDF图.但是,RDFlib不会进行任何RDFS或OWL推理.这导致如下结果:
如果我有
A rdf:type MyType .
MyType rdfs:subClassOf SuperType .
Run Code Online (Sandbox Code Playgroud)
我问
select ?x where {?x rdf:type SuperType}
Run Code Online (Sandbox Code Playgroud)
然后我什么都没得到,但我想得到A(通过RDFS语义).
同样的事情发生在owl:equivalentClass.如果我有
A rdf:type MyType .
MyType owl:equivalentClass SiblingType .
Run Code Online (Sandbox Code Playgroud)
我问
select ?x where {?x rdf:type SiblingType}
Run Code Online (Sandbox Code Playgroud)
我想得到A,但我一无所获.
有没有办法获得这些结果?
我试图理解如何最好地处理Marklogic SPARQL数据中的文字,这在任何情况下都可能.我希望能够进行不区分大小写的搜索,但我相信语义查询是不可能的.我想要一个简单的例子:
SELECT *
WHERE { ?s ?p "Red"}
Run Code Online (Sandbox Code Playgroud)
和
SELECT *
WHERE { ?s ?p "red"}
Run Code Online (Sandbox Code Playgroud)
返回所有值,无论对象是"红色","红色","红色"还是"rED".
我的数据来自另一个具有可变大写规则的来源.目前我唯一能想到的是添加一个额外的三元组,它总是包含小写的文本,所以我总是可以搜索该值.或者,使用不区分大小写的排序规则在MarkLogic中创建一些新的范围查询是否有意义(如果可以在三重数据上进行)?
第一件事
欣赏这可能是一个愚蠢的问题,但我正在使用来自RDF/Linked Data世界的GraphQL,并且在我如何返回集合时遇到很多麻烦.基本上我想要一些我可以选择的东西,让我们说一下Characters(使用GraphQL文档中的例子)的列表id.在SPARQL中,我将使用该VALUES子句然后绑定,如:
VALUES { <http://uri/id-1> <http://uri/id-2> <http://uri/id-3> }
Run Code Online (Sandbox Code Playgroud)
我假设这样的东西就是我想要的东西(伪代码)
{
human(id: ["1", "2", "3", "4", "5"]) {
name
height
}
}
Run Code Online (Sandbox Code Playgroud)
别名有点做我想要的,但我不想提前或手动指定不同的命名返回值是什么 - 我想在我的代码中传递一个ID列表:
[1 2 3 4 5]
Run Code Online (Sandbox Code Playgroud)
...并且有一个可以接受该ID数组的查询,并根据上面的伪查询返回一个可预测的非标量形状.
第二件事
我也假设事实上不可能让查询解析为Human或者[Human]- 它必须是一个或另一个?如果是这样的话,没什么大不了的,我只会满足于后者......但我想我现在对这个问题一般很困惑.