簡體   English   中英

檢查基礎表示形式是OWL還是RDFS

[英]Check if an underlying representation is OWL or RDFS

假設您正在通過SPARQL端點查詢數據源,並且想知道該數據源的基礎表示形式是OWL還是RDF / XML。 無論如何,您可以通過SPARQL查詢來做到這一點嗎? 我個人的想法是編寫一個使用OWL屬性之一的查詢,看看是否返回任何結果,但是使用這種方法的缺點是,如果使用的OWL屬性甚至不在數據源中出現如果基礎表示形式是OWL,則不會得到響應。 這里的假設是您無權訪問該架構。

我認為一種有趣的方法是編寫一個查詢,該查詢獲取涉及您所關注的架構語言的某些保留URI的所有三元組,這有望為您提供架構或本體。 例如,來自OWL規范的第2.4節IRI提供了OWL保留的IRI列表。 這樣的查詢有望為您提供所需的大多數信息:

prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
prefix xsd: <http://www.w3.org/2001/XMLSchema#>
prefix owl: <http://www.w3.org/2002/07/owl#>

construct { ?s ?p ?o }
where { 
  values ?res { 
    owl:backwardCompatibleWith owl:bottomDataProperty owl:bottomObjectProperty owl:deprecated owl:incompatibleWith
    owl:Nothing owl:priorVersion owl:rational owl:real owl:versionInfo
    owl:Thing owl:topDataProperty owl:topObjectProperty rdf:langRange rdf:PlainLiteral
    rdf:XMLLiteral rdfs:comment rdfs:isDefinedBy rdfs:label rdfs:Literal
    rdfs:seeAlso xsd:anyURI xsd:base64Binary xsd:boolean xsd:byte
    xsd:dateTime xsd:dateTimeStamp xsd:decimal xsd:double xsd:float
    xsd:hexBinary xsd:int xsd:integer xsd:language xsd:length
    xsd:long xsd:maxExclusive xsd:maxInclusive xsd:maxLength xsd:minExclusive
    xsd:minInclusive xsd:minLength xsd:Name xsd:NCName xsd:negativeInteger
    xsd:NMTOKEN xsd:nonNegativeInteger xsd:nonPositiveInteger xsd:normalizedString xsd:pattern
    xsd:positiveInteger xsd:short xsd:string xsd:token xsd:unsignedByte
    xsd:unsignedInt xsd:unsignedLong xsd:unsignedShort
  }

  { ?res ?p ?o . bind( ?res as ?s ) } union
  { ?s ?res ?o . bind( ?res as ?p ) } union
  { ?s ?p ?res . bind( ?res as ?o ) }
}

同樣,您可以使用以下類似方法來提取RDFS模式。 此處保留的屬性列表基於§6。 RDFS建議中的RDF架構摘要(參考) 我刪除了rdf:type ,因為它總是很多。

prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
prefix xsd: <http://www.w3.org/2001/XMLSchema#>
prefix owl: <http://www.w3.org/2002/07/owl#>

construct { ?s ?p ?o }
where { 
  values ?res {
    rdfs:Resource rdfs:Literal rdf:XMLLiteral rdfs:Class rdf:Property
    rdfs:Datatype rdf:Statement rdf:Bag rdf:Seq rdf:Alt rdfs:Container
    rdfs:ContainerMembershipProperty rdf:List rdfs:subClassOf
    rdfs:subPropertyOf rdfs:domain rdfs:range rdfs:label rdfs:comment
    rdfs:member rdf:first rdf:rest rdfs:seeAlso rdfs:isDefinedBy
    rdf:value rdf:subject rdf:predicate rdf:object
  }

  { ?res ?p ?o . bind( ?res as ?s ) } union
  { ?s ?res ?o . bind( ?res as ?p ) } union
  { ?s ?p ?res . bind( ?res as ?o ) }
}

如果對數據集運行這兩個查詢,則可能可以對數據的結構做出有根據的猜測。 請注意,OWL還使用了許多RDFS屬性,因此粗略的啟發式方法可能是:

  • 如果OWL查詢返回的信息比RDFS查詢多得多,則數據可能使用OWL本體。 否則,它可能使用RDFS模式(或根本不使用任何模式)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM