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