问题标签 [graphdb]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
rdf - 与使用 xsd:integer 作为 rdfs:range 冲突
我将整数范围的属性定义为
我的理解是它应该只接受整数作为对象,其他任何东西都应该被认为是不一致的并抛出错误。但是,当我在 GraphDb 中创建具有字符串作为对象的实例时,如下所示,两个条目都成功加载到数据库中(作为“asd”^^xsd:string),没有任何错误:
sparql - OWL 2 类定义必须非二进制提及 Self
我想说 aU. Penn Biobank consenter
是Homo sapiens
具有 aconsenter role
并参与 a 的 a informed consent process
,至少对informed consent process
- 它也有个人
U. Penn Biobank Organization
作为参与者 - 它有一个
fully signed consent form
作为指定的输出
我想我已经控制了所有这一切,但我正在努力解决这个问题:
- 是
consenter role
在前面提到的informed consent process
这是我目前在 Protégéequivalent to
盒子里的东西:
'Homo sapiens' and 'has role' some 'consenter role' and 'participates in' some ('informed consent process' and ((has_specified_output some 'fully signed informed consent form') and 'has participant' value 'U. Penn Biobank Organization'))
我怎么能说这consenter role
是以informed consent process
我已经彻底定义的方式实现的呢?
根据@StanislavKralin 的评论,我尝试Self
在逻辑定义中添加对的引用,但 Protégé 对此也不满意。似乎没有Self
什么比说关系的主语和谓语是同一个人更复杂的了,比如Narcissist
定义Homo sapiens
为谁
loves Self
编辑:我认为以下内容与我所希望的很接近。它说这个人在informed consent process
.
'Homo sapiens’ and 'has role' some ( 'consenter role' and 'realized in' some ( 'informed consent process' and ( (has_specified_output some 'fully signed informed consent form') and 'has participant' value 'U. Penn Biobank Organization')))
随便地说,你可以说这个定义意味着这个人参与了这个过程,但我认为这不会不言自明。 我写了一些 SPARQL 查询来测试它,但回想起来,我想我一直在叫错树。
我实例UPBBC1
化为一个类的实例,U. Penn Biobank consenter
并在 Ontotext GraphDB 中运行这些查询,并使用 OWL 2 QL 推理。我想我也会尝试一些其他的推理水平。
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
select * where {
?i a ?c .
?c rdfs:label "U. Penn Biobank Consenter"
}
该实例被推断为一个Homo sapiens
.
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
select * where {
?i a ?c .
?c rdfs:label "Homo sapiens"
}
但不被推断为参与过任何事情
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
select * where {
?i <http://purl.obolibrary.org/obo/RO_0000056> ?proc
}
表中无可用数据
graphdb - 导入文件失败
我有一个 RDF 文件,可以在另一个 RDF 存储(Stardog)中毫无问题地导入,但在 GraphDB 中一直失败并出现以下错误:
15:58:18.900 [import-task-3-thread-1] 错误 cofiMultipartFileImportRunnableTask - 无法在 org.java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:936) 处导入文件 java.lang.NullPointerException: null。 eclipse.rdf4j.common.lang.service.ServiceRegistry.get(ServiceRegistry.java:95) 在 org.eclipse.rdf4j.rio.Rio.createParser(Rio.java:100) 在 org.eclipse.rdf4j.rio.Rio。 createParser(Rio.java:118) at org.eclipse.rdf4j.repository.util.RDFLoader.loadInputStreamOrReader(RDFLoader.java:279) at org.eclipse.rdf4j.repository.util.RDFLoader.load(RDFLoader.java:197)在 org.eclipse.rdf4j.repository.base.AbstractRepositoryConnection.add(AbstractRepositoryConnection.java:329) 在 com.ontotext.trree.monitorRepository.MonitorRepositoryConnection.add(MonitorRepositoryConnection.java:159) 在 com.ontotext.trree。parallel.ParallelRDFLoader.add(ParallelRDFLoader.java:125) 在 com.ontotext.forest.impex.ParallelAwareImporter.lambda$add$3(ParallelAwareImporter.java:48) 在 com.ontotext.forest.impex.ParallelAwareImporter.wrapInBeginCommit(ParallelAwareImporter.java :66) 在 com.ontotext.forest.impex.MultipartFileImportRunnableTask.load(MultipartFileImportRunnableTask.java:38) 在 com.ontotext.forest.impex 的 com.ontotext.forest.impex.ParallelAwareImporter.add(ParallelAwareImporter.java:48)。 ImportRunnableTask.run(ImportRunnableTask.java:80) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util .concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:第617章)
这个文件可以在这里找到:http: //boetik-artistik.be/humidity_by_city.owls
所有引用的本体都可以从我的机器上解析。
谢谢或您的帮助。
亲切的问候,约翰,
graphdb - RDF4j 和 GraphDB 存储库连接
我对 rdf4j 有疑问:我想从我的 GraphDB 存储库“Feed”中删除所有feed:hashCode
作为谓词的三元组。
第一个查询验证是否存在以url
参数作为主语、feed:hashCode
作为谓词且hash
参数具有宾语的三元组,并且它有效。如果我的存储库中不存在此语句,则第二个查询开始,它应该删除所有feed:hashCode
作为谓词和url
作为主语的三元组,但它不起作用,有什么问题?
这是代码:
错误代码为:“Missing parameter: query”,服务器响应为:“400 Bad Request”
sparql - 在 GraphDb 中关闭 Sparql Query 的推理器
有什么方法可以在 GraphDb 中查询时关闭推理器。Graphdb Sparql 文本框中有 >> 符号来关闭推理器。我想知道我们是否可以关闭 Sparql 查询本身的推理器。如果是这样,是否推荐因为某些查询在没有推理器的情况下更容易实现?
mysql - 仅使用 Graph DB 存储用户活动数据是个好主意吗?
有很多问题和答案涵盖了类似的概念,但没有一个与我们的概念相近。
我们的应用程序建立在 Java(API)、AngularJs(前端)上,使用 MySql 作为数据库。到目前为止,还没有在我们的应用程序中存储用户活动的概念。
但是现在,我们必须捕获所有用户活动(这几乎包括所有内容)。其中一些活动是“用户已查看约会#”、“用户已更新事件信息”、“用户已激活/停用其他用户”等...
以下是我们需要考虑的事项:
- 最初我们的数据会少得多(可能每天有 10 万条记录)。
- 所有这些用户活动几乎都是写入繁重且读取部分非常非常少。
- 我们以这样一种方式设计了审计表(MySql),它们将保存跟踪用户的每一个活动所需的关键信息。
对以下几个方面感到困惑:
- 我们的一些同事和老板对 MySql 不满意,因为他们预计我们的应用程序会在受到关注时突然出现大量活动。
- 还有建议使用 Graph DB,我认为这绝对没有必要。因为按照设计,它是一个三重存储数据库,用于使用节点和边存储关系数据。
建议的小背景:有一个建议将整个应用程序数据从 MySql 迁移到 GraphDB 作为未来的实现(这将在我们开始迁移部分之前有一段时间,而且我们的员工都不熟悉 Graph DB 知识)。所以我们的老板坚持要我们从这个开始。
我的问题和我需要您的意见的问题是:
- 仅将 Graph DB 用于用户活动是个好主意吗?
- 如果我们要使用 Graph DB,哪个是最好的免费 Graph DB?
- 或者,我们是否可以为此目的使用 NoSQL DB,例如 mongoDB?
ontology - 默认本体加载到 Graphdb
我有兴趣找出默认情况下预加载到 Graphdb 中的本体是什么。这将帮助我确定我需要添加哪些本体(.ttl 文件)以及我的本体作为包的一部分,尤其是在没有 Internet 连接的情况下。
我知道一些本体,如 rdfs 和 owl 已预加载到 GraphDb 中。但我找不到任何关于预加载本体的列表。
graphdb - Graphdb从curl中的备份恢复
我正在编写一个脚本来自动设置从在 Docker 容器中运行的干净 GraphDB 开始的存储库。我有一个 config.ttl 文件,其中包含存储库配置、名称空间和文件 init.nq 中的转储我已经使用 config.ttf 和更新的名称空间成功创建了存储库,但我不明白如何加载 init.nq 文件。
从 Web 界面执行此操作非常简单:导入 -> RFD -> 上传,但我无法理解如何使用 Curl 执行它。我想正确的API应该是
但是转储太大了,无法将其作为简单文本(~44MB)传递。
sparql - 使用 [] 空白节点表示法时过滤未绑定?
我正在尝试从具有成分的药物本体中获取实体,使用限制如下
OBI_0000576
'分散的分子聚集体'BFO_0000053
'是'的承载者BFO_0000071
'有颗粒部分'
但没有指定质量 ( PATO_0000125
)。例如“对乙酰氨基酚/氢可酮口服片剂”
http://purl.obolibrary.org/obo/DRON_00020585,但不是“对乙酰氨基酚 230 毫克/氢可酮 5 毫克口服片剂” http://purl.obolibrary.org/ obo/DRON_00038671
我已经通过两个先前开发的查询将其实现为减号操作
我已经养成了将 owl 限制称为空白节点的习惯,而不是给它们变量
此查询运行缓慢(在具有 SSD 和 64 GB RAM 的服务器上运行 45 分钟)。我想将查询合并在一起并过滤掉指定质量的模式。我想我需要指定rdf:rest
提及质量的交集,在可选的 {} 子句中使用变量,然后过滤该变量未绑定的情况。
我看不到如何在 [] 空白节点表示法中做到这一点?可能吗?
PREFIX obo: <http://purl.obolibrary.org/obo/>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
select ?d ?dl
where {
{
?d rdfs:label ?dl ;
rdfs:subClassOf [ owl:onProperty <http://www.obofoundry.org/ro/ro.owl#has_proper_part> ;
owl:someValuesFrom [ owl:intersectionOf [ rdf:first
obo:OBI_0000576 ;
rdf:rest [ rdf:first [ owl:onProperty obo:BFO_0000053 ] ;
rdf:rest [ rdf:first [ owl:onProperty
obo:BFO_0000071 ;
owl:someValuesFrom ?c ] ] ] ] ] ] .
} minus {
?prod rdfs:label ?l ;
rdfs:subClassOf [ owl:someValuesFrom [ owl:intersectionOf [ rdf:rest [ rdf:rest [ rdf:first [ owl:onProperty obo:BFO_0000053 ;
owl:someValuesFrom [ owl:intersectionOf [ rdf:first <http://purl.obolibrary.org/obo/PATO_0000125> ] ] ] ] ] ] ] ] .
?d rdfs:subClassOf* ?prod ;
rdfs:label ?dl .
}
}
owl - owl:functionalProperty & owl:differentFrom
对于我认为是一个非常简单的场景的一些帮助,我将不胜感激。但作为 OWL 和 GraphDB 的新手,我可能犯了一些基本错误。
我有一个非常简单的 Turtle 指定的 OWL 示例,如下所示:
本质上,我有一个名为 Gender 的类,并断言有 2 个不同的成员男性和女性。
然后我定义了另一个类 Person,它的功能属性 hasGender 的范围是 Gender。
最后,我断言了一个 Person 实例,以及两个单独的断言,即它既是男性又是女性。
现在据我了解,这有点矛盾。我已经断言 hasGender 属性是有效的,因此对于给定的 Person,应该只有一种性别。我还断言男性和女性是不同的,所以当我将它导入 GraphDB 时,我预计它会因此而失败。
但是 GraphDB 很乐意加载这两个断言。我错过了什么吗?