1
我有一个OWL文件,其子类为owl:Thing "Objects"
。如何编写SPARQL查询以从OWL文件获取值
<rdf:RDF xmlns="http://www.semanticweb.org/PredefinedOntology#"
xml:base="http://www.semanticweb.org/PredefinedOntology"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns:xml="http://www.w3.org/XML/1998/namespace"
xmlns:swrlb="http://www.w3.org/2003/11/swrlb#"
xmlns:swrl="http://www.w3.org/2003/11/swrl#"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
<owl:Ontology rdf:about="http://www.semanticweb.org/PredefinedOntology"/>
这个子类有三个人(Door1
,Coridor1
,Window1
)与DataProperty
断言(X
和Y
与坐标的值)。其中个人看起来像这样:
<!-- http://www.semanticweb.org/PredefinedOntology#Door1 -->
<owl:NamedIndividual rdf:about="http://www.semanticweb.org/PredefinedOntology#Door1">
<rdf:type rdf:resource="http://www.semanticweb.org/PredefinedOntology#Objects"/>
<X rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">2</X>
<Y rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">20</Y>
</owl:NamedIndividual>
我需要得到个人的值(比方说Door1
)。 我怎样才能用SPARQL做到这一点?我试图:
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
SELECT ?X ?datatype
WHERE {?X rdf:datatype ?datatype}
但它看起来像我的查询是完全错误的。有人请向我解释如何编写(或者甚至更重要的是如何阅读或思考)这个查询,从本体中找到值X=2
和Y=20
?
谢谢
非常感谢你!这个版本在开始的时候给我带来了一些错误,但是后来我把它调整了一点:PREFIX my: SELECT?objects?X?Y \t WHERE { ?objects rdf:type owl:NamedIndividual ; my:X?X ;我的:Y?Y } 它的工作 –
Fabi
我很抱歉有一个愚蠢的问题,但是:在这种情况下,当我修改了一些你已经提供给我的代码,但你的答案仍然是正确的,应该我还按“回答你的问题”并添加修改?对不起,我在stackoverflow网站上并不是很有经验) – Fabi
我认为这是完全可以接受的。 SO的目标是教育,所以如果你有什么东西可以让别人学习,那么它将被认为是一个很好的贡献。 – scotthenninger