Has*_*raj 0 attributes rdf sparql triples
我有三倍:Fadi吃苹果.(subject = Fadi,谓词= eat,object = Apple).我有时间当fadi吃苹果,它的:00:00:13我有时间当fadi吃苹果,它的:00:00:50
我怎么能用时间作为属性写一个rdf-triples文件?以及如何从rdf文件中获取sparql查询请求的startTime和endTime?
我试着像这样写我的rdf:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE rdf:RDF [<!ENTITY rdf 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
<!ENTITY rdfs 'http://www.w3.org/2000/01/rdf-schema#'>
<!ENTITY xsd 'http://www.w3.org/2001/XMLSchema#'>]>
<rdf:RDF xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dnr="http://www.dotnetrdf.org/configuration#"
xml:base="http://www.example.org/"
xmlns:startTime="http://example.org/startTime#"
xmlns:endTime="http://example.org/endTime#">
<rdf:Description rdf:about="Fadi">
<ns:be xmlns:ns="http://example.org/" xmlns:startTime="00:00:13" xmlns:endTime="00:00:16">May</ns:be>
</rdf:Description>
</rdf:RDF>
Run Code Online (Sandbox Code Playgroud)
但是c#给了我:无效的URI:URI方案无效.
我试过这个:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE rdf:RDF [<!ENTITY rdf 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
<!ENTITY rdfs 'http://www.w3.org/2000/01/rdf-schema#'>
<!ENTITY xsd 'http://www.w3.org/2001/XMLSchema#'>]>
<rdf:RDF xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dnr="http://www.dotnetrdf.org/configuration#"
xml:base="http://www.example.org/">
<rdf:Description rdf:about="Fadi">
<ns:be xmlns:ns="http://example.org/" xml:startTime="00:00:13" xml:endTime="00:00:16">May</ns:be>
</rdf:Description>
</rdf:RDF>
Run Code Online (Sandbox Code Playgroud)
但我无法用sparql获得时间.
我怎么写我的rdf?!!
您不应该使用xmlns尝试定义属性,xmlns是XML中用于定义名称空间的保留前缀.
一旦定义了自己的命名空间,就可以将其用于属性,例如
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE rdf:RDF [<!ENTITY rdf 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
<!ENTITY rdfs 'http://www.w3.org/2000/01/rdf-schema#'>
<!ENTITY xsd 'http://www.w3.org/2001/XMLSchema#'>]>
<rdf:RDF xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:ns="http://yourdomain.com/namespace#"
xml:base="http://www.example.org/">
<rdf:Description rdf:about="Fadi" ns:startTime="00:00:13" ns:endTime="00:00:16">
<ns:be>May</ns:be>
</rdf:Description>
</rdf:RDF>
Run Code Online (Sandbox Code Playgroud)
在这里我在root元素中定义了一个名称空间,如下所示:
xmlns:ns="http://yourdomain.com/namespace#"
Run Code Online (Sandbox Code Playgroud)
显然,您应该将名称空间URI更改为适合您的名称.
然后我可以使用新定义的ns前缀来引用该命名空间中的术语,例如
ns:startTime="00:00:13"
Run Code Online (Sandbox Code Playgroud)
但是我仍然认为这不会给你想要创建的数据.我建议你不要手动编写RDF/XML,你的问题意味着你在做什么.
相反,我建议学习像Turtle这样的人类可读序列化,因为它更容易理解.此外,它比RDF/XML更加以三重为中心,因此它将帮助您更好地理解您实际表达的RDF三元组,从而使您更容易理解如何编写实际返回所需数据的SPARQL查询.