当前位置: 首页>>代码示例>>Python>>正文


Python TripleStore.select方法代码示例

本文整理汇总了Python中ferenda.TripleStore.select方法的典型用法代码示例。如果您正苦于以下问题:Python TripleStore.select方法的具体用法?Python TripleStore.select怎么用?Python TripleStore.select使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在ferenda.TripleStore的用法示例。


在下文中一共展示了TripleStore.select方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: temp_analyze

# 需要导入模块: from ferenda import TripleStore [as 别名]
# 或者: from ferenda.TripleStore import select [as 别名]
    def temp_analyze(self):
        store = TripleStore(self.config.storetype,
                            self.config.storelocation,
                            self.config.storerepository)
        # sq = self._query_cites('http://lagen.nu/ext/celex/12008E045',self._sameas(),False, True, 2012)
        sq = self._query_cites(None, self._sameas(), False, False, 2012)
        print(sq)
        cites = store.select(sq, format="python")
        self.log.debug(
            "    Citation graph contains %s citations" % (len(cites)))

        # remove duplicate citations, self-citations and pinpoints
        # in citations
        citedict = {}
        for cite in cites:
            # print repr(cite)
            if "-" in cite['obj']:
                cite['obj'] = cite['obj'].split("-")[0]

            if (cite['subj'] != cite['obj']):
                citedict[(cite['subj'], cite['obj'])] = True

        self.log.debug(
            "    Normalized graph contains %s citations" % len(citedict))

        degree = {}
        for citing, cited in list(citedict.keys()):
            if citing not in degree:
                degree[citing] = []
            if cited not in degree:
                degree[cited] = []
            degree[cited].append(citing)

        return
开发者ID:staffanm,项目名称:ferenda,代码行数:36,代码来源:graphanalyze.py

示例2: download_from_triplestore

# 需要导入模块: from ferenda import TripleStore [as 别名]
# 或者: from ferenda.TripleStore import select [as 别名]
 def download_from_triplestore(self):
     sq = "SELECT ?something ?references ?uri where ?something ?references ?uri AND NOT ?uri ?references ?anything"
     store = TripleStore(self.config.storetype,
                         self.config.storelocation,
                         self.config.storerepository)
     with self.store.open_downloaded("biggraph") as fp:
         for row in store.select(sq):
             fp.write("<%(something)s> <%(references)s> <%(uri)s> .\n")
开发者ID:h4ck3rm1k3,项目名称:ferenda,代码行数:10,代码来源:skeleton.py

示例3: eval_get_goldstandard

# 需要导入模块: from ferenda import TripleStore [as 别名]
# 或者: from ferenda.TripleStore import select [as 别名]
    def eval_get_goldstandard(self, basefile):
        goldstandard = Graph()
        goldstandard_rdf = util.relpath(
            os.path.dirname(__file__) + "/../res/eut/goldstandard.n3")
        goldstandard.load(goldstandard_rdf, format="n3")

        pred = util.ns['ir'] + 'isRelevantFor'
        res = {}
        store = TripleStore(self.config.storetype,
                            self.config.storelocation,
                            self.config.storerepository)
        sq_templ = """PREFIX eurlex:<http://lagen.nu/eurlex#>
                      SELECT ?party ?casenum ?celexnum WHERE {
                          <%s> eurlex:party ?party ;
                               eurlex:casenum ?casenum ;
                               eurlex:celexnum ?celexnum .
                      }"""

        self.log.debug(
            "Loading gold standard relevance judgments for %s" % basefile)
        for article in self._articles(basefile):
            res[article] = []
            for o in goldstandard.objects(URIRef(article), URIRef(pred)):
                res[article].append(str(o))
                # Make sure the case exists and is the case we're looking for
                sq = sq_templ % str(o)
                parties = store.select(sq, format="python")
                if parties:
                    pass
                    # self.log.debug("   %s: %s (%s)" %
                    #               (parties[0]['celexnum'],
                    #                parties[0]['casenum'],
                    #                " v ".join([x['party'] for x in parties])))
                else:
                    self.log.warning("Can't find %s in triple store!" % o)
            self.log.debug("    Gold standard for %s: %s relevant docs" %
                           (article, len(res[article])))
            res[article].sort()
        return res
开发者ID:staffanm,项目名称:ferenda,代码行数:41,代码来源:graphanalyze.py

示例4: eval_get_ranked_set

