rdf - 标记逻辑 7 : Semantic Search

标签 rdf semantic-web marklogic triplestore

我一直在努力探索 RDF Triple Store 功能和 语义搜索 的功能马克逻辑 7 然后使用 查询SPARQL .我能够执行一些基本操作,例如:

xquery version "1.0-ml";
import module namespace sem = "http://marklogic.com/semantics"at"/MarkLogic/semantics.xqy";
sem:rdf-insert(sem:triple(sem:iri("http://example.org/ns/people#m"),
sem:iri("http://example.com/ns/person#firstName"), "Sam"),(),(),"my collection")

它创建一个三元组,然后使用以下 SPARQL 查询它:
PREFIX ab: <http://example.org/ns/people#>
PREFIX ac: <http://example.com/ns/person#>
SELECT ?Name
WHERE
{ ab:m ac:firstName ?Name . }

结果检索到 Sam。
已编辑 :在我的用例中,我有一个 分隔文件(结构化数据)有 10 亿条记录,我使用 MLCP 摄取到 ML 中,例如存储在 ML 中:

<root>
<ID>1000-000-000--000</ID>
<ACCOUNT_NUM>9999</ACCOUNT_NUM>
<NAME>Vronik</NAME>
<ADD1>D7-701</ADD1>
<ADD2>B-Valentine</ADD2>
<ADD3>Street 4</ADD3>
<ADD4>Fifth Avenue</ADD4>
<CITY>New York</CITY>
<STATE>NY</STATE>
<HOMPHONE>0002600000</HOMPHONE>
<BASEPHONE>12345</BASEPHONE>
<CELLPHONE>54321</CELLPHONE>
<EMAIL_ADDR>abc@gmail.com</EMAIL_ADDR>
<CURRENT_BALANCE>10000</CURRENT_BALANCE>
<OWNERSHIP>JOINT</OWNERSHIP>
</root>

现在,我想对上面的数据集使用 RDF/Semantic 功能。
但是,我无法理解是否需要将上述文档转换为 RDF,如下所示(显示为 <NAME> )假设这是正确的方法:
  <sem:triple>
    <sem:subject>unique/uri/Person
    </sem:subject>
    <sem:predicate>unique/uri/Name
    </sem:predicate>
    <sem:object datatype="http://www.w3.org/2001/XMLSchema#string"
    xml:lang="en">Vronik
    </sem:object>
  </sem:triple> 

然后在 ML 中摄取这些文档并使用 SPARQL 进行搜索,或者我是否需要只摄取我的文档,然后分别摄取从外部来源获得的三元组并以某种方式(如何..??)将它们链接到我的文档,然后使用 SPARQL 进行查询?或者有什么其他方式我应该这样做?

最佳答案

由你决定。如果您想将 XML 用于某些事实并为其他事实使用三元组,您可以将选定的事实从 XML 转换为三元组,并将它们组合到相同的文档中。对于您提供的 XML,我就是这样开始的。当您以原始 XML 格式插入或更新每个文档时,将它传递给添加新三元组的 XQuery。我会将这些新的三元组与原始 XML 保存在同一个文档中。

您可以使用 CPF 做到这一点:http://docs.marklogic.com/guide/cpf - 或使用类似 http://marklogic.github.io/recordloader/ 的工具和它的 XccModuleContentFactory类(class)。

但是,如果您想完全摆脱原始 XML 格式,则可以这样做。然后您将您的 XML 转换为三元组并摄取这些三元组而不是原始 XML。或者,您也可以在同一个数据库中拥有纯 XML 文档和纯三元组文档。

关于rdf - 标记逻辑 7 : Semantic Search,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20073587/

相关文章:

rdf - Protege 中复杂类的推理

rdf - 如何使用 SPARQL 查找相似内容

java - Fuseki - 服务器配置

rdf - 使用 RDF 语法表示复杂的句子

xquery - 在 Marklogic (XQuery) 中使用时间戳生成不重复的随机数?

xml - 如何解决 Marklogic 中的 'Conflicting Update' 错误

rdf - 如何设计本体?

list - 选择 RDF 集合/列表并使用 Jena 迭代结果

java - MarkLogic Java 客户端 API - 修补元数据和文档内容

python-3.x - Python,读取 RDF 文件,抓取古腾堡书籍