0

我需要一个SPARQL查询来获取所有可用的逆属性。exp(之前,之后,配偶,......等)我在特定域(Person)上试过这个:

SELECT
DISTINCT ?predicate
WHERE 

{
  ?subject a dbo:Person .
  ?object a dbo:Person . 
  ?subject ?predicate ?object .
  ?object ?predicate ?subject .
}

结果:

  1. http://www.w3.org/2000/01/rdf-schema#seeAlso
  2. http://www.w3.org/2002/07/owl#sameAs
  3. http://www.w3.org/2002/07/owl#differentFrom
  4. http://dbpedia.org/property/deathPlace
  5. http://dbpedia.org/ontology/associatedBand
  6. http://dbpedia.org/ontology/author
  7. http://dbpedia.org/ontology/associatedMusicalArtist
  8. http://dbpedia.org/ontology/field
  9. http://dbpedia.org/ontology/governor
  10. http://dbpedia.org/ontology/lastAppearance
  11. http://dbpedia.org/ontology/managerClub
  12. http://dbpedia.org/ontology/recordLabel
  13. http://dbpedia.org/ontology/relation
  14. http://dbpedia.org/ontology/related
  15. http://dbpedia.org/ontology/relative
  16. http://dbpedia.org/ontology/starring
  17. http://dbpedia.org/property/p
  18. http://dbpedia.org/property/title
  19. http://purl.org/linguistics/gold/hypernym
4

1 回答 1

2

请注意,您不是在要求逆属性;您要求对称(或互惠或反射)属性——其中每个主体/客体对也被描述为客体/主体对。

如果你真的想要更接近逆的东西,你可以尝试类似 -

SELECT DISTINCT ?predicate 
                ?reverse_predicate
WHERE 
  {
    ?subject a                  dbo:Person .
    ?object  a                  dbo:Person . 
    ?subject ?predicate         ?object .
    ?object  ?reverse_predicate ?subject .
  }
ORDER BY ?predicate ?reverse_predicate

——但是如果您查看该查询的结果,您会注意到许多“反映”的关系并没有用实际上彼此相反的属性来表示。

ex:child并且ex:parent可能很容易理解为倒数——但是ex:sibling, ex:brother,ex:sister呢?还要注意有多少“反射”属性,例如,< http://dbpedia.org/ontology/child >!

可能,描述你为什么需要这些,以及你打算如何使用它们,将有助于其他人提供更相关的答案或其他信息......

于 2019-12-16T20:15:54.307 回答