# 需要导入模块: from ferenda import TripleStore [as 别名]
# 或者: from ferenda.TripleStore import select [as 别名]
    def eval_get_ranked_set(self, basefile, algorithm="pagerank",
                            age_compensation=False, restrict_cited=True):
        # * algorithm: can be "indegree", "hits" or "pagerank".
        # * age_compensation: create one graph per year and average to
        #   compensate for newer cases (that have had less time to gain
        #   citations)
        # * restrict_cited: Use only such citations that exist between
        #   two cases that both cite the same TFEU article (othewise,
        #   use all citations from all cases that cite the TFEU
        #   article, regardless of whether the cited case also cites
        #   the same TFEU article)
        sameas = self._sameas()
        store = TripleStore(self.config.storetype,
                            self.config.storelocation,
                            self.config.storerepository)
        res = {}

        self.log.debug("Creating ranked set (%s,age_compensation=%s,restrict_cited=%s)" %
                       (algorithm, age_compensation, restrict_cited))

        for article in self._articles(basefile):
            article_celex = article.split("/")[-1]
            self.log.debug("    Creating ranking for %s" % (article_celex))
            this_year = datetime.datetime.today().year
            if age_compensation:
                years = list(range(1954, this_year + 1))
                # years = range(this_year-3,this_year) # testing
            else:
                years = list(range(this_year, this_year + 1))

            result_by_years = []
            for year in years:
                restrict_citing = True  # always performs better
                if (article, year, restrict_cited) in self._graph_cache:
                    # self.log.debug("Resuing cached graph (%s) for %s in %s" %
                    #               (restrict_cited, article_celex,year))
                    graph = self._graph_cache[(article, year, restrict_cited)]
                else:
                    # self.log.debug("Calculating graph for %s in %s" %
                    #               (article_celex,year))
                    sq = self._query_cites(article, sameas, restrict_citing,
                                           restrict_cited, year)
                    links = store.select(sq, format="python")
                    graph = self.eval_build_nx_graph(links)
                    self._graph_cache[(article, year, restrict_cited)] = graph
                    self.log.debug("      Citegraph for %s in %s has %s edges, %s nodes" %
                                   (article_celex, year, len(graph.edges()),
                                    len(graph.nodes())))

                if len(graph.nodes()) == 0:
                    continue

                ranked = self.eval_rank_graph(graph, algorithm)
                result_by_years.append({})
                for result, score in ranked:
                    result_by_years[-1][result] = score

            if age_compensation:
                compensated_ranking = {}
                for d, score in ranked:  # the last result set
                    # cut out the year part of the URI
                    celex = d.split("/")[-1]
                    try:
                        age = this_year + 1 - int(
                            celex[1:5])  # cases decided this year has age 1
                        # scores = [0,0,0 ... 3,4,8,22]
                        scores = [result_by_year[d]
                                  for result_by_year
                                  in result_by_years
                                  if d in result_by_year]
                        avg_score = sum(scores) / float(age)
                        # self.log.debug("Result %s (age %s, avg score %s) %r" %
                        #               (d,age,avg_score,scores))
                        compensated_ranking[d] = avg_score
                    except ValueError:
                        continue

            # return just a list of results, no scores
            if age_compensation:
                res[article] = [result for result in sorted(
                    compensated_ranking, key=compensated_ranking.__getitem__, reverse=True)]
            else:
                res[article] = [result[0] for result in ranked]

        return res
开发者ID:staffanm,项目名称:ferenda,代码行数:87,代码来源:graphanalyze.py

示例5: analyze_citation_graphs

# 需要导入模块: from ferenda import TripleStore [as 别名]
# 或者: from ferenda.TripleStore import select [as 别名]
    def analyze_citation_graphs(self, articles=None):
        # Basic setup
        # articles = self._articles('tfeu')[-1:]
        if not articles:
            articles = [None]
        if None not in articles:
            articles.append(None)
        this_year = datetime.datetime.today().year
        store = TripleStore(self.config.storetype,
                            self.config.storelocation,
                            self.config.storerepository)
        sameas = self._sameas()
        distributions = []

        # For each article (and also for no article = the entire citation graph)
        for article in articles:
            # Get a list of all eligble cases (needed for proper degree distribution)
            sq = self._query_cases(article, sameas)
            # print sq
            cases = {}
            caserows = store.select(sq, format="python")
            for r in caserows:
                cases[r['subj']] = 0

            self.log.info(
                "Creating graphs for %s (%s cases)" % (article, len(cases)))
            # Step 1. SPARQL the graph on the form ?citing ?cited
            # (optionally restricting on citing a particular article)
            if article:
                sq = self._query_cites(
                    article, sameas, True, False, this_year + 1)
            else:
                sq = self._query_cites(
                    None, sameas, False, False, this_year + 1)

            cites = store.select(sq, format="python")
            self.log.debug(
                "    Citation graph contains %s citations" % (len(cites)))

            # remove duplicate citations, self-citations and pinpoints
            # in citations
            citedict = {}
            missingcases = {}
            for cite in cites:
                # print repr(cite)
                if "-" in cite['obj']:
                    cite['obj'] = cite['obj'].split("-")[0]

                if not cite['obj'] in cases:
                    # print "Case %s (cited in %s) does not exist!\n" % (cite['obj'],
                    # cite['subj'])
                    missingcases[cite['obj']] = True
                    continue

                if (cite['subj'] != cite['obj']):
                    citedict[(cite['subj'], cite['obj'])] = True

            self.log.debug(
                "    Normalized graph contains %s citations (%s cited cases not found)" %
                (len(citedict), len(missingcases)))
            # pprint(missingcases.keys()[:10])

            # Step 2. Dotify the list (maybe the direction of arrows from
            # cited to citing can improve results?) to create a citation
            # graph
            self.analyse_citegraph_graphviz(list(citedict.keys()), article)

            # Step 3. Create a degree distribution plot
            degree, distribution = self.analyze_citegraph_degree_distribution(
                cases, list(citedict.keys()), article)
            if article:
                distributions.append([article, distribution])

            # Step 4. Create a citation/age scatterplot (or rather hexbin)
            self.analyze_citegraph_citation_age_plot(
                list(citedict.keys()), degree, distribution, article)

        # Step 5. Create a combined degree distribution graph of the
        # distinct citation networks. Also add the degree distribution
        # of gold standard cases

        self.analyze_citegraph_combined_degree_distribution(distributions)
开发者ID:staffanm,项目名称:ferenda,代码行数:84,代码来源:graphanalyze.py

示例6: analyze_article_citations

# 需要导入模块: from ferenda import TripleStore [as 别名]
# 或者: from ferenda.TripleStore import select [as 别名]
    def analyze_article_citations(self, num_of_articles=20, quiet=False):
        """Prints and returns a list of the top 20 most important articles in the
        TFEU treaty, as determined by the number of citing cases."""

        # Create a mapping of article equivalencies, eg Art 28 TEC == Art 34 TFEU
        sameas = self._sameas()
        equivs = {}
        pred = util.ns['owl'] + "sameAs"
        for (s, o) in sameas.subject_objects(URIRef(pred)):
            equivs[str(o)] = str(s)
        self.log.debug(
            "Defined %s equivalent article references" % len(equivs))

        # Select unique articles citings
        store = TripleStore(self.config.storetype,
                            self.config.storelocation,
                            self.config.storerepository)
        sq = """PREFIX eurlex:<http://lagen.nu/eurlex#>
                SELECT DISTINCT ?case ?article WHERE {
                    ?case eurlex:cites ?article .
                    FILTER (regex(str(?article), "^http://lagen.nu/ext/celex/1"))
             }"""
        cites = store.select(sq, format="python")

        citationcount = {}
        unmapped = {}
        self.log.debug("Going through %s unique citations" % len(cites))
        for cite in cites:
            article = cite['article'].split("-")[0]
            if "12008M" in article:
                pass
            elif article in equivs:
                article = equivs[article]
            else:
                if article in unmapped:
                    unmapped[article] += 1
                else:
                    unmapped[article] = 1
                article = None

            # Keep track of the number of citing cases
            if article:
                if article in citationcount:
                    citationcount[article] += 1
                else:
                    citationcount[article] = 1

        # Report the most common cites to older treaty articles that
        # we have no equivalents for in TFEU
        # sorted_unmapped = sorted(unmapped.iteritems(), key=itemgetter(1))[-num_of_articles:]
        # if not quiet:
        #    print "UNMAPPED:"
        #    pprint(sorted_unmapped)

        # Report and return the most cited articles
        sorted_citationcount = sorted(iter(list(
            citationcount.items())), key=itemgetter(1))[-num_of_articles:]
        if not quiet:
            print("CITATION COUNTS:")
            pprint(sorted_citationcount)
        return [x[0] for x in reversed(sorted_citationcount)]
开发者ID:staffanm,项目名称:ferenda,代码行数:63,代码来源:graphanalyze.py


注:本文中的ferenda.TripleStore.select方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